Awesome-omni-skill chronos-release
Release a new version of the AllSource Chronos monorepo. Bumps versions across all services (Rust, Go, Elixir), runs full CI to green, creates a single squashed commit with an annotated immutable tag. Use when the user says "release", "new version", "bump version", "tag a release", "cut a release", or "make a release". Argument is the version number (e.g., "0.10.4") or "patch"/"minor"/"major" for auto-increment.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/devops/chronos-release" ~/.claude/skills/diegosouzapw-awesome-omni-skill-chronos-release && rm -rf "$T"
skills/devops/chronos-release/SKILL.mdChronos Release Skill
Cut a release for the AllSource Chronos monorepo. Produces exactly one commit and one immutable annotated tag.
Immutable Tags Policy
NEVER move, delete, or re-create an existing tag. If a release has issues after tagging, bump the version and cut a new release (e.g., v0.10.4 instead of re-tagging v0.10.3).
Before starting, verify the requested tag does not already exist:
git tag -l "v<VERSION>"
If it exists, abort and tell the user to choose a higher version.
Procedure
1. Determine version
If the user provides a semver string, use it. If they say "patch", "minor", or "major", read the current version and increment:
grep 'version = ' apps/core/Cargo.toml | head -1 | grep -oE '[0-9]+\.[0-9]+\.[0-9]+'
2. Check preconditions
- Working tree must be clean (
empty) OR the user explicitly wants to include staged changesgit status --porcelain - Current branch should be
(warn if not)main - Tag
must not existv<VERSION>
3. Bump versions
make set-version VERSION=<VERSION>
This updates:
Cargo.toml, main.go, tracing.go, mix.exs (x2), K8s manifests, README.md.
After running, also update
Cargo.lock:
cd apps/core && cargo update --workspace
Check for any other version references that
set-version might miss:
(info.version field)apps/control-plane/docs/openapi.yaml
,apps/core/README.md
(version badges/text)apps/mcp-server-elixir/README.md
files referencing the old versiondocs/
4. Run CI to green
make ci
If CI fails, fix all issues iteratively:
- Rust:
,cargo +nightly fmt
, clippy fixes, doc link fixescargo +nightly sort - Go:
, golangci-lint fixesgofmt - Elixir:
,mix format
, credo fixes, test fixesmix deps.unlock --unused
Re-run
make ci after each round of fixes until it passes.
5. Commit (single squashed commit)
Stage all changes and create exactly ONE commit:
git add -A git commit -m "$(cat <<'EOF' release: v<VERSION> — <brief description of what changed> <bullet list of key changes> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> EOF )"
Critical: There must be exactly one new commit for the release. If you need multiple rounds of CI fixes, do NOT commit between rounds — only commit once everything is green.
6. Tag (immutable)
Create an annotated tag:
git tag -a v<VERSION> -m "v<VERSION> — <brief description>"
7. Verify
git log --oneline -3 git show v<VERSION> --oneline --no-patch
Confirm: single new commit, tag points to it.
8. Report
Tell the user:
- Version: v<VERSION>
- Commit: <hash>
- Tag: v<VERSION>
- CI: green
- Remind them to
when readygit push && git push --tags
Do NOT push automatically — let the user decide when to push.
Common CI Fix Patterns
| Tool | Common Issue | Fix |
|---|---|---|
| cargo clippy | collapsible_if | Use let-chain syntax: |
| cargo clippy | new_without_default | Add |
| cargo clippy | redundant_closure | instead of |
| cargo sort | unsorted deps | |
| cargo fmt | formatting | |
| rustdoc | broken_intra_doc_links | Wrap brackets in backticks |
| golangci-lint | goconst | Extract repeated strings to constants |
| golangci-lint | gocritic ifElseChain | Convert to switch statement |
| mix credo | alias ordering | Alphabetize alias statements |
| mix credo | cyclomatic complexity | Refactor or add |
| mix format | formatting | in each Elixir app |
| mix dialyzer | pattern_match warnings | Add entries to |