- plugin-create/SKILL.md: fix ${CLAUDE_PLUGIN_ROOT} path (create-plugin → plugin-create, 4 occurrences)
- plugin-create/SKILL.md: delegate reserved name validation to new references/reserved-names.md (complete list)
- plugin-create/SKILL.md: add displayName reminder in step 4, full-validation pointer in step 7
- plugin-create/references/reserved-names.md: complete reserved name list extracted from claude-code.md
- plugin-create/references/manifest-fields.md: quick-ref for both plugin.json manifests and marketplace entry
- plugin-create/META.md: update stale when: and references: fields to reflect post-migration paths
- plugin-create/assets/plugin-template/hooks.json: unify empty hooks schema to {} (was [])
- write-skill/SKILL.md: fix YAML frontmatter parse error — wrap description in >- block scalar
- validate.sh: strip backtick spans before ../ check to eliminate documentation false positives
- inventory.sh: same backtick-span fix, applied to both outer check and per-line reporting
- tests/test_scripts.sh: fix SCRIPTS_DIR path to skills/marketplace-architect/scripts/
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.1 KiB
2.1 KiB
Manifest Field Reference
Quick reference for the two plugin manifests generated by this skill.
Source of truth: ${CLAUDE_PLUGIN_ROOT}/skills/marketplace-architect/references/claude-code.md
and copilot-cli.md in the same directory.
Claude Code — .claude-plugin/plugin.json
Only name is required. Add other fields only when needed.
{
"name": "my-plugin",
"displayName": "My Plugin",
"description": "What it does",
"author": { "name": "Name", "url": "https://..." },
"license": "MIT",
"keywords": []
}
displayName— human-readable label shown in the Claude Code UI. Update it to a title-cased string after placeholder substitution — it defaults to the kebab slug.version— omit to use git SHA per commit (recommended). Set only for explicit release gates.- Component paths (
skills/,agents/, etc.) are declared in the marketplace entry, not here.
Copilot CLI — plugin.json at plugin root
{
"name": "my-plugin",
"description": "What it does",
"author": { "name": "Name", "email": "you@example.com" },
"license": "MIT",
"keywords": [],
"agents": "agents/",
"skills": ["skills/"],
"hooks": "hooks.json",
"mcpServers": ".mcp.json"
}
author.email(noturl) — Copilot uses email; Claude uses url. Both manifests diverge here.- Component paths are declared inline in this manifest (Copilot requires them; Claude ignores them).
Marketplace entry (in .claude-plugin/marketplace.json)
{
"name": "my-plugin",
"source": "./plugins/my-plugin",
"description": "..."
}
sourcemust start with./for Claude Code compatibility.- Do not set
versionhere if it is also set inplugin.json—plugin.jsonwins silently.
Environment variables (for hooks and MCP configs)
${CLAUDE_PLUGIN_ROOT}— absolute path to the plugin's installation cache. Use for all in-plugin file references in hooks and.mcp.json. Changes on update.${CLAUDE_PLUGIN_DATA}— persistent directory that survives updates. Use for state, caches, andnode_modules.