Skip to content

/sdlc:standard-review

Generated from solutions/ontological/plugin/plugins/sdlc/skills/standard-review/standard-review.md.

Walk every standard under docs/planning/standards/ and check the files its applies_to.paths scope binds for violations of its Rule, check standards against each other and against the principles they cite for contradictions or overlap, and read each standard’s own text for being fully descriptive yet succinct. Fans out one subagent per standard via the Workflow tool and writes an HTML report to .sdlc/reports/. With —propose, also lands the text edits it recommends on a branch and opens one PR. Invoke for “review the standards”, “is this standard still followed”, “do the standards contradict each other”, or “propose standard fixes”.

Review the project against its own standards, and the standards against each other, the principles, and the descriptive-yet-succinct bar. Output: an HTML report at .sdlc/reports/standard-review-<YYYY-MM-DD>.html plus its validated-JSON sidecar (gitignored runtime output — never committed), rendered through sdlc report render from a schema-contracted payload. With --propose, one PR carrying the recommended text edits.

Usage:

  • /sdlc:standard-review — report only; read-only on the project.
  • /sdlc:standard-review --propose — report, then a PR of proposed edits.
  1. Enumerate. List docs/planning/standards/*.md; skip closed/* ones. Read each file’s applies_to.paths, related, and state.

  2. Fan out — one subagent per standard via the Workflow tool. Each agent reads its standard, expands applies_to.paths to the files it binds, and checks those files against the Rule. It also checks the scope itself: a glob that matches no file, or a file the Rule plainly governs that the globs miss, is drift. Structured findings only: {file, evidence (quote or line), why it breaks the rule, severity: clear-violation | tension | drift}. Every finding cites a real location; no speculation.

  3. Cross-standard pass. One agent reads all open standards together with the principles they cite in related: and flags pairs that contradict or materially overlap — standard against standard, and standard against the principle it claims to operationalize.

  4. Descriptive-yet-succinct pass. One agent reads every standard’s own text against ${CLAUDE_PLUGIN_ROOT}/conventions/descriptive-yet-succinct.md. Per standard and body section it records {section, direction: under-described | over-long, evidence, fix}; the fix is the concrete edit, not a description of one.

  5. Synthesize. Merge, dedupe, drop weak findings.

  6. Match against outstanding work. For each open finding, fan out (grouped by standard) to search the non-closed tasks (docs/planning/tasks/, state not closed/*) for ones whose completion would resolve the violation — confirm by reading the candidate task, never by title alone. Record them in a Tracked by column (task ids; empty = untracked gap).

  7. Write the report. Assemble the findings into a JSON payload per the contract in ${CLAUDE_PLUGIN_ROOT}/lib/model/entities/standard/reports/review/schema.ts (meta header, standardsReviewed, top issues, cross-standard pairs, findings rows with Tracked by, proseIssues; severity tallies are derived — don’t compute them), then follow the render recipe in ${CLAUDE_PLUGIN_ROOT}/conventions/skill-reports.md:

    ${CLAUDE_PLUGIN_ROOT}/cli/sdlc report render standard-review <payload.json>
  8. Propose (only with --propose). Follow ${CLAUDE_PLUGIN_ROOT}/conventions/review-proposal-pr.md with slug standard-review and plural standards: branch, apply the text edits the findings and prose issues recommend, validate each edited entity file, commit per standard, open the PR, then add proposal to the payload and re-render the report.

  9. Report. Give the user a clickable file:// link to the rendered HTML report (plus the JSON sidecar path), the three most material issues, which open findings are untracked by any task, and the PR URL when one was opened — then continue the conversational summary. End with the terminal marker:

    STANDARD-REVIEW-DONE report=<html path> [pr=<url>]
  • Without --propose the report artifacts are the only writes. With --propose the worktree under .sdlc/worktrees/ and the PR branch are the only other writes; the main checkout stays untouched.
  • .sdlc/ is gitignored — reports are runtime artifacts, never committed.
  • Schema-contracted reports. See ${CLAUDE_PLUGIN_ROOT}/conventions/skill-reports.md — this skill’s kind slug is standard-review; never hand-write the report HTML.
  • Prose rubric. See ${CLAUDE_PLUGIN_ROOT}/conventions/descriptive-yet-succinct.md — the section-by-section checks step 4 applies to a standard’s Summary, Rule, Why, How to apply, and Anti-examples.
  • Proposal PRs. See ${CLAUDE_PLUGIN_ROOT}/conventions/review-proposal-pr.md — text edits ride the PR; a validator or gate change stays a finding, listed under Not proposed.
  • A standard with no validator is not itself a finding; the entity definition allows it. Report only what the files under its scope do.