Cowork plugins and Claude Managed Agent templates for financial services. Each named agent ships two ways from one source.
├── plugins/
│ ├── agent-plugins/ # named agents — one self-contained plugin each
│ │ └── <slug>/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── agents/<slug>.md # ← canonical system prompt (one source, two wrappers)
│ │ └── skills/ # ← bundled copies, synced from vertical-plugins/
│ ├── vertical-plugins/ # FSI verticals — skill sources, commands, MCPs
│ │ └── <vertical>/
│ │ ├── .claude-plugin/plugin.json
│ │ ├── commands/
│ │ ├── skills/
│ │ └── .mcp.json
│ └── partner-built/ # partner plugins (LSEG, S&P Global)
├── managed-agent-cookbooks/ # CMA cookbooks (one dir per named agent)
│ └── <slug>/
│ ├── agent.yaml # system + skills → ../../plugins/agent-plugins/<slug>/...
│ ├── subagents/*.yaml # depth-1 leaf workers
│ ├── steering-examples.json
│ └── README.md # security tier + handoff notes
├── claude-for-msft-365-install/ # admin tooling for the Microsoft 365 add-in (separate from FSI plugins)
└── scripts/ # deploy-managed-agent.sh, check.py, validate.py, orchestrate.py, sync-agent-skills.py
Run python3 scripts/check.py before committing — it lints every manifest, verifies all system.file / skills.path / callable_agents.manifest references resolve, and fails if any agent-plugins/<slug>/skills/ copy has drifted from its vertical-plugins/ source. Edit skills in vertical-plugins/, then run python3 scripts/sync-agent-skills.py to propagate into the agent bundles.
check.py also self-installs a pre-commit hook (git config core.hooksPath .githooks — no Husky/Node). The hook patch-bumps any plugin's .claude-plugin/plugin.json version so a branch ends up exactly one patch ahead of main (bumped once, not per commit — a plugin's version gates update delivery to already-installed users). The version-bump GitHub Action enforces the same rule on PRs as a backstop. Bypass a single commit with git commit --no-verify; bump logic lives in scripts/version_bump.py.
marketplace.json: Marketplace manifest - registers all plugins with source pathsplugin.json: Plugin metadata - name, description, version, and component discovery settingscommands/*.md: Slash commands invoked as/plugin:command-nameskills/*/SKILL.md: Detailed knowledge and workflows for specific tasks*.local.md: User-specific configuration (gitignored)mcp-categories.json: Canonical MCP category definitions shared across plugins
- Edit markdown files directly - changes take effect immediately
- Test commands with
/plugin:command-namesyntax - Skills are invoked automatically when their trigger conditions match