skillsaw-release-ready · v1.0 · 2026-09-02 · sha256 2317156cf4056a60
skillsaw-release-ready v1.0A
Immutable. This exact content is served forever at /api/v1/blob/2317156cf4056a60.
--- name: skillsaw-release-ready description: Audit skillsaw for release readiness — adversarially review every rule added since the last tag against real GitHub content, audit the code by dimension, consolidate an adversarially approved fix list, and ship it in batches of discrete commits. Use before cutting a release. compatibility: Requires git, gh CLI, internet access, and subagents (Opus for reviewers). Uses ~/tmp for a multi-gigabyte corpus. license: Apache-2.0 user-invocable: true metadata: author: stbenjam version: "1.0" --- <!-- Source paths below are repo-root-relative references, not links navigable from this skill's directory. --> <!-- skillsaw-disable content-unlinked-internal-reference --> # skillsaw Release Ready A release is ready when every rule added since the last tag has survived an adversarial review against real repositories, every dimension of the code has been audited, and the fixes an independent critic approved have shipped. This skill runs that sweep with subagents in parallel and lands the fixes in batches of ten discrete commits per PR. Three questions decide every finding's priority, and every reviewer answers them: 1. Does it affect common usage? Rare edge cases can be suppressed with a `skillsaw-disable` directive; JSON has no inline disable. 2. Is it correct? A false positive on content the target tool accepts is the worst outcome for a linter. 3. Is it annoying? Would users find the rule overbearing, or firing far too often on skills that work? ## Step 1: Establish scope ```bash git fetch --tags git diff --name-status v<last>..HEAD -- src/skillsaw/rules/builtin/ | grep '^A' git log --merges --format=%s v<last>..HEAD gh pr view <n> --json title,body # each prior release-readiness PR ``` Record the new rule ids, the rules whose files changed, and the fixes earlier passes already landed. Reviewers must be told what was already fixed so they dig for what was missed. ## Step 2: Build the environment - Scratch lives under `~/tmp/skillsaw-audit/`: `corpus/`, `reports/`, `briefs/`, `work/<agent>/`. The system `/tmp` is too small. - Shallow-clone a corpus of real repositories into `corpus/` before launching anything: the reference collections for every ecosystem skillsaw supports, the largest marketplaces, and the repositories `gh search code` finds for each new rule's file type. Read [corpus](references/corpus.md). - Install the last release into `~/tmp/skillsaw-audit/venv-<last>/` for differential runs. Never `pip install -e` from a worktree into the shared `.venv`; that breaks every agent at once. - `skillsaw lint <path> --rule <id>` force-enables an opt-in or `since`-gated rule, so reviewers can exercise any rule directly. ## Step 3: Launch the reviewers and auditors One Opus subagent per new rule, plus one auditor per dimension of the code, all in one turn so they run in parallel. Each reads a shared brief, writes its report to `reports/<name>.md`, and returns a verdict plus its P0 and P1 findings in under 40 lines. Read [briefs](references/briefs.md) for the two brief templates and the dimension list. Reviewers use real oracles wherever one exists: the vendor's own validator (`mcp-publisher validate`), CLI (`devin rules list`), binary (`opencode`), schema (`opencode.ai/config.json`), or lockfile writer. A reviewer that reasons from memory of the docs finds nothing the docs already said. While they run, verify the two or three most surprising claims yourself as they arrive; a report that says a check fails on `main` too has changed its own priority. ## Step 4: Consolidate the checklist Fold every report into `CHECKLIST.md`: a health verdict, Tier 1 (the ten for the first PR, ordered by common usage times correctness divided by size), Tier 2 (next PR), Tier 3 (backlog), a per-rule verdict table, and a "verified fine" list so nobody re-checks it. Cite `file:line` and a corpus path for every item. ## Step 5: Send the critic One Opus subagent attacks the checklist: reproduces every Tier 1 item, attacks each proposed fix for new false negatives and for conflicts with recorded maintainer decisions, promotes and demotes across tiers, hunts for what the whole audit missed, and returns an approved Tier 1 of at most ten. Its verdict, not the checklist, decides what ships first. Read [critic](references/critic.md). ## Step 6: Ship in batches Branch from `main`; one item per commit, each with its tests and its doc, in the critic's order. Before pushing: `make test`, `make lint`, `make update` (commit the output), a smoke run on `openshift-eng/ai-helpers`, and a before/after count of every touched rule on ten corpus repositories with the last release's venv. Open the PR with the evidence per item and the next-batch list, then follow the post-PR checklist in the development rules. Push protection scans every commit: build token-shaped test values by concatenation, and squash a fix into the commit that introduced the literal. ## Step 7: Gate the tag Before tagging, the release notes must name every user-visible behavior change the sweep found — discovery reaching new files, a rule's severity moving, a CLI contract changing — not only the new rules. The critic lists them; the tag waits for them.