Skip to content

refactor(plugin): self-maintaining directory form for plugin skills - #565

Draft
mattpocock wants to merge 1 commit into
mainfrom
task/plugin-skills-dir-form
Draft

refactor(plugin): self-maintaining directory form for plugin skills#565
mattpocock wants to merge 1 commit into
mainfrom
task/plugin-skills-dir-form

Conversation

@mattpocock

Copy link
Copy Markdown
Owner

What

Switch .claude-plugin/plugin.json's skills field from a hand-listed enumeration of all 22 skill directories to directory form — pointing at the two promoted buckets and letting Claude Code discover the skills one level down:

"skills": [
  "./skills/engineering",
  "./skills/productivity"
]

Why

The enumeration had to be edited by hand every time a skill was promoted, and had already drifted once (it left resolving-merge-conflicts off). Directory form is self-maintaining: newly promoted skills under those two buckets are picked up automatically, and the manifest can't fall out of sync with the tree.

Equivalence

Directory form resolves to exactly the same 22 skills as the old list — engineering (17) and productivity (5) — and the non-promoted buckets (deprecated, in-progress, misc, personal) stay excluded. README.md files in each bucket are ignored (no SKILL.md).

claude plugin validate . passes.

🤖 Generated with Claude Code

Replace the hand-listed 22 skill directories in
.claude-plugin/plugin.json with the two promoted buckets
(./skills/engineering, ./skills/productivity). Claude Code
discovers skills one level down, so newly promoted skills are
picked up automatically and the manifest can't drift out of sync
with the tree. Resolves the same enumeration gap that once left
resolving-merge-conflicts off the list.

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

changeset-bot Bot commented Jul 14, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: c01d2b6

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

@johngully

johngully commented Jul 21, 2026

Copy link
Copy Markdown

I believe that Codex should no longer be excluded from the v1.2 plugin story.

Codex plugin manifest path fields now accept either a string or an array of strings. This shipped June 22, 2026 in v0.142.0 with the following fixes: manifest parsing and array resolution.

Codex now explicitly recognizes both .claude-plugin/plugin.json and .claude-plugin/marketplace.json.
The existing marketplace entry’s source: ./ is also supported and resolves to the repository root.

I verified the current repository end to end with:

codex plugin marketplace add mattpocock/skills
codex plugin add mattpocock-skills@mattpocock
codex plugin list --marketplace mattpocock

The plugin installed as enabled at version 1.2.0. In a new Codex session, /skills exposed the 22 entries from .claude-plugin/plugin.json Allowlisted skills such as tdd, code-review, and grill-me resolved under the mattpocock-skills: namespace, and I verified that non-promoted skills such as qa, wizard, and edit-article were not exposed.

The existing Claude plugin is already cross-compatible with Codex and the symlink workaround is no longer necessary because Codex can consume the explicit skills array directly.

I believe the required changes are documentation and release messaging only:

  • Update ADR 0002 to record that its deferral condition has been satisfied.
  • Update this release note so it does not say Codex remains deferred.
  • Add the Codex installation commands to the README.
  • Broaden the marketplace description from “Claude Code plugin” to “Claude Code and Codex plugin.”

@mattpocock I'm not sure if this is the right place for this content or not. Please let me know if you'd like this feedback elsewhere.

@saidelike

saidelike commented Jul 28, 2026

Copy link
Copy Markdown

I got it working fully as a codex plugin: https://github.com/saidelike/skills/tree/feat/native-codex-plugin but I guess #565 (comment) way is way simpler

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