Summary
Add .claude-plugin/marketplace.json so the repo can be installed via /plugin marketplace add greptileai/skills instead of the current git clone + symlink dance.
Motivation
The current install instructions require users to:
git clone the repo into a specific path
- Manually create symlinks for each sub-skill so Claude Code can discover them at the expected depth
This works but has friction:
- New users hit the symlink step without context (it exists because Claude Code looks for
~/.claude/skills/<name>/SKILL.md, and this is a multi-skill repo)
- Updates require
git pull from the cloned location — no built-in update flow
- No discoverability beyond the README
Claude Code's plugin marketplace solves all three: one command to add the marketplace, one command per skill to install, and /plugin update for upgrades.
Proposed structure
Per the marketplace docs, each skill becomes its own plugin entry, with SKILL.md living under <plugin>/skills/<plugin>/SKILL.md:
skills/ (repo root)
├── .claude-plugin/
│ └── marketplace.json
├── check-pr/
│ ├── .claude-plugin/plugin.json
│ └── skills/check-pr/SKILL.md
└── greploop/
├── .claude-plugin/plugin.json
└── skills/greploop/SKILL.md
marketplace.json would list both skills:
{
"name": "greptile",
"owner": { "name": "Greptile" },
"plugins": [
{ "name": "check-pr", "source": "./check-pr", "description": "..." },
{ "name": "greploop", "source": "./greploop", "description": "..." }
]
}
User-facing install becomes:
/plugin marketplace add greptileai/skills
/plugin install check-pr@greptile
/plugin install greploop@greptile
Open questions before I send a PR
- Backward compatibility — keep the clone+symlink instructions in the README as a fallback, or drop them once the plugin path lands?
- Marketplace name —
greptile vs. greptile-skills vs. something else? Affects the install command (@greptile suffix).
- File moves — the restructure moves
check-pr/SKILL.md → check-pr/skills/check-pr/SKILL.md (same for greploop). Happy to do this in a single PR, but flagging that it's a non-trivial diff for reviewers. Would you prefer it split (one PR per skill)?
- Scope — anything else you'd want bundled into this change (e.g. CI to validate
marketplace.json)?
Happy to open the PR once there's directional alignment. Wanted to avoid the fate of #4 by checking first.
Summary
Add
.claude-plugin/marketplace.jsonso the repo can be installed via/plugin marketplace add greptileai/skillsinstead of the currentgit clone+ symlink dance.Motivation
The current install instructions require users to:
git clonethe repo into a specific pathThis works but has friction:
~/.claude/skills/<name>/SKILL.md, and this is a multi-skill repo)git pullfrom the cloned location — no built-in update flowClaude Code's plugin marketplace solves all three: one command to add the marketplace, one command per skill to install, and
/plugin updatefor upgrades.Proposed structure
Per the marketplace docs, each skill becomes its own plugin entry, with
SKILL.mdliving under<plugin>/skills/<plugin>/SKILL.md:marketplace.jsonwould list both skills:{ "name": "greptile", "owner": { "name": "Greptile" }, "plugins": [ { "name": "check-pr", "source": "./check-pr", "description": "..." }, { "name": "greploop", "source": "./greploop", "description": "..." } ] }User-facing install becomes:
Open questions before I send a PR
greptilevs.greptile-skillsvs. something else? Affects the install command (@greptilesuffix).check-pr/SKILL.md→check-pr/skills/check-pr/SKILL.md(same forgreploop). Happy to do this in a single PR, but flagging that it's a non-trivial diff for reviewers. Would you prefer it split (one PR per skill)?marketplace.json)?Happy to open the PR once there's directional alignment. Wanted to avoid the fate of #4 by checking first.