Skip to content

Commit 546cf9a

Browse files
authored
[codex] consolidate release documentation (#40)
1 parent c7e1f49 commit 546cf9a

6 files changed

Lines changed: 41 additions & 185 deletions

File tree

.agents/skills/release-maintainer/SKILL.md

Lines changed: 14 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ advertise: false
66

77
# agent-tty release maintainer SOP
88

9-
This is a project-local maintainer skill for `agent-tty` releases. The canonical human policy lives in [`docs/RELEASE-PROCESS.md`](../../../docs/RELEASE-PROCESS.md); use this skill as the execution checklist when an agent is asked to cut or publish a release from this repository.
9+
This is a project-local maintainer skill for `agent-tty` releases. The canonical process lives in [`docs/RELEASE-PROCESS.md`](../../../docs/RELEASE-PROCESS.md); use this skill as an agent wrapper around that document, not as a second copy of the release recipe.
1010

1111
## When to use this skill
1212

@@ -20,189 +20,38 @@ Use this skill when you are asked to:
2020

2121
## Core guardrails
2222

23+
- Re-read and follow `docs/RELEASE-PROCESS.md` before making release changes.
2324
- Do **not** release from an unmerged branch. The release tag must reference a commit already merged into `main`.
2425
- Keep the version bump minimal unless the user explicitly asks for additional release-related changes.
2526
- Follow the repo's PR body/footer requirements from `AGENTS.md` when creating the release PR.
2627
- Treat `gh auth status` as advisory only. When access looks suspicious, verify with a real API call instead.
2728
- Run post-publish verification under Node 24. If the ambient shell is older, point `NODE_BIN` at an explicit Node 24 binary.
2829
- For `doctor --json`, the health signal is `.result.ok`; the outer `.ok` field only says the CLI command envelope succeeded.
30+
- If this skill conflicts with `docs/RELEASE-PROCESS.md`, stop and update the skill or ask for direction before continuing.
2931

3032
## Preflight
3133

3234
1. Re-read `RELEASE.md`, `ROADMAP.md`, and `docs/RELEASE-PROCESS.md`.
3335
2. Confirm the workspace is clean and based on up-to-date `main`.
34-
3. Verify GitHub CLI access with a real API call:
36+
3. Confirm release-note automation prerequisites from `docs/RELEASE-PROCESS.md` are available.
37+
4. Verify GitHub CLI access with a real API call:
3538

3639
```bash
3740
gh api graphql -f query='query { viewer { login } }'
3841
```
3942

40-
4. Prefer `mise run ci` when `mise` is available; otherwise use `npm run verify`.
43+
5. Prefer `mise run ci` when `mise` is available; otherwise use `npm run verify`.
4144

42-
## Prepare the version bump
45+
## Execution Checklist
4346

44-
Start from fresh `main`:
47+
- Follow the current version-bump, changelog, PR, merge, tag, publish, and verification steps in `docs/RELEASE-PROCESS.md`.
48+
- Keep release PR commits narrowly scoped to release metadata, changelog updates, and required lockfile or release-process updates.
49+
- After opening a release PR, account for the `Release Changelog` workflow possibly pushing a `CHANGELOG.md` commit back to the branch.
50+
- Use structured `gh run view ... --json status,conclusion,jobs` output for agent-driven CI waiting.
51+
- After merging the release PR, tag the merged `main` commit only.
52+
- Verify both npm installation and GitHub Release asset installation before announcing the release.
4553

46-
```bash
47-
git checkout main
48-
git pull origin main
49-
```
50-
51-
Create a release branch and bump without tagging.
52-
53-
Stable patch release example:
54-
55-
```bash
56-
git switch -c release/0.1.1
57-
npm version patch --no-git-tag-version
58-
```
59-
60-
First beta on the next patch line:
61-
62-
```bash
63-
git switch -c release/0.1.1-beta.0
64-
npm version prepatch --preid beta --no-git-tag-version
65-
```
66-
67-
Next beta on the same line:
68-
69-
```bash
70-
npm version prerelease --preid beta --no-git-tag-version
71-
```
72-
73-
Then validate and commit the pure version bump:
74-
75-
```bash
76-
npm run verify
77-
npm run version:json
78-
git add package.json package-lock.json
79-
git commit -m "chore(release): <version>"
80-
```
81-
82-
## Create the release PR
83-
84-
```bash
85-
git push -u origin <release-branch>
86-
gh pr create --base main --head <release-branch> --title "chore(release): <version>"
87-
```
88-
89-
Before creating the PR, check whether one already exists for the release branch:
90-
91-
```bash
92-
gh pr list --head <release-branch> --state all
93-
```
94-
95-
## Wait for CI and merge the PR
96-
97-
Interactive waiting is fine with:
98-
99-
```bash
100-
gh pr checks <pr-number> --watch
101-
```
102-
103-
For automation or agent-driven waiting, prefer structured workflow inspection:
104-
105-
```bash
106-
gh pr checks <pr-number>
107-
gh run list --branch <release-branch> --event pull_request --limit 5
108-
gh run view <run-id> --json status,conclusion,jobs
109-
```
110-
111-
Merge the PR only after the required checks succeed.
112-
113-
Normal merge path:
114-
115-
```bash
116-
gh pr merge <pr-number> --squash --delete-branch
117-
```
118-
119-
If branch policy still blocks the merge after checks pass and an authorized releaser is allowed to override it:
120-
121-
```bash
122-
gh pr merge <pr-number> --squash --admin --delete-branch
123-
```
124-
125-
If remote refs look stale after the merge, refresh them before checking `origin/main` or deleted release branches:
126-
127-
```bash
128-
git fetch origin --prune
129-
```
130-
131-
## Tag and publish the release
132-
133-
Default to the documented tag flow unless the user explicitly asks for the GitHub CLI shortcut.
134-
135-
Documented flow:
136-
137-
```bash
138-
git checkout main
139-
git pull origin main
140-
git tag -a vX.Y.Z -m "vX.Y.Z"
141-
git push origin vX.Y.Z
142-
```
143-
144-
If you are explicitly asked to create the tag and GitHub Release with `gh`, use the merged `main` commit SHA:
145-
146-
```bash
147-
MERGED_SHA=<merge-commit-on-main>
148-
gh release create vX.Y.Z \
149-
--target "$MERGED_SHA" \
150-
--title vX.Y.Z \
151-
--notes-file <notes-file>
152-
```
153-
154-
For prereleases, also add:
155-
156-
```bash
157-
--prerelease --latest=false
158-
```
159-
160-
The release workflow should publish the verified tarball to both GitHub Releases and npm.
161-
162-
## Verify the published npm package
163-
164-
Run the installed CLI under Node 24:
165-
166-
```bash
167-
PACKAGE_NAME='agent-tty'
168-
PACKAGE_VERSION='<version>'
169-
NODE_BIN=${NODE_BIN:-node}
170-
INSTALL_PREFIX=$(mktemp -d)
171-
AGENT_TTY_HOME=$(mktemp -d)
172-
173-
npm view "$PACKAGE_NAME" dist-tags --json
174-
npm install -g --prefix "$INSTALL_PREFIX" "$PACKAGE_NAME@$PACKAGE_VERSION"
175-
"$NODE_BIN" "$INSTALL_PREFIX/bin/agent-tty" version --json | jq -r '.result.cliVersion'
176-
"$NODE_BIN" "$INSTALL_PREFIX/bin/agent-tty" --home "$AGENT_TTY_HOME" doctor --json | jq '.result.ok'
177-
```
178-
179-
For prereleases, also confirm the expected dist-tag points at the exact version.
180-
181-
## Verify the published GitHub Release assets
182-
183-
```bash
184-
VERSION=<version>
185-
RELEASE_TAG="v${VERSION}"
186-
RELEASE_TGZ="agent-tty-${VERSION}.tgz"
187-
NODE_BIN=${NODE_BIN:-node}
188-
189-
DOWNLOAD_DIR=$(mktemp -d)
190-
INSTALL_PREFIX=$(mktemp -d)
191-
AGENT_TTY_HOME=$(mktemp -d)
192-
193-
gh release download "$RELEASE_TAG" --repo coder/agent-tty --dir "$DOWNLOAD_DIR" --pattern "$RELEASE_TGZ"
194-
gh release download "$RELEASE_TAG" --repo coder/agent-tty --dir "$DOWNLOAD_DIR" --pattern "${RELEASE_TGZ}.sha256"
195-
(
196-
cd "$DOWNLOAD_DIR"
197-
sha256sum -c "${RELEASE_TGZ}.sha256"
198-
)
199-
200-
npm install -g --prefix "$INSTALL_PREFIX" "$DOWNLOAD_DIR/$RELEASE_TGZ"
201-
"$NODE_BIN" "$INSTALL_PREFIX/bin/agent-tty" version --json | jq -r '.result.cliVersion'
202-
"$NODE_BIN" "$INSTALL_PREFIX/bin/agent-tty" --home "$AGENT_TTY_HOME" doctor --json | jq '.result.ok'
203-
```
204-
205-
## Failure recovery checklist
54+
## Failure Recovery Reminders
20655

20756
- If a release tag was pushed before the PR merged, cancel the workflow run, delete the remote tag, delete the local tag, and redo the release through the PR-first flow.
20857
- If the GitHub Release exists but assets or npm publish are missing, inspect the `Release` workflow run before attempting any manual repair.

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
110110

111111
## Documentation map
112112

113-
- [`RELEASE.md`](./RELEASE.md) — the current `0.1.0` release contract.
113+
- [`RELEASE.md`](./RELEASE.md) — the supported release contract for the `0.1.x` line.
114114
- [`ROADMAP.md`](./ROADMAP.md) — intentionally deferred work and post-release direction.
115115
- [`design/README.md`](./design/README.md) — architecture references plus archived week-by-week planning.
116116
- [`dogfood/CATALOG.md`](./dogfood/CATALOG.md) — curated proof bundles and recommended review paths.
@@ -124,10 +124,10 @@ agent-tty --home "$AGENT_HOME" destroy "$SESSION_ID" --json
124124
- Recording export to asciicast (`.cast`) or WebM for artifact bundles.
125125
- Failure recovery via reconciliation, stale-session cleanup, and retained manifests/artifacts.
126126

127-
## 0.1.0 release focus
127+
## Release contract
128128

129-
`agent-tty` `0.1.0` is the first release aimed at reliable, isolated, reviewable TUI automation.
130-
For the explicit shipping contract, see [`RELEASE.md`](./RELEASE.md). For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md).
129+
The `0.1.x` release line is centered on reliable, isolated, reviewable TUI automation.
130+
For the explicit support contract, see [`RELEASE.md`](./RELEASE.md). For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md).
131131
Reviewer-facing proof bundles are curated in [`dogfood/CATALOG.md`](./dogfood/CATALOG.md), with current release-signoff evidence in `dogfood/20260326-week9-release-readiness/` and evergreen workflow coverage such as `dogfood/run-command/`.
132132

133133
## TUI Workflow

RELEASE.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
# agent-tty 0.1.0 release contract
1+
# agent-tty release contract
22

3-
`agent-tty` `0.1.0` is the first release that explicitly targets isolated, reviewable terminal automation for real TUI workflows.
4-
The contract below is the bar for what maintainers should feel comfortable supporting at release time.
5-
If a workflow depends on behavior outside this document, treat it as future-scope or best-effort rather than a guaranteed `0.1.0` capability.
6-
For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md). For reviewer-facing proof bundles, start with [`dogfood/CATALOG.md`](./dogfood/CATALOG.md).
3+
This document defines the supported product contract for the current `0.1.x` release line.
4+
The original `0.1.0` release established the baseline for isolated, reviewable terminal automation for real TUI workflows; later `0.1.x` releases may add compatible fixes and features without widening this core support contract.
5+
If a workflow depends on behavior outside this document, treat it as future-scope or best-effort rather than a guaranteed capability.
76

8-
## What 0.1.0 delivers
7+
For per-release changes, see [`CHANGELOG.md`](./CHANGELOG.md). For release mechanics, use [`docs/RELEASE-PROCESS.md`](./docs/RELEASE-PROCESS.md). For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md). For reviewer-facing proof bundles, start with [`dogfood/CATALOG.md`](./dogfood/CATALOG.md).
8+
9+
## Supported capabilities
910

1011
- Reliable isolated session lifecycle management: `create`, `inspect`, `destroy`, and `gc` all work against isolated agent-tty homes.
1112
- Renderer-backed screenshots, semantic snapshots, and WebM export for reviewer-visible proof artifacts.
@@ -14,7 +15,7 @@ For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md). For reviewer-
1415
- An append-only event log that remains the canonical replay/export source of truth.
1516
- Schema-locked JSON envelopes across the public CLI surface.
1617

17-
## What 0.1.0 explicitly does not deliver
18+
## Explicitly out of scope
1819

1920
- Native renderer backends such as Ghostty native or kitty.
2021
- Mouse input support.
@@ -33,6 +34,5 @@ For intentionally deferred work, see [`ROADMAP.md`](./ROADMAP.md). For reviewer-
3334

3435
## Validation
3536

36-
- Current release bar: 602 tests across 56 test files.
3737
- Reviewer-facing proof bundles are cataloged in [`dogfood/CATALOG.md`](./dogfood/CATALOG.md), including `dogfood/20260326-week9-release-readiness/`, `dogfood/run-command/`, and `dogfood/20260325-week8-contract-locks/`.
38-
- Run `npm run verify` for the full validation bar.
38+
- The maintainer release process in [`docs/RELEASE-PROCESS.md`](./docs/RELEASE-PROCESS.md) defines the current validation bar.

docs/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ npm run intent:validate
4949

5050
## Documentation and proof expectations
5151

52-
- Keep the root docs split clear: `README.md` for overview, `RELEASE.md` for current scope, `ROADMAP.md` for future scope.
52+
- Keep the root docs split clear: `README.md` for overview, `RELEASE.md` for supported scope, `ROADMAP.md` for future scope.
5353
- Update [`design/README.md`](../design/README.md) when the active vs archived design split changes.
5454
- Keep the skill split clear in docs and packaging notes: `skills/` contains the thin public bootstrap, while `skill-data/` contains the canonical runtime skills served by `agent-tty skills get`.
5555
- Update [`dogfood/CATALOG.md`](../dogfood/CATALOG.md) when you add or promote a reviewer-facing proof bundle.

docs/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
Use this directory when you need project workflow guidance rather than product-facing documentation.
44

55
- [`../README.md`](../README.md) — product overview and quick start.
6-
- [`../RELEASE.md`](../RELEASE.md)current shipping contract.
6+
- [`../RELEASE.md`](../RELEASE.md)supported product contract.
77
- [`../ROADMAP.md`](../ROADMAP.md) — deferred work and post-release direction.
88
- [`../design/README.md`](../design/README.md) — architecture and design references.
99
- [`CONTRIBUTING.md`](./CONTRIBUTING.md) — setup, validation, and day-to-day contribution flow.
1010
- [`RELEASE-PROCESS.md`](./RELEASE-PROCESS.md) — maintainer release checklist and proof expectations.
11-
- [`../.agents/skills/release-maintainer/SKILL.md`](../.agents/skills/release-maintainer/SKILL.md) — internal agent SOP for version bumps, release PRs, tagging, and publish verification.
11+
- [`../.agents/skills/release-maintainer/SKILL.md`](../.agents/skills/release-maintainer/SKILL.md)thin internal agent wrapper around the canonical release process.
1212
- [`../dogfood/CATALOG.md`](../dogfood/CATALOG.md) — curated proof bundles for review.

docs/RELEASE-PROCESS.md

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Release process
22

3-
`RELEASE.md` defines the shipping contract. This document describes how maintainers should validate, version, tag, and publish that contract on GitHub Releases and npm.
3+
[`../RELEASE.md`](../RELEASE.md) defines the supported product contract. This document is the canonical maintainer process for validating, versioning, tagging, and publishing that contract on GitHub Releases and npm.
44

55
## One-time npm trusted publishing setup
66

@@ -146,7 +146,14 @@ Versions containing a hyphen, such as `-beta.0` or `-rc.0`, are published by the
146146

147147
### Open the release PR
148148

149-
Release branches named `release/*` are watched by the `Release Changelog` workflow. When `package.json` changes the package version and `CHANGELOG.md` does not already contain that version, the workflow runs:
149+
Release branches named `release/*` are watched by the `Release Changelog` workflow. The default path is to commit only the version bump, then let that workflow add `CHANGELOG.md` if needed:
150+
151+
```bash
152+
git add package.json package-lock.json
153+
git commit -m "chore(release): <version>"
154+
```
155+
156+
When `package.json` changes the package version and `CHANGELOG.md` does not already contain that version, the workflow runs:
150157

151158
```bash
152159
communique generate "v<version>" --changelog --repo coder/agent-tty
@@ -157,7 +164,7 @@ When it pushes that bot commit, it dispatches the CI and skill-validation
157164
workflows for the updated release branch so protected-branch checks can run
158165
against the new head commit.
159166

160-
If you want to inspect or update the changelog before opening the PR, run the same command locally after `npm version ... --no-git-tag-version` and include `CHANGELOG.md` in the release commit:
167+
If you want to inspect or update the changelog before opening the PR, run the same command locally after `npm version ... --no-git-tag-version` and include `CHANGELOG.md` in the release commit instead:
161168

162169
```bash
163170
VERSION=$(node --input-type=module -e "import pkg from './package.json' with { type: 'json' }; process.stdout.write(pkg.version)")
@@ -166,7 +173,7 @@ git add package.json package-lock.json CHANGELOG.md
166173
git commit -m "chore(release): ${VERSION}"
167174
```
168175

169-
After the version bump is committed:
176+
After committing either the default version bump or the local changelog variant:
170177

171178
```bash
172179
git push -u origin <release-branch>

0 commit comments

Comments
 (0)