원클릭으로
uni-release
Version bump, changelog generation, tag, and push to trigger the release pipeline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Version bump, changelog generation, tag, and push to trigger the release pipeline.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | uni-release |
| description | Version bump, changelog generation, tag, and push to trigger the release pipeline. |
From the invoker:
major, minor, or patch — OR an explicit semver string (e.g. 0.7.0).If no bump level is provided, ask the user before proceeding.
Ensure the worktree is clean (no uncommitted changes):
git status --porcelain
If output is non-empty, stop with: "Clean worktree required for release. Commit or stash changes first."
Ensure you are on a branch that can be pushed (typically main or a release branch).
Read [workspace.package] version from the root Cargo.toml:
grep -m1 'version' Cargo.toml | head -1
Look inside the [workspace.package] section for the version = "X.Y.Z" line. Parse the current version string.
If bump level (major / minor / patch):
MAJOR.MINOR.PATCH.patch -> MAJOR.MINOR.(PATCH+1)minor -> MAJOR.(MINOR+1).0major -> (MAJOR+1).0.0If explicit version string:
X.Y.Z where X, Y, Z are non-negative integers.Check that the git tag v{new_version} does not already exist:
git tag -l "v{new_version}"
If it exists, stop with: "Tag v{new_version} already exists."
Edit the [workspace.package] section in the root Cargo.toml:
version = "{old_version}" to version = "{new_version}".All 9 workspace crates use version.workspace = true and inherit automatically.
Update these files with the new version:
packages/unimatrix/package.json:
"version" to "{new_version}"."optionalDependencies"."@dug-21/unimatrix-linux-x64" to "{new_version}"."optionalDependencies"."@dug-21/unimatrix-linux-arm64" to "{new_version}".packages/unimatrix-linux-x64/package.json:
"version" to "{new_version}".packages/unimatrix-linux-arm64/package.json:
"version" to "{new_version}".Find the previous release tag:
git describe --tags --abbrev=0 --match "v*" 2>/dev/null
If no prior tag exists, use the first commit as the range start.
Collect conventional commits in the range {previous_tag}..HEAD:
git log {previous_tag}..HEAD --format="%H %s"
Classify each commit:
feat: or feat( -> Features (strip prefix for display).fix: or fix( -> Fixes (strip prefix for display).BREAKING CHANGE in the body OR has !: in the subject -> Breaking Changes.docs:, test:, chore:, etc.) -> skip.Build the new changelog section:
## [{new_version}] - {YYYY-MM-DD}
### Breaking Changes
- {message}
### Features
- {message}
### Fixes
- {message}
Omit any section that has zero entries. Use today's date.
If CHANGELOG.md does not exist, create it with this header:
# Changelog
All notable changes to Unimatrix are documented here.
Format based on [Keep a Changelog](https://keepachangelog.com/).
Prepend the new section after the header (before any existing release sections).
Run a build check to confirm the version change does not break compilation:
cargo test --workspace --no-run
This compiles and links test targets — matching what the release workflow's build-linux
jobs actually build (cargo test). A plain cargo check --workspace skips #[cfg(test)] and
test-target code, so a test-only compile break slips past this gate and only surfaces after the
tag is public — requiring tag surgery to recover (v0.11.1 incident, #937). Compiling test targets
here catches that class cheaply, pre-tag.
If this fails, stop with: "Build check failed after version update. Review changes before releasing."
Copy the four protocol files from the internal .claude/protocols/uni/ directory
to two locations: the repo-root protocols/ (for repo users) and
packages/unimatrix/protocols/ (for npm — npm resolves files relative to the
package directory, not the repo root):
# Repo-root copy (for users who clone the repo)
cp .claude/protocols/uni/uni-design-protocol.md protocols/uni-design-protocol.md
cp .claude/protocols/uni/uni-delivery-protocol.md protocols/uni-delivery-protocol.md
cp .claude/protocols/uni/uni-bugfix-protocol.md protocols/uni-bugfix-protocol.md
cp .claude/protocols/uni/uni-agent-routing.md protocols/uni-agent-routing.md
cp protocols/README.md protocols/README.md # already exists; update if changed
# npm package copy (what npm pack actually includes)
cp .claude/protocols/uni/uni-design-protocol.md packages/unimatrix/protocols/uni-design-protocol.md
cp .claude/protocols/uni/uni-delivery-protocol.md packages/unimatrix/protocols/uni-delivery-protocol.md
cp .claude/protocols/uni/uni-bugfix-protocol.md packages/unimatrix/protocols/uni-bugfix-protocol.md
cp .claude/protocols/uni/uni-agent-routing.md packages/unimatrix/protocols/uni-agent-routing.md
cp protocols/README.md packages/unimatrix/protocols/README.md
Verify each copy is identical to its source (run for both destinations):
diff .claude/protocols/uni/uni-design-protocol.md protocols/uni-design-protocol.md
diff .claude/protocols/uni/uni-delivery-protocol.md protocols/uni-delivery-protocol.md
diff .claude/protocols/uni/uni-bugfix-protocol.md protocols/uni-bugfix-protocol.md
diff .claude/protocols/uni/uni-agent-routing.md protocols/uni-agent-routing.md
diff protocols/uni-design-protocol.md packages/unimatrix/protocols/uni-design-protocol.md
diff protocols/uni-delivery-protocol.md packages/unimatrix/protocols/uni-delivery-protocol.md
diff protocols/uni-bugfix-protocol.md packages/unimatrix/protocols/uni-bugfix-protocol.md
diff protocols/uni-agent-routing.md packages/unimatrix/protocols/uni-agent-routing.md
diff protocols/README.md packages/unimatrix/protocols/README.md
All diffs must produce zero output. The .claude/protocols/uni/ directory is the
source of truth — apply any needed corrections there first, then re-copy both.
Copy the uni-retro skill to two locations: the repo-root skills/uni-retro/ (for
repo users) and packages/unimatrix/skills/uni-retro/ (for npm):
cp .claude/skills/uni-retro/SKILL.md skills/uni-retro/SKILL.md
cp .claude/skills/uni-retro/SKILL.md packages/unimatrix/skills/uni-retro/SKILL.md
Verify both copies are identical to their source:
diff .claude/skills/uni-retro/SKILL.md skills/uni-retro/SKILL.md
diff .claude/skills/uni-retro/SKILL.md packages/unimatrix/skills/uni-retro/SKILL.md
Both diffs must produce zero output.
Stage only the release-related files:
git add Cargo.toml packages/unimatrix/package.json packages/unimatrix-linux-x64/package.json packages/unimatrix-linux-arm64/package.json CHANGELOG.md protocols/ skills/uni-retro/ packages/unimatrix/protocols/ packages/unimatrix/skills/uni-retro/
Commit with the release message:
git commit -m "release: v{new_version}"
git tag "v{new_version}"
git push origin HEAD
git push origin "v{new_version}"
The tag push triggers the release pipeline defined in .github/workflows/uni-release.yml.
Release v{new_version} complete.
Version: {old_version} -> {new_version}
Files modified:
- Cargo.toml (workspace version)
- packages/unimatrix/package.json
- packages/unimatrix-linux-x64/package.json
- packages/unimatrix-linux-arm64/package.json
- CHANGELOG.md
- protocols/ (synced from .claude/protocols/uni/ — repo-root copy)
- packages/unimatrix/protocols/ (npm-distributed copy)
- skills/uni-retro/SKILL.md (synced from .claude/skills/uni-retro/ — repo-root copy)
- packages/unimatrix/skills/uni-retro/SKILL.md (npm-distributed copy)
Git:
- Commit: release: v{new_version}
- Tag: v{new_version}
- Pushed to origin
CI pipeline: https://github.com/anthropic/unimatrix/actions
| Condition | Action |
|---|---|
| No bump level or version provided | Ask the user to specify one |
| Invalid explicit version (not semver) | Stop with diagnostic |
| New version <= current version | Stop: "New version must be greater than {current}" |
| Git tag already exists | Stop: "Tag v{version} already exists" |
| Uncommitted changes in worktree | Stop: "Clean worktree required for release" |
cargo test --workspace --no-run fails | Stop: "Build check failed, review changes" |
Manage a goal's capability map in Unimatrix — the behaviorally-proven units that must exist for a goal to be delivered. Decompose goals into capabilities, track delivery status, and report what's left. Status advances to proven ONLY on attached behavioral evidence.
Unimatrix Zero — vision guide mode. Strategic advisor for product evolution, feature ordering, vision alignment, security posture, and codebase health. Conversational. Does not modify application code or run delivery protocols.
Post-merge retrospective — extracts patterns, procedures, and lessons from shipped features into Unimatrix. Use after a feature PR is merged.
Store an architectural decision record in Unimatrix. ADRs live in Unimatrix only — no ADR files. Use after each design decision.
Ad-hoc independent product-lens review via uni-zero-reviewer. Use for re-reviews after rework or reviews outside protocol runs. Advisory only — human makes the call.
Store an architectural decision record in Unimatrix. ADRs live in Unimatrix only — no ADR files. Use after each design decision.