Skip to content
Agent Orchestration
Skill

/release

Release a new version of Chorus — bump version, update CHANGELOG, commit, tag, and create GitHub release.

From plugin
chorus
1.2k44 skills7 agents4 commands1 MCP

Claude Code

$ npx -y skills add Chorus-AIDLC/Chorus --skill release --agent claude-code

SKILL.md

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

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 four npm package versions (on develop)

# Keep the coordinated release identity in lockstep:
# package.json
# packages/openclaw-plugin/package.json
# packages/chorus-dsh/package.json
# packages/chorus-pi/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 ../..

# Hermes plugin manifests are not npm packages but MUST carry the same version
# (pytest packages/chorus-hermes/chorus/tests fails on drift):
# packages/chorus-hermes/chorus/plugin.yaml      -> version: X.Y.Z
# packages/chorus-hermes/chorus-mcp/plugin.json  -> "version": "X.Y.Z"
# packages/chorus-hermes/chorus/skills/*/SKILL.md -> frontmatter metadata.version: X.Y.Z
#   e.g. sed -i 's/^\(  version: \).*/\1X.Y.Z/' packages/chorus-hermes/chorus/skills/*/SKILL.md
# Never commit a commit SHA for Hermes installs; users resolve v<X.Y.Z> to its
# peeled SHA at install time (see packages/chorus-hermes/README.md).

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

`packages/chorus-pi` publishes its TypeScript as-is and has **no** standalone lockfile of its own (it rides the workspace `pnpm-lock.yaml`), so — unlike OpenClaw — bumping its `package.json` version needs no lockfile refresh. If you also changed chorus-pi's dependencies, run `pnpm install --lockfile-only` at the repo root so the workspace lockfile stays in sync (the release preflight runs `pnpm install --frozen-lockfile` and fails on drift).

Follow [semver](https://semver.org/):

  • **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 \
  packages/chorus-pi/package.json \
  packages/chorus-hermes/chorus/plugin.yaml \
  packages/chorus-hermes/chorus-mcp/plugin.json \
  packages/chorus-hermes/chorus/skills
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 four tarballs before publishing, then publishes Chorus CLI → OpenClaw → dsh → chorus-pi 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

Read more
@chorus-aidlc
Ships withchorus

The Agent Harness for AI-Human Collaboration, inspired by the AI-DLC (AI-Driven Development Lifecycle)

1.2k44 skills7 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
1.2k
Star history of Chorus-AIDLC/Chorus on GitHub, a chart by star-history.com

Other skills on chorus.

blog

blog

Write release blog posts for Chorus — problem-first narrative, bilingual (zh/en), following the project's editorial style.

@chorus-aidlc@chorus-aidlcInstall Skill
e2e-verification

e2e-verification

Use when manually verifying a Chorus frontend change in a real browser — finding local login credentials, driving the running dev…

@chorus-aidlc@chorus-aidlcInstall Skill
openspec-apply-change

openspec-apply-change

Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through…

@chorus-aidlc@chorus-aidlcInstall Skill
openspec-explore

openspec-explore

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the…

@chorus-aidlc@chorus-aidlcInstall Skill
openspec-propose

openspec-propose

Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to…

@chorus-aidlc@chorus-aidlcInstall Skill

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis11d393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca11d111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip11d109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about release.

Which coding agents can use release?
release installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.