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".
Resources
1Install
npx skillscat add osdlc/osdlc/standard-review Install via the SkillsCat registry.
standard-review
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.
Steps
Enumerate. List
docs/planning/standards/*.md; skipclosed/*
ones. Read each file'sapplies_to.paths,related, andstate.Fan out — one subagent per standard via the Workflow tool. Each
agent reads its standard, expandsapplies_to.pathsto 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, isdrift. 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.Cross-standard pass. One agent reads all open standards together
with the principles they cite inrelated:and flags pairs that
contradict or materially overlap — standard against standard, and
standard against the principle it claims to operationalize.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.Synthesize. Merge, dedupe, drop weak findings.
Match against outstanding work. For each open finding, fan out
(grouped by standard) to search the non-closed tasks
(docs/planning/tasks/, state notclosed/*) 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).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:scripts/sdlc report render standard-review <payload.json>Propose (only with
--propose). Follow${CLAUDE_PLUGIN_ROOT}/conventions/review-proposal-pr.mdwith slugstandard-reviewand pluralstandards: branch, apply the text edits
the findings and prose issues recommend, validate each edited entity
file, commit per standard, open the PR, then addproposalto the
payload and re-render the report.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>]
Notes
- Without
--proposethe report artifacts are the only writes. With--proposethe 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 isstandard-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.