Skip to content

feat: add Devin plugin manifests and install instructions - #482

Merged
harv-aws merged 2 commits into
mainfrom
feat/devin-plugin-support
Oct 22, 2026
Merged

harv-aws merged 2 commits into
mainfrom
feat/devin-plugin-support

Conversation

@harv-aws

Copy link
Copy Markdown
Contributor

Description

Devin (Cognition) loads plugins from a GitHub subfolder with devin plugins install owner/repo#path, reading the manifest in order .devin-plugin/plugin.json > .claude-plugin/plugin.json > root plugin.json. Add first-class Devin support:

  • .devin-plugin/plugin.json for all five plugins. Metadata (name, version, description, author, homepage, repository, license, keywords) is copied from the Claude manifest that Devin reads today; skills point at ./skills/ and mcpServers reuses the existing ./.mcp.json. Only fields documented for the Devin manifest are used.
  • Devin does not load the Claude-format hooks (for example aws-core's secret-safety PreToolUse guard, or aws-startup-advisor's telemetry hooks) under either manifest: it reads only a plugin-root hooks.json, its shell tool is exec rather than Bash, and it uses a different decision format. Skills, MCP servers, and agents load the same as with the Claude fallback. Porting the hooks is a follow-up.
  • aws-startup-advisor: include .devin-plugin/plugin.json in the telemetry bundle version-parity check and its tests.
  • README: add a Devin quick-start (CLI install command and the web app Customize path) and list Devin among supported agents and plugin hosts.
  • tools/validate.py: validate an optional .devin-plugin/plugin.json: valid JSON, a non-empty name matching the plugin directory, and skills/mcpServers paths that stay inside the plugin and exist (Devin rejects the whole plugin when a skills path escapes its root).

Type of Change

  • New plugin
  • New skill
  • Bug fix
  • Documentation update
  • CI/CD change
  • Other

Checklist

  • I have read the CONTRIBUTING guide
  • My changes pass python3 tools/validate.py
  • I have updated relevant documentation

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Devin (Cognition) loads plugins from a GitHub subfolder with
`devin plugins install owner/repo#path`, reading the manifest in order
.devin-plugin/plugin.json > .claude-plugin/plugin.json > root
plugin.json. Add first-class Devin support:

- .devin-plugin/plugin.json for all five plugins. Metadata (name,
  version, description, author, homepage, repository, license,
  keywords) is copied from the Claude manifest that Devin reads today;
  skills point at ./skills/ and mcpServers reuses the existing
  ./.mcp.json. Only fields documented for the Devin manifest are used.
- Devin does not load the Claude-format hooks (for example aws-core's
  secret-safety PreToolUse guard, or aws-startup-advisor's telemetry
  hooks) under either manifest: it reads only a plugin-root hooks.json,
  its shell tool is `exec` rather than `Bash`, and it uses a different
  decision format. Skills, MCP servers, and agents load the same as
  with the Claude fallback. Porting the hooks is a follow-up.
- aws-startup-advisor: include .devin-plugin/plugin.json in the
  telemetry bundle version-parity check and its tests.
- README: add a Devin quick-start (CLI install command and the web app
  Customize path) and list Devin among supported agents and plugin
  hosts.
- tools/validate.py: validate an optional .devin-plugin/plugin.json:
  valid JSON, a non-empty name matching the plugin directory, and
  skills/mcpServers paths that stay inside the plugin and exist (Devin
  rejects the whole plugin when a skills path escapes its root).
aws-core was bumped to 1.2.0 upstream while .devin-plugin/plugin.json was
being added, so the Devin manifest still says 1.1.0. Devin reads
.devin-plugin/plugin.json in preference to .claude-plugin/plugin.json, so
Devin users would see the stale version (it also names Devin's plugin cache
directory).

Set it to 1.2.0, and make tools/validate.py require that a Devin manifest's
name, version and description equal the plugin's .claude-plugin/plugin.json
whenever that file exists, so the next bump that misses one manifest fails CI
instead of shipping.

tools/tests/test_validate.py covers matching metadata, version, description
and missing-version mismatches, the no-Claude-manifest case, and asserts every
plugin in the repo with a Devin manifest passes (all 5 do). It runs from
mise validate as test:tools.
@harv-aws
harv-aws added this pull request to the merge queue Oct 22, 2026
Merged via the queue into main with commit ece684d Oct 22, 2026
10 checks passed
@harv-aws
harv-aws deleted the feat/devin-plugin-support branch October 22, 2026 15:47
herosjourney pushed a commit to herosjourney/agent-toolkit-for-aws that referenced this pull request Oct 23, 2026
…ude manifest

Main (aws#482) added .devin-plugin/plugin.json with the pre-PR plugin description
and a validator that requires it to match .claude-plugin/plugin.json. This PR
updates the Claude description for the bedrock-migration-assessment skill, so
carry the same text into the Devin manifest. `mise run validate` passes again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants