Summary
Design and implement a portable plugin system that allows external packages to extend the forgekit catalog without modifying the core monorepo.
Motivation
Currently, adding catalog entries requires a PR to this repo. Teams with private or domain-specific skills, agents, or hooks have no clean extension path. A plugin system would enable:
- Private catalogs mounted alongside the public one
- Third-party skill packages published to npm
- Organization-scoped overrides of default entries
Proposed approach
- Discovery:
forge-kit CLI resolves plugins from a local config (e.g., ~/.config/ai-dev-toolkit/plugins.json) and from workspace-local .forgekit/plugins.json
- Schema: A plugin is an npm package (or local directory) that exports a catalog subtree matching the existing directory structure (
skills/, agents/, collections/, etc.)
- Merging: Plugin entries are merged into the catalog at runtime; conflicts resolved by explicit priority order
- Validation:
pnpm catalog:validate runs against the merged catalog, not just the built-in one
Out of scope (v1)
- Plugin marketplace / discovery
- Plugin signing or trust model
- GUI management
Open questions
- Should plugins be resolved at CLI runtime or at build time for the web UI?
- What's the naming convention to avoid ID collisions between plugins?
References
backlog.json item: plugin-system (status: backlog, priority: low)
- Current catalog structure:
packages/catalog/catalog/
Summary
Design and implement a portable plugin system that allows external packages to extend the forgekit catalog without modifying the core monorepo.
Motivation
Currently, adding catalog entries requires a PR to this repo. Teams with private or domain-specific skills, agents, or hooks have no clean extension path. A plugin system would enable:
Proposed approach
forge-kitCLI resolves plugins from a local config (e.g.,~/.config/ai-dev-toolkit/plugins.json) and from workspace-local.forgekit/plugins.jsonskills/,agents/,collections/, etc.)pnpm catalog:validateruns against the merged catalog, not just the built-in oneOut of scope (v1)
Open questions
References
backlog.jsonitem:plugin-system(status: backlog, priority: low)packages/catalog/catalog/