§2 missing or non-SPDX LICENSE | Expected deviation — this repo ships a proprietary LICENSE. Confirm with the user before touching it. |
§3 missing README.md sections | Edit README.md; run update-readme afterwards if extensive rewording is needed |
§4/§5/§6 missing CONTRIBUTING.md / CODE_OF_CONDUCT.md / SECURITY.md | Create the file with the minimum content mandated by the corresponding spec section |
| §7.1 tool-specific guidance file is not a symlink | Replace the regular file with ln -s AGENTS.md <path> (e.g. ln -s AGENTS.md CLAUDE.md, ln -s ../AGENTS.md .github/copilot-instructions.md) |
§8.4 missing CHANGELOG.md | Expected deviation — this site does not publish versioned artifacts (deploys to Pages on every push), so there is nothing to changelog. Confirm with the user before creating a stub. |
| §9 Makefile target missing | Add the missing target to Makefile and verify it runs end-to-end. The full target set this repo maintains is documented in AGENTS.md § "Build and test commands". |
| §10.1/§10.4 missing workflow | Create .github/workflows/<file>.yml; cross-reference the upstream templates/_common/.github/workflows/ for the canonical template |
§10.3 missing version-bump.yml / release.yml | Expected deviation — no versioned release pipeline (the site auto-deploys to Pages on every push to main). Confirm with the user before adding the workflows. |
§11.3 SEO scaffolding (seo.yml, check-seo script) | Add scripts/check-seo.mjs walking every HTML file under dist/ and asserting the §11.3.10 invariants, plus .github/workflows/seo.yml running it on push + PR. Mirror the pattern in .github/workflows/ci.yml. Add the seo badge to README.md per §11.3.11. |
| §10.3 floating or under-pinned toolchain | Edit the workflow to pin at or above the spec minimums (see upstream MIN_TOOLCHAIN_VERSIONS in src/validate/toolchain.rs). Node version in .nvmrc and .github/workflows/pages.yml must stay in sync — see AGENTS.md "Documentation sync points". |
§11.1 missing docs/ content | Create the topic file under docs/ (this repo currently ships docs/DESIGN.md and docs/SEARCH.md). |
| §11.2 website drift | N/A for this repo — the deployed site is the built React app; there is no separate website/ scaffold yet. See AGENTS.md § "Website staleness policy". When/if a website/ directory is added, follow up with update-website. |
| §12 CLI requirements | N/A — there is no CLI in this project. Skip the entire §12 checklist. |
§13.5 prompts/<name>/ has no versioned file | Add prompts/<name>/1_0_0.md with the required YAML front matter (name, description, version: 1.0.0) and ## System / ## User sections |
| §15 missing issue / PR templates | Create the templates under .github/ISSUE_TEMPLATE/ or .github/PULL_REQUEST_TEMPLATE.md |
| §19 raw print statement outside the project's output module | Largely N/A — there is no CLI surface. console.log calls inside scripts/*.mjs are diagnostic-only build tooling, not user-facing output, and are out of scope. Only treat as a violation if a real CLI is added later. |
| §20 inline test block embedded in production source | Move the tests into tests/<domain>/<name>.test.ts (this repo's convention) and remove the inline block. Vitest discovers tests via tests/**/*.test.{ts,mts} per vitest.config.ts — do not scatter tests inside src/. |
§20.2 test file stem does not end with _test(s) / Test(s) | Rename the file so the stem matches the regex _?[Tt]ests?$. This repo's *.test.ts / *.test.mts / *.tests.ts convention already matches (stem ends in .test or .tests); a stray *.spec.ts does not and must be renamed. |
| §20.5 source file exceeds 1000 lines | Preferred: split the file by concern into sibling modules / helpers (a *.tsx component, a scripts/*.mjs generator, a src/styles/*.css partial). Common easy case: if the file also has a §20 inline-test violation, extracting the test block usually resolves both at once. Escape hatch: if the size is genuinely justified (generated code, cohesive state machine, third-party snapshot), add oss-spec:allow-large-file: <reason> in any comment within the file's first 20 lines — the reason must be non-empty. |
§21.2 .claude/skills is not a symlink | Replace it with ln -s ../.agent/skills .claude/skills |
| §21.3 SKILL.md missing front matter fields | Add name: / description: to the front matter |
§21.4 missing .last-updated | Touch the file and record the current HEAD: git rev-parse HEAD > .agent/skills/<skill>/.last-updated |
§21.5 missing required update-* skill | Create .agent/skills/<skill>/SKILL.md (+ .last-updated); register it in .agent/skills/maintenance/SKILL.md and list it in the AGENTS.md "Maintenance skills" section |
§21.6 maintenance skill registry row missing | Add the row in .agent/skills/maintenance/SKILL.md, alphabetical within its order slot, with a deterministic run-order number |