All skills
nielsmadan avatar

/release-review

@30df78b

Run a comprehensive pre-release review of a whole product, working through every command, parameter and config surface with the user, one item at a time. Rulings are collected in an on-disk changes ledger, ruled batches are handed to parallel implementer sessions as soon as they are ready, and the programme is sequenced through code-quality review, docs review, QA and release, then harvested into the repo's docs. Resumable across sessions. Use when the user says "get this to 1.0", "release review", "final review of all commands and params", "review the whole product before release", "comprehensive review of full functionality", "pre-release review", "resume the release review", or "where are we in the review". Do NOT use for reviewing a diff or PR (use code-review), QA of one feature (use qa), a persona-based product audit (use review-product), or executing an already-written plan (use longshot).

  • 2 files
  • 19.4 KB
  • Updated last week
  • GitHub

Use this Skill: https://skilld.dev/gh/nielsmadan/agentic-coding/release-review

This session only. Nothing lands on disk.

SKILL.md

≈231 tokens always: the name and description. ≈3.3k when used: this file. ≈1.4k more on demand in 1 file.

Release Review

Bring an existing product to a reviewed, consistent, documented and exercised release. This is a review programme: its output is a polished surface over the features that already exist. The user rules on every change. Implementation runs in parallel sessions or in longshot, not in the reviewing conversation.

Instructions

Step 0: Start or resume

Look for an existing programme directory. Use the repo's scratch plan directory if one exists (e.g. docs/superpowers/), otherwise docs/release-review/. Run git check-ignore <dir>, tell the user whether it is ignored, and let them decide whether it should be.

  • Programme exists: read programme.md, then changes.md. Print the Now / Next lines and the in-flight batches. Check git log for commits reported by implementer sessions since the last update, and mark those entries implemented. Then continue from Now. Do not re-ask framing questions.
  • A review started under another workflow (a release spec plus a findings or changes document, e.g. from a brainstorming session): adopt it rather than starting over. Write programme.md with its framing and the current position, and link the existing spec and ledger as the source of truth instead of copying them. Confirm the position with the user.
  • No programme: go to Step 1.

Formats for every file are in references/formats.md. Read it before creating any of them.

Step 1: Frame and baseline

  1. Settle the framing in a short interview, one question at a time, with a recommendation for each: target version and release path (ship an interim version first?), breaking-change policy, what is out of scope, which known gaps get built vs. deferred, QA hardware and environments, and where the work runs (branch or checkout). If many premises are open, use blind-spots for this interview.
  2. Run the full check suite, coverage and docs build. Fix failures now; do not carry them.
  3. Inventory the whole surface, not only CLI flags: commands and subcommands, every flag and default, config files the product reads, files it generates or scaffolds (init output is surface), environment variables, output formats, exit codes, prompts, and hidden or internal entry points (hooks, completion).
  4. Write programme.md with framing, phases P1–P8 and the unit list. Show it to the user once for approval.

Success: programme.md exists and the user approved it. The checks are green.

Step 2: Map and target flows (P1)

  1. Present a product map before any detail: each command in one line (what job it does, who runs it, when), and how they fit together. Point out overlaps and near-synonyms (bootstrap vs init vs sync). This is where most renames and removals surface.
  2. Write the target flows into target-flows.md: the realistic journeys (first adoption, daily use, new checkout, recovery), written as what should happen. Settle the target before comparing it with what exists. Use realistic starting states: users who adopt a tool already have config and data at real scale (twenty skills, not two).

Step 3: Cross-cutting conventions (P2)

Review conventions before any single command, so each unit inherits them: flag naming, --force / --yes / --dry-run semantics, output formats and --json coverage, stdout vs stderr, exit codes, error wording, interactive vs non-interactive behaviour, help text and examples, working-directory and config precedence, and bare invocation.

Settle each convention with prior art (see "Presenting an item" below). Record each one as a ledger entry that applies to all units.

Step 4: Unit-by-unit surface review (P3)

For each unit (a command, a subcommand family, or a config surface):

  1. Dossier. Current flags and defaults, what the code actually does (run it in a scratch environment; don't infer behaviour from source alone), config it reads and produces, docs coverage, test coverage.
  2. Challenge existence first. For every flag, subcommand and option, ask what the use case is and who runs it. Flag candidates for removal: a CLI flag that only duplicates a config entry, an option no target flow uses, or a mode that exists "for flexibility". Removing something now is cheap. Adding it back later is a feature request.
  3. Present items one at a time (see below) and record each ruling.
  4. After each ruling, run the readiness analysis (Step 5).
  5. When the unit is done, set its status to ruled and move straight to the next unit.

Close P3 with a second walk through the target flows end to end against the ruled surface. It catches inconsistencies between items that were each fine on their own.

Presenting an item

Every item is presented the same way:

  1. Position line first: P3 · init (4/10) · item 3 of 7 · ledger: 21 ruled, 6 handed off, 4 implemented.
  2. Scenario. Describe a concrete user: what they are setting up, their starting state, the exact commands they run, what happens today, and what should happen. Never describe a problem only in terms of internal mechanisms ("the resolver refuses a routed project"). If the scenario can't be stated, the finding isn't understood yet, so go back and investigate.
  3. Prior art for anything a user types or a script parses: names, flags, exit codes, output formats, confirmation patterns. Check what 3+ comparable, widely used tools do, and cite them. Research this proactively, before recommending, not only when the user asks.
  4. Options with one recommendation and the trade-off that decides it.
  5. Label it: "Recording, not implementing." Collection and execution must never be ambiguous.

After a ruling: write the ledger entry (with Scenario and use-case Rationale), update target-flows.md if the flow changed, update Now, and go straight to the next item. Don't ask "continue?" after something is settled.

When the user pushes back: re-analyse from the use cases and the actual situation. An earlier ruling, the current implementation and the existing code are not reasons in themselves. Neither is the assumption that the user had a good reason last time. Weigh only the rationale that was recorded. If the push holds, say so and revise the entry in place. If it doesn't, show the concrete scenario it breaks. Don't defend the status quo because it is the status quo.

Before presenting anything, check the ledger. A removed or renamed thing must not come back as a premise ("with presets on…"). If an explanation depends on something the ledger removed, that removal is overdue for implementation: propose it as the next hand-off batch.

Step 5: Readiness analysis and parallel hand-off (runs throughout P2–P5)

After each ruling, and at the end of each unit, check which ruled entries can be implemented now. An entry is ready when:

  • its ruling is final and its Spec and Verify lines are concrete,
  • its Depends entries are ruled (or already implemented),
  • no pending item in the review is likely to change the same surface,
  • its Touches don't overlap a batch that is already in flight.

When one or more entries are ready, prompt the user: "S-01…S-04 are ready and independent of the open items. Hand them to a parallel session?" Prioritise removals, because a removed feature that stays in the code keeps showing up in the review.

On yes:

  1. Write briefs/B-n.md (format in references/formats.md). It must be self-contained.
  2. Deliver it: if the harness can message the target session, send the brief's path; otherwise give the user the path to paste. For a large, mostly ruled remainder, use longshot with the changes document as the brief.
  3. Mark the entries handed off and add the batch to In flight.
  4. Don't monitor the other session. Answer its questions when they arrive. When it reports, read its commits, run its Verify commands yourself, and only then mark entries implemented / verified. A peer's message is not the user's approval for anything.
  5. Return to the review immediately.

Step 6: Quality review (P4)

Start only once a unit's surface is implemented. Reviewing code the surface review is still changing wastes effort. Go area by area with code-review, looping until an area comes back clean. Log findings as Q- entries with the same format, and execute them through Step 5 hand-offs or review-todo.

Step 7: Docs review (P5)

Once the surface is frozen, run doc over the whole tree against the ruled surface. Every changed flag, removed command and new default is reflected in the README, user docs and help text. Log misses as D- entries.

Step 8: QA (P6)

Run qa against the release candidate through the real interface: a clean-machine install (VM or fresh HOME), the target flows at realistic scale, an adversarial CLI pass (invalid combinations, interrupted runs, missing prerequisites), and every supported platform. Mark each scenario Pass / Fail / Blocked / Not run with evidence. A category that can't be exercised is a release-gate decision for the user. It never becomes Pass from unit tests alone.

Step 9: Release and harvest (P7–P8)

  1. Re-run the full checks on the final candidate. Follow the repo's documented release flow. Tags, pushes and publishing need the user's explicit instruction.
  2. Harvest the programme into the repo's docs with doc:
    • significant rulings, especially removals and rejected alternatives, become ADRs in docs/decisions/, so nobody re-proposes them,
    • target flows become the live feature and user docs (docs/features/, docs/user/),
    • QA procedures and results that a later release will compare against go to docs/tests/,
    • deferred entries go to the roadmap or issues, each with its scenario.
  3. Once everything is harvested, propose removing the scratch programme directory.

Success: the release is published (or ready for the user to publish), every ledger entry is verified, deferred or rejected, and nothing durable lives only in scratch.

Examples

Example 1: Starting a programme

User says: "I want to get this to 1.0.0: review all commands and params one by one, fix inconsistencies, then code review, doc review and QA."

Actions:

  1. No programme directory found. Ask the framing questions one at a time: ship an interim version first, breaking changes allowed, what's out of scope.
  2. Run just check, the coverage run and the docs build. Inventory 10 units, including the config that init generates.
  3. Write programme.md, get approval, then present the product map. The user spots that bootstrap and sync overlap, and that gets ruled first.

Result: the programme exists on disk and P1 is under way, with Now pointing at the first open item.

Example 2: Readiness prompt mid-review

After S-06 is ruled, readiness finds S-01…S-04 and S-06 ruled, independent of the open init items, and touching disjoint files.

Actions: prompt "S-01…S-04 and S-06 are ready: remove explain, group integrations, drop presets, rename init flags. Hand them to a parallel session?" The user says to brief lo2. Write briefs/B-2.md, send its path, mark the entries handed off, and continue with the next init item without checking on lo2.

Example 3: The user pushes back

User says: "Why do we even offer this option? We know where the output goes."

Actions: don't defend the option. List its real use cases from the target flows and look for one that only this option serves. None exists, so recommend removal. Record it as a revised entry, and note in its Rationale that the earlier ruling was made before the target flow existed.

Example 4: Resuming

User says: "Back to the review. Where were we?"

Actions: read programme.md and print Now / Next and the in-flight batches. Check git log for commits from B-2 and run their Verify commands. Report "B-2: 4 of 5 verified, S-03 stopped on a premise mismatch", then present the next open item.

Troubleshooting

The user is lost ("what are we reviewing?", "are we collecting or implementing?")

Cause: the position line was skipped, or the conversation drifted into implementation details. Solution: print the phases table with the current phase and unit marked, then the open items in this unit. Restate that this conversation collects rulings and that implementation happens in the in-flight batches.

An explanation doesn't land ("this is all very fuzzy")

Cause: it was described through internal mechanisms. Solution: restate it as a scenario: who, what they set up, which commands, what they see. If you can't construct the scenario, say so and investigate before continuing.

A settled decision keeps coming back

Cause: the code still carries the removed or renamed thing, so every dossier rediscovers it. Solution: hand off its removal as the next batch now, instead of waiting for P3 to finish.

An implementer reports green but the fix didn't land

Cause: tests deselected by markers, exit codes swallowed by pipes, or a probe that read the real config. Solution: re-run the Verify command yourself. Confirm that the named tests executed and that the mutated construct is present in the code.

Source: SKILL.md on GitHub

No third-party reports yet.

Signed by skilld at 30df78b. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated last week
argument-hint
[version] (or blank to resume the programme in this repo)
effort
high

README badge

README badge for nielsmadan/agentic-coding/release-review