Skip to content

Package the skill as a Claude Code plugin for directory submission - #9

Merged
alexburan merged 1 commit into
mainfrom
feat/claude-code-plugin-manifest
Aug 25, 2026
Merged

Package the skill as a Claude Code plugin for directory submission#9
alexburan merged 1 commit into
mainfrom
feat/claude-code-plugin-manifest

Conversation

@alexburan

Copy link
Copy Markdown
Contributor

Prepares the repo for submission to Anthropic's public plugin directory, and fixes two instructions in the skill that were wrong for every install path.

What changed

Added .claude-plugin/plugin.json. The directory needs a manifest to read a name, version, description and licence from. The plugin is named conveythis-translator, not claude-translator, so the public listing is not led by an Anthropic trademark. The repo and the npm package keep their existing names.

Moved SKILL.md to skills/translate-site/SKILL.md. This was forced, not cosmetic. The plugin reference states a single-skill plugin may keep SKILL.md at the plugin root, but on Claude Code 2.1.126 that skill is never discovered. Three variants were tested — manifest present, manifest absent, and "skills": "./" — and all three loaded no skill at all. The conventional skills/<name>/SKILL.md layout loads correctly.

Anyone who cloned this repo into ~/.claude/skills/claude-translator/ keeps working: a directory there carrying a .claude-plugin/plugin.json is loaded as a plugin automatically.

Bugs fixed along the way

  • The Pipeline block pointed at the wrong directory. It read node scripts/extract.mjs, but claude-translator init scaffolds into scripts/i18n/ (its --dir default), as the README has always shown correctly. Every command in that block would have failed with Cannot find module for anyone following the skill rather than the README.
  • Setup assumed a hand-clone, hardcoding ~/.claude/skills/claude-translator/bin/… — a path that does not exist for a plugin install. It now leads with npx claude-translator init and falls back to "${CLAUDE_PLUGIN_ROOT}"/bin/claude-translator.mjs.

Verification

  • claude plugin validate . — passes with no errors and no warnings. Worth noting this CLI version rejects both displayName and "skills": ["."], which the current reference documents; neither is used here.
  • Skill discovery — confirmed through claude --plugin-dir using a uniquely renamed copy of the skill, so the identically named skill already installed in ~/.claude/skills/ could not be mistaken for it. Loads as conveythis-translator:<skill>.
  • End to end — the documented setup line, run with CLAUDE_PLUGIN_ROOT set, scaffolds scripts/i18n/ with all nine scripts, i18n.config.json and the .gitignore entries into a throwaway project. This is what proves the path fixes are right.
  • npm run check and npm test (39 tests) pass unchanged; npm pack ships .claude-plugin/plugin.json and skills/translate-site/SKILL.md.

No API key was used and no provider was called — only translate.mjs spends money, and nothing here runs it.

🤖 Generated with Claude Code

Adds .claude-plugin/plugin.json so the repo can be submitted to Anthropic's
public plugin directory, which needs a manifest to read a name, version,
description and licence from.

SKILL.md moves to skills/translate-site/SKILL.md. This was forced rather than
cosmetic: the plugin reference states a single-skill plugin may keep SKILL.md at
the plugin root, but on Claude Code 2.1.126 such a skill is never discovered.
Three variants were tried — manifest present, manifest absent, and
"skills": "./" — and none loaded a skill. The conventional skills/<name>/
layout loads correctly and namespaces as conveythis-translator:translate-site.

The plugin is named conveythis-translator rather than claude-translator so the
public listing is not led by an Anthropic trademark. The repo and the npm
package keep their existing names.

Also fixes two things in the skill that were wrong for any install:

- The Pipeline block ran node scripts/extract.mjs, but the installer scaffolds
  into scripts/i18n/ (its --dir default). Every command in that block would
  have failed with Cannot find module for anyone following the skill instead of
  the README.
- Setup hardcoded ~/.claude/skills/claude-translator/bin/, a path that does not
  exist for a plugin install. It now leads with npx and falls back to
  "${CLAUDE_PLUGIN_ROOT}"/bin/claude-translator.mjs.

Verified: claude plugin validate passes clean; a uniquely renamed copy of the
skill is discovered through --plugin-dir, so an identically named skill already
in ~/.claude/skills could not be mistaken for it; the documented setup line
scaffolds scripts/i18n/, i18n.config.json and the .gitignore entries into a
throwaway project, confirming ${CLAUDE_PLUGIN_ROOT} resolves; npm run check and
all 39 tests pass; npm pack ships the manifest and the skill.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@alexburan
alexburan merged commit e886424 into main Aug 25, 2026
1 check passed
@alexburan
alexburan deleted the feat/claude-code-plugin-manifest branch August 25, 2026 22:30
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