skills/skill-publish/SKILL.md
This skill should be used when the user asks to "publish a plugin", "release a plugin", "bump plugin version", "update a Claude Code plugin", "update a Codex plugin", "publish skills", or mentions plugin publishing, plugin release, or skill distribution. Handles synchronized host manifests, changelog and README updates, git workflow, cache refresh, and standalone Agent Skills.
npx skillsauth add b-open-io/prompts skill-publishInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Publish Claude Code plugins and standalone Agent Skills with proper versioning, changelog management, and git workflow.
Before starting, identify the publish type based on project structure:
| Indicator | Type |
|-----------|------|
| .claude-plugin/plugin.json and/or .codex-plugin/plugin.json exists | Hosted plugin |
| Standalone SKILL.md with no plugin manifest | Standalone Agent Skill |
Hosted plugins publish by pushing to GitHub. Repositories supporting multiple hosts must keep every real manifest and their shared marketplace metadata in sync. Codex caches plugin contents by version, so a stale version can preserve stale skills even after the source commit moves.
Standalone Agent Skills follow the agentskills.io specification and distribute as directories containing SKILL.md.
# Read and validate every host manifest
python3 scripts/check-plugin-manifests.py
# Check git is clean and up to date
git fetch origin && git status
# Review commits since last version bump
git log --oneline $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~10)..HEAD
CHANGELOG.md is required. Summarize every user-visible or operational change
since the last release under Unreleased. Update README.md whenever the
public inventory, installation flow, runtime behavior, or advertised feature
set changes. Run the repository documentation check when available:
python3 scripts/check-docs.py
Compare the last manifest-bump commit with current HEAD so changes committed under a stale version are not omitted.
Use the repository's synchronized bump command when present. For bopen-tools:
python3 scripts/check-plugin-manifests.py --bump-patch
Otherwise edit every host manifest together. Bump the patch version unless the user explicitly requests and justifies a larger change:
0.1.6 → 0.1.7
1.0.23 → 1.0.24
Move the reviewed Unreleased notes into a dated release entry:
## [X.X.X] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes to existing functionality
### Fixed
- Bug fixes
Keep an empty Unreleased heading for the next change. Verify that the release
heading matches every manifest exactly.
Before publishing, verify the plugin is well-formed:
.claude-plugin/plugin.json has required name fieldSKILL.md with valid YAML frontmatter (name + description).md files with YAML frontmatterCHANGELOG.md contains the release versionFor bopen-tools, run:
python3 scripts/check-plugin-manifests.py
python3 scripts/check-docs.py
python3 scripts/codex-agents/generate.py --check
bash hooks/tests/run-tests.sh
git diff --check
Critical: Pushing to the default branch IS publishing. The Claude Code plugin marketplace automatically picks up the latest commit.
# Stage only reviewed, owned paths; never sweep unrelated worktree changes.
git add .claude-plugin/plugin.json .codex-plugin/plugin.json CHANGELOG.md README.md
git add path/to/each/reviewed/component
git commit -m "Release vX.X.X"
git push origin <default-branch>
git log origin/<default-branch>..<default-branch>
If either real manifest was bumped, push in the same session. A committed but unpushed bump is a stranded release.
After pushing, verify the plugin update is available:
CLAUDECODE= claude plugin update <plugin-name>@<publisher>
codex plugin marketplace upgrade
codex plugin add <plugin-name>@<publisher>
The CLAUDECODE= prefix avoids nested Claude session errors. For Codex,
marketplace add does not refresh an existing snapshot; use marketplace upgrade before reinstalling. Confirm the installed root contains the new
version, then smoke-test both hosts in fresh sessions.
Note: The marketplace may take a few minutes to reflect the new version.
If the plugin version is tracked elsewhere (e.g., a marketplace page, documentation, or lib/plugins.ts), update those references to match the new version.
For skills not bundled in a Claude Code plugin, follow the agentskills.io specification.
Verify frontmatter meets the spec. For details, consult references/agentskills-spec.md.
Required fields:
name: 1-64 chars, lowercase alphanumeric + hyphens, must match directory namedescription: 1-1024 chars, describes what and whenOptional fields:
license, compatibility, metadata, allowed-toolsskill-name/
├── SKILL.md # Required
├── scripts/ # Optional executables
├── references/ # Optional docs loaded on demand
└── assets/ # Optional static resources
Track version in the frontmatter metadata field:
metadata:
author: org-name
version: "1.1.0"
Standalone skills distribute as directories. Common methods:
If claude plugin update does not pick up changes:
main or master).claude-plugin/plugin.json is valid JSONIf the version string was already used in a previous commit, bump again to the next patch before pushing.
Always prefix CLI commands with CLAUDECODE= when running from within an active Claude Code session to avoid the "nested session" error.
references/agentskills-spec.md — Complete agentskills.io specification summary for standalone skillstools
This skill should be used when a Claude Code session needs to keep working after Anthropic usage runs out, or when the user asks to run the Claude Code harness on GPT-5.6 Sol. Trigger phrases include "my Anthropic usage ran out", "I'm out of Claude usage", "usage limit reached, what now", "keep working on another model", "run Claude Code on GPT-5.6 Sol", "use GPT-5.6 Sol as the model", "set up claudex", "claudex isn't working", "route the harness through CLIProxyAPI", or "bill against my ChatGPT/Codex subscription". It stands up a local proxy so the Claude Code CLI runs on OpenAI's Codex backend as an escape hatch, and diagnoses that setup when it drifts. macOS + Homebrew.
testing
This skill should be used when the user asks to "open Visual Wayfinder", "answer a Wayfinder ticket visually", "turn this decision into a configurator", "show Wayfinder choices as a dashboard", "prototype the Wayfinder questionnaire", or wants interactive choice cards, tradeoff controls, rankings, ranges, toggles, and consequence previews for one active Wayfinder decision. It wraps the Wayfinder skill and JSON Render; it never replaces the tracker or resolves more than the active decision.
development
This skill should be used when the user asks to "make a visual proposal", "write this up so I can share it", "present these options visually", "diagram the trade-offs", "turn this plan into something reviewable", or requests a shareable design pitch, architecture proposal, RFC, options comparison, or visual roadmap for work that has not been built. It produces one self-contained, theme-aware HTML page led by grounded diagrams. Use visual-review instead for completed code changes; do not use this skill for internal task tracking.
tools
This skill should be used when the user asks to "add plugin settings", "make a plugin configurable", "store per-project plugin configuration", "use settings.local.json", "create a plugin state file", "expose skill settings in Agent Master", or "add a skill interface". Distinguishes official Claude Code settings from project-owned configuration and documents bOpen Agent Master skill interface discovery.