Skip to content

Repository layout

plugins/<plugin>/
├── plugin.json                       portable closed manifest
├── skills/<skill>/                   optional, immediate children only
│   ├── SKILL.md                      required skill entrypoint
│   ├── references/                   optional progressive guidance
│   └── scripts/                      optional packaged helpers
├── mcp.json                          optional portable MCP configuration
├── server.py / bin/ / config/        optional packaged MCP runtime files
├── LICENSE / LICENSES/ / licenses/   distributed license evidence
└── provenance/<skill>.json           one record per imported skill

catalog/plugins.json                  category and compatibility policy
.github/plugin/marketplace.json       generated Copilot marketplace
.agents/plugins/marketplace.json      generated Codex marketplace
schemas/agent-plugins/1.0.0/          pinned portable schemas
examples/tutorial/                    runnable documentation inputs

Agent Plugins discovers only immediate directories under skills/ and only root mcp.json. Category is marketplace taxonomy, never a nesting level.

Portable packages may be skill-only, MCP-only, or mixed. A useful forge package must expose at least one skill or one non-empty MCP server. Both generated marketplace indexes point directly to these portable packages.

The installed package-agent-skill keeps its bootstrap helper under its own scripts/ directory. This makes the no-clone publication entrypoint travel with the plugin while the complete Forge runtime stays in the current selected checkout.