release

GitHub

提供 Chorus 新版本发布流程,涵盖版本递增、CHANGELOG 生成与审核、多包协调更新及 GitHub Release 创建。

.claude/skills/release/SKILL.md Chorus-AIDLC/Chorus

Trigger Scenarios

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

Install

npx skills add Chorus-AIDLC/Chorus --skill release -g -y
More Options

Non-standard path

npx skills add https://github.com/Chorus-AIDLC/Chorus/tree/main/.claude/skills/release -g -y

Use without installing

npx skills use Chorus-AIDLC/Chorus@release

指定 Agent (Claude Code)

npx skills add Chorus-AIDLC/Chorus --skill release -a claude-code -g -y

安装 repo 全部 skill

npx skills add Chorus-AIDLC/Chorus --all -g -y

预览 repo 内 skill

npx skills add Chorus-AIDLC/Chorus --list

SKILL.md

Frontmatter
{
    "name": "release",
    "license": "AGPL-3.0",
    "metadata": {
        "author": "chorus",
        "version": "0.1.0",
        "category": "development"
    },
    "description": "Release a new version of Chorus — bump version, update CHANGELOG, commit, tag, and create GitHub release."
}

Chorus Release Process

Step-by-step guide to cut a new release of Chorus.

Prerequisites

  • gh CLI is authenticated (gh auth status)
  • Working tree is clean (git status)
  • You are on the develop branch

Steps

1. Fetch remote and identify the diff since last release

# Fetch remote tags and branches so local refs are up to date
git fetch --tags origin

# Find the previous release tag
git tag -l 'v*' --sort=-version:refname | head -5

# List commits since previous tag on develop
git log --oneline v<PREV>..develop

# Review each commit for CHANGELOG-worthy changes
git show --stat <commit-hash>

2. Draft CHANGELOG and get user approval

Based on the commits identified in Step 1, draft the new CHANGELOG section and present it to the user for review. Use this structure:

## [X.Y.Z] - YYYY-MM-DD

### Added
- **Feature name**: Description of what was added.

### Changed
- **Area**: Description of what changed.

### Fixed
- **Bug name**: Description of what was fixed.

### Plugin
- Plugin version changes if applicable.

---

Rules:

  • Only include commits after the previous release tag
  • Group by Added / Changed / Fixed / Deprecated / Removed / Plugin
  • Omit empty groups
  • Each entry should start with a bold label followed by a concise description
  • Separate from the previous release section with ---

IMPORTANT: After drafting, show the CHANGELOG content and the proposed version number to the user. Do NOT proceed until the user explicitly approves. The user may request edits to wording, version number, or grouping.

3. Write CHANGELOG.md (on develop)

After user approval, write the approved content into CHANGELOG.md — add the new section at the top, below the # Changelog header and above the previous release section.

4. Bump all three npm package versions (on develop)

# Keep the coordinated release identity in lockstep:
# package.json
# packages/openclaw-plugin/package.json
# packages/chorus-dsh/package.json

# Refresh OpenClaw's standalone lockfile after editing its package version:
cd packages/openclaw-plugin
npm install --package-lock-only --ignore-scripts --no-audit --no-fund
cd ../..

The GitHub Release tag, root Chorus CLI, OpenClaw plugin, and dsh plugin MUST all use the same X.Y.Z. The coordinated publication preflight rejects any name or version drift before an npm registry write.

Follow semver:

  • patch (0.1.0 → 0.1.1): bug fixes, minor additions
  • minor (0.1.0 → 0.2.0): new features, non-breaking changes
  • major (0.1.0 → 1.0.0): breaking changes

5. Commit to develop and open PR to main

# Commit the release prep on develop
git add CHANGELOG.md package.json \
  packages/openclaw-plugin/package.json \
  packages/openclaw-plugin/package-lock.json \
  packages/chorus-dsh/package.json
git commit -m "chore: bump version to vX.Y.Z and update CHANGELOG"
git push origin develop

# Open a PR from develop → main
gh pr create --base main --head develop \
  --title "chore: release vX.Y.Z" \
  --body "Release vX.Y.Z — version bump and CHANGELOG update."

Wait for CI to pass, then merge the PR:

# Merge the PR (use the PR number returned above)
gh pr merge <PR_NUMBER> --merge

6. Create GitHub release with tag (on main)

After the PR is merged into main:

# Fetch the latest main so the tag targets the correct commit
git fetch origin main

gh release create vX.Y.Z \
  --target main \
  --title "vX.Y.Z" \
  --notes "$(cat <<'EOF'
<paste only the new version's CHANGELOG section here, without the ## header>
EOF
)"

Important: The --notes should contain only the new version's content, not the entire CHANGELOG file.

Publishing the GitHub Release triggers .github/workflows/publish-npm.yml. That workflow prepares and validates all three tarballs before publishing, then publishes Chorus CLI → OpenClaw → dsh through npm Trusted Publishing/OIDC. Do not run the legacy interactive publish scripts as an additional release step.

6.1 Trusted Publisher contract and recovery

Each npm package's Trusted Publisher settings must match:

  • repository owner/name: the GitHub repository that contains this workflow;
  • workflow filename: publish-npm.yml (exact filename);
  • Environment: blank when the workflow has no environment, or the exact same Environment name on both npm and the publish job.

The workflow file path is .github/workflows/publish-npm.yml; npm's Trusted Publisher form takes the filename, not the full path. The job runs on a GitHub-hosted runner with id-token: write, does not use NPM_TOKEN or NODE_AUTH_TOKEN, and leaves provenance enabled. Public-repository publishes must expose an SLSA provenance attestation after upload.

If a run partially publishes the fixed sequence, fix the external failure and use Re-run jobs on the same failed GitHub Actions run. Do not create another tag or GitHub Release and do not bump the version. The rerun queries every exact name@version, records existing versions as skipped-already-published, and continues with the first missing package. Registry lookup errors remain fatal; never assume an ambiguous lookup means “not published.”

7. Sync develop with main and verify

# Pull the merge commit back into develop
git checkout develop
git pull origin develop

# Confirm tag exists
git tag -l 'vX.Y.Z'

# Confirm release is visible
gh release view vX.Y.Z

Checklist

  • git fetch --tags origin run — local tags are up to date
  • git log v<PREV>..develop reviewed — no commits missed
  • CHANGELOG draft presented to user and approved
  • CHANGELOG.md written with approved content
  • Root, OpenClaw, and dsh package versions are the same X.Y.Z
  • OpenClaw package-lock.json refreshed for X.Y.Z
  • Changes committed and pushed to develop
  • PR from developmain created, CI passed, and merged
  • gh release create with tag targeting main
  • publish-npm.yml run passed for all three packages (published or safely skipped)
  • Public-package provenance attestations were verified by the workflow
  • Release notes contain only the new version's section
  • develop synced with main after merge
  • gh release view confirms everything looks correct

Version History

  • e147e86 Current 2026-09-03 10:41
  • c08357a 2026-07-25 08:35

Same Skill Collection

.claude/skills/blog/SKILL.md
.claude/skills/e2e-verification/SKILL.md
.claude/skills/openspec-apply-change/SKILL.md
.claude/skills/openspec-archive-change/SKILL.md
.claude/skills/openspec-explore/SKILL.md
.claude/skills/openspec-propose/SKILL.md
.claude/skills/plugin-maintenance/SKILL.md
.claude/skills/pr-workflow/SKILL.md
packages/chorus-dsh/skills/brainstorm-chorus/SKILL.md
packages/chorus-dsh/skills/chorus-cli/SKILL.md
packages/chorus-dsh/skills/chorus/SKILL.md
packages/chorus-dsh/skills/code-reviewer-chorus/SKILL.md
packages/chorus-dsh/skills/develop-chorus/SKILL.md
packages/chorus-dsh/skills/docs-chorus/SKILL.md
packages/chorus-dsh/skills/idea-chorus/SKILL.md
packages/chorus-dsh/skills/openspec-aware-chorus/SKILL.md
packages/chorus-dsh/skills/orchestrate-chorus/SKILL.md
packages/chorus-dsh/skills/proposal-chorus/SKILL.md
packages/chorus-dsh/skills/proposal-reviewer-chorus/SKILL.md
packages/chorus-dsh/skills/quick-dev-chorus/SKILL.md
packages/chorus-dsh/skills/review-chorus/SKILL.md
packages/chorus-dsh/skills/task-reviewer-chorus/SKILL.md
packages/chorus-dsh/skills/yolo-chorus/SKILL.md
packages/chorus-pi/skills/chorus-cli/SKILL.md
packages/chorus-pi/skills/chorus/SKILL.md
packages/chorus-pi/skills/develop/SKILL.md
packages/chorus-pi/skills/docs/SKILL.md
packages/chorus-pi/skills/idea/SKILL.md
packages/chorus-pi/skills/openspec-aware/SKILL.md
packages/chorus-pi/skills/orchestrate/SKILL.md
packages/chorus-pi/skills/proposal/SKILL.md
packages/chorus-pi/skills/quick-dev/SKILL.md
packages/chorus-pi/skills/review/SKILL.md
packages/chorus-pi/skills/yolo/SKILL.md
packages/openclaw-plugin/skills/brainstorm/SKILL.md
packages/openclaw-plugin/skills/chorus-cli/SKILL.md
packages/openclaw-plugin/skills/chorus/SKILL.md
packages/openclaw-plugin/skills/code-reviewer/SKILL.md
packages/openclaw-plugin/skills/develop/SKILL.md
packages/openclaw-plugin/skills/docs/SKILL.md
packages/openclaw-plugin/skills/idea/SKILL.md
packages/openclaw-plugin/skills/openspec-aware/SKILL.md
packages/openclaw-plugin/skills/orchestrate/SKILL.md
packages/openclaw-plugin/skills/proposal-reviewer/SKILL.md
packages/openclaw-plugin/skills/proposal/SKILL.md
packages/openclaw-plugin/skills/quick-dev/SKILL.md
packages/openclaw-plugin/skills/review/SKILL.md
packages/openclaw-plugin/skills/task-reviewer/SKILL.md
packages/openclaw-plugin/skills/yolo/SKILL.md

Metadata

Files
0
Version
e147e86
Hash
14ec674c
Indexed
2026-07-25 08:35

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-04 00:16
浙ICP备14020137号-1 $bản đồ khách truy cập$