Phased Plugin Migration Playbook
This playbook outlines the recommended step-by-step sequence for converting an existing flat skills repository into an Agent Plugins v1.0.0 monorepo.
Phase 0: Pre-flight Hygiene & Git Exclusion
- Identify machine-local runtime directories (e.g.
.serena/,.antigravitycli/,.cache/). - Verify that no untracked file or symlink points outside the repository root (e.g. absolute symlinks to home directory config files). Symlinks escaping the repo violate spec §4.1 containment and will poison archive distributions.
- Add machine-local runtime paths to
.gitignore.
Phase 1: Resolve Conformance Debt (Before Directory Moves)
Rule: Fix all SKILL.md frontmatter, missing licenses, and non-executable script issues before moving files, so git history tracks pure directory renames without mixed content diffs.
- Add Missing Frontmatter: Ensure every
SKILL.mdbegins with---YAML frontmatter containingnameanddescription. - Trim Oversized Descriptions: Truncate
descriptionstrings exceeding 1024 characters (Agent Skills spec constraint) while preserving key trigger phrases. - Normalize Metadata & Versioning: Move non-spec top-level fields (like top-level
version: 1.0.0) undermetadata:\n version: "1.0.0". - License & Executable Bits: Ensure
license:is specified (e.g.,license: Apache-2.0) and runchmod +xon all files insidescripts/directories. - Asset & Reference Relocation: Move project configuration templates (e.g.
.ymlconfigs) fromreferences/toassets/. Fold stray root directories (like sample output reports) into their parent skill'sreferences/directory.
Phase 2: Restructure Directories via git mv
- Group skills into thematic plugins under
plugins/<plugin-name>/skills/. - Analyze cross-skill relative links (e.g.
../sibling-skill/SKILL.md). Ensure skills that delegate to each other belong to the same plugin so parent-relative links resolve legally within the plugin root (§4.1). - Execute renames using
git mv <skill-name> plugins/<plugin-name>/skills/<skill-name>.
Phase 3: Add Plugin Manifests & Marketplace Index
- Create
plugins/<plugin-name>/plugin.jsonfor each plugin, specifying$schema(https://agent-plugins.org/schemas/1.0.0/plugin.schema.json),name,version,description,author,repository, andlicenseper Agent Plugins §5. - If the plugin provides or configures MCP servers, create
plugins/<plugin-name>/mcp.jsonwith matching$schemaversion (https://agent-plugins.org/schemas/1.0.0/mcp.schema.json) per Agent Plugins §7.2. - Create
.claude-plugin/marketplace.jsonat the repo root to provide a deterministic index fornpx skillsand Claude Code.
Phase 4: Validation & Automation
- Run
./scripts/validate-plugins.shlocally to verify:plugin.jsonschema and name consistencySKILL.mdfrontmatter, description length ($\le 1024$), and directory name match- Script executable bits (
+x) marketplace.jsonvalidity
- Add a GitHub Actions workflow (
.github/workflows/validate.yml) to run the validation script on push/PR.
Phase 5: Documentation & Commit
- Add root
LICENSE(e.g. Apache License 2.0) andCONTRIBUTING.md. - Update root
README.mdto organize skills by plugin and document installation paths fornpx skills,gemini skills, andagy. - Commit all changes with a clear commit message:
feat: restructure repository into Agent Plugins v1.0.0 architecture.