agentleFS
bordenetbordenet/superpowers-plus/skills/engineering/llm-skill-review/skill.md

llm-skill-review

Skill8 starsChanged 6 months agoMITView on GitHub

Primary, default reviewer for ANY skill.md file or skill-adjacent tooling infrastructure -- covers both LLM-execution safety (determinism, shell portability, tool contracts, cross-agent compatibility) and prose/design quality (correctness, simplicity, blind spots, verifiability, operational risk, folded in from progressive-harsh-review) in one pass. Reviews superpower skills, shell tooling, installers, MCP/tool contracts, and agent-specific integration files as infrastructure consumed by frontier models, not as ordinary production code or human-facing prose alone.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 5 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈5

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Combining both scorecards into one top-level Verdict: use the WORSE of what either implies, never an average.

    line 160
  2. Very specific:

    Add a specialist (start-points and questions in reference.md) only when its signal is in the diff:

    line 173
  3. Distinctive:

    Do not praise unless it clearly reduces execution risk.

    line 218
  4. Distinctive:

    Do not spend time on style commentary unless it affects agent behavior, and do not call something safe because it is elegant.

    line 219
  5. Distinctive:

    Prefer explicit evidence from the diff or repository state.

    line 220
  6. Distinctive:

    If no diff is provided, inspect the effective implementation and infer the real behavior from the files.

    line 221
  7. Very specific:

    NEVER write .llm-skill-review-cleared directly: Only the native script writes it.

    line 239

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
skill.md

LLM Skill Review

Mechanical routing: don't decide from memory or from the "Wrong skill?" prose below -- run tools/review.sh route <path> [<path> ...] first (paths of the files you're about to review). It wraps tools/which-gate.sh and prints the correct skill + sentinel + runner for each artifact. If the router says a different skill, follow the router, not this banner. If the router errors or is unavailable, stop and report -- do not fall back to the prose. The banner is an inner backstop, not a substitute for the mechanical check.

Purpose: The primary, default reviewer for ANY skill.md file or skill-adjacent tooling -- covers both LLM-execution safety and prose/design quality in one pass, so a skill review no longer needs a separate progressive-harsh-review pass to also judge whether it is a well-written, sensible artifact for a human.

Wrong skill? Use progressive-harsh-review instead only for non-skill artifacts -- plans, specs, designs, general documents. Conventional code PR review -> code-review-battery (skill/tooling-infrastructure changes should still redirect here first). Quick code comments -> providing-code-review.

Announce at start: "I'm using the llm-skill-review skill to review this as LLM-execution infrastructure, not ordinary app code."

Companion Skills

  • progressive-harsh-review: Reviews non-skill deliverables (plans, specs, designs, documents) with the same adversarial rigor; this skill absorbed its skill-review responsibility (see Prose/Design Quality Axes below)
  • code-review-battery: Conventional code PR review; escalate here for ordinary application-code changes bundled alongside skill/tooling changes. Also runs alongside this skill (not instead of) for skill-adjacent shell scripts specifically -- see the When to Use exception below
  • skill-health-check: Structural lint (frontmatter validity, line budget) -- run before this skill, not instead of it; use think-twice (fresh-perspective sub-agent) if this review gets stuck in a circular loop
  • superpowers-doctor: Runtime/ecosystem diagnostics (trigger collisions, orphaned installs) after this skill's review passes

Reference index

Load reference.md selectively - do not load it in full unless you need multiple sections.

NeedSection to load
Full Specialist Persona start-points and questionsSpecialist Personas (full detail)
Full flag lists for Mandatory Checks A-FMandatory Checks (full flag lists)
Evidence block schema, expectation types, forbidden patternsEvidence Schema
Full output format template (all sections in order)Required Output Format (also load Evidence Schema for evidence block format)
Review heuristics and doctrineReview Doctrine and Heuristics
Enforcement implementation detailsEnforcement Detail

Load a section with this block. Replace <section heading> with the exact string from the table above. It resolves an installed copy first, falls back to a source checkout, and exits non-zero with a named reason rather than proceeding on missing content.

<!-- kernel-split-reference-loader:start -->
_ks_ref=""
_ks_loader=""
for _candidate in \
  "$HOME/.claude/skills/sp-llm-review/reference.md" \
  "$HOME/.codex/skills/sp-llm-review/reference.md" \
  "$HOME/.agents/skills/sp-llm-review/reference.md"
do
  if [ -r "$_candidate" ]; then _ks_ref="$_candidate"; break; fi
done
if [ -n "$_ks_ref" ]; then
  _ks_loader="$HOME/.codex/superpowers-plus/tools/section-loader.sh"
else
  _project_root="$(git rev-parse --show-toplevel 2>/dev/null || true)"
  _source_dir="$_project_root/skills/engineering/llm-skill-review"
  if [ -n "$_project_root" ] && [ -r "$_source_dir/skill.md" ] && \
     [ -r "$_source_dir/reference.md" ] && \
     [ -r "$_project_root/tools/section-loader.sh" ]; then
    _ks_ref="$_source_dir/reference.md"
    _ks_loader="$_project_root/tools/section-loader.sh"
  fi
fi
[ -r "$_ks_ref" ] || { printf 'reference missing\n' >&2; exit 1; }
[ -r "$_ks_loader" ] || { printf 'section-loader missing\n' >&2; exit 1; }
# Replace <section heading> below with one of the exact strings from
# the Reference index table above before running.
_section='<section heading>'
bash "$_ks_loader" "$_ks_ref" "$_section" \
  || { printf 'section not found: %s\n' "$_section" >&2; exit 1; }
<!-- kernel-split-reference-loader:end -->

When to Use

This is the default reviewer for skill.md files and skill-adjacent tooling -- invoke it instead of progressive-harsh-review or code-review-battery for these, not alongside them as a third opinion. Exception: for skill-adjacent shell scripts and tool wrappers specifically, also run code-review-battery -- its ShellRuntimeAuditor persona activates unconditionally on shell content regardless of path, because this skill's own pre-push gate (tools/pre-push-llm-skill-review-gate.sh) only mechanically requires its sentinel for skills/**/*.md changes, not standalone .sh/.js/.py/.mjs files -- run both for a change that touches both content types. This is the one carve-out to the "instead of, not alongside" rule above.

Invoke automatically when changes touch any of these areas:

  • skills/**, tools/**, scripts/**, setup/**, mcp/**
  • install.sh, install-*.sh, uninstall.sh
  • .ai-guidance/** (AGENTS.md overflow -- same audience, just split out on a line-count limit)
  • AGENTS.md, CLAUDE.md, CODEX.md, COPILOT.md, GEMINI.md, AGENT.md, at any path depth (see tools/md-files-changed.sh's LLM_OWNED_REGEX for the single source of truth on this boundary)
  • plugin manifests, routing files, hook specs, or agent-specific configuration

Also invoke when the user asks for: harsh review of skills, prompts, shell tooling, installers, or agent infrastructure; review for Claude Code/Augment Code/Cursor compatibility; review for prompt/runtime determinism; review of MCP or tool-calling behavior; review before pushing skill changes.

Do NOT use as the primary skill for: pure product UX review; ordinary application code with no skill/tooling/runtime implications; early brainstorming before artifacts exist; non-skill plans/specs/designs/documents (use progressive-harsh-review).

Review Doctrine and Heuristics

Reviews for failure modes frontier models actually exhibit. Default stance: REJECT unless clearly proven otherwise. Full doctrine and heuristics list: load reference.md on demand (section: Review Doctrine and Heuristics).

Primary Review Axes

Score each axis from 0.0 to 10.0 and justify with evidence:

AxisWhat to evaluate
DeterminismWhether repeated runs by different frontier models are likely to produce the same action sequence and result
Instruction clarityWhether the prompt/skill says exactly what to do, in what order, with what stop conditions
Shell portabilityWhether shell code works reliably across supported environments and avoids GNU/BSD/zsh/bash traps
Tool contract safetyWhether tool use is explicit, validated, parseable, and safe under failure
Failure handlingWhether errors, partial success, retries, and stop/report behavior are clearly defined
IdempotencyWhether reruns avoid duplicating state, corrupting config, or masking partial prior runs
Cross-agent compatibilityWhether the change works across Claude Code, Augment Code, and Cursor without hidden assumptions
Context efficiencyWhether critical requirements are short, front-loaded, and robust under summarization
Test adequacyWhether tests validate realistic agent/runtime failure modes
Operational maintainabilityWhether humans can debug, repair, and evolve the behavior without guessing

Prose/Design Quality Axes (absorbed from progressive-harsh-review)

A skill.md review must also judge whether it is a well-written, sensible artifact for a human -- not just whether an LLM can execute it safely. Score these five axes (0.0-10.0) using progressive-harsh-review's persona rule, per-persona weights, aggregation and critical veto verbatim (its "Persona dimension table" section, NOT the generic "Step 1: Dispatch Review" fallback). Skill files are reversible artifacts, so by PHR's rule the combined reviewer scores them as one persona (SeniorArchCritic weights); run the 3-persona ensemble only when the change is irreversible by PHR's definition:

AxisWhat to evaluate
CorrectnessDoes the skill do what it claims? Internal contradictions, false assertions, broken cross-references?
SimplicityIs this the simplest way to express the workflow? Redundant sections, over-qualification, repeated heuristics?
VerifiabilityCan each instruction or claim be independently checked against the repo/skill ecosystem?
Blind SpotsWhat scenarios, edge cases, or artifact types does the skill fail to address?
Operational RiskWhat breaks the skill under adverse conditions -- wrong trigger match, absent dependency, misuse, trigger collision with a sibling skill?

Aggregation: one persona -> its weighted score IS the Prose/Design score. Ensemble -> each sub-persona scores all five axes with its OWN weights, then the three are averaged equally (PHR's Step 3 rule).

Critical veto (verbatim from progressive-harsh-review): if ANY sub-persona scores Correctness or Operational Risk <=4 AND cites a specific defect (not a general concern), that is an automatic REJECT regardless of the weighted mean. An unrecoverable-failure-style finding MUST be scored on Operational Risk -- not Blind Spots alone -- to be veto-eligible; scoring it only on Blind Spots bypasses the veto gate.

Combining both scorecards into one top-level Verdict: use the WORSE of what either implies, never an average.

  • LLM-Execution critical veto: any unresolved S0 finding forces REJECT regardless of both scorecards' means -- an execution-safety finding this severe is never merely "at least MAJOR REVISIONS REQUIRED".
  • Prose/Design's own critical veto (above) fires -> REJECT.
  • Prose/Design weighted mean <7 (PHR's REJECT band) -> at least MAJOR REVISIONS REQUIRED, regardless of S0-S3 findings.
  • Prose/Design weighted mean 7 to <8 (PHR's PASS_WITH_FIXES band) -> at least PASS WITH RISKS.
  • Otherwise, follow the worse of: highest unresolved severity (S1 present -> at least MAJOR REVISIONS REQUIRED; S2 only -> at least PASS WITH RISKS; S3-only/none -> PASS eligible) and the Prose/Design band above.

Reviewer Dispatch

Obey tools/review-preflight.py. Only REVIEW_REQUIRED dispatches, carrying SPP_REVIEW_CLASS=skill SPP_REVIEW_SNAPSHOT=<strategy.snapshot>; otherwise reuse, wait or stop.

Default: ONE combined reviewer covers Checks A-F and Prose/Design. Its mandatory placement verdict gives file:line and answers whether this is the right place or a simpler root cause exists; omission is incomplete. Provide changed files, registered fence output and cited reference.md sections once. The reviewer retains repo access without repeating supplied work.

Add a specialist (start-points and questions in reference.md) only when its signal is in the diff:

Signal in the diffSpecialist
Shell scripts, installers, hooks, fenced shell examplesShell Portability Auditor
MCP/tool wiring, tool arguments, side-effecting tool callsTool Contract Guardian
AGENTS.md-family files, hook config, per-agent install pathsCross-Agent Compatibility Critic

Runtime Determinist (check A) and Context Efficiency Examiner (token pressure) are the combined reviewer's own lenses, not separate agents.

Re-review after fixes: continue the same reviewer and send only the delta -- files changed since the reviewed commit (sentinel_scope_unchanged, tools/lib/sentinel-scope.sh) -- stating that its earlier input is superseded for those files. If it cannot be continued, a fresh reviewer gets the COMPLETE prior findings verbatim from the run envelope plus the delta; a summary is not acceptable input. (Measured 2026-09-20: a continued reviewer's re-review round cost ~5k tokens; a fresh reviewer cost 65-87k.)

Mandatory Checks

You MUST inspect these six areas and report concrete findings -- full flag lists for each are in reference.md. If a category has no applicable content in the artifact under review (e.g., no shell/tool-wrapper code in a pure-prompt skill), state that explicitly -- "N/A -- no shell/tool-wrapper content in this artifact" -- rather than fabricating a finding or silently omitting the section.

  • A. Instruction Determinism -- vague verbs, ambiguous trigger/routing precedence, missing pass/fail thresholds
  • B. Shell and Runtime Portability -- bashisms, GNU/BSD incompatibilities, unsafe quoting, fragile paths, weak cleanup. Embedded fenced examples in the skill.md/reference.md itself are in scope too -- run tools/test-all.sh --check ci:shell-tests-full-corpus-fence-scan-all-skills-md (see reference.md for why this matters and its known limitation).
  • C. Tool Contract Safety -- implicit tool selection, under-specified parameters, unparseable output, unvalidated side effects
  • D. Failure-Mode Resilience -- missing stop-and-report rules, looping retries, asserted-not-verified success
  • E. Cross-Agent Interoperability -- Claude-only behavior assumed universal, unequal Cursor/Augment support
  • F. Test Realism -- string-grep-only tests, no idempotency/absent-tool/adversarial coverage

Diff-Sensitive Focus Map

Apply extra scrutiny based on changed paths:

  • skills/** -> trigger precision, output format, token cost, invariants, routing clarity
  • tools/**, mcp/** -> argument validation, parseability, safety boundaries, failure semantics
  • install*.sh, setup/**, scripts/** -> portability, idempotency, cleanup, environment assumptions
  • .ai-guidance/** -> same scrutiny as AGENTS.md itself (it's AGENTS.md content split out on a line-count limit, not a different audience)
  • AGENTS.md, CLAUDE.md, CODEX.md, COPILOT.md, GEMINI.md, AGENT.md (any path depth), manifests -> cross-agent drift and unsupported universal claims
  • tests/** -> realism of execution-path coverage, not just assertion count

Required Output Format

Produce all sections in order per the template in reference.md -> Required Output Format. Load that section before producing output.

Evidence Requirement (MANDATORY)

A finding is a claim about the artifact. A claim without a way to check it is indistinguishable from a guess, and a high verdict built on unchecked claims is worse than no review at all -- it looks rigorous while catching nothing. Every finding AND every clean-dimension verdict ("no issues found in X") MUST carry a JSON evidence block (schema, worked example, expectation types, and forbidden command patterns: see reference.md -> "Evidence Schema"). A finding or clean-dimension verdict with no evidence block at all is treated identically to "verifiable": false -- capped, not rejected, but never counted as confirmed.

Reviewer Conduct

  • Be tough, terse, and specific.
  • Do not praise unless it clearly reduces execution risk.
  • Do not spend time on style commentary unless it affects agent behavior, and do not call something safe because it is elegant.
  • Prefer explicit evidence from the diff or repository state.
  • If no diff is provided, inspect the effective implementation and infer the real behavior from the files.
  • Fix economy. Every recommended fix is as short as its severity allows -- an S3 fix in one sentence, an S2 fix in three or fewer; a fix that restates content already in the skill is not a fix. Sweep the sentences the recommendations would add and drop what does not change agent behavior. If the review's own recommendations would grow the skill more than ~15% with no S0/S1 finding driving it, dock Context Efficiency and recompute the Prose/Design aggregate -- a review that bloats the skill it audits has failed on its own terms.

Failure Modes

FailureFix
Reviewer fabricates a Shell/Tool Contract finding on a pure-prompt skill with no shell/tool codeState "N/A" explicitly per the Mandatory Checks instruction -- never invent a finding to fill a section
Trigger-collision check skippedGrep every sibling skill.md's triggers/aliases for exact-string overlap before approving frontmatter -- this is mechanical, not judgment-based
Self-reviewed in the same thinking pass as authoringUse a sub-agent (preferred), matching progressive-harsh-review's "Author != Reviewer" hard gate
A scorecard skipped, or a verdict asserted without both shownBoth are mandatory for any skill.md (this skill replaces two passes, not one); Required Output Format lists them in order
A clean-dimension verdict ("no issues found") ships with no evidence blockTreated identically to verifiable: false -- capped, not confirmed. A sentence asserting cleanliness is not evidence of it; see Evidence Requirement
Embedded bash/sh example in the skill.md itself never actually run through bash -nProse review alone cannot catch this -- run the registered fence check above before asserting the doc's own examples are clean

Enforcement Status

Gate 6 requires .llm-skill-review-cleared v2 for skills/*.md, .ai-guidance/*.md, and AGENTS.md-family files, and supersedes PHR/code-review for those classes (tools/md-files-changed.sh LLM_OWNED_REGEX). Pass (ADR-003): verdict PASS|PASS_WITH_RISKS, unresolved_s0_s1=0, non-vacuous clean_dimensions, evidence_replay=ok (or bypassed with PASS only). --min-score is Prose/Design mean as sentinel metadata (mean=) — Gate 6 does not floor-compare it. Envelope details: reference.md "Enforcement Detail". Non-.md under skills/ stays code-review's job.

NEVER write .llm-skill-review-cleared directly. Only the native script writes it. Gate 6 requires v2|SHA|VERDICT|TIMESTAMP|mean=N|unresolved_s0_s1=0|evidence_replay=ok; manual files are rejected. This is a recurring failure mode.

Sentinel write: findings need severity; the envelope needs "head_sha" equal to the commit being cleared; at least one clean_dimensions entry needs replayable evidence ({"evidence":{"command":"...","verifiable":true}}) — a bare string or an all-verifiable:false set is refused as vacuous. Then:

tools/review-envelope.py init --kind skill-review  # binds head_sha
# add-clean, add-finding, resolve: each runs its command first
tools/review-envelope.py set --kind skill-review --verdict PASS --mean "<Prose/Design-mean>" && tools/review-envelope.py check --kind skill-review
tools/run-llm-skill-review.sh --verdict PASS --min-score "<Prose/Design-mean>"

--min-score = the Prose/Design score. AGENTS-family files need this gate alone (not also PHR). Unsure? tools/which-gate.sh <path>.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.