Agents & OrchestrationSûr9090/100
Publish Plugins (vinta)
(project) Use when editing any file under skills/ or plugins/ to bump the plugin version and check the manifests
ou envoie-le directement à ton agent.
Installer dans ton projet
$ curl -fsSL https://arboristhree.xyz/cli/install-skill.mjs -o /tmp/arboris-install-skill.mjs && node /tmp/arboris-install-skill.mjs publish-plugins__vinta-hal-9000__claude-skills-427a2b84b8efvinta
vinta/hal-9000
Contenu à copier
--- name: publish-plugins description: (project) Use when editing any file under skills/ or plugins/ to bump the plugin version and check the manifests user-invocable: true model: sonnet effort: medium allowed-tools: - Edit(**/.claude-plugin/*.json) - Bash(python3 .claude/skills/publish-plugins/scripts/check_manifest_sync.py:*) - Bash(python3 .claude/skills/publish-plugins/scripts/check_skill_descriptions_sync.py:*) - Bash(claude plugin validate:*) - Bash(claude plugin test:*) - Bash(npx -y skills@latest add . -l) metadata: origin: vinta internal: true --- # Publish Plugins Prepare the repo's plugins for release: work out which ones changed, bump their versions, and check the manifests still describe what is on disk. Each plugin owns its version in its own `.claude-plugin/plugin.json`, and the repo-root `.claude-plugin/marketplace.json` carries no `version` fields: | Plugin | Manifest | | ------------------------- | ------------------------------------------------------------ | | `hal-skills` | `skills/.claude-plugin/plugin.json` | | `hal-output-styles` | `plugins/hal-output-styles/.claude-plugin/plugin.json` | | `hal-grammar-check` | `plugins/hal-grammar-check/.claude-plugin/plugin.json` | | `hal-session-auto-rename` | `plugins/hal-session-auto-rename/.claude-plugin/plugin.json` | | `hal-voice` | `plugins/hal-voice/.claude-plugin/plugin.json` | ## 1. Find the changed plugins ```bash git diff --name-only origin/main... ``` `skills/**` belongs to `hal-skills`, `plugins/<name>/**` to that plugin. Only the plugins with changes are candidates for a bump. ## 2. Check what is already bumped For each candidate, compare the working-tree version against `origin/main`: ```bash git show origin/main:skills/.claude-plugin/plugin.json ``` If a plugin's version already differs from `origin/main`, it was bumped for unreleased work. **Do not bump it again.** Only bump a plugin whose version still matches `origin/main`. Check each candidate independently — a change under `skills/` says nothing about whether `hal-voice` needs a bump. ## 3. Bump - **Patch** (0.2.0 -> 0.2.1): bug fixes, config changes, style cleanup. - **Minor** (0.2.0 -> 0.3.0): new features, new hooks, new commands. - **Major** (0.2.0 -> 1.0.0): breaking changes to hook behavior or config format. Commit a bump made on its own through the `commit` skill with no argument: its subject already says why a bump exists. ## 4. Check the manifests are in sync ```bash python3 .claude/skills/publish-plugins/scripts/check_manifest_sync.py ``` Every plugin is described twice on purpose: once in its own `.claude-plugin/plugin.json` and once as an entry in `.claude-plugin/marketplace.json`. For each plugin the script checks that - both describe the same fields with the same values, apart from `version` and the directory listing fields `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl`, `termsOfServiceUrl` (plugin.json only) and `source`, `category`, `tags`, `strict`, `defaultEnabled` (marketplace entry only — Claude Code ignores them in a plugin.json). - every component path either manifest declares exists on disk. - every skill directory in a plugin's root appears in both skill lists. It exits non-zero naming each problem. Fix the manifests it names, then run it again. ## 5. Check the skill descriptions are in sync ```bash python3 .claude/skills/publish-plugins/scripts/check_skill_descriptions_sync.py ``` For every skill under `skills/`, check that `interface.short_description` in `agents/openai.yaml` matches its description in both `README.md` and `skills/README.md` exactly. Treat the README descriptions as the source of truth. Keep descriptions as single-line double-quoted strings. Fix missing entries or mismatches, then rerun until the check passes. ## 6. Validate ```bash claude plugin validate . claude plugin validate ./skills claude plugin validate ./plugins/hal-output-styles claude plugin validate ./plugins/hal-grammar-check claude plugin validate ./plugins/hal-session-auto-rename claude plugin validate ./plugins/hal-voice ``` The first call validates the marketplace manifest; the rest validate each plugin manifest. ## 7. Run the mod tests ```bash claude plugin test ./plugins/hal-grammar-check claude plugin test ./plugins/hal-session-auto-rename ``` These two plugins are mods (hooks modules with `tests/*.test.ts`); `make test` and CI run only the Python tests. Fix the failing test or the module, then rerun until every test passes; a command that fails to start is not a pass. ## 8. Check the skills still group for other agents ```bash npx -y skills@latest add . -l ``` This lists what `npx skills add vinta/hal-9000` will offer, reading the working tree instead of the published repo, and installs nothing. Every skill has to appear under the `Hal Skills` heading with a count matching the `skills` list. A skill listed without that heading means the `hal-skills` marketplace entry lost its `name` or its `skills` array — that CLI reads only the two manifests at the repo root, so it never sees `skills/.claude-plugin/plugin.json`.
Colle ce Markdown dans ton agent ou utilise les boutons ci-dessus pour l’écrire dans ton projet.
Ce que fait Publish Plugins (vinta)
**Patch** (0.2.0 -> 0.2.1): bug fixes, config changes, style cleanup.
**Minor** (0.2.0 -> 0.3.0): new features, new hooks, new commands.
**Major** (0.2.0 -> 1.0.0): breaking changes to hook behavior or config format.
both describe the same fields with the same values, apart from `version` and the directory listing fields `icon`, `documentationUrl`, `supportUrl`, `privacyPolicyUrl`, `termsOfServiceUrl` (plugin.json only) and `source`, `category`, `tags`, `strict`, `defaultEnabled` (marketplace entry only — Claude Code ignores them in a plugin.json).
Comment utiliser Publish Plugins (vinta)
1
Copie le prompt
Un clic copie le prompt packagé (ou l'envoie à ton agent).
2
L'agent installe le skill
Il ajoute le SKILL.md et ses ressources à ton projet.
3
Activation automatique
Le skill s'active dès que le contexte correspond.
Déclencheurs pour Publish Plugins (vinta)
Dis simplement à ton agent quelque chose comme :
Applique le skill publish-plugins__vinta-hal-9000__claude-skills-427a2b84b8ef à cette tâche
Utilise publish-plugins__vinta-hal-9000__claude-skills-427a2b84b8ef pour améliorer cette implémentation
Passe en revue ce sujet avec publish-plugins__vinta-hal-9000__claude-skills-427a2b84b8ef
Skills liés à Publish Plugins (vinta)
Acceleration (Microsoft)
Compare synthetic acceleration options and clearly separate scenario value from forecast commitments.Account Overview (Microsoft)
Create a synthetic Acme account overview and identify evidence that merits seller attention.Acroform Writer (Microsoft)
Use this skill whenever the user wants values written INTO an existing PDF form that lives in the connected SharePoint knowledge source — filling out, completing, populating, or submitting a fillable PDF (application, intake sheet, contract, government form) from data they supply, a spreadsheet row, or the conversation. Triggers include "fill out the job application form", "complete the intake form for [person]", "populate our standard NDA template", and "make this ready to send / non-editable" (flatten). The source form should be found via knowledge search; only ask the user to upload it if knowledge search turns up nothing plausible. different task), and do NOT use it on scanned/image-only PDFs that have no real fillable fields — those need OCR or manual overlay instead, which this skill explicitly detects and reports rather than silently failing.