fix(kyberforge): resolve plugin-create path bug, validate.sh false positives, and write-skill YAML error

- 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>
This commit is contained in:
2026-06-20 18:41:29 +00:00
parent 0c92e32038
commit 2b649782a2
9 changed files with 151 additions and 22 deletions

View File

@@ -0,0 +1,72 @@
# 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.
```json
{
"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
```json
{
"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` (not `url`) — 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`)
```json
{
"name": "my-plugin",
"source": "./plugins/my-plugin",
"description": "..."
}
```
- `source` must start with `./` for Claude Code compatibility.
- Do not set `version` here if it is also set in `plugin.json` — `plugin.json` wins 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, and `node_modules`.