Skip to content

Convert to a plugin marketplace (3.0.0) - #1

Merged
ovhirup merged 4 commits into
mainfrom
plugin-marketplace
Sep 15, 2026
Merged

ovhirup merged 4 commits into
mainfrom
plugin-marketplace

Conversation

@ovhirup

@ovhirup ovhirup commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Installs via /plugin marketplace add instead of git clone. Breaking for the delivery mechanism; not breaking for the policy.

What moves and why

plugins/stackwich/skills/stackwich/{SKILL.md, assets/} — the skill and its agent definitions, tracked as renames.

Claude Code discovers skills only by scanning a plugin's skills/ directory, and no manifest field can point at a root-level SKILL.md, so the skill had to move. assets/ moved with it because SKILL.md resolves the agent definitions relative to its own directory — together they make the skill directory self-contained.

What the plugin deliberately does not ship

No agents/. Plugin-supplied agents install namespaced as stackwich:advisor, which would break the policy block's bare references, remove the user's ability to decline scaffolding, and make rename-on-collision impossible since a file in the plugin cache is overwritten on update. The skill keeps scaffolding them from assets/. CI fails if that directory ever reappears.

No stub SKILL.md at the root. A stub would itself be a skill named stackwich and would collide for anyone still holding a 2.x clone.

For existing users

Policy is untouched — policy-rev stays 3, the CLAUDE.md block is byte-identical, agents keep their names, nothing to re-run.

Two migration hazards, both now documented in the README and CHANGELOG:

  • A leftover clone gives you two skills named stackwich. Silent today, because the bodies match; a real problem at 3.1.0.
  • git pull into an existing clone deletes the root SKILL.md and assets/, leaving a directory loadable as neither skill nor plugin. /stackwich stops resolving with no error.

CI

Repointed, plus six new invariants — each verified to fail when probed: root SKILL.md reappearing, root assets/ reappearing, a plugins/stackwich/agents/ directory, plugin.json version disagreeing with the skill frontmatter, a drifted plugin LICENSE, and a marketplace/plugin name mismatch.

Not merged yet

/stackwich resolving after a real /plugin install has not been exercised against a live install. That is the README's central instruction and should be confirmed before merge.

Follow-ups, deliberately out of scope: the Claude_Code-skill badge, and migrating evals/evals.json to the evals/**/case.yaml layout claude plugin eval expects.

🤖 Generated with Claude Code

ovhirup and others added 3 commits September 15, 2026 15:38
Skills are discovered only by scanning a plugin's skills/ directory — there is no
manifest field that can point at a root-level SKILL.md — so the skill moves to
plugins/stackwich/skills/stackwich/. assets/ moves with it, because SKILL.md
resolves the agent definitions relative to its own directory; together they make
the skill directory self-contained.

The plugin deliberately does not ship agents/. Plugin agents install namespaced
as stackwich:advisor, which would break the policy block's bare references, break
the user's ability to decline scaffolding, and orphan existing installs. The skill
keeps scaffolding them from assets/.

CI repoints to the new paths and gains two invariants: the plugin must not ship
agents/, and plugin.json's version must match the skill's frontmatter.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
README gains an 'Upgrading from 2.x' section and the install prose stops
describing a clone. Uninstall now says the scaffolded agents outlive the plugin,
because they were written into the user's own agents directory and removing the
plugin leaves them behind.

The changelog entry leads with what does not change — policy-rev stays 3, the
CLAUDE.md block is identical, the agents keep their names, nothing to re-run —
since that is the question an existing user actually has.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Anyone who installed by cloning will reach for git pull to update, because the
2.x README invited exactly that model. After this lands, pulling into an existing
clone deletes the root SKILL.md and assets/ and leaves a directory Claude Code
can load as neither a skill nor a plugin — /stackwich stops resolving with no
error. Both README and CHANGELOG now say so.

The 2.x README also offered a project-level clone; the removal instructions only
mentioned the user-level path. Both are named now.

Drops a claim about Grok's agent namespacing that nothing in this repo supports,
and leads the upgrade section with what does not change rather than with an rm -rf.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4724438f29

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
Comment thread README.md Outdated
Plugin skills are namespaced by their plugin, so a fresh 3.0 install invokes
/stackwich:stackwich. Bare /stackwich only resolved because a pre-3.0 standalone
copy was still present — the very thing the upgrade steps tell users to remove.
Confirmed against an installed example: the skill-creator plugin ships
skills/skill-creator/SKILL.md and surfaces as skill-creator:skill-creator.

The skill's own H1 asserted /stackwich as its invocation; it now just names the
skill, since the invocation depends on how it was installed.

Uninstall covered only user-scoped agents, but the skill writes to <scope>/agents/
and scope can be ./.claude. A project-scoped install left all three agents active
after following the full procedure. The CLAUDE.md block has the same two scopes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ovhirup
ovhirup merged commit 95938ff into main Sep 15, 2026
1 check passed
@ovhirup
ovhirup deleted the plugin-marketplace branch September 15, 2026 10:40
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