Help us improve
Share bugs, ideas, or general feedback.
From marketplace-author
This skill should be used when the user asks to "create a skill in this repo", "add a skill to claude-code-tools", "add a skill to the marketplace", "update an existing skill", "ship this skill", "bump skill version", or otherwise authors/edits skills in the amitkot/claude-code-tools marketplace. Handles directory layout, version bumps across SKILL.md / plugin.json / marketplace.json, CHANGELOG entries, and the create → commit → push → PR → /plugin → /reload-plugins workflow.
npx claudepluginhub amitkot/claude-code-tools --plugin marketplace-authorHow this skill is triggered — by the user, by Claude, or both
Slash command
/marketplace-author:marketplace-authorThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Authoring skills in the [`amitkot/claude-code-tools`](https://github.com/amitkot/claude-code-tools) marketplace. The repo is a multi-plugin marketplace; each top-level directory (other than the root) is its own plugin with its own version, and skills live under `<plugin>/skills/<skill-name>/`.
Guides technical evaluation of code review feedback: read fully, restate for understanding, verify against codebase, respond with reasoning or pushback before implementing.
Share bugs, ideas, or general feedback.
Authoring skills in the amitkot/claude-code-tools marketplace. The repo is a multi-plugin marketplace; each top-level directory (other than the root) is its own plugin with its own version, and skills live under <plugin>/skills/<skill-name>/.
Run all commands from the repository root. If the current working directory is unclear, ask once before guessing.
The end-to-end flow for any skill change:
main — git checkout main && git pull && git checkout -b feat/<short-slug>. Never edit on main directly.plugin.json, the marketplace entry, and the marketplace top-level. See Version bumps — getting this wrong is the most common bug.CHANGELOG.md — at the top, with a new section. See CHANGELOG format.jq . .claude-plugin/marketplace.json and jq . <plugin>/.claude-plugin/plugin.json for every file touched. Don't skip this.gh pr create (or gh pr edit if already open). See PR template./plugin or /reload-plugins; the user must.Pick one:
.claude-plugin/marketplace.json .plugins[].Always discover the current plugin set before deciding — don't rely on memory. Run:
jq -r '.plugins[] | "\(.name)\t\(.version)"' .claude-plugin/marketplace.json
references/repo-layout.md has more discovery commands, including a drift-check that spots stale version pins from a previous half-bump.
Skills in this repo follow Anthropic's Skill conventions plus a few local norms. For the full canonical Skill authoring guidance — frontmatter, progressive disclosure, imperative voice, trigger-phrase quality — invoke the plugin-dev:skill-development skill.
Local conventions on top of that:
version must be present and match the plugin version after a bump. Skills without a version field have appeared, but every new/edited skill should set it.description is the trigger. Use specific phrases the user actually says. For models, find an existing skill whose triggering shape is close to the new one — find . -maxdepth 5 -name SKILL.md | head -20 and skim a few description: lines.allowed-tools in frontmatter is optional but recommended. Use it to scope tool access (e.g., Bash, Read, Edit for an editing skill, Bash(but *) to limit a Bash skill to specific commands).references/<topic>.md, working examples to examples/, scripts to scripts/.SKILL.md (uppercase). Matches existing repo convention.There are four version fields that may need bumping when a skill changes. Miss any one and the marketplace gets out of sync.
| File | Field | When |
|---|---|---|
<plugin>/skills/<skill>/SKILL.md | frontmatter version: | Every edit to that skill |
<plugin>/.claude-plugin/plugin.json | top-level version | Every edit inside that plugin |
.claude-plugin/marketplace.json | the entry whose name matches the plugin | Same value as plugin.json |
.claude-plugin/marketplace.json | top-level metadata.version | Every release (patch for fixes, minor for new skill/plugin) |
Convention seen in repo so far: SKILL.md version and the plugin's version move together. Always set them to the same value after a bump.
Bump size:
x.y.Z) — wording fix, doc improvement, behavior unchanged.x.Y.0) — new skill, new functionality, prominence change strong enough that an existing user might want to know.X.0.0) — breaking change to skill behavior or interface (rare).Verify after editing:
jq '.metadata.version' .claude-plugin/marketplace.json
jq '.plugins[] | select(.name=="<plugin>") | .version' .claude-plugin/marketplace.json
jq '.version' <plugin>/.claude-plugin/plugin.json
grep '^version:' <plugin>/skills/<skill>/SKILL.md
All three plugin-level numbers must agree. The marketplace top-level moves on its own cadence.
Top of CHANGELOG.md. Insert a new ## [X.Y.Z] - YYYY-MM-DD section above the previous one. Real entries from the repo are the best template; in particular [1.14.1] and [1.14.0] show the structure. The minimum useful structure:
## [X.Y.Z] - YYYY-MM-DD
### Added | Changed | Fixed
#### <Plugin Name> Plugin (<plugin-version>)
- One bullet per skill or behavior change. Lead with what shipped, follow with the *why*.
- Motivating case if there was one — a real session that triggered the change is gold.
### Technical Details
- Marketplace: <prev> -> <new>
- <Plugin Name> plugin: <prev> -> <new>
Keep it terse. The "Why" / motivating case is what makes future-you re-read it without yawning.
gh pr create --title "<conventional-style title under 70 chars>" --body "$(cat <<'EOF'
## Summary
- Bullet 1: what shipped, in one sentence.
- Bullet 2: where it lives (which plugin, which skill).
- Bullet 3: version bumps (e.g., "marketplace 1.14.1 -> 1.15.0; new marketplace-author plugin at 0.1.0").
## Why
Brief paragraph: what real session/task drove this. The motivating case from the CHANGELOG can be reused here.
## Test plan
- [ ] Render \`SKILL.md\` and confirm structure.
- [ ] \`jq\` the manifests to confirm versions.
- [ ] Reload the plugin in a real session and trigger the skill.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
If a PR already exists for the branch, use gh pr edit <num> --title ... --body ... instead.
The agent cannot invoke /plugin or /reload-plugins directly — they are user-side Claude Code slash commands. After the push succeeds, write a short message to the user along these lines:
Pushed. To pick up the new version in this session:
- Run
/plugin— confirms the marketplace bump (will say "Updated 1 marketplace (N plugin bumped)").- Run
/reload-plugins— actually loads the new SKILL.md from the bumped cache path.After reload, I can verify the new version is live by invoking the skill — its base path will be
~/.claude/plugins/cache/amitkot/<plugin>/<new-version>/....
Once the user has run them, verify by invoking the skill (via the Skill tool) and confirming the cache path's version segment matches the bumped value. If the path still shows the old version, the reload didn't take — usually the marketplace cache hasn't refreshed; ask the user to run /plugin again.
marketplace-author plugin's own version moves; this skill's frontmatter version moves with it./reload-plugins doesn't pick up changes — the marketplace pin (managed by /plugin) controls which version the user is on. The agent shouldn't try to fix this; ask the user.references/repo-layout.md — full directory structure of the marketplace, what each top-level dir is, where skills live, where versions are pinned.references/version-cheatsheet.md — the version-bump matrix as a one-page quick lookup, plus the jq verification commands.version matches the plugin's plugin.json version.plugin.json version matches the marketplace entry's version.metadata.version bumped.jq . runs without error)./plugin then /reload-plugins.