Skip to content

Publish every skill in tools/skills as a plugin - #159

Open
potiuk wants to merge 3 commits into
masterfrom
skills-as-directories
Open

potiuk wants to merge 3 commits into
masterfrom
skills-as-directories

Conversation

@potiuk

@potiuk potiuk commented Nov 9, 2026 •

Copy link
Copy Markdown
Member

Publish every skill in tools/skills/ as a plugin that installs and updates from the Claude Code, Codex and GitHub Copilot marketplaces.

What changes

  • Each skill becomes a plugin directory: tools/skills/<skill>/.claude-plugin/plugin.json, with the skill in tools/skills/<skill>/skills/<skill>/SKILL.md and its scripts/, templates/ and references/ beside it.
    The single-file skills move there from <skill>.md and the shared scripts/, templates/ and references/ directories; releasecheck and maturity-model-assessment move down one level.
    The skills already refer to their files relative to the skill (scripts/rules.json, templates/announce-email.md, …), and the scripts find theirs relative to themselves, so no skill text changes.
  • All eleven are listed in the marketplace catalogs: .claude-plugin/marketplace.json (Claude Code), .agents/plugins/marketplace.json (Codex, which already listed releasecheck) and a new root marketplace.json (VS Code / GitHub Copilot).
  • The releasecheck Makefile and README follow the move, and package-skills.py packages the nested skill when given a plugin directory; the .skill packages it builds are unchanged.
  • The README documents the layout, the per-agent install commands, and how to release a skill: bump version in its plugin.json and tag <skill>-<version>, as releasecheck-0.5.1 was.
  • A separate commit defines the eleven topics tutor lessons 19–21 use, which were failing the Training links check on master.

Why the skills/<skill>/ level

Codex installs a plugin whose SKILL.md sits at the plugin root but never lists the skill: it looks only in skills/<name>/. That includes releasecheck as it is on master today. Claude Code finds the skill either way.

Tested

  • claude plugin validate passes for the marketplace and all eleven plugins.
  • Installed all eleven into clean Claude Code and Codex homes: each one exposes its skill in both (Codex checked with codex debug prompt-input).
  • python3 package-skills.py --all builds all eleven; make test in releasecheck passes (44/44 planted problems found).
  • Not tested: an install from the Copilot catalog.

After merging

Tag the skills you consider ready (<skill>-0.1.0). Apache Magpie curates this repository as a skill source for ASF projects, pinned per skill, and its weekly drift check picks new tags up.
Links to the old paths (e.g. tools/skills/graduation-self-assessment.md) will 404; the new path is tools/skills/graduation-self-assessment/skills/graduation-self-assessment/SKILL.md.
In Claude Code, releasecheck's skill now shows as releasecheck rather than podling-release-check; Codex still uses the frontmatter name.

🤖 Generated with Claude Code

Move each single-file skill into its own directory, as releasecheck
already is: <skill>.md becomes <skill>/SKILL.md, and its scripts/,
templates/ and references/ move into it. The skills already refer to
those files relative to the skill, so no skill text changes.

Give each skill a plugin manifest and list all eleven in the Claude
Code, Codex and GitHub Copilot marketplace catalogs, so each installs
and updates from any of them, and through Apache Magpie for any agent.
Document the layout, the per-agent install commands, and releasing a
skill by tagging <skill>-<version>.

Generated-by: Claude Opus 5
The ipmc-job, vendor-neutrality and edge-cases lessons use eleven
topics that were never defined, so validate_resources.py failed the
Training links check on master. Define them in alphabetical position.

Generated-by: Claude Opus 5
Codex installs a plugin whose SKILL.md sits at the plugin root but never
lists the skill: it looks only in skills/<name>/. Move each skill there,
with its scripts, templates and references, and drop the "skills": "./"
override. Claude Code finds the skills either way.

The releasecheck Makefile and README follow the move, and
package-skills.py packages the nested skill when given a plugin
directory. Tested by installing all eleven plugins into clean Claude Code
and Codex homes: each one exposes its skill in both.

Generated-by: Claude Opus 5
@potiuk

potiuk commented Nov 10, 2026

Copy link
Copy Markdown
Member Author

cc: @justinmclean -> WDYT ?

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.

1 participant