architecture
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate…
Cut a release — the order the steps must run in, and the criteria that abort a release
Claude Code
$ npx -y skills add Kanevry/session-orchestrator --skill release --agent claude-code
Codex
$ npx skills add Kanevry/session-orchestrator --skill release -a codex -y
Cursor
$ npx skills add Kanevry/session-orchestrator --skill release -a cursor -y
Gemini CLI
$ npx skills add Kanevry/session-orchestrator --skill release -a gemini-cli -y
GitHub Copilot
$ npx skills add Kanevry/session-orchestrator --skill release -a github-copilot -y
OpenCode
$ npx skills add Kanevry/session-orchestrator --skill release -a opencode -y
Windsurf
$ npx skills add Kanevry/session-orchestrator --skill release -a windsurf -y
name: release description: Cut a release — the order the steps must run in, and the criteria that abort a release user-invocable: true disable-model-invocation: true argument-hint: "[X.Y.Z]" model: inherit
The user wants to cut a release of this package. Optional argument — the target version: **$ARGUMENTS**.
**The mechanism is `scripts/release.mjs`.** It exists, it is executable, and its pure half is unit-tested (`tests/scripts/release.test.mjs`). This skill carries only the two things the script cannot carry: the **order**, and the **criteria that stop a release**. Do not restate the script's internals here — `node scripts/release.mjs --help` and the file header are the reference.
`$ARGUMENTS` is optional and holds the target version `X.Y.Z`. When it is empty, resolve the target from `package.json` and the CHANGELOG before step 2.
The flags this repo's release path uses — the operator-facing entry points, in the order they run:
`--skip-ci` marks the CI row green without checking anything and is **refused by the script** when combined with `--publish`; it is an inspection aid for `--check`, never a release path.
`3.18.0` has a git tag, a GitHub release and a CHANGELOG entry — and the npm registry never saw it; a checklist line is not a mechanism.
Verify it yourself before trusting the paragraph above:
npm view session-orchestrator versions --json # read 2026-08-19: 3.16.0, 3.17.0, 3.19.0, 3.20.0 — no 3.18.0 git for-each-ref --format='%(refname:short) %(creatordate:short)' refs/tags gh release list --repo Kanevry/session-orchestrator --limit 12
The same reading shows the other half: the GitHub releases for 3.15/3.18/3.19/3.20 were all created on 2026-08-19 within a three-second window — 5 to 31 days after their tags. Every step that lives only in prose gets skipped and backfilled later.
1. **Preconditions.** Working tree clean, on `main`, `origin/main` level with `HEAD`, and the GitHub mirror current. The mirror is checked because the site deploy hangs off `github`, not `origin`. What "current" means follows Session Config `mirror` (`--check` row `github-mirror-mode` names it): under `mirror: github` (or unset), `github/main` equals `HEAD`; under `mirror: curated` (#1645), GitHub never receives `HEAD` — `github/main` is a squash snapshot whose `Source-Commit:` trailer must name `HEAD` (publish it with `/close` on `main`, session-end § 4.4). `docs/github-mirror-protection.md` § Releases under `mirror: curated`. 2. **Set the version.** `node scripts/release.mjs --set-version X.Y.Z` — rewrites every version surface, syncs `package-lock.json`, re-stamps the measured census on the site. 3. **Write the editorial half.** The dated `## [X.Y.Z] - YYYY-MM-DD` CHANGELOG entry, `[Unreleased]` folded, README highlights. The script does not write these; `--check` enforces them. 4. **Gate, commit.** Full quality gate, then commit. Do not push yet. 5. **Probe the export (under `mirror: curated`), before the push.** `node scripts/snapshot-probe.mjs --local --json` — builds the curated tree of `HEAD` (the release commit) and runs on it what GitHub's `test` job runs. The question it answers: does what GitHub runs pass on what GitHub gets? Since the slim mirror (#1594) the policy carries an `include` list, GitHub gets no `tests/`, vitest or eslint config, and its `test` job runs `npm run test:mirror` (`scripts/ci/plugin-smoke.mjs`: manifests, syntax, runtime dependencies, SessionStart). The probe's `test` step runs the same smoke, in about a minute; validate-plugin is not a default step there, because it reads files the mirror does not carry. The full suite runs on GitLab (step 7). The probe needs no remote and no pushed commit. Run it here, not after the push: 5.13.0 found three blockers only after its first curated push (#1712), when the release commit was already on `main`, and the fixes took two more MRs (!223, !224). A red probe here is fixed before anything leaves this machine.
Your coding agents get an agreed plan, a check after each round of changes and a handover to the next session. A free, MIT-licensed workflow plugin for people running Claude Code, Codex CLI, Cursor IDE or Pi on a git repository.
Use when the user asks to improve architecture, find refactoring opportunities, surface deepening opportunities, consolidate…
Use this skill when running an autonomous session-orchestration loop. Chains session-start → session-plan → wave-executor →…
Use this skill when scaffolding the minimum repository structure required by session-orchestrator. Invoked automatically by the…
Use when you have a feature idea but the scope or UX is still ambiguous — runs a lightweight Socratic design dialogue (3-5 AUQ…
Use when detecting drift between CLAUDE.md (or AGENTS.md, the Codex CLI alias) / _meta narrative and live repository state. Ten…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.