Skip to content

refactor: flatten skills/ and adopt Agent Plugins 1.0 - #807

Draft
mattpocock wants to merge 1 commit into
mainfrom
flatten-skills-tree
Draft

refactor: flatten skills/ and adopt Agent Plugins 1.0#807
mattpocock wants to merge 1 commit into
mainfrom
flatten-skills-tree

Conversation

@mattpocock

Copy link
Copy Markdown
Owner

Someone proposed packaging this repo as an Agent Plugins 1.0 plugin: a generated flat package under plugins/mattpocock-skills/, built by two TypeScript scripts, guarded by a validator, an allowlist and a CI job that fails on any rebuild diff — with all 25 skills committed twice.

That whole apparatus exists to work around one thing: the standard reads only the immediate children of skills/, and plugin.json cannot point elsewhere. Our skills sit one level too deep.

So this PR removes the buckets instead. Conformant by layout, not by tooling. Full reasoning, including what we deliberately didn't do, is in ADR 0003.

What changed

  • skills/ is flat and holds exactly the promoted 25. Which folder a skill lives in is now the only thing that decides whether it ships.
  • in-progress/drafts/, misc/extras/, both outside skills/. deprecated/ deleted — it was empty.
  • New root plugin.json: the Agent Plugins 1.0 manifest. Read by Codex, Cursor and Copilot.
  • .claude-plugin/plugin.json keeps serving Claude Code and loses its 25-entry skills array — one promotion mechanism, not two.
  • sync-plugin-version.mjs now syncs both manifests, and check-plugin-version is wired into the release workflow.
  • link-skills.sh links skills/, drafts/ and extras/, preserving today's dev behaviour.
  • 113 files, of which 98 are pure renames.

Free win

npx skills@latest add mattpocock/skills has been offering all 35 skills — every draft and extra included. It walks skills/ to depth 3 regardless of any manifest. Moving them out narrows the offer to the promoted 25.

What this does NOT do

  • No .codex-plugin/ or .cursor-plugin/ manifest. Cursor documents dual support outright; the Codex source reads root plugin.json first. The proposal was more conservative than either client.
  • No new marketplace files. Marketplaces aren't part of the standard. Copilot reads .claude-plugin/marketplace.json and Codex treats it as legacy-compatible, so the one we have may already serve all three. Add others only where a real install fails.
  • No rename to mp. mattpocock-skills is live in Claude Code's official marketplace with auto-update. Renaming breaks every existing install for a shorter slash command.
  • No flattening of docs/. It would force 27 manual githubSource repoints on aihero.dev, one CLI call each, for zero technical gain.

Verified

  • 25 skills flat, 6 drafts, 4 extras; every directory name matches its frontmatter name; all 25 agents/openai.yaml preserved; nested scripts/ and template.sh assets intact.
  • No broken repo-relative or absolute GitHub links into skills/.
  • Both manifests agree on name and version; check-plugin-version passes.
  • claude plugin validate . --strict passes.
  • Installed into an isolated CLAUDE_CONFIG_DIR from the local marketplace — installs and reports enabled.

Not verified — do this before release

  1. Does Claude register 25 skills or 35? Deleting the skills array means relying on auto-discovery. The isolated test home isn't authenticated, so the count is unproven. Install from a clean profile and count.
  2. Does an explicit-only skill stay explicit-only? 14 of the 25 carry disable-model-invocation, which is not in the Agent Skills standard. We rely on non-Claude clients ignoring an unknown frontmatter key. Confirm /grill-me doesn't self-fire.
  3. .agents/install-block.md still says "the plugin is Claude Code only". Deliberately left alone — update it once a Codex/Cursor install is actually tested.

The Agent Plugins standard reads only the immediate children of
skills/ and cannot be pointed elsewhere, so a bucketed tree is
invisible to every conformant client.

Rather than generate a flat copy of the repo into a package
directory — a builder, a validator, an allowlist, a drift CI job,
and every skill committed twice — remove the buckets.

- skills/ is flat and holds exactly the promoted 25
- in-progress/ -> drafts/, misc/ -> extras/, deprecated/ deleted
- new root plugin.json (Agent Plugins 1.0)
- .claude-plugin/plugin.json loses its 25-entry skills array
- docs/ keeps its category folders; it is now the only place a
  skill's category lives

Reasoning in .agents/adr/0003.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Aug 7, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: a16a267

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
mattpocock-skills Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@pabloubal

Copy link
Copy Markdown

you could actually have it as a marketplace and define the plugins in each one of the directories you have in the main branch. I tested it in both Claude and Codex and it works (Codex supports Claude marketplaces).

Like this

You need

@pandeyayush4804-ai

Copy link
Copy Markdown

hii

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants