Content
57%Weight 40%Scale 1-5Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
The body is dense with genuinely novel, high-value domain content: concrete commands, explicit fail-closed invariants, refusal causes with remedies, and real wiring pitfalls stated as rules. Its weaknesses are structural — a ~450-word single-paragraph wall, reference-grade detail inlined instead of pushed to wiring.md, two dead references (README.md, templates/ci.yml), and no laid-out step sequence for the classify-to-aggregate workflow.
Suggestions
Split the change-class mega-paragraph into a short summary plus a bulleted reference (per-class causes, ownership rules, queue-only behavior) — or move that detail into references/wiring.md § Per-lane verdicts and cite it, the same way the wiring shapes already are.
Lay out the main workflow as a numbered sequence in the body (run harness-only/change-class → read the verdict line and stderr causes → wire the aggregate with aggregate-needs → handle refusal causes), keeping the fail-closed rules as the checkpoint layer.
Fix the dead references: either include README.md and templates/ci.yml in the skill bundle or point to them where they actually live (e.g. the repository URL in frontmatter), since both are cited as consumer-facing entry points.
Show the aggregate-needs invocation as an actual command example with realistic arguments (a sample `toJSON(needs)` snippet, classifier job name, and `--skippable`/`--waiver` flags) instead of describing the flags in prose.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The body contains no explanations of concepts Claude already knows — every sentence carries skill-specific domain information, which keeps it out of anchor 2's "unnecessary explanations or padded sections". But it could be tightened enormously: the change-class paragraph ("`scripts/change-class` answers the wider question every gate, workflow and lane asks...") is a single ~450-word run-on with deeply nested clauses ("the revision the base end of the range resolves to included"), and much of its detail (queue-only internals, lane declarations, fallback fetch mechanics) duplicates material that `--help` and references/wiring.md already carry. This fits anchor 3's "mostly efficient but... could be tightened" rather than anchor 4, because the tightening needed is structural and substantial, not minor. | 3 / 5 |
Actionability | The body gives a copy-pasteable invocation (".agents/skills/harness-ci/scripts/harness-only --event pull_request --base \"$BASE\" --head \"$HEAD\""), concrete mode flags ("--mode render-candidate", "--mode docs", "change-class --output FILE", "--lanes-from DIR", "--queue-only-default true"), the aggregate-needs flag set ("--skippable", "--waiver", "--lane JOB=LANE"), explicit exit-code and stream contracts ("exit `2` is a wiring error that prints no verdict"), and specific GitHub Actions patterns ("needs.changes.result != 'success'"). This matches anchor 4 ("mostly executable guidance; concrete code or commands with minor gaps"); it falls short of anchor 5 because the aggregate-needs call is described in prose rather than shown as a runnable command line, and several behaviors are only reachable via `--help` deferral. | 4 / 5 |
Workflow Clarity | Validation checkpoints are a strength — the skill is built around fail-closed semantics, refusal causes with remedies ("cause=source-mirror-missing verb=source operation=refresh. The caller refreshes its sources before retrying"), and unmeasured-render handling — so this is not the validation-missing case of anchor 2. But the main workflow (run classifier, read the verdict line, wire the aggregate, handle refusals) is never laid out as a sequence: the body is organized by topic (modes, manifest schema, caller ownership, wiring pitfalls, verdict reading) and the wiring section is a list of failure rules rather than ordered steps. That matches anchor 3 ("sequence present but checkpoints missing or implicit" — here the sequence is implicit) rather than anchor 4's "clear sequence with most checkpoints present". | 3 / 5 |
Progressive Disclosure | The one-level-deep references that exist are well signaled and real: references/wiring.md (427 lines) contains all three anchor-linked sections cited ("The endpoint expressions", "Per-lane verdicts", "The CI context"), and every script path named in the body (scripts/change-class, scripts/harness-only, scripts/aggregate-needs, scripts/lib/change-class.sh) exists in the bundle. But README.md and templates/ci.yml are referenced and absent from the bundle, and a large amount of reference-grade detail — the change-class mega-paragraph, the manifest-schema rules, the fallback-ownership mechanics — is inlined in SKILL.md where it belongs in wiring.md or `--help`. This fits anchor 3 ("some structure but could be better organized; content that should be separate is inline") rather than anchor 4. | 3 / 5 |
Total | 13 / 20 Passed |