release-ship
Executes the release workflow for a repository after release-gate passes.
Skill by philoserf
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/philoserf-release-ship
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/release-ship
What's inside
- Skill name
release-ship- Description
- Executes the release workflow for a repository after release-gate passes. Use when tagging, cutting, or shipping a release. Follows the prep-PR pattern: version bump, CHANGELOG, and walkthrough ship in one PR before tagging.
- License
- MIT
- Instructions
- 393 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- name: missing
- allowed-tools: must be a space-separated string
Files (4)
- SKILL.md
- extract-changelog.sh · scripts/
- release-plan.sh · scripts/
- wait-for-release.sh · scripts/
SKILL.md (first lines)
# Release Final step in the release pipeline. Assumes `release-gate` has already passed and the target version has been decided. This skill follows the **prep-PR pattern**: version bump + CHANGELOG + walkthrough ship as one atomic PR. The tag is applied **after merge**, pointing at the merged commit. Never use a tool that bumps and tags in one step (`npm version`, `bun version`, `hatch version --tag`) — they tag immediately and skip the CHANGELOG and walkthrough entirely. The workflow is a single linear pass — run the phases in order: 0. Read the plan → 1. Prep branch → 2. Version bump → 3. CHANGELOG → 4. Walkthrough → 5. Build, commit & open PR → **(merge)** → 6. Gate, then tag → 7. Push tag → 8. Release notes → 9. Deploy → 10. Verify ## Prerequisites Before starting, confirm: - `release-gate` passed with no FAIL status, **or** exited `3` (NOT STARTED), which is the normal state before a release: it means the current version is already tagged and phases 1-5 below are exactly what it is asking for. Phase 6 re-runs the gate itself and requires exit `0` — that check is a step in the workflow, not a precondition to remember. - Working tree is clean and on the default branch - Target version decided - `jq` is on `PATH`, and so is `gh` when the plan says `is_github=1` or a `release_mode` other than `tag` If any prerequisite is unclear, ask rather than proceeding. ## Phase 0: Read the Plan Every phase below is driven by one command. Run it first with the **target** version — `prep_branch` and `tag` are derived from it: ```bash ~/.claude/skills/release-ship/scripts/release-plan.sh <version> ``` It prints `key=value` lines resolved from the same profile the gate uses, so the two skills cannot disagree about the repo: ```text profile=Obsidian plugin profile=Taskfile (.release-gate) version=2.1.0 version=2.1.0 tag=2.1.0 tag=v2.1.0 last_tag=2.0.5 last_tag=v2.0.0 prep_branch=release/2.1.0 prep_branch=release/2.1.0 primary_version_file=package.json primary_version_file=cx.js primary_version_spec=jq:.version primary_version_spec=grep derived_version_files=manifest.json versions.json version_sync_cmd=npm_package_version="2.1.0" bun run version build_cmd=bun run build build_cmd= gate_cmd=bun install … && bun test gate_cmd=task check changelog=CHANGELOG.md changelog=absent walkthrough=WALKTHROUGH.md walkthrough=WALKTHROUGH.md expected_changes=… expected_changes=cx.js WALKTHROUGH.md release_mode=gh release_mode=gh release_assets=main.js manifest.json release_assets= deploy_cmd= deploy_cmd=task deploy is_github=1 is_github=1 prerelease=0 prerelease=0 ``` Show the plan to the user before starting. An empty value means that step does not apply here — `build_cmd=` is no build, not a missing key. **`release_mode` is the one fork that changes the shape of the work**, and getting it wrong is visible in both directions: `workflow` means pushing the tag triggers a workflow that creates the GitHub release itself, so Phase 8 waits for it and edits the notes onto the release it made; `gh` means nothing is watching the tag, so Phase 8 creates the release. Wait in `gh` mode and you poll for a run that will never appear. Create in `workflow` mode and you race the workflow for the same release. `tag` means the annotated tag and the CHANGELOG are the whole release, so Phase 8 creates nothing. It is the default off GitHub. **`is_github` is the other fork.** At `0` the origin is not GitHub: there is no PR to open or look up, and Phases 5 and 6 work from git alone. ## Phase 1: Prep Branch Confirm the tag is free, then branch off the default branch: ```bash git tag -l "<tag>" # expect empty git checkout -b <prep_branch> ``` If `git tag -l` prints the tag, stop: the version is already released, or a tag was created out of band. Do not proceed. ## Phase 2: Version Bump **Edit `primary_version_file` by hand** — with `Edit`, not a scripted substitution. The plan names the file; it does not name the line, and for `primary_version_spec=grep` the version string may appear in the file more than once (a comment, a compatibility note, a test literal). A blanket `sed s/<old>/<new>/g` rewrites all of them. - `primary_version_spec=jq:.version` — the `version` field of that JSON file. - `primary_version_spec=grep` — the version literal in that source file, usually a constant. Then regenerate the derived files, if the plan names a sync command: ```bash bash -c '<version_sync_cmd>' ``` The plan prints that command with the target version already substituted, so it can be run verbatim. Do not hand-edit anything in `derived_version_files`; that command owns them. Verification is Phase 6's gate check 10, which compares every declared file against the target. There is no need to re-implement it here — but if you want to see it now, run the gate with the target version and read row 10 alone; the other rows are meaningless until the prep is finished. ## Phase 3: CHANGELOG Draft the entry from `git log <last_tag>..HEAD` and present it to the user for review before committing. **If `changelog=absent`, create `CHANGELOG.md` in this phase.** The gate merely skips a missing changelog; ship requires one, because in `gh` mode it is the only source for the release notes and `extract-changelog.sh` exits 1 without it. A first changelog starts with this release's section — do not reconstruct the project's history. Add the `## <version>` section **above** the previous entry: ```markdown ## 1.4.0 ### Added - Support for nested callouts in preview mode ### Fixed - Frontmatter properties no longer duplicate on save ``` Headings are bare `## <version>`, newest first. A trailing date (`## 1.4.0 - 2026-03-08`) is accepted by both the gate and the extractor, but write the bare form. Verify: `grep -n "^## " CHANGELOG.md | head -3` shows the new section above the previous release's. ## Phase 4: Walkthrough
From philoserf/claude-code-config, MIT.
More from philoserf/claude-code-config
- 0.641score
gh-stack
github
Manages stacked PRs and splits multi-part work into reviewable branches with gh-stack.
SkillAFreshness: A★ 13Claude Code +9 - 0.637score
editor
philoserf
Copy edits prose while preserving voice and register.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
code-audit
philoserf
Reviews a codebase for bugs, design issues, and code cleanliness problems with specific file paths and line numbers.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
cc-release-review
philoserf
Reviews Claude Code release notes and recommends config updates.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
release-gate
philoserf
Validates a repository is ready to tag and ship.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
issue-pr
philoserf
Fixes one issue and lands it as a merged pull request — branch, implement, run the repo's own gate, open a PR that closes the issue, merge.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
issue-triage
philoserf
Organizes filed issues into milestones and repairs their metadata — severity labels and blocked-by relations.
SkillAFreshness: A★ 13Claude Code +9 - 0.631score
grill
philoserf
Interviews the user relentlessly about a plan or design until every decision in it is resolved.
SkillAFreshness: A★ 13Claude Code +9 - 0.630score
release-captain
philoserf
Works an entire milestone unattended: verifies every open issue, sequences them by dependency, ships each as a merged PR, then stops when the milestone is…
SkillAFreshness: A★ 13Claude Code +9 - 0.630score
issue-verify
philoserf
Re-reads open issues against the current tree and posts a verification comment on each, flagging anything already fixed, partly stale, or wrong to do.
SkillAFreshness: A★ 13Claude Code +9 - 0.628score
code-walkthrough
philoserf
Reads source code and produces a linear walkthrough document.
SkillAFreshness: A★ 13Claude Code +9 - 0.628score
code-theory
philoserf
Builds a Naur-style theory of a codebase — the understanding needed to change it without damaging its conceptual integrity.
SkillAFreshness: A★ 13Claude Code +9
Signals
- Stars
- 13
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 18, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/philoserf/claude-code-config
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from philoserf
- 0.637score
editor
philoserf
Copy edits prose while preserving voice and register.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
release-gate
philoserf
Validates a repository is ready to tag and ship.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
cc-release-review
philoserf
Reviews Claude Code release notes and recommends config updates.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
issue-pr
philoserf
Fixes one issue and lands it as a merged pull request — branch, implement, run the repo's own gate, open a PR that closes the issue, merge.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
issue-triage
philoserf
Organizes filed issues into milestones and repairs their metadata — severity labels and blocked-by relations.
SkillAFreshness: A★ 13Claude Code +9 - 0.633score
code-audit
philoserf
Reviews a codebase for bugs, design issues, and code cleanliness problems with specific file paths and line numbers.
SkillAFreshness: A★ 13Claude Code +9
Cite this page
release-ship skill. Agent Mart. https://agentmart.dev/skills/philoserf-release-ship (last updated 2026-10-24)