scip-query 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/IMPROVEMENTS.md +143 -0
  2. package/PLAN.md +320 -0
  3. package/README.md +1213 -0
  4. package/dist/chunk-2QZ23IBN.js +55 -0
  5. package/dist/chunk-2QZ23IBN.js.map +1 -0
  6. package/dist/chunk-36OMT7ZJ.js +144 -0
  7. package/dist/chunk-36OMT7ZJ.js.map +1 -0
  8. package/dist/chunk-3E2X7RIE.js +101 -0
  9. package/dist/chunk-3E2X7RIE.js.map +1 -0
  10. package/dist/chunk-3UOUTZQT.js +45 -0
  11. package/dist/chunk-3UOUTZQT.js.map +1 -0
  12. package/dist/chunk-3ZZJVBIO.js +88 -0
  13. package/dist/chunk-3ZZJVBIO.js.map +1 -0
  14. package/dist/chunk-4TYLS5XX.js +10 -0
  15. package/dist/chunk-4TYLS5XX.js.map +1 -0
  16. package/dist/chunk-5FGUEU7N.js +101 -0
  17. package/dist/chunk-5FGUEU7N.js.map +1 -0
  18. package/dist/chunk-5WTJAXY2.js +61 -0
  19. package/dist/chunk-5WTJAXY2.js.map +1 -0
  20. package/dist/chunk-6NBLIDF4.js +24 -0
  21. package/dist/chunk-6NBLIDF4.js.map +1 -0
  22. package/dist/chunk-6SXADWLW.js +43 -0
  23. package/dist/chunk-6SXADWLW.js.map +1 -0
  24. package/dist/chunk-6VJ6Q7IE.js +65 -0
  25. package/dist/chunk-6VJ6Q7IE.js.map +1 -0
  26. package/dist/chunk-7OZPA5OO.js +258 -0
  27. package/dist/chunk-7OZPA5OO.js.map +1 -0
  28. package/dist/chunk-BEPIEVLR.js +76 -0
  29. package/dist/chunk-BEPIEVLR.js.map +1 -0
  30. package/dist/chunk-BFSCMC22.js +42 -0
  31. package/dist/chunk-BFSCMC22.js.map +1 -0
  32. package/dist/chunk-BP2ATLK2.js +110 -0
  33. package/dist/chunk-BP2ATLK2.js.map +1 -0
  34. package/dist/chunk-CM454WL3.js +114 -0
  35. package/dist/chunk-CM454WL3.js.map +1 -0
  36. package/dist/chunk-DCKMSTJ4.js +74 -0
  37. package/dist/chunk-DCKMSTJ4.js.map +1 -0
  38. package/dist/chunk-DEZKCZXD.js +40 -0
  39. package/dist/chunk-DEZKCZXD.js.map +1 -0
  40. package/dist/chunk-DVWGWHFW.js +99 -0
  41. package/dist/chunk-DVWGWHFW.js.map +1 -0
  42. package/dist/chunk-EMDQWNYR.js +102 -0
  43. package/dist/chunk-EMDQWNYR.js.map +1 -0
  44. package/dist/chunk-FFSWWE5O.js +33 -0
  45. package/dist/chunk-FFSWWE5O.js.map +1 -0
  46. package/dist/chunk-FGXRVW7G.js +73 -0
  47. package/dist/chunk-FGXRVW7G.js.map +1 -0
  48. package/dist/chunk-FUHJCHS4.js +158 -0
  49. package/dist/chunk-FUHJCHS4.js.map +1 -0
  50. package/dist/chunk-GJFURBEW.js +64 -0
  51. package/dist/chunk-GJFURBEW.js.map +1 -0
  52. package/dist/chunk-GTILYBH6.js +102 -0
  53. package/dist/chunk-GTILYBH6.js.map +1 -0
  54. package/dist/chunk-JJP7KQND.js +1 -0
  55. package/dist/chunk-JJP7KQND.js.map +1 -0
  56. package/dist/chunk-JKP5GH6T.js +213 -0
  57. package/dist/chunk-JKP5GH6T.js.map +1 -0
  58. package/dist/chunk-KCBMVQL5.js +38 -0
  59. package/dist/chunk-KCBMVQL5.js.map +1 -0
  60. package/dist/chunk-KVSW5KYP.js +78 -0
  61. package/dist/chunk-KVSW5KYP.js.map +1 -0
  62. package/dist/chunk-LAWMH22O.js +172 -0
  63. package/dist/chunk-LAWMH22O.js.map +1 -0
  64. package/dist/chunk-LB7OS35Q.js +72 -0
  65. package/dist/chunk-LB7OS35Q.js.map +1 -0
  66. package/dist/chunk-LUSIFBXO.js +57 -0
  67. package/dist/chunk-LUSIFBXO.js.map +1 -0
  68. package/dist/chunk-MBVNHJVN.js +44 -0
  69. package/dist/chunk-MBVNHJVN.js.map +1 -0
  70. package/dist/chunk-MGNMHKX3.js +15 -0
  71. package/dist/chunk-MGNMHKX3.js.map +1 -0
  72. package/dist/chunk-N5KEREIA.js +41 -0
  73. package/dist/chunk-N5KEREIA.js.map +1 -0
  74. package/dist/chunk-NDSQYIWT.js +71 -0
  75. package/dist/chunk-NDSQYIWT.js.map +1 -0
  76. package/dist/chunk-NUZ4OMU3.js +28 -0
  77. package/dist/chunk-NUZ4OMU3.js.map +1 -0
  78. package/dist/chunk-QOV2R2WT.js +170 -0
  79. package/dist/chunk-QOV2R2WT.js.map +1 -0
  80. package/dist/chunk-SEFSL2GF.js +78 -0
  81. package/dist/chunk-SEFSL2GF.js.map +1 -0
  82. package/dist/chunk-T6ARFSBZ.js +103 -0
  83. package/dist/chunk-T6ARFSBZ.js.map +1 -0
  84. package/dist/chunk-TBP6BICL.js +46 -0
  85. package/dist/chunk-TBP6BICL.js.map +1 -0
  86. package/dist/chunk-TDNNOR6D.js +97 -0
  87. package/dist/chunk-TDNNOR6D.js.map +1 -0
  88. package/dist/chunk-TSPZOMHC.js +195 -0
  89. package/dist/chunk-TSPZOMHC.js.map +1 -0
  90. package/dist/chunk-UNTPVD36.js +55 -0
  91. package/dist/chunk-UNTPVD36.js.map +1 -0
  92. package/dist/chunk-VRUJH4BO.js +88 -0
  93. package/dist/chunk-VRUJH4BO.js.map +1 -0
  94. package/dist/chunk-VZ7AMAFL.js +76 -0
  95. package/dist/chunk-VZ7AMAFL.js.map +1 -0
  96. package/dist/chunk-XFXDXEUN.js +24 -0
  97. package/dist/chunk-XFXDXEUN.js.map +1 -0
  98. package/dist/chunk-YZAA4LYG.js +169 -0
  99. package/dist/chunk-YZAA4LYG.js.map +1 -0
  100. package/dist/chunk-Z73NYSBZ.js +92 -0
  101. package/dist/chunk-Z73NYSBZ.js.map +1 -0
  102. package/dist/chunk-ZJRYBOEE.js +125 -0
  103. package/dist/chunk-ZJRYBOEE.js.map +1 -0
  104. package/dist/cli.js +5798 -0
  105. package/dist/cli.js.map +1 -0
  106. package/dist/db-BxaevAyc.d.ts +683 -0
  107. package/dist/index.d.ts +254 -0
  108. package/dist/index.js +1271 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/postinstall.js +167 -0
  111. package/dist/postinstall.js.map +1 -0
  112. package/dist/queries/affected.d.ts +14 -0
  113. package/dist/queries/affected.js +9 -0
  114. package/dist/queries/affected.js.map +1 -0
  115. package/dist/queries/bottlenecks.d.ts +18 -0
  116. package/dist/queries/bottlenecks.js +8 -0
  117. package/dist/queries/bottlenecks.js.map +1 -0
  118. package/dist/queries/by-kind.d.ts +20 -0
  119. package/dist/queries/by-kind.js +10 -0
  120. package/dist/queries/by-kind.js.map +1 -0
  121. package/dist/queries/call-graph.d.ts +13 -0
  122. package/dist/queries/call-graph.js +9 -0
  123. package/dist/queries/call-graph.js.map +1 -0
  124. package/dist/queries/change-surface.d.ts +10 -0
  125. package/dist/queries/change-surface.js +9 -0
  126. package/dist/queries/change-surface.js.map +1 -0
  127. package/dist/queries/clean-signature.d.ts +9 -0
  128. package/dist/queries/clean-signature.js +7 -0
  129. package/dist/queries/clean-signature.js.map +1 -0
  130. package/dist/queries/code.d.ts +17 -0
  131. package/dist/queries/code.js +9 -0
  132. package/dist/queries/code.js.map +1 -0
  133. package/dist/queries/complexity-hotspots.d.ts +19 -0
  134. package/dist/queries/complexity-hotspots.js +9 -0
  135. package/dist/queries/complexity-hotspots.js.map +1 -0
  136. package/dist/queries/complexity.d.ts +13 -0
  137. package/dist/queries/complexity.js +9 -0
  138. package/dist/queries/complexity.js.map +1 -0
  139. package/dist/queries/convergence.d.ts +11 -0
  140. package/dist/queries/convergence.js +9 -0
  141. package/dist/queries/convergence.js.map +1 -0
  142. package/dist/queries/coupling.d.ts +17 -0
  143. package/dist/queries/coupling.js +9 -0
  144. package/dist/queries/coupling.js.map +1 -0
  145. package/dist/queries/cycles.d.ts +16 -0
  146. package/dist/queries/cycles.js +8 -0
  147. package/dist/queries/cycles.js.map +1 -0
  148. package/dist/queries/dataflow.d.ts +19 -0
  149. package/dist/queries/dataflow.js +9 -0
  150. package/dist/queries/dataflow.js.map +1 -0
  151. package/dist/queries/dead.d.ts +10 -0
  152. package/dist/queries/dead.js +9 -0
  153. package/dist/queries/dead.js.map +1 -0
  154. package/dist/queries/deep-chains.d.ts +16 -0
  155. package/dist/queries/deep-chains.js +8 -0
  156. package/dist/queries/deep-chains.js.map +1 -0
  157. package/dist/queries/deps.d.ts +9 -0
  158. package/dist/queries/deps.js +9 -0
  159. package/dist/queries/deps.js.map +1 -0
  160. package/dist/queries/diff-impact.d.ts +13 -0
  161. package/dist/queries/diff-impact.js +9 -0
  162. package/dist/queries/diff-impact.js.map +1 -0
  163. package/dist/queries/doc-coverage.d.ts +14 -0
  164. package/dist/queries/doc-coverage.js +8 -0
  165. package/dist/queries/doc-coverage.js.map +1 -0
  166. package/dist/queries/drift.d.ts +25 -0
  167. package/dist/queries/drift.js +8 -0
  168. package/dist/queries/drift.js.map +1 -0
  169. package/dist/queries/extract-candidates.d.ts +25 -0
  170. package/dist/queries/extract-candidates.js +9 -0
  171. package/dist/queries/extract-candidates.js.map +1 -0
  172. package/dist/queries/fan.d.ts +29 -0
  173. package/dist/queries/fan.js +14 -0
  174. package/dist/queries/fan.js.map +1 -0
  175. package/dist/queries/files.d.ts +6 -0
  176. package/dist/queries/files.js +7 -0
  177. package/dist/queries/files.js.map +1 -0
  178. package/dist/queries/health.d.ts +18 -0
  179. package/dist/queries/health.js +21 -0
  180. package/dist/queries/health.js.map +1 -0
  181. package/dist/queries/hierarchy.d.ts +13 -0
  182. package/dist/queries/hierarchy.js +8 -0
  183. package/dist/queries/hierarchy.js.map +1 -0
  184. package/dist/queries/hotspots.d.ts +13 -0
  185. package/dist/queries/hotspots.js +8 -0
  186. package/dist/queries/hotspots.js.map +1 -0
  187. package/dist/queries/imports.d.ts +19 -0
  188. package/dist/queries/imports.js +12 -0
  189. package/dist/queries/imports.js.map +1 -0
  190. package/dist/queries/index.d.ts +47 -0
  191. package/dist/queries/index.js +207 -0
  192. package/dist/queries/index.js.map +1 -0
  193. package/dist/queries/isolated.d.ts +14 -0
  194. package/dist/queries/isolated.js +9 -0
  195. package/dist/queries/isolated.js.map +1 -0
  196. package/dist/queries/members.d.ts +10 -0
  197. package/dist/queries/members.js +8 -0
  198. package/dist/queries/members.js.map +1 -0
  199. package/dist/queries/methods.d.ts +6 -0
  200. package/dist/queries/methods.js +8 -0
  201. package/dist/queries/methods.js.map +1 -0
  202. package/dist/queries/outline.d.ts +10 -0
  203. package/dist/queries/outline.js +8 -0
  204. package/dist/queries/outline.js.map +1 -0
  205. package/dist/queries/passthrough-candidates.d.ts +18 -0
  206. package/dist/queries/passthrough-candidates.js +9 -0
  207. package/dist/queries/passthrough-candidates.js.map +1 -0
  208. package/dist/queries/redundant-reexports.d.ts +22 -0
  209. package/dist/queries/redundant-reexports.js +8 -0
  210. package/dist/queries/redundant-reexports.js.map +1 -0
  211. package/dist/queries/refs.d.ts +6 -0
  212. package/dist/queries/refs.js +7 -0
  213. package/dist/queries/refs.js.map +1 -0
  214. package/dist/queries/similar-chains.d.ts +29 -0
  215. package/dist/queries/similar-chains.js +8 -0
  216. package/dist/queries/similar-chains.js.map +1 -0
  217. package/dist/queries/similar-files.d.ts +19 -0
  218. package/dist/queries/similar-files.js +8 -0
  219. package/dist/queries/similar-files.js.map +1 -0
  220. package/dist/queries/similar-signatures.d.ts +21 -0
  221. package/dist/queries/similar-signatures.js +8 -0
  222. package/dist/queries/similar-signatures.js.map +1 -0
  223. package/dist/queries/similar.d.ts +34 -0
  224. package/dist/queries/similar.js +11 -0
  225. package/dist/queries/similar.js.map +1 -0
  226. package/dist/queries/slice.d.ts +21 -0
  227. package/dist/queries/slice.js +9 -0
  228. package/dist/queries/slice.js.map +1 -0
  229. package/dist/queries/stale-abstractions.d.ts +18 -0
  230. package/dist/queries/stale-abstractions.js +9 -0
  231. package/dist/queries/stale-abstractions.js.map +1 -0
  232. package/dist/queries/stats.d.ts +6 -0
  233. package/dist/queries/stats.js +7 -0
  234. package/dist/queries/stats.js.map +1 -0
  235. package/dist/queries/surface.d.ts +7 -0
  236. package/dist/queries/surface.js +8 -0
  237. package/dist/queries/surface.js.map +1 -0
  238. package/dist/queries/symbols.d.ts +6 -0
  239. package/dist/queries/symbols.js +9 -0
  240. package/dist/queries/symbols.js.map +1 -0
  241. package/dist/queries/system.d.ts +7 -0
  242. package/dist/queries/system.js +9 -0
  243. package/dist/queries/system.js.map +1 -0
  244. package/dist/queries/test-coverage.d.ts +22 -0
  245. package/dist/queries/test-coverage.js +11 -0
  246. package/dist/queries/test-coverage.js.map +1 -0
  247. package/dist/queries/trace.d.ts +6 -0
  248. package/dist/queries/trace.js +8 -0
  249. package/dist/queries/trace.js.map +1 -0
  250. package/dist/queries/wrapper-candidates.d.ts +17 -0
  251. package/dist/queries/wrapper-candidates.js +9 -0
  252. package/dist/queries/wrapper-candidates.js.map +1 -0
  253. package/dist/reindex-worker.js +368 -0
  254. package/dist/reindex-worker.js.map +1 -0
  255. package/docs/AGENT_GUIDE.md +359 -0
  256. package/package.json +70 -0
  257. package/reports/debloat/2026-04-10-scip-query-self-audit.md +161 -0
  258. package/skills/concrete-plan/SKILL.md +318 -0
  259. package/skills/scip-debloat/SKILL.md +413 -0
  260. package/skills/scip-explore/SKILL.md +235 -0
  261. package/skills/scip-verify/SKILL.md +323 -0
  262. package/src/cli.ts +1480 -0
  263. package/src/config.ts +117 -0
  264. package/src/db.ts +127 -0
  265. package/src/gitignore-filter.ts +143 -0
  266. package/src/index.ts +11 -0
  267. package/src/postinstall.ts +8 -0
  268. package/src/queries/affected.ts +86 -0
  269. package/src/queries/bottlenecks.ts +67 -0
  270. package/src/queries/by-kind.ts +204 -0
  271. package/src/queries/call-graph.ts +66 -0
  272. package/src/queries/change-surface.ts +110 -0
  273. package/src/queries/clean-signature.ts +22 -0
  274. package/src/queries/code.ts +101 -0
  275. package/src/queries/complexity-hotspots.ts +119 -0
  276. package/src/queries/complexity.ts +152 -0
  277. package/src/queries/convergence.ts +82 -0
  278. package/src/queries/coupling.ts +99 -0
  279. package/src/queries/cycles.ts +78 -0
  280. package/src/queries/dataflow.ts +128 -0
  281. package/src/queries/dead.ts +122 -0
  282. package/src/queries/deep-chains.ts +59 -0
  283. package/src/queries/deps.ts +46 -0
  284. package/src/queries/diff-impact.ts +204 -0
  285. package/src/queries/doc-coverage.ts +86 -0
  286. package/src/queries/drift.ts +224 -0
  287. package/src/queries/extract-candidates.ts +167 -0
  288. package/src/queries/fan.ts +148 -0
  289. package/src/queries/files.ts +16 -0
  290. package/src/queries/health.ts +324 -0
  291. package/src/queries/hierarchy.ts +49 -0
  292. package/src/queries/hotspots.ts +53 -0
  293. package/src/queries/imports.ts +95 -0
  294. package/src/queries/index.ts +45 -0
  295. package/src/queries/isolated.ts +67 -0
  296. package/src/queries/members.ts +54 -0
  297. package/src/queries/methods.ts +27 -0
  298. package/src/queries/outline.ts +52 -0
  299. package/src/queries/passthrough-candidates.ts +94 -0
  300. package/src/queries/redundant-reexports.ts +170 -0
  301. package/src/queries/refs.ts +27 -0
  302. package/src/queries/similar-chains.ts +314 -0
  303. package/src/queries/similar-files.ts +140 -0
  304. package/src/queries/similar-signatures.ts +151 -0
  305. package/src/queries/similar.ts +305 -0
  306. package/src/queries/slice.ts +154 -0
  307. package/src/queries/stale-abstractions.ts +82 -0
  308. package/src/queries/stats.ts +22 -0
  309. package/src/queries/surface.ts +34 -0
  310. package/src/queries/symbols.ts +39 -0
  311. package/src/queries/system.ts +86 -0
  312. package/src/queries/test-coverage.ts +106 -0
  313. package/src/queries/trace.ts +55 -0
  314. package/src/queries/wrapper-candidates.ts +112 -0
  315. package/src/query-support.ts +226 -0
  316. package/src/reindex/detect.ts +58 -0
  317. package/src/reindex/index.ts +153 -0
  318. package/src/reindex/indexers.ts +220 -0
  319. package/src/reindex/install.ts +125 -0
  320. package/src/reindex-worker.ts +35 -0
  321. package/src/setup.ts +202 -0
  322. package/src/symbol-parser.ts +278 -0
  323. package/src/types.ts +654 -0
  324. package/src/watch.ts +274 -0
  325. package/tests/gitignore-filter.test.ts +48 -0
  326. package/tests/queries.test.ts +300 -0
  327. package/tests/symbol-parser.test.ts +157 -0
  328. package/tsconfig.json +20 -0
  329. package/tsup.config.ts +40 -0
  330. package/vitest.config.ts +7 -0
@@ -0,0 +1,323 @@
1
+ ---
2
+ name: scip-verify
3
+ description: Post-implementation verification using scip-query. Confirms changes are wired correctly — no broken references, no new cycles, no orphaned code, no test gaps, no health regressions. Run after making changes and before committing.
4
+ allowed-tools: [Bash, Write, Edit, Glob, Agent, TaskCreate, TaskUpdate, TaskGet, TaskList]
5
+ keywords: [verify, check, validate, wire, confirm, post-implementation, review, regression, health, test]
6
+ ---
7
+
8
+ # Post-Implementation Verification with scip-query
9
+
10
+ You are verifying that a code change was implemented correctly. Every check must use `scip-query` to confirm the change didn't break references, introduce cycles, orphan code, or miss test coverage. This is the "measure twice" step — run it after making changes, before committing.
11
+
12
+ ---
13
+
14
+ ## When to Use This Skill
15
+
16
+ - "Verify my changes"
17
+ - "Check if everything is wired correctly"
18
+ - "Did I break anything?"
19
+ - "Is it safe to commit?"
20
+ - "Run a post-implementation check"
21
+ - After completing a `/concrete-plan` implementation
22
+ - Before any commit of non-trivial changes
23
+
24
+ ---
25
+
26
+ ## Hard Rules
27
+
28
+ 1. **Reindex first.** Always run `scip-query reindex` before verification. You're checking the current code, not the old index.
29
+
30
+ 2. **Every check must produce evidence.** Don't say "looks good." Say "scip-query cycles returned 0 cycles, scip-query diff-impact shows 3 changed symbols affecting 12 files, all 3 have test coverage."
31
+
32
+ 3. **Fail loudly.** If any check fails, stop and report the exact failure with the scip-query command output. Do not proceed to "looks mostly fine."
33
+
34
+ 4. **Compare against baseline.** If a health score or finding count was recorded before the change, compare against it. A regression is a finding.
35
+
36
+ ---
37
+
38
+ ## Symbol Lookup Tips
39
+
40
+ scip-query accepts partial symbol names — you don't need the full SCIP symbol path. These all work:
41
+
42
+ ```bash
43
+ scip-query code processVegaMention # just the function name
44
+ scip-query call-graph ChatService # just the class name
45
+ scip-query trace getActiveInferenceConfig # any unique substring
46
+ ```
47
+
48
+ **Avoid parentheses** — `()` causes shell parse errors in zsh/bash:
49
+ ```bash
50
+ # BAD — shell tries to execute a subshell
51
+ scip-query code processVegaMention()
52
+
53
+ # GOOD — no parens needed, scip-query strips them internally
54
+ scip-query code processVegaMention
55
+
56
+ # ALSO GOOD — single quotes protect special characters
57
+ scip-query code 'processVegaMention'
58
+ ```
59
+
60
+ **Read source by file + line range** when the symbol name is ambiguous:
61
+ ```bash
62
+ scip-query code 'src/modules/chat/chat.service.ts:100-200'
63
+ ```
64
+
65
+ **If "Symbol not found":**
66
+ 1. Try a shorter/simpler name — `login` instead of `AuthService:login`
67
+ 2. Try `scip-query symbols <file>` to see what symbols exist in the file
68
+ 3. Try `scip-query trace <name>` which uses a different lookup path
69
+ 4. Use the `file:line-line` syntax for `code` if you know the location
70
+
71
+ ---
72
+
73
+ ## The 8 Verification Checks
74
+
75
+ Run every one of these. Each catches a different class of implementation error.
76
+
77
+ ### Check 1: Diff Impact Assessment
78
+
79
+ ```bash
80
+ scip-query reindex
81
+ scip-query diff-impact
82
+ ```
83
+
84
+ **What you're checking:** Which symbols changed, how many consumer files are affected, and whether test coverage exists for changed symbols.
85
+
86
+ **Pass criteria:**
87
+ - Every changed symbol is intentional (no accidental modifications)
88
+ - The number of affected consumer files matches expectations
89
+ - Changed symbols have test references (or test gaps are acknowledged)
90
+
91
+ **Fail if:** Unexpected symbols appear in the diff, or the affected file count is much larger than expected (blast radius exceeded plan).
92
+
93
+ ### Check 2: No New Cycles
94
+
95
+ ```bash
96
+ scip-query cycles
97
+ ```
98
+
99
+ **What you're checking:** The change didn't introduce a circular dependency.
100
+
101
+ **Pass criteria:** Zero cycles, OR the same cycles that existed before the change.
102
+
103
+ **Fail if:** New cycle(s) appear. Report the full cycle path.
104
+
105
+ ### Check 3: No New Dead Code
106
+
107
+ ```bash
108
+ scip-query dead --min-loc 5
109
+ ```
110
+
111
+ **What you're checking:** The change didn't orphan existing code. If you renamed a function, did you update all callers? If you moved a module, did you update all imports?
112
+
113
+ **Pass criteria:** No new dead symbols compared to before the change. Existing dead code doesn't count.
114
+
115
+ **Fail if:** A symbol that was alive before the change is now dead. This means something was disconnected.
116
+
117
+ ### Check 4: No New Isolated Symbols
118
+
119
+ ```bash
120
+ scip-query isolated --min-loc 3
121
+ ```
122
+
123
+ **What you're checking:** The change didn't completely disconnect a symbol from the graph.
124
+
125
+ **Pass criteria:** No new isolated symbols.
126
+
127
+ **Fail if:** New isolated symbol(s) appear — something got orphaned.
128
+
129
+ ### Check 5: References Intact
130
+
131
+ For each symbol that was modified (from diff-impact), verify it's still referenced by the expected consumers:
132
+
133
+ ```bash
134
+ scip-query refs <changed-symbol>
135
+ scip-query fan-in <changed-symbol>
136
+ ```
137
+
138
+ **What you're checking:** Consumers of modified symbols still reference them. If you changed a function signature, callers should still compile and reference it.
139
+
140
+ **Pass criteria:** Fan-in count for each changed symbol is the same or higher than before.
141
+
142
+ **Fail if:** A changed symbol's fan-in dropped — a consumer was disconnected.
143
+
144
+ ### Check 6: Test Coverage for Changes
145
+
146
+ ```bash
147
+ scip-query test-coverage <changed-symbol>
148
+ ```
149
+
150
+ For each changed symbol, verify test files reference it.
151
+
152
+ **Pass criteria:** Every changed symbol is referenced by at least one test file.
153
+
154
+ **Fail if:** Changed symbols with zero test references. Report which ones need tests.
155
+
156
+ ### Check 7: Change Surface Risk Check
157
+
158
+ For each modified file:
159
+
160
+ ```bash
161
+ scip-query change-surface <modified-file>
162
+ ```
163
+
164
+ **What you're checking:** High-risk symbols in modified files (high consumer count + no tests).
165
+
166
+ **Pass criteria:** No HIGH RISK symbols, or all high-risk symbols were intentionally modified.
167
+
168
+ **Fail if:** A HIGH RISK symbol was modified without test coverage.
169
+
170
+ ### Check 8: Health Score
171
+
172
+ ```bash
173
+ scip-query health
174
+ ```
175
+
176
+ **What you're checking:** The overall codebase health didn't regress.
177
+
178
+ **Pass criteria:** Health score is the same or higher than before the change. If it dropped, every finding that increased must be explained.
179
+
180
+ **Fail if:** Health score dropped by more than 5 points without explanation.
181
+
182
+ ---
183
+
184
+ ## Verification Workflow
185
+
186
+ ### Phase 1: Reindex and Assess Impact
187
+
188
+ ```bash
189
+ scip-query reindex
190
+ scip-query diff-impact
191
+ ```
192
+
193
+ Record: changed files, changed symbols, affected consumers, test coverage %.
194
+
195
+ ### Phase 2: Structural Checks (parallel)
196
+
197
+ Run checks 2-4 simultaneously — they're independent:
198
+
199
+ ```bash
200
+ scip-query cycles
201
+ scip-query dead --min-loc 5
202
+ scip-query isolated --min-loc 3
203
+ ```
204
+
205
+ ### Phase 3: Per-Symbol Checks
206
+
207
+ For each changed symbol from diff-impact:
208
+
209
+ ```bash
210
+ scip-query refs <symbol>
211
+ scip-query fan-in <symbol>
212
+ scip-query test-coverage <symbol>
213
+ ```
214
+
215
+ ### Phase 4: Per-File Checks
216
+
217
+ For each modified file:
218
+
219
+ ```bash
220
+ scip-query change-surface <file>
221
+ ```
222
+
223
+ ### Phase 5: Health Comparison
224
+
225
+ ```bash
226
+ scip-query health
227
+ ```
228
+
229
+ Compare against the pre-change score.
230
+
231
+ ---
232
+
233
+ ## Output Format
234
+
235
+ The verification report is structured as:
236
+
237
+ ```markdown
238
+ # Verification Report
239
+
240
+ **Date:** YYYY-MM-DD
241
+ **Change:** [description]
242
+ **Pre-change health:** N/100
243
+ **Post-change health:** N/100
244
+
245
+ ## Diff Impact
246
+ - Changed files: N
247
+ - Changed symbols: N
248
+ - Affected consumer files: N
249
+ - Test coverage: N%
250
+
251
+ ## Check Results
252
+
253
+ | # | Check | Result | Evidence |
254
+ |---|---|---|---|
255
+ | 1 | Diff impact | PASS/FAIL | [summary] |
256
+ | 2 | No new cycles | PASS/FAIL | [count] |
257
+ | 3 | No new dead code | PASS/FAIL | [count] |
258
+ | 4 | No new isolated | PASS/FAIL | [count] |
259
+ | 5 | References intact | PASS/FAIL | [fan-in changes] |
260
+ | 6 | Test coverage | PASS/FAIL | [uncovered symbols] |
261
+ | 7 | Risk assessment | PASS/FAIL | [high-risk symbols] |
262
+ | 8 | Health score | PASS/FAIL | [score delta] |
263
+
264
+ ## Failures
265
+ [Detailed explanation of any failures with scip-query output]
266
+
267
+ ## Verdict
268
+ PASS — safe to commit
269
+ FAIL — [list what needs fixing before commit]
270
+ ```
271
+
272
+ ---
273
+
274
+ ## Using with /concrete-plan
275
+
276
+ The ideal workflow:
277
+
278
+ 1. **Before:** Run `/concrete-plan` to design the change with full scip-query evidence
279
+ 2. **During:** Implement the plan
280
+ 3. **After:** Run `/scip-verify` to confirm the implementation matches the plan
281
+
282
+ The verification report should reference the original plan's blast radius predictions and confirm they were accurate.
283
+
284
+ ---
285
+
286
+ ## Subagent Briefing Template
287
+
288
+ When parallelizing verification checks:
289
+
290
+ ```
291
+ ## Task: Run verification check [N]
292
+
293
+ You are verifying a code change using scip-query. First run `scip-query reindex`.
294
+
295
+ Run the following command:
296
+ [specific scip-query command]
297
+
298
+ Report:
299
+ 1. The exact command output
300
+ 2. Whether it PASSES or FAILS the criteria: [specific criteria]
301
+ 3. If FAIL: exactly what went wrong and which symbols/files are affected
302
+
303
+ Do NOT use grep, rg, or Read. Use only scip-query commands.
304
+ ```
305
+
306
+ ---
307
+
308
+ ## scip-query Quick Reference
309
+
310
+ | Check | Command |
311
+ |---|---|
312
+ | Reindex | `scip-query reindex` |
313
+ | Diff impact | `scip-query diff-impact` |
314
+ | Cycles | `scip-query cycles` |
315
+ | Dead code | `scip-query dead --min-loc 5` |
316
+ | Isolated | `scip-query isolated --min-loc 3` |
317
+ | References | `scip-query refs <symbol>` |
318
+ | Fan-in | `scip-query fan-in <symbol>` |
319
+ | Test coverage | `scip-query test-coverage <symbol>` |
320
+ | Change surface | `scip-query change-surface <file>` |
321
+ | Health | `scip-query health` |
322
+ | Full blast radius | `scip-query affected <symbol>` |
323
+ | Read source | `scip-query code <symbol>` |