osdlc

standard-review

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".

osdlc 3 Updated 2w ago

Resources

1
GitHub

Install

npx skillscat add osdlc/osdlc/standard-review

Install via the SkillsCat registry.

SKILL.md

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

  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:

    scripts/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>]

Notes

  • 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.