Finishing a Development Branch
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
OPS on-demand: This skill should be used when the user asks to "release the plugin", "publish ops…
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-release --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude-ops/skills/ops-release .claude/skills/ops-release && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .claude/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-releaseType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-release --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .agents/skills && cp -r skills-src/claude-ops/skills/ops-release .agents/skills/ops-release && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .agents/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-release --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/claude-ops/skills/ops-release .cursor/skills/ops-release && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .cursor/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Lifecycle-Innovations-Limited/claude-ops.git --path claude-ops/skills/ops-release--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-release --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/claude-ops/skills/ops-release .gemini/skills/ops-release && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .gemini/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-releaseInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .github/skills && cp -r skills-src/claude-ops/skills/ops-release .github/skills/ops-release && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .github/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-release --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/claude-ops/skills/ops-release .opencode/skills/ops-release && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ops-release" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release into .opencode/skills/ops-release/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-release", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ops-releaseOPS on-demand: This skill should be used when the user asks to "release the plugin", "publish ops…
Ops Release is an agent skill from Lifecycle-Innovations-Limited/claude-ops. OPS on-demand: This skill should be used when the user asks to "release the plugin", "publish ops…
Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development. It works with Git. The repository describes itself as: Business operating system for Claude Code — 57 skills, 21 agents, smart daemon. Unified inbox (WhatsApp/Email/Slack/Telegram), autonomous PR merge, full-AWS monitoring, revenue… The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1aa0928. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadAskUserQuestionFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitghFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ops Release loads about 2.1k tokens when it runs. Until then it costs about 28 tokens; SKILL.md has 887 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, AskUserQuestionAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Lifecycle-Innovations-Limited/claude-ops at commit 1aa0928, republished under its MIT licence (© Lifecycle-Innovations-Limited). 887 words, ~2,099 tokens.
.claude/skills/ops-release/SKILL.md (or your agent's skills folder).Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).
Cuts a new published version of the claude-ops plugin: bumps the version in the
three manifests, writes the CHANGELOG, opens a release PR, waits for CI, merges it to
main, and pushes the vX.Y.Z tag. After it runs, /ops:ops-update pulls the new
version down to the box.
ops-releaseships it ·/ops:ops-updatepulls it. Order: merge your fix PR →/ops:ops-release→/ops:ops-update.
bin/ops-release resolves its targets relative to its own location:
PLUGIN_DIR = <bin>/.., REPO_ROOT = <bin>/../.., and it needs
REPO_ROOT/.claude-plugin/marketplace.json. The plugin cache
(~/.claude/plugins/cache/ops-marketplace/ops/<ver>/bin/ops-release) has no
marketplace.json above it, so running the cache copy fails with
not found: …/.claude-plugin/marketplace.json. Always run the copy inside a
git checkout of the repo (the dir that has both .claude-plugin/marketplace.json
and claude-ops/bin/ops-release).
Resolve it first:
RELEASE=""
for d in ~/Developer/repos/claude-ops ~/Projects/claude-ops-workspace/claude-ops ~/Projects/claude-ops/claude-ops "$HOME"/Projects/*/claude-ops; do
if [ -f "$d/.claude-plugin/marketplace.json" ] && [ -x "$d/claude-ops/bin/ops-release" ]; then
RELEASE="$d/claude-ops/bin/ops-release"; REPO="$d"; break
fi
done
[ -n "$RELEASE" ] || { echo "no claude-ops checkout with marketplace.json found — clone the repo first"; exit 1; }
echo "using: $RELEASE (repo: $REPO)"Make sure the checkout's main is up to date and includes the fix you want to
publish before releasing (git -C "$REPO" fetch origin && git -C "$REPO" checkout main && git -C "$REPO" pull --ff-only). The release branches from origin/main,
so anything not yet on origin/main will NOT be in the release.
Steps 3–5 are outward-facing + hard to reverse (open PR → CI-gated squash-merge to
main → push a public vX.Y.Z tag), so always dry-run first, show the plan,
confirm, then apply (Rule 5).
"$RELEASE" --type patch --notes "<one-line changelog body>" --dry-runPresent the output: current → target version, which 3 manifests get bumped, the
CHANGELOG block, and that it will branch release/vX.Y.Z → PR → wait for CI → merge → tag.
Pick the bump type from the change: bug/patch fix → --type patch; new
backward-compatible feature → --type minor; breaking change → --type major
(or pin exactly with --version X.Y.Z).
Use AskUserQuestion before applying:
Publish claude-ops <CUR> → <NEW>? (bumps 3 manifests + CHANGELOG, opens PR, waits for CI, merges to main, tags v<NEW>)
[Publish release]
[Dry-run only]
[Cancel]"$RELEASE" --type patch --notes "<one-line changelog body>"Stream the step-by-step output. On success it prints the PR URL, the merge, and the tag. Surface the final line verbatim and then tell the user to pull it down:
Released v
<NEW>. Run/ops:ops-updateto pull it onto this box.
| Flag | Effect |
|---|---|
--type patch|minor|major | Semver bump from the current version (default patch). |
--version X.Y.Z | Set an exact target version instead of bumping. |
--notes "…" | Markdown body prepended to the CHANGELOG under the new version. Quote it. Overrides the AI changelog. |
--no-ai | Skip AI changelog synthesis; fall back to commit subjects under ### Changed. |
--no-docs | Skip the ops-sync-docs count/badge reconciliation step. |
--no-wiki | Skip syncing the GitHub wiki (counts/version + Release-Notes entry). |
--dry-run | Report only; change nothing (still previews the AI changelog). Always run this first. |
--no-merge | Open the release PR but do not merge it (leave for manual review). |
--no-tag | Skip pushing the vX.Y.Z tag. |
claude-ops/.claude-plugin/plugin.json — .version.claude-plugin/marketplace.json (repo root) — .plugins[name==ops].versionclaude-ops/package.json — .version (if present)claude-ops/CHANGELOG.md — prepends a ## [X.Y.Z] - <date> block. By default the
body is AI-synthesized from the commit range in Keep a Changelog style
(### Added/Changed/Fixed/Removed); --notes overrides it, --no-ai falls back
to commit subjects.bin/ops-sync-docs, which reconciles every skill/agent
count, shields.io badge, and version badge across plugin.json,
marketplace.json, the READMEs, and docs/*-reference.md to the real tree.
Deterministic and idempotent; never touches historical "up from X/Y" prose.
Skip with --no-docs. (Run bin/ops-sync-docs standalone any time you add or
remove a skill/agent.)Release-Notes.md entry for the new version. Skip with --no-wiki.It works inside an isolated worktree ($REPO_ROOT/.worktrees/release/vX.Y.Z,
branched from origin/main), so a dirty main checkout never leaks unrelated WIP
into the release commit. The worktree is removed on exit.
A full release takes longer than a Hermes/agent foreground terminal call allows (~7 min hard kill regardless of the requested timeout). When the call dies, the script has usually already branched, pushed, opened the PR, waited for CI and merged — you just never saw the output. Verified 2026-09-05: the timeout fired, and a blind retry opened a duplicate release PR (#923) alongside the script's own already-merged #922.
Before doing anything after a timeout, read the live state:
gh pr list --state merged --limit 5 --json number,title,headRefName
git fetch --tags origin && git ls-remote --tags origin "v$NEW"
git show origin/main:claude-ops/.claude-plugin/plugin.json | head -3Then finish only what is genuinely missing:
origin/main, tag absent → the script died between
merge and tag. Tag the merge commit yourself:
git tag -a vX.Y.Z <merge-sha> -m "vX.Y.Z" && git push origin vX.Y.Z.If you did open a duplicate, close it referencing the real one and delete the
remote branch it shares — both PRs point at the same release/vX.Y.Z head, so
deleting that branch after the real merge is what cleans up.
Better: run the apply step with background=true, notify=true instead of a
foreground call, and let the completion notification carry the output.
The bin auto-detects a non-TTY and drops colour; its output is already line-per-fact, so relay it as-is — no tables, no banners.
main (claude-ops convention). The helper waits for the five product
CI checks plus any other reported checks to finish, then squash-merges without bypassing them./ops:ops-update (pull) + /reload-plugins (load)./ops:ops-update (pull a published version locally + prune/rewrite).© Lifecycle-Innovations-Limited, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in claude-ops/skills/ops-release of Lifecycle-Innovations-Limited/claude-ops.
Open the folder on GitHubat commit 1aa0928
Ops Release next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ops Release this skillLifecycle-Innovations-Limited/claude-ops | 542 | — | ~2.1k | Automated safety check: Notes | MIT | |
| Finishing a Development Branchobra/superpowers | 297k | 5 repos | ~1.9k | Automated safety check: Pass | MIT | |
| Code Review ChecklistshareAI-lab/learn-claude-code | 78k | 5 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Code Design Rationale Investigatorcursor/plugins | 10k | 9 repos | ~2.6k | Automated safety check: Pass | None | |
| Contributor-First PR MergeHKUDS/OpenHarness | 16k | 1 repos | ~847 | Automated safety check: Pass | MIT | |
| Finishing A Development Branchfarm-fe/farm | 5.6k | 34 repos | ~1.8k | Automated safety check: Pass | MIT |
obra/superpowers
Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.
shareAI-lab/learn-claude-code
Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.
cursor/plugins
Digs into why code is shaped the way it is by checking git history, pull requests and connected tools in parallel, then reporting a cited read on the tradeoffs.
HKUDS/OpenHarness
Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.
farm-fe/farm
A skill your agent uses when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for…
TryGhost/Ghost
Moves a package from another TryGhost repository into Ghost as an internal workspace package while keeping its Git history, with checkpoints for the steps that need an administrator.
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "ops dashboard", "pixel HQ", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "go to market", "GTM plan", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "tweet", "post to linkedin", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "yolo mode", "run the business today"…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "datadog", "APM alerts", or…
Works with
Categories
OPS on-demand: This skill should be used when the user asks to "release the plugin", "publish ops…. Ops Release is an agent skill from Lifecycle-Innovations-Limited/claude-ops.
Ops Release fits situations like: asks to release the plugin.
Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a claude-code`. Or copy the skill folder (claude-ops/skills/ops-release in Lifecycle-Innovations-Limited/claude-ops) into .claude/skills/ops-release in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a codex`. Or copy the skill folder (claude-ops/skills/ops-release in Lifecycle-Innovations-Limited/claude-ops) into .agents/skills/ops-release in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops-release, .gemini/skills/ops-release, .github/skills/ops-release and .opencode/skills/ops-release in your project.
Going by SKILL.md and its folder, Ops Release needs the command-line tools its instructions call (git and gh). Its frontmatter pre-approves these tools: Bash, Read, AskUserQuestion.
SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Ops Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.1k tokens (SKILL.md is roughly 8.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ops Release: Finishing a Development Branch (obra/superpowers, 297k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Code Design Rationale Investigator (cursor/plugins, 10k stars) and Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Lifecycle-Innovations-Limited (a GitHub organization) maintains it in Lifecycle-Innovations-Limited/claude-ops, which has 542 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 9, 2026.
Source: Lifecycle-Innovations-Limited/claude-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.