ops-release

GitHub

一键发布claude-ops插件,自动更新版本文件、生成变更日志、创建PR、等待CI并合并至main及打标签。

claude-ops/skills/ops-release/SKILL.md Lifecycle-Innovations-Limited/claude-ops

Trigger Scenarios

需要发布新版本插件 执行发布流程

Install

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -g -y
More Options

Non-standard path

npx skills add https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-release -g -y

Use without installing

npx skills use Lifecycle-Innovations-Limited/claude-ops@ops-release

指定 Agent (Claude Code)

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-release -a claude-code -g -y

安装 repo 全部 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --all -g -y

预览 repo 内 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --list

SKILL.md

Frontmatter
{
    "name": "ops-release",
    "description": "Publish a new version of the claude-ops (\"ops\") plugin in one command — bump plugin.json + marketplace.json + package.json, prepend the CHANGELOG, open the release PR, wait for CI, squash-merge it to main, and tag vX.Y.Z. Use when shipping a fix\/feature that has already merged to main and you want it published so \/ops:ops-update can pull it down. This is the publish side; \/ops:ops-update is the consume side.",
    "allowed-tools": [
        "Bash",
        "Read",
        "AskUserQuestion"
    ],
    "argument-hint": "[--type patch|minor|major] [--version X.Y.Z] [--notes \"changelog body\"] [--no-ai] [--no-docs] [--no-wiki] [--dry-run] [--no-merge] [--no-tag]"
}

OPS ► RELEASE — one-command plugin publish

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-release ships it · /ops:ops-update pulls it. Order: merge your fix PR → /ops:ops-release/ops:ops-update.

⚠️ Run it from the REPO CHECKOUT, not the cache

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 ~/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.

How to run it

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).

1. Dry-run and show the plan

"$RELEASE" --type patch --notes "<one-line changelog body>" --dry-run

Present 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).

2. Confirm

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]

3. Apply

"$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-update to pull it onto this box.

Flags

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.

What it touches

  1. claude-ops/.claude-plugin/plugin.json.version
  2. .claude-plugin/marketplace.json (repo root) — .plugins[name==ops].version
  3. claude-ops/package.json.version (if present)
  4. 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.
  5. Docs counts — runs 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.)
  6. GitHub wiki — after merge+tag, clones the wiki, syncs its counts/version, and prepends a 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.

Mobile / SSH (Rule 7)

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.

Notes

  • PRs target 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.
  • Publish ≠ deploy to the box. The running session won't see the new version until /ops:ops-update (pull) + /reload-plugins (load).
  • Sibling: /ops:ops-update (pull a published version locally + prune/rewrite).

Version History

  • 64bad13 Current 2026-08-12 09:01

Same Skill Collection

claude-ops/skills/boss/SKILL.md
claude-ops/skills/flow/SKILL.md
claude-ops/skills/ledger/SKILL.md
claude-ops/skills/ops-accounts/SKILL.md
claude-ops/skills/ops-ar/SKILL.md
claude-ops/skills/ops-aws-audit/SKILL.md
claude-ops/skills/ops-comms/SKILL.md
claude-ops/skills/ops-competitors/SKILL.md
claude-ops/skills/ops-credentials/SKILL.md
claude-ops/skills/ops-daemon/SKILL.md
claude-ops/skills/ops-dash/SKILL.md
claude-ops/skills/ops-deploy-fix/SKILL.md
claude-ops/skills/ops-deploy/SKILL.md
claude-ops/skills/ops-desktop/SKILL.md
claude-ops/skills/ops-doctor/SKILL.md
claude-ops/skills/ops-ecom/SKILL.md
claude-ops/skills/ops-feature-dev/SKILL.md
claude-ops/skills/ops-fires/SKILL.md
claude-ops/skills/ops-fleet/SKILL.md
claude-ops/skills/ops-go/SKILL.md
claude-ops/skills/ops-gtm/SKILL.md
claude-ops/skills/ops-home/SKILL.md
claude-ops/skills/ops-inbox/SKILL.md
claude-ops/skills/ops-integrate/SKILL.md
claude-ops/skills/ops-leadgen/SKILL.md
claude-ops/skills/ops-linear/SKILL.md
claude-ops/skills/ops-mac/SKILL.md
claude-ops/skills/ops-marketing/SKILL.md
claude-ops/skills/ops-mcp/SKILL.md
claude-ops/skills/ops-merge/SKILL.md
claude-ops/skills/ops-monitor/SKILL.md
claude-ops/skills/ops-next/SKILL.md
claude-ops/skills/ops-orchestrate/SKILL.md
claude-ops/skills/ops-package/SKILL.md
claude-ops/skills/ops-pocket/SKILL.md
claude-ops/skills/ops-projects/SKILL.md
claude-ops/skills/ops-recap/SKILL.md
claude-ops/skills/ops-resume/SKILL.md
claude-ops/skills/ops-revenue/SKILL.md
claude-ops/skills/ops-rotate-setup/SKILL.md
claude-ops/skills/ops-rotate/SKILL.md
claude-ops/skills/ops-secret-sync/SKILL.md
claude-ops/skills/ops-settings/SKILL.md
claude-ops/skills/ops-ship/SKILL.md
claude-ops/skills/ops-speedup/SKILL.md
claude-ops/skills/ops-status/SKILL.md
claude-ops/skills/ops-triage/SKILL.md
claude-ops/skills/ops-unifi/SKILL.md
claude-ops/skills/ops-update/SKILL.md

Metadata

Files
0
Version
64bad13
Hash
ece30706
Indexed
2026-08-12 09:01

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-12 17:56
浙ICP备14020137号-1 $Гость$