com um clique
release
// Run the SPECTRE release workflow, including version bumps, Codex sync, global Codex install verification, GitHub release, manual npm publish handoff, npm verification, and final global Codex refresh.
// Run the SPECTRE release workflow, including version bumps, Codex sync, global Codex install verification, GitHub release, manual npm publish handoff, npm verification, and final global Codex refresh.
👻 | Transform requirements into executable tasks - primary agent
👻 | Independent multi-lens review of plan.md and/or tasks.md — finds overengineering, missing verification, hallucinated deps, weak references
👻 | Unified planning entry point - researches, assesses complexity, routes to workflow - primary agent
👻 | Transform requirements into executable tasks - primary agent
👻 | Independent multi-lens review of plan.md and/or tasks.md — finds overengineering, missing verification, hallucinated deps, weak references
👻 | Unified planning entry point - researches, assesses complexity, routes to workflow - primary agent
| name | release |
| description | Run the SPECTRE release workflow, including version bumps, Codex sync, global Codex install verification, GitHub release, manual npm publish handoff, npm verification, and final global Codex refresh. |
| user-invocable | true |
You are running the SPECTRE release workflow. Follow each step precisely.
Treat the current command arguments as this workflow's input. When invoked from a slash command, use the forwarded $ARGUMENTS value.
$ARGUMENTS is optional: patch, minor, or major. If not provided, ask the user.
All three files must be bumped in sync:
plugins/spectre/.claude-plugin/plugin.json -> version field (Claude Code plugin manifest).claude-plugin/marketplace.json -> top-level version and plugins[0].version (Claude Code marketplace)package.json -> version field (npm package @codename_inc/spectre, used by Codex npx installs)Skipping package.json strands Codex users on the previous version even though the marketplace is current.
Read all version files to get the current version.
If $ARGUMENTS contains patch, minor, or major, use that. Otherwise, ask the user:
Which version bump?
- patch (bug fixes, small changes)
- minor (new features, non-breaking)
- major (breaking changes)
Calculate the new version number and confirm it with the user before proceeding.
Run git status and git diff (staged and unstaged).
If there are uncommitted changes:
git add -A.release: vX.Y.Z here; that comes later.Run the Codex author-time sync before any version files are updated:
Run npm run sync-codex.
Run npm run sync-codex -- --check.
Run git diff -- plugins/spectre-codex/ and inspect any generated changes.
If plugins/spectre-codex/ changed, stage only the generated tree and commit it separately:
git add plugins/spectre-codex
git commit -m "release: sync codex tree"
If there are no generated changes, skip the sync commit.
Do not bump versions until the sync check passes.
Update plugins/spectre/.claude-plugin/plugin.json with the new version.
Update .claude-plugin/marketplace.json: both version (top-level) and plugins[0].version.
Update package.json version.
Commit these version bumps:
git add plugins/spectre/.claude-plugin/plugin.json .claude-plugin/marketplace.json package.json
git commit -m "release: vX.Y.Z"
Before changelog, tag, push, or npm publish, make sure the global Codex install is running the exact generated assets from this checkout.
Run the source-local user-scope update:
node bin/spectre.js update codex --scope user --project-dir "$PWD"
Verify the installed Codex runtime and hook wiring:
node bin/spectre.js doctor codex --scope user --project-dir "$PWD" --verify-hooks
If the update or doctor command fails, stop and fix it before shipping.
Do not stage ignored local runtime state such as .codex/, .spectre/, ~/.codex/, or AGENTS.override.md unless the user explicitly asks. This step is a local install guard, not a release artifact commit.
Generate a changelog by analyzing commits since the last tag:
git log $(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)..HEAD --oneline
Organize the commits into a changelog with these categories, skipping empty categories:
Write the changelog in concise bullet points. Each bullet should describe the user-facing change, not the implementation detail. Present the draft to the user and ask if they want to edit it before proceeding.
vX.Y.Z.git pushgit push --tagsAfter pushing, create a GitHub release with the changelog:
gh release create vX.Y.Z --title "vX.Y.Z" --notes "<changelog>"
Use a heredoc for the notes body to preserve formatting.
Codex users install via npx @codename_inc/spectre install codex, so the npm package must be published for them to pick up the new version. The marketplace alone is not enough.
Do not run npm login or npm publish for the user. npm auth, OTP, and publish confirmation are user-owned interactive steps. This is the final manual publish step.
Ask the user to run these commands themselves:
npm login
npm publish --access public
If they are already logged in, they can skip npm login. If npm requires an OTP, they should rerun publish with:
npm publish --access public --otp=<code>
Wait for the user to confirm the package is published before proceeding.
After the user confirms npm publish completed:
Verify the new version is live:
npm view @codename_inc/spectre versions --json
Refresh the global Codex install one final time from this checkout:
node bin/spectre.js update codex --scope user --project-dir "$PWD"
Verify the installed Codex runtime and hook wiring:
node bin/spectre.js doctor codex --scope user --project-dir "$PWD" --verify-hooks
Do not stage ignored local runtime state such as .codex/, .spectre/, ~/.codex/, or AGENTS.override.md unless the user explicitly asks.
Print a summary:
Release complete: vX.Y.Z
- Commit: <short sha>
- Tag: vX.Y.Z
- GitHub release: <url>
- npm: @codename_inc/spectre@X.Y.Z