# checks.md Template Copy this file to `packs/{your-pack-name}/checks.md` and fill in each section. Remove all `` comments before shipping the pack. --- ## Scope **Pack ID:** `` **Applies when:** `` --- ## applies_when Rationale | Condition | Reason | |-----------|--------| | `` | `` | --- ## Checks --- ### `` **Severity:** `` **Confidence:** `` **Detection:** `` #### Detection **Tool (if detection = tool or hybrid):** `` Rule / rule-id: `` Fallback when tool absent: `` **LLM instruction (if detection = llm or hybrid):** ``` ``` #### Spine Wiring ```yaml # Example entry in the spine's check dispatch table: check_id: dm/unquoted-reserved-keyword detection: hybrid tool: semgrep rule: ccgm.migrations.reserved-keyword fallback: llm ``` #### Severity / Confidence **Severity rationale:** `` **Confidence rationale:** `` **Rubric entry:** `` #### Fixture **True positive** (``): ```sql -- FINDS: "position" is a reserved keyword, used unquoted as a column name. ALTER TABLE events ADD COLUMN position INTEGER; ``` **True negative** (should produce NO finding): ```sql -- OK: "position" is double-quoted — safe to use as an identifier. ALTER TABLE events ADD COLUMN "position" INTEGER; ``` --- --- ## Quality Checklist Before submitting a pack PR, confirm every item: - [ ] Each check-id in this file exactly matches `pack.json`'s `checks[].id` - [ ] Every check with `detection: tool` or `detection: hybrid` names a real spine tool - [ ] Every check with `detection: llm` or `detection: hybrid` has a filled-in LLM instruction - [ ] Each fixture has both a true positive AND a true negative - [ ] Severity / confidence rationale is present for every check - [ ] `applies_when` rationale table is complete - [ ] `scripts/lint-pack.py` passes on this pack