releaselisted
Install: claude install-skill qupunto/workflow-secretary
# Cutting a release
A tag another checkout has fetched cannot be recalled, so this skill is
deliberately unhurried at exactly one point — the push — and brisk everywhere
else.
**This skill writes nothing.** It is the only one that may *decide* to tag, but
the tag itself is written by `git-writer`, the changelog by `changelog-writer`,
and the milestone mark by `--plan`. Who owns what is
[`~/.claude/workflow/ownership.md`](../../workflow/ownership.md).
**Project facts come from `.claude/workflow.json`**: `record.roadmap`,
`record.changelog`, `record.audits`, `branch.publish`, and `agents.release` —
the agent that prepares the material. Without a manifest, fall back to
`CHANGELOG.md`, `ROADMAP.md` and the current branch, and say so.
## The `--release` shorthand
Invoking without confirmation is safe: everything up to the push is local and
reversible, and the push has its own gate below. Where a flag counts, and the
authorization it confers, is in `shorthand-flags.sh` and
[`~/.claude/README.md`](../../README.md).
## 1. The precondition is a mark, not a word
**A release requires a milestone marked completed in `record.roadmap`.** That is
the entire precondition and it is `--plan`'s to write: checkable by reading one
file, and still true after a `/clear` — which a spoken approval is not.
Three cases:
- **Marked completed, no tag for it** — that is the release. Go.
- **Looks complete but is not marked** — do not tag it. Hand to `--plan`, which
asks the user and marks it, t