skills/release/SKILL.md
Cut a software release and maintain a tiered compatibility policy. Use when the user wants to release, ship a version, bump the version, tag a release, write a changelog, or update COMPATIBILITY. Config-driven via release.config.json; bumps version files, runs a readiness gate, updates COMPATIBILITY.md tiers and deprecations, tags (→ release workflow), and reports closed issues. Teaches the underlying standards as it runs.
npx skillsauth add glebis/claude-skills releaseInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
For the Cull repository, use $cull-release; Cull's repository-enforced state,
artifact, updater, and Homebrew gates are stricter than this generic workflow.
A config-driven release orchestrator. Mechanics live in scripts/release.py
(unit-tested, stdlib-only); this file is the workflow you (or an agent) follow.
Read reference/config-schema.md for release.config.json and
reference/standards.md for why each step exists.
Scope honesty: reference-tested on a Tauri + Rust + SvelteKit repo (Cull). Other stacks are supported by config, not yet validated. Treat first runs on a new stack as a dry run (see "Dry run" below) until you trust it.
The user says "release", "ship it", "cut a version", "bump version", "tag a
release", "update the changelog/COMPATIBILITY". Requires a release.config.json
at the repo root (scaffold from templates/release.config.json.tmpl).
A version only means something once you declare what you promise to keep
working. release.config.json → surfaces[] is that declaration; each surface
has a tier (experimental → preview → stable) and a compatibility mode.
Only stable surfaces carry the promise. Breaking a stable surface forces a
major bump — the engine enforces this. (Standards: see reference/standards.md.)
/release <patch|minor|major> — run the steps below. On an unfamiliar repo, do a
dry run first (see below). When the user asks to "explain", expand each step's
why into a short lesson from reference/standards.md.
Preconditions. The configured releaseBranch (default main, in
worktree if set) is checked out, clean, and synced with origin. Abort
clearly otherwise. — why: a release tag must point at a known-good, pushed tree.
Version. python3 scripts/release.py --config <cfg> plan <kind> prints the
new version + tag. It asserts the version files currently agree. Show old → new.
— why: SemVer math; 0.x lets minors break (pre-1.0). [[Semantic Versioning (SemVer)]]
Readiness gate. Run cfg.gate then each cfg.extraGate[]. All must exit 0
(fmt, clippy, tests, license audit, prod build, golden contract tests). Block on
failure. — why: this is a Production-Readiness Review. [[Production Readiness Review]]
Changelog. Collect commit subjects since the last tag
(git log <lastTag>..HEAD --format=%s) and draft a section — the engine's
draft_changelog buckets them into Added/Changed/Fixed (Keep a Changelog).
Insert under the top of CHANGELOG.md; hand-curate the user-facing lines.
— why: humans read changelogs; conventional commits seed them. [[Keep a Changelog]]
Compatibility review. Open cfg.compatibility.path (COMPATIBILITY.md). Ask:
stable surface? If yes, the required bump is
major — re-run with major or the release is invalid. (Enforced by
enforce_bump.) Stamp "Last updated: <new version> (<date>)".
— why: tiers + deprecation windows are how you evolve without lying. [[Kubernetes API Deprecation Policy]]Bump & commit. python3 scripts/release.py --config <cfg> bump <kind> writes
every version file; refresh cfg.lockfiles (e.g. cargo update -p <crate> or a
build). Commit chore(release): v<new> including CHANGELOG + COMPATIBILITY.
Tag & push. git tag v<new> and push the tag (→ the repo's release
workflow) and the branch. Confirm the tag trigger exists before the first
release (grep -A3 '^on:' .github/workflows/*.yml).
Report. Print the tag, the release-workflow URL, and issues closed since the
last tag (if cfg.issueTracker is set, e.g. bd) — those are the release notes.
There is no --dry-run flag — a dry run is steps 1–5 done without mutating:
run python3 scripts/release.py --config <cfg> plan <kind> (pure: prints the
version/tag, writes nothing) and optionally run cfg.gate to check readiness.
Do NOT run bump, commit, or tag. The bump subcommand is the only engine
command that writes (version files only); commit/tag/push are git steps you take
in step 6–7, never the engine.
plan → run gate → edit CHANGELOG + COMPATIBILITY → bump → commit → tag → push.
The engine is just scripts/release.py; everything else is git.
The readiness gate runs golden/contract tests (cfg.extraGate). Start with one
(a DB round-trip), then add export and API contract tests. See the consuming
repo's docs/CONTRACTS.md and reference/standards.md. [[Pact — Consumer-Driven Contract Testing]]
development
--- name: agency-docs-updater description: End-to-end pipeline for publishing Claude Code lab meetings. Accepts optional args: date (YYYYMMDD, "yesterday", "today") and lab number (e.g. "04"). Examples: "yesterday 04", "20260420 05", "04" (today, lab 04), "" (today, auto-detect lab). --- # Agency Docs Updater Execute ALL steps automatically in sequence. Only pause if a step fails and cannot be recovered. Read `references/learnings.md` before starting for known pitfalls. **Configuration**: pat
tools
This skill should be used when applying proper typography to prose text or files in Russian, English, German, or French — smart quotes per locale («ёлочки», “curly”, „Gänsefüßchen“, « guillemets »), correct dashes (тире, em/en dash, Gedankenstrich, tiret), non-breaking spaces, ranges, ellipsis, and French espaces insécables before ! ? ; :. Fully deterministic via a pinned typograf-based CLI; never apply these rules by hand. Triggers on "типографика", "typograf", "оттипографь", "smart quotes", "fix typography", "неразрывные пробелы".
development
This skill should be used when inspecting or applying advanced OpenType features of a font (woff2/otf/ttf) — ligatures, stylistic sets (ss01–ss20), character variants (cvXX), texture healing, slashed zero, tabular/oldstyle figures, fractions, small caps, case-sensitive forms — and generating the CSS to enable them. Interviews the user via cenno to pick features. Triggers on "OpenType features", "font features", "stylistic sets", "ligatures", "texture healing", "tabular figures", "what can this font do".
tools
--- name: pre-session-portrait description: Build a compressed, visualizable "portrait" of a consulting/coaching client before a session, so the paid hour is spent solving, not scoping. Runs a 7-lens JTBD-inspired interview (where / how / what / problem / ideal / tension / jobs-to-be-done) that takes rich open answers in and compresses them to an 11-field YAML portrait out. Delivers three ways: raw paste-into-a-clean-chat prompt, a secret GitHub gist link, or a Codex CLI one-liner. Use when prep