scip-query 0.19.5 → 0.19.8

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 (421) hide show
  1. package/CHANGELOG.md +85 -1
  2. package/README.md +259 -53
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/chunk-2465DLHK.js +3 -0
  5. package/dist/{chunk-7GXM52MI.js → chunk-24GTWJ3N.js} +2 -2
  6. package/dist/{chunk-NH5ALKPW.js → chunk-2SNGN6U4.js} +2 -2
  7. package/dist/{chunk-3SVWW4PN.js → chunk-2U3OLUNJ.js} +2 -2
  8. package/dist/{chunk-XLTP42QA.js → chunk-33KUO7CG.js} +2 -2
  9. package/dist/{chunk-54HA4ZXH.js → chunk-33XTHFKR.js} +2 -2
  10. package/dist/{chunk-ZGZUZ7XE.js → chunk-3EDFLQ6A.js} +2 -2
  11. package/dist/chunk-3ZSJ3PWF.js +16 -0
  12. package/dist/{chunk-F6O7AAC3.js → chunk-43KC6EQZ.js} +2 -2
  13. package/dist/{chunk-I5RJM53C.js → chunk-464PLI5O.js} +2 -2
  14. package/dist/chunk-46XGSFNI.js +2 -0
  15. package/dist/{chunk-M7AIS73L.js → chunk-47BU5Z4T.js} +2 -2
  16. package/dist/chunk-4BV4QAZJ.js +5 -0
  17. package/dist/chunk-4YTUWQ6M.js +18 -0
  18. package/dist/{chunk-RV2FQIX3.js → chunk-5ML2BNRH.js} +2 -2
  19. package/dist/{chunk-6NSFJYRC.js → chunk-5YLUDDAF.js} +2 -2
  20. package/dist/chunk-67QRR5YC.js +6 -0
  21. package/dist/{chunk-GPBBJ5Y4.js → chunk-6GXYN7YA.js} +3 -3
  22. package/dist/{chunk-4333ETTV.js → chunk-6M7RONVB.js} +2 -2
  23. package/dist/chunk-6YTSKJJ3.js +2 -0
  24. package/dist/{chunk-QDV6RDCP.js → chunk-7FT5Y65S.js} +2 -2
  25. package/dist/{chunk-XTX6QHOF.js → chunk-7KYNAMMH.js} +2 -2
  26. package/dist/{chunk-DZ74OMG6.js → chunk-7LSVMFX7.js} +2 -2
  27. package/dist/{chunk-VTKGCT3V.js → chunk-7QHY3H7P.js} +2 -2
  28. package/dist/{chunk-MITTUCEH.js → chunk-7RAG65VK.js} +2 -2
  29. package/dist/{chunk-25LPM4DG.js → chunk-7SWJEWJF.js} +2 -2
  30. package/dist/{chunk-52ZYCAEO.js → chunk-7VCOXZH3.js} +2 -2
  31. package/dist/chunk-A2TNXAXO.js +8 -0
  32. package/dist/{chunk-IUFDSKGG.js → chunk-A3QXWFBK.js} +2 -2
  33. package/dist/{chunk-4T3LTWUS.js → chunk-AA4UWRNL.js} +2 -2
  34. package/dist/{chunk-4SALD7RU.js → chunk-ACAM6O5R.js} +2 -2
  35. package/dist/chunk-APMMR5Y2.js +2 -0
  36. package/dist/chunk-AQOFWNQJ.js +1 -0
  37. package/dist/chunk-AZFUMCQB.js +2 -0
  38. package/dist/{chunk-M7MTH5NR.js → chunk-BDOIKGDI.js} +2 -2
  39. package/dist/{chunk-BTEE5NZQ.js → chunk-BNXICU42.js} +2 -2
  40. package/dist/chunk-C5Q44Q5D.js +3 -0
  41. package/dist/{chunk-EOOJGLDU.js → chunk-CTF2GDEX.js} +2 -2
  42. package/dist/chunk-DHEQMPLW.js +2 -0
  43. package/dist/{chunk-IZKFSVBV.js → chunk-DQBCO2UY.js} +2 -2
  44. package/dist/{chunk-7B3UPBVA.js → chunk-DQGSM7RZ.js} +2 -2
  45. package/dist/chunk-E2LAW7SL.js +30 -0
  46. package/dist/chunk-E3HYEQO7.js +2 -0
  47. package/dist/chunk-E4NFOAD4.js +6 -0
  48. package/dist/chunk-E5HNT4X2.js +3 -0
  49. package/dist/{chunk-J77UIT3I.js → chunk-ELLMY7XJ.js} +2 -2
  50. package/dist/chunk-FD3HFKXR.js +5 -0
  51. package/dist/{chunk-SOAT6NLA.js → chunk-FIJCV235.js} +2 -2
  52. package/dist/{chunk-H7UKLTWJ.js → chunk-FJ5UDTQF.js} +2 -2
  53. package/dist/{chunk-HEXVUYFQ.js → chunk-GHKEJTCE.js} +2 -2
  54. package/dist/{chunk-LBMJEAEW.js → chunk-GLZTVKAB.js} +3 -3
  55. package/dist/{chunk-FWUUZTIO.js → chunk-GNC4JVAN.js} +2 -2
  56. package/dist/chunk-HIB452NU.js +949 -0
  57. package/dist/{chunk-NRCXJDHL.js → chunk-HZYDQPNY.js} +2 -2
  58. package/dist/chunk-IF6FP6B2.js +66 -0
  59. package/dist/{chunk-4RSI5EMG.js → chunk-JAY7YWS3.js} +2 -2
  60. package/dist/{chunk-STOL2BTL.js → chunk-JHF3E4YM.js} +2 -2
  61. package/dist/chunk-JORHF5AL.js +108 -0
  62. package/dist/{chunk-A2EZV2UM.js → chunk-K2WO7XY7.js} +2 -2
  63. package/dist/chunk-KFZNKUNT.js +2 -0
  64. package/dist/{chunk-YVVCVR2L.js → chunk-KJ2IIBZN.js} +2 -2
  65. package/dist/{chunk-QGXBRIM5.js → chunk-KKME5ZAI.js} +2 -2
  66. package/dist/chunk-KSGTULOS.js +9 -0
  67. package/dist/{chunk-UOAV44HR.js → chunk-KXDJAG4N.js} +3 -3
  68. package/dist/{chunk-UKZBVX4U.js → chunk-L4S2A7BV.js} +2 -2
  69. package/dist/chunk-LP3ARJKF.js +8 -0
  70. package/dist/chunk-LSOR3LQG.js +3 -0
  71. package/dist/{chunk-Q4IIEGXJ.js → chunk-MLFZP76A.js} +2 -2
  72. package/dist/{chunk-WQTAC523.js → chunk-MNSTUIDD.js} +2 -2
  73. package/dist/{chunk-VXQNNXJE.js → chunk-MSBDMFER.js} +2 -2
  74. package/dist/{chunk-X6D5IC6I.js → chunk-MZZBAITE.js} +5 -5
  75. package/dist/{chunk-I5AWSI2G.js → chunk-NE3TZUCI.js} +2 -2
  76. package/dist/{chunk-6E7UTQY7.js → chunk-NTUMF2X3.js} +2 -2
  77. package/dist/{chunk-S44IULR6.js → chunk-O23I56NA.js} +2 -2
  78. package/dist/{chunk-CFMXJPHH.js → chunk-O3O4XXO6.js} +2 -2
  79. package/dist/{chunk-IG7N5ZIK.js → chunk-OUBAF226.js} +2 -2
  80. package/dist/chunk-P3UO3EH3.js +2 -0
  81. package/dist/{chunk-YNRNA5LK.js → chunk-QGGLL3UH.js} +2 -2
  82. package/dist/chunk-QIQ63BHW.js +16 -0
  83. package/dist/{chunk-VGRICIQI.js → chunk-QJIVBYEK.js} +2 -2
  84. package/dist/chunk-QOXBSI6G.js +20 -0
  85. package/dist/chunk-QXK6UUSM.js +2 -0
  86. package/dist/{chunk-XYADIZHU.js → chunk-RA3AYNWP.js} +2 -2
  87. package/dist/chunk-RJMDJR3A.js +2 -0
  88. package/dist/{chunk-NSS46APD.js → chunk-RLH5VUMG.js} +2 -2
  89. package/dist/{chunk-GBQ5NYPR.js → chunk-S4S2WOIX.js} +6 -6
  90. package/dist/{chunk-YIJ7ZAA4.js → chunk-SERUIGV5.js} +2 -2
  91. package/dist/{chunk-FECYOO5O.js → chunk-SMQWE25B.js} +2 -2
  92. package/dist/{chunk-R4FQGQ4X.js → chunk-TAVELHYR.js} +2 -2
  93. package/dist/{chunk-U6WNH5GC.js → chunk-TWMJ3Y3G.js} +2 -2
  94. package/dist/chunk-VAXNI5NE.js +146 -0
  95. package/dist/chunk-VVY2G5ET.js +2 -0
  96. package/dist/{chunk-WER3B7MI.js → chunk-W3DBTGL4.js} +2 -2
  97. package/dist/{chunk-CNKAGUPL.js → chunk-WANA4KAQ.js} +2 -2
  98. package/dist/chunk-WJL2L6MV.js +60 -0
  99. package/dist/chunk-WUW7YUAH.js +11 -0
  100. package/dist/{chunk-QVWS2VWZ.js → chunk-WWKWUPSU.js} +2 -2
  101. package/dist/{chunk-ABMYA4TN.js → chunk-WY45BHKQ.js} +2 -2
  102. package/dist/chunk-X4FR5BZF.js +9 -0
  103. package/dist/chunk-X6RKPDY7.js +2 -0
  104. package/dist/{chunk-ZXJYMGD3.js → chunk-YLFORA5G.js} +2 -2
  105. package/dist/{chunk-KP6XRY5Z.js → chunk-YTVWB7YJ.js} +2 -2
  106. package/dist/{chunk-4XTA5OMB.js → chunk-ZCEJ63SP.js} +2 -2
  107. package/dist/{chunk-HKEHS2AS.js → chunk-ZJ5CBXK3.js} +2 -2
  108. package/dist/chunk-ZL2OGDCD.js +2 -0
  109. package/dist/cli.js +8 -3
  110. package/dist/command-descriptors-ZW5J4ZEM.js +631 -0
  111. package/dist/{config-types-D20KuvvZ.d.ts → config-types-B6MEoRNy.d.ts} +8 -0
  112. package/dist/{db-G_II8yXU.d.ts → db-DYLKr9Wn.d.ts} +18 -1
  113. package/dist/direct-navigation-42YHQPOI.js +3 -0
  114. package/dist/{health-oblXYgkF.d.ts → health-DgxIDXJC.d.ts} +1 -1
  115. package/dist/index.d.ts +2 -2
  116. package/dist/index.js +1 -1
  117. package/dist/postinstall.js +1 -1
  118. package/dist/queries/affected.d.ts +2 -2
  119. package/dist/queries/affected.js +1 -1
  120. package/dist/queries/architecture.d.ts +2 -2
  121. package/dist/queries/architecture.js +1 -1
  122. package/dist/queries/bottlenecks.d.ts +2 -2
  123. package/dist/queries/bottlenecks.js +1 -1
  124. package/dist/queries/by-kind.d.ts +2 -2
  125. package/dist/queries/by-kind.js +1 -1
  126. package/dist/queries/call-graph.d.ts +2 -2
  127. package/dist/queries/call-graph.js +1 -1
  128. package/dist/queries/change-surface.d.ts +2 -2
  129. package/dist/queries/change-surface.js +1 -1
  130. package/dist/queries/cleanup-plan.d.ts +2 -2
  131. package/dist/queries/cleanup-plan.js +1 -1
  132. package/dist/queries/co-change.d.ts +2 -2
  133. package/dist/queries/co-change.js +1 -1
  134. package/dist/queries/code.d.ts +2 -2
  135. package/dist/queries/code.js +1 -1
  136. package/dist/queries/complexity-hotspots.d.ts +2 -2
  137. package/dist/queries/complexity-hotspots.js +1 -1
  138. package/dist/queries/complexity.d.ts +2 -2
  139. package/dist/queries/complexity.js +1 -1
  140. package/dist/queries/convergence.d.ts +2 -2
  141. package/dist/queries/convergence.js +1 -1
  142. package/dist/queries/coupling.d.ts +2 -2
  143. package/dist/queries/coupling.js +1 -1
  144. package/dist/queries/cycles.d.ts +2 -2
  145. package/dist/queries/cycles.js +1 -1
  146. package/dist/queries/dataflow.d.ts +2 -2
  147. package/dist/queries/dataflow.js +1 -1
  148. package/dist/queries/dead.d.ts +2 -2
  149. package/dist/queries/dead.js +1 -1
  150. package/dist/queries/decorative-checkers.d.ts +3 -3
  151. package/dist/queries/decorative-checkers.js +1 -1
  152. package/dist/queries/deep-chains.d.ts +2 -2
  153. package/dist/queries/deep-chains.js +1 -1
  154. package/dist/queries/deps.d.ts +2 -2
  155. package/dist/queries/deps.js +1 -1
  156. package/dist/queries/diff-gate.d.ts +30 -2
  157. package/dist/queries/diff-gate.js +1 -1
  158. package/dist/queries/diff-impact.d.ts +2 -2
  159. package/dist/queries/diff-impact.js +1 -1
  160. package/dist/queries/doc-drift.d.ts +2 -2
  161. package/dist/queries/doc-drift.js +1 -1
  162. package/dist/queries/drift.d.ts +2 -2
  163. package/dist/queries/drift.js +1 -1
  164. package/dist/queries/duplicate-bodies.d.ts +2 -2
  165. package/dist/queries/duplicate-bodies.js +1 -1
  166. package/dist/queries/extract-candidates.d.ts +2 -2
  167. package/dist/queries/extract-candidates.js +1 -1
  168. package/dist/queries/fan.d.ts +2 -2
  169. package/dist/queries/fan.js +1 -1
  170. package/dist/queries/files.d.ts +2 -2
  171. package/dist/queries/health.d.ts +3 -3
  172. package/dist/queries/health.js +1 -1
  173. package/dist/queries/hierarchy.d.ts +2 -2
  174. package/dist/queries/hierarchy.js +1 -1
  175. package/dist/queries/hotspots.d.ts +2 -2
  176. package/dist/queries/hotspots.js +1 -1
  177. package/dist/queries/imports.d.ts +2 -2
  178. package/dist/queries/imports.js +1 -1
  179. package/dist/queries/incomplete-migration.d.ts +2 -2
  180. package/dist/queries/incomplete-migration.js +1 -1
  181. package/dist/queries/index.d.ts +17 -3
  182. package/dist/queries/index.js +1 -1
  183. package/dist/queries/isolated.d.ts +2 -2
  184. package/dist/queries/isolated.js +1 -1
  185. package/dist/queries/locality-candidates.d.ts +2 -2
  186. package/dist/queries/locality-candidates.js +1 -1
  187. package/dist/queries/members.d.ts +2 -2
  188. package/dist/queries/members.js +1 -1
  189. package/dist/queries/methods.d.ts +2 -2
  190. package/dist/queries/methods.js +1 -1
  191. package/dist/queries/not-implemented.d.ts +3 -3
  192. package/dist/queries/not-implemented.js +1 -1
  193. package/dist/queries/outline.d.ts +2 -2
  194. package/dist/queries/outline.js +1 -1
  195. package/dist/queries/passthrough-candidates.d.ts +2 -2
  196. package/dist/queries/passthrough-candidates.js +1 -1
  197. package/dist/queries/plan-context.d.ts +2 -2
  198. package/dist/queries/plan-context.js +1 -1
  199. package/dist/queries/react-component-duplicates.d.ts +2 -2
  200. package/dist/queries/react-component-duplicates.js +1 -1
  201. package/dist/queries/react-hook-candidates.d.ts +2 -2
  202. package/dist/queries/react-hook-candidates.js +1 -1
  203. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  204. package/dist/queries/react-large-component-pressure.js +1 -1
  205. package/dist/queries/recent-duplicates.d.ts +2 -2
  206. package/dist/queries/recent-duplicates.js +1 -1
  207. package/dist/queries/redundant-reexports.d.ts +2 -2
  208. package/dist/queries/redundant-reexports.js +1 -1
  209. package/dist/queries/refs.d.ts +2 -2
  210. package/dist/queries/refs.js +1 -1
  211. package/dist/queries/self-audit.d.ts +2 -2
  212. package/dist/queries/self-audit.js +1 -1
  213. package/dist/queries/similar-chains.d.ts +2 -2
  214. package/dist/queries/similar-chains.js +1 -1
  215. package/dist/queries/similar-files.d.ts +2 -2
  216. package/dist/queries/similar-files.js +1 -1
  217. package/dist/queries/similar-signatures.d.ts +2 -2
  218. package/dist/queries/similar-signatures.js +1 -1
  219. package/dist/queries/similar.d.ts +2 -2
  220. package/dist/queries/similar.js +1 -1
  221. package/dist/queries/slice.d.ts +2 -2
  222. package/dist/queries/slice.js +1 -1
  223. package/dist/queries/stale-abstractions.d.ts +2 -2
  224. package/dist/queries/stale-abstractions.js +1 -1
  225. package/dist/queries/stats.d.ts +2 -2
  226. package/dist/queries/stats.js +1 -1
  227. package/dist/queries/surface.d.ts +2 -2
  228. package/dist/queries/surface.js +1 -1
  229. package/dist/queries/symbols.d.ts +2 -2
  230. package/dist/queries/symbols.js +1 -1
  231. package/dist/queries/system.d.ts +2 -2
  232. package/dist/queries/system.js +1 -1
  233. package/dist/queries/test-quality.d.ts +2 -2
  234. package/dist/queries/test-quality.js +1 -1
  235. package/dist/queries/trace.d.ts +2 -2
  236. package/dist/queries/trace.js +1 -1
  237. package/dist/queries/twin-ab.d.ts +3 -3
  238. package/dist/queries/twin-ab.js +1 -1
  239. package/dist/queries/twin-drift.d.ts +2 -2
  240. package/dist/queries/twin-drift.js +1 -1
  241. package/dist/queries/unused-imports.d.ts +2 -2
  242. package/dist/queries/unused-imports.js +1 -1
  243. package/dist/queries/unused-params.d.ts +2 -2
  244. package/dist/queries/unused-params.js +1 -1
  245. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  246. package/dist/queries/vue-component-duplicates.js +1 -1
  247. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  248. package/dist/queries/vue-composable-candidates.js +1 -1
  249. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  250. package/dist/queries/vue-large-view-pressure.js +1 -1
  251. package/dist/queries/wrapper-candidates.d.ts +2 -2
  252. package/dist/queries/wrapper-candidates.js +1 -1
  253. package/dist/reindex-worker.js +26 -26
  254. package/dist/reindex.d.ts +14 -4
  255. package/dist/reindex.js +34 -38
  256. package/dist/runtime.d.ts +167 -18
  257. package/dist/runtime.js +3 -2
  258. package/dist/rust-semantic-session-server.js +1 -1
  259. package/dist/rust-semantic-session-worker.js +1 -1
  260. package/dist/rust-semantic-worker.js +1 -1
  261. package/dist/{scip-cli-kRpaexVJ.d.ts → scip-cli-Cc6c00-a.d.ts} +6 -2
  262. package/dist/watch-server.js +5 -5
  263. package/docs/AGENT_GUIDE.md +20 -4
  264. package/docs/AI_FAILURE_MODES.md +17 -17
  265. package/docs/API_EVOLUTION.md +71 -0
  266. package/docs/CLI_JSON_OUTPUT.md +168 -0
  267. package/docs/COMMAND_REFERENCE.md +10 -6
  268. package/docs/COMMITTED_RECORD_COMPATIBILITY.md +117 -0
  269. package/docs/CONFIGURATION_WRITE_SAFETY.md +130 -0
  270. package/docs/DETECTOR_GUIDE.md +46 -46
  271. package/docs/DURABILITY.md +103 -0
  272. package/docs/INDEX_GENERATIONS.md +121 -0
  273. package/docs/LOCK_PROTOCOL.md +133 -0
  274. package/docs/MAILBOX_LIFECYCLE.md +197 -0
  275. package/docs/REINDEX_METADATA_COMPATIBILITY.md +84 -0
  276. package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
  277. package/docs/SECURITY_MODEL.md +129 -0
  278. package/docs/TELEMETRY_RETENTION.md +77 -0
  279. package/docs/TIME_SEMANTICS.md +77 -0
  280. package/docs/WATCH_REFRESH_REQUESTS.md +110 -0
  281. package/docs/WINDOWS_SIDECAR_RELEASE.md +298 -0
  282. package/docs/analyzer-validation-ledger.md +24 -23
  283. package/docs/schemas/cli-json-envelope.schema.json +53 -0
  284. package/docs/schemas/cli-output-page.schema.json +104 -0
  285. package/docs/schemas/npm-release-state.schema.json +146 -0
  286. package/docs/schemas/outcome-event-record.schema.json +39 -0
  287. package/docs/schemas/project-config.schema.json +247 -0
  288. package/docs/schemas/suppression-record.schema.json +31 -0
  289. package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
  290. package/package.json +21 -10
  291. package/scripts/build-scip-windows.mjs +180 -61
  292. package/scripts/scip-windows-provenance.mjs +364 -0
  293. package/scripts/verify-scip-windows.mjs +29 -0
  294. package/skills/_shared/SKILL.md +90 -229
  295. package/skills/_shared/agents/openai.yaml +1 -1
  296. package/skills/_shared/references/agent-contract-catalog.md +105 -0
  297. package/skills/_shared/references/command-catalog.md +118 -0
  298. package/skills/_shared/references/detector-precision-and-diffgate.md +59 -0
  299. package/skills/_shared/references/evidence-and-dead-code.md +25 -0
  300. package/skills/scip-audit/SKILL.md +77 -0
  301. package/skills/scip-audit/agents/openai.yaml +4 -0
  302. package/skills/scip-audit/references/claims.md +98 -0
  303. package/skills/scip-audit/references/cleanup.md +101 -0
  304. package/skills/scip-audit/references/directory.md +222 -0
  305. package/skills/scip-audit/references/frontend.md +130 -0
  306. package/skills/scip-audit/references/integrity.md +154 -0
  307. package/skills/scip-audit/references/maintainability.md +162 -0
  308. package/skills/scip-audit/references/twin-drift.md +104 -0
  309. package/skills/scip-diagnose/SKILL.md +52 -0
  310. package/skills/scip-diagnose/agents/openai.yaml +4 -0
  311. package/skills/scip-diagnose/references/debug.md +117 -0
  312. package/skills/{scip-probe-reachability/SKILL.md → scip-diagnose/references/probe-reachability.md} +11 -27
  313. package/skills/scip-diagnose/references/root-cause.md +145 -0
  314. package/skills/scip-diagnose/references/triage.md +119 -0
  315. package/skills/scip-explore/SKILL.md +54 -85
  316. package/skills/scip-explore/agents/openai.yaml +2 -2
  317. package/skills/scip-explore/references/diagrams.md +40 -0
  318. package/skills/scip-explore/references/language-playbook.md +49 -0
  319. package/skills/scip-improve/SKILL.md +56 -0
  320. package/skills/scip-improve/agents/openai.yaml +4 -0
  321. package/skills/scip-improve/references/cleanup-batches.md +53 -0
  322. package/skills/scip-improve/references/directory-moves.md +53 -0
  323. package/skills/scip-improve/references/doc-reconcile.md +30 -0
  324. package/skills/scip-improve/references/frontend-extraction.md +39 -0
  325. package/skills/scip-improve/references/maintainability-mechanism.md +43 -0
  326. package/skills/scip-improve/references/twin-drift.md +35 -0
  327. package/skills/scip-plan/SKILL.md +68 -0
  328. package/skills/scip-plan/agents/openai.yaml +4 -0
  329. package/skills/scip-plan/references/api-impact.md +19 -0
  330. package/skills/scip-plan/references/conductor.md +41 -0
  331. package/skills/scip-plan/references/high-assurance.md +43 -0
  332. package/skills/scip-plan/references/hyper-optimization.md +50 -0
  333. package/skills/scip-plan/references/tla-model.md +88 -0
  334. package/skills/scip-query/SKILL.md +53 -98
  335. package/skills/scip-query/agents/openai.yaml +2 -2
  336. package/skills/scip-setup/SKILL.md +69 -181
  337. package/skills/scip-setup/agents/openai.yaml +3 -3
  338. package/skills/scip-setup/references/bootstrap-workflow.md +120 -0
  339. package/skills/scip-setup/references/language-verification.md +61 -0
  340. package/skills/scip-setup/references/lifecycle-commands.md +119 -0
  341. package/skills/scip-setup/references/per-repo-triage.md +24 -0
  342. package/skills/scip-verify/SKILL.md +126 -84
  343. package/skills/scip-verify/agents/openai.yaml +2 -2
  344. package/skills/scip-verify/references/calibrate-detectors.md +170 -0
  345. package/dist/chunk-2CTX5CMX.js +0 -4
  346. package/dist/chunk-2Y373BDD.js +0 -2
  347. package/dist/chunk-2YU7I3QO.js +0 -2
  348. package/dist/chunk-3MJ5YA4Y.js +0 -16
  349. package/dist/chunk-64RFXJT5.js +0 -16
  350. package/dist/chunk-7UY7SD7D.js +0 -927
  351. package/dist/chunk-B5NLK2B3.js +0 -6
  352. package/dist/chunk-C2QSK7E7.js +0 -2
  353. package/dist/chunk-C7NIYIQ4.js +0 -67
  354. package/dist/chunk-D4U5Q3FT.js +0 -7
  355. package/dist/chunk-DGAGY7RJ.js +0 -60
  356. package/dist/chunk-DLWR3NUU.js +0 -5
  357. package/dist/chunk-K2ERX4UT.js +0 -3
  358. package/dist/chunk-KHE7J5ZN.js +0 -3
  359. package/dist/chunk-L7SPDE73.js +0 -84
  360. package/dist/chunk-LHMNRHGV.js +0 -3
  361. package/dist/chunk-LM72NQ7T.js +0 -3
  362. package/dist/chunk-MSWVMDAH.js +0 -122
  363. package/dist/chunk-NH7WNNQC.js +0 -20
  364. package/dist/chunk-NPKYOIFM.js +0 -18
  365. package/dist/chunk-NZL2DBT7.js +0 -2
  366. package/dist/chunk-OMPZHGHO.js +0 -2
  367. package/dist/chunk-P2PC2WGR.js +0 -2
  368. package/dist/chunk-Q3AFUTGB.js +0 -8
  369. package/dist/chunk-QRGV2F7L.js +0 -2
  370. package/dist/chunk-TW4OG5FC.js +0 -4
  371. package/dist/chunk-U7DSEKOM.js +0 -30
  372. package/dist/chunk-V27BEQJN.js +0 -7
  373. package/dist/chunk-XAGAZSFE.js +0 -6
  374. package/dist/chunk-XBN5VO53.js +0 -2
  375. package/dist/chunk-YGAGTIDK.js +0 -11
  376. package/dist/command-descriptors-N2TL4XM2.js +0 -613
  377. package/dist/direct-navigation-DUCZCTOE.js +0 -3
  378. package/skills/scip-api-impact/SKILL.md +0 -140
  379. package/skills/scip-api-impact/agents/openai.yaml +0 -4
  380. package/skills/scip-calibrate/SKILL.md +0 -131
  381. package/skills/scip-calibrate/agents/openai.yaml +0 -4
  382. package/skills/scip-claim-audit/SKILL.md +0 -107
  383. package/skills/scip-claim-audit/agents/openai.yaml +0 -4
  384. package/skills/scip-cleanup-audit/SKILL.md +0 -130
  385. package/skills/scip-cleanup-audit/agents/openai.yaml +0 -4
  386. package/skills/scip-cleanup-improve/SKILL.md +0 -85
  387. package/skills/scip-cleanup-improve/agents/openai.yaml +0 -4
  388. package/skills/scip-concrete-plan/HIGH_ASSURANCE.md +0 -317
  389. package/skills/scip-concrete-plan/SKILL.md +0 -105
  390. package/skills/scip-concrete-plan/agents/openai.yaml +0 -4
  391. package/skills/scip-conductor/SKILL.md +0 -133
  392. package/skills/scip-conductor/agents/openai.yaml +0 -4
  393. package/skills/scip-debug/SKILL.md +0 -130
  394. package/skills/scip-debug/agents/openai.yaml +0 -4
  395. package/skills/scip-diagram/SKILL.md +0 -110
  396. package/skills/scip-diagram/agents/openai.yaml +0 -4
  397. package/skills/scip-directory-architecture/SKILL.md +0 -266
  398. package/skills/scip-directory-architecture/agents/openai.yaml +0 -4
  399. package/skills/scip-doc-reconcile/SKILL.md +0 -89
  400. package/skills/scip-doc-reconcile/agents/openai.yaml +0 -4
  401. package/skills/scip-hyper-optimization/SKILL.md +0 -156
  402. package/skills/scip-hyper-optimization/agents/openai.yaml +0 -4
  403. package/skills/scip-integrity-audit/SKILL.md +0 -152
  404. package/skills/scip-integrity-audit/agents/openai.yaml +0 -4
  405. package/skills/scip-language-playbook/SKILL.md +0 -106
  406. package/skills/scip-language-playbook/agents/openai.yaml +0 -4
  407. package/skills/scip-maintainability/SKILL.md +0 -158
  408. package/skills/scip-maintainability/agents/openai.yaml +0 -4
  409. package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
  410. package/skills/scip-react-maintainability/SKILL.md +0 -101
  411. package/skills/scip-react-maintainability/agents/openai.yaml +0 -4
  412. package/skills/scip-root-cause/SKILL.md +0 -151
  413. package/skills/scip-root-cause/agents/openai.yaml +0 -4
  414. package/skills/scip-tla-model-system/SKILL.md +0 -148
  415. package/skills/scip-tla-model-system/agents/openai.yaml +0 -4
  416. package/skills/scip-triage-issue/SKILL.md +0 -133
  417. package/skills/scip-triage-issue/agents/openai.yaml +0 -4
  418. package/skills/scip-twin-drift/SKILL.md +0 -109
  419. package/skills/scip-twin-drift/agents/openai.yaml +0 -4
  420. package/skills/scip-vue-maintainability/SKILL.md +0 -107
  421. package/skills/scip-vue-maintainability/agents/openai.yaml +0 -4
@@ -0,0 +1,43 @@
1
+ # High-assurance planning (the certificate)
2
+
3
+ Load this only when the change meets a documented trigger: a security boundary or authorization decision, money/billing/external financial effect, a destructive or irreversible operation, a persistent-data migration, shared-state concurrency, a broad public API change, a rollout that cannot be rolled back, or the user explicitly requests the rigorous version. For ordinary work this protocol costs more than it protects — its cost lands on every future change routed through it. When genuinely unsure, ask rather than defaulting up.
4
+
5
+ A high-assurance plan is a **certificate**: a dated Markdown document whose "ready to implement" conclusion is derived from numbered, source-cited premises, defended against constructed counterexamples, and shaped so intended behavior is easy to test before it is easy to ship.
6
+
7
+ ## Definitions (state these with referents, not by assertion)
8
+
9
+ - **Premise** — a numbered, source-cited statement of fact about the current code (P1, P2, ...); steps and defenses cite it by ID so a false premise is traceable to everything built on it. Literal source facts cite a native file read; compiler-resolved identity and complete writer/reader/caller/dependency/consumer/impact sets cite scip-query.
10
+ - **State-authority premise** — a premise enumerating the complete writer and reader sets of one shared state surface, made falsifiable by `refs` and `dataflow`, turning a forgotten write path from unknowable into a checkable omission.
11
+ - **Invariant** — a property of the changed system that must hold at every observable moment, stated in "iff" or "must always" form; the final verdict is derived from whether it survives every attack.
12
+ - **Contract** — the stable promise one code unit exposes to another: accepted inputs, returned outputs, errors, timing expectations, and side effects callers may rely on.
13
+ - **Reuse audit** — the part of a plan that proves a proposed new symbol/file/option/wrapper/contract is needed, by tying the new shape to existing definitions, consumers, and rejected extension points. Do not propose a new helper, wrapper, type, parameter, config flag, component, hook, or module until this proves reuse or extension is not the better move.
14
+ - **Test seam** — the entry point a test can call to prove a behavior without replaying the whole product path; must name the exact unit or boundary where correctness will be observed.
15
+ - **Side-effect boundary** — the edge where deterministic program decisions meet files, processes, clocks, networks, databases, or other external capabilities, so failures and fakes can be isolated there while core decisions stay easy to test.
16
+ - **Counterexample attack** — a concrete actor, starting state, and action sequence constructed to violate an invariant, whose defense cites premises and steps so "we considered failure" becomes "this specific failure is blocked here."
17
+ - **Enforcement window** — the interval between the step that installs an invariant enforcer and the step that brings the last existing writer into compliance; during it, every unupdated writer fails the new check in production, so the plan that adds safety can itself be the outage.
18
+
19
+ Every load-bearing concept gets a `Source:` line with referents — a definition without referents is a guess. Place each concept in its wider class, then name the one trait that causally explains its other traits in this codebase, written as prose (not labeled genus/differentia). Circular and synonym definitions are banned (e.g. "the refresh coordinator coordinates refreshes" defines nothing). Good definitions condense: they imply the concept's other traits instead of listing them, so derived requirements fall out automatically — e.g. if "restore" is defined as the inverse of "cancel," the privilege to restore must not be weaker than the privilege to cancel, and a plan gating them asymmetrically must defend that asymmetry. A claim with no supporting premise is either new evidence to gather or must be marked an explicit ASSUMPTION — never left silent.
20
+
21
+ ## The six-step procedure
22
+
23
+ **Step 1 — Discover.** Run `scip-query status --capabilities` then `scip-query plan-context <target>` before filling in Goal, Definitions & Invariants, Current State, and Reuse Audit. Done only when concepts are defined with referents, invariants are stated formally, and every proposed new unit has a reuse decision with citations.
24
+
25
+ **Step 2 — Establish Premises.** For every state surface the plan touches (database column, store field, event topic, endpoint, cache entry), write one state-authority premise enumerating its complete writer and reader sets, established via `refs` and `dataflow` rather than memory. Case study: a sprint-restore plan hardened `restore()` and the cancellation path but never enumerated the writers of sprint status; review later found `PATCH /sprints/:id` could set `status:'active'` around every restore invariant, and transition automations wrote `sprintId` straight past the new membership guard — two of that review's five ship-blockers, both sitting in the writer list a single `refs` call would have produced. Done only when every state surface named in any phase has a state-authority premise and every remaining unknown is an explicit ASSUMPTION.
26
+
27
+ **Step 3 — Shape for Tests.** Shape plans so tests can call the pure core directly and exercise the side-effect shell with injected replacements. Preferred code shape: (1) parse and validate at the boundary, (2) pass domain data and injected dependencies into a small orchestrator, (3) put calculations/filtering/selection/formatting/state-transition decisions in pure functions, (4) keep database/network/filesystem/clock/randomness/logging/email/payment calls in thin side-effect shells, (5) depend on small contracts at boundaries and avoid broad option objects, booleans that hide behavior, and forwarding-only wrappers. Done only when every changed behavior has a named test seam and the plan makes clear which logic can be tested without real external services.
28
+
29
+ **Step 4 — Design the Checklist.** Write phases in execution order; keep each phase deployable or explicitly mark why it is not. Each checklist step needs: file anchor with line range; cited premises; a Deployable yes/no declaration (with reason or single-deploy group name); current behavior verified from source (What); the exact edit (Change); a full testability breakdown (test seam, injected dependencies, pure core, side-effect shell, contract); and a Validation entry (test, smoke command, or manual check). If a step installs an enforcer, check its enforcement window: every existing writer in the relevant state-authority premise is brought into compliance in the same or an earlier step, or the window is carried into the attack record as a hole to accept or repair. Done only when no checklist item says "update this file" without exact current behavior, target behavior, cited premises, a deployability declaration, and validation.
30
+
31
+ **Step 5 — Attack the Plan.** This pass is falsification, not defense — it should find holes against a draft. Prefer delegating it to a fresh subagent: give the adversary only the Definitions & Invariants, Premises, state-authority maps, and checklist (not the design rationale), and brief it that it wins by producing holes; fold findings back as HOLE entries and repair steps. Solo fallback: enumerate the full attack list from the coverage-matrix rows before writing any Outcome line, so attacks are not shaped around defenses already in hand. Use these lenses as attack prompts: purpose, blast radius, valid intermediate state, reversibility, failure, concurrency, boundaries, data integrity, observability, human experience, efficiency, reuse, testability.
32
+
33
+ Each attack record states an invariant and lens, an Attack (actor + starting state + action sequence), and an Outcome: HELD (defended by step N.M citing premises), HOLE — repaired by new step N.M, or HOLE — accepted with reason. A HELD outcome that cannot name its defending step and premises is not HELD — it is "a hole wearing confidence." An assertion of absence (e.g. "no new shared mutable state is introduced") is never a valid defense, because it cannot fail and therefore cannot catch anything. Invalid example that preceded three post-review remediation rounds on a real plan: "Concurrency: Validation happens before database writes; no new shared mutable state or retry behavior is introduced." — no actor, no interleaving, cites nothing. Valid contrast: "A3. Every stored value is a member of its field's option set via concurrency — Attack: admin removes option O in transaction A while a user writes value O in transaction B; interleaving B-validates → A-commits → B-commits persists an orphaned value. Outcome: HOLE — repaired by new step 2.2: validation reads the option definition outside B's lock (P4), so serialize definition changes with every value writer via FOR UPDATE on the definition row; regression proves both interleavings against PostgreSQL."
34
+
35
+ A repaired hole keeps its "HOLE — repaired by step N.M" label permanently and must never be rewritten to HELD, because the repair history is the evidence the pass falsified; the verdict's repaired count must equal the number of HOLE — repaired entries. Close the record with a coverage matrix — one row per writer in every state-authority premise and per applicable lens (valid intermediate state is always applicable when any step installs an enforcer or migration); a blank row is an unattacked writer, and the record is incomplete until every row names an attack or carries an accepted reason. Spread attacks across coverage-matrix rows before deepening any single one — depth on an axis already anticipated does not protect axes that were not; leaks come from blank rows, not from the tenth variation of an already-modeled race. An attack record where nothing ever broke is a red flag — rerun the pass as falsification, preferably in a fresh subagent context. Done only when the coverage matrix has no blank rows and every attack entry ends in a cited HELD or a recorded HOLE.
36
+
37
+ **Step 6 — Verify and Derive the Verdict.** Phase-by-phase reference verification (run or delegated) confirms: every path exists, every line range is still within about five lines, every premise reproduces when its Source command is rerun (a premise that no longer reproduces is false and everything citing it is suspect until fixed), every behavior claim matches source, every new unit has reuse evidence, and every behavior-changing step has cited premises, a validation command, and a testability design. After reference verification, rerun `scip-query plan-context <target>` for the cited targets to reconfirm the source-producing context.
38
+
39
+ Verdict template: "A plan is PLANNED-COMPLETE iff the coverage matrix has no blank rows, every attack ends in HELD with cited steps and premises or an accepted hole with a written reason, and no premise failed reverification," followed by a Result line stating PLANNED-COMPLETE or INCOMPLETE plus attack/hole counts and unresolved items. The attack/hole counts are part of the verdict itself — e.g. "16 attacks, 0 holes repaired" against a fresh draft signals an attack pass that defended instead of falsified, and should be rerun before shipping. Done only when stale references are fixed, every premise is reverified, and the verdict line is derived from the attack record.
40
+
41
+ ## Document section order
42
+
43
+ Title and date; Goal; Definitions & Invariants; Premises (incl. state-authority premises and explicit assumptions); Current State (narrative citing premise IDs); Reuse Audit; Testability Design; Design Phases (steps citing premises, each with deployability declaration); Attack Record (attacks with outcomes, holes repaired or accepted, coverage matrix); Execution Order and deployable phase notes; Ship Order with one-way doors flagged; Verdict with attack and hole counts; Summary of files to create, edit, delete, and verify.
@@ -0,0 +1,50 @@
1
+ # Performance optimization campaigns
2
+
3
+ For making a command, workflow, service, page, or tool faster without changing its observable result. Hyper optimization is a bounded campaign that improves runtime, memory, or computational cost against repeatable measurements. Campaign-level conduct (delegation, handoff verification, benchmark pre-registration across multiple phases) belongs to `references/conductor.md`; this file is the performance-domain method that runs inside it or standalone for a single target.
4
+
5
+ If the repo is not a reliable scip-query workspace, invoke the `scip-setup` skill first, before starting an optimization target.
6
+
7
+ ## Choose QUICK or CAMPAIGN
8
+
9
+ - **QUICK** — a single command/function target with an obvious hot path: capture one `docs/benchmarks/runs/YYYY-MM-DD-<target>.jsonl` baseline, skip the ledger and the rest of the campaign artifact set, fix the hypothesis, measure after, done.
10
+ - **CAMPAIGN** — multiple targets, an unclear bottleneck, or a decision between competing designs: requires the full machinery — baseline doc, ledger, profiling, and an alternative-design track.
11
+
12
+ Decide with one test: if you can already name the one function you expect to fix and a single before/after number will settle it, use QUICK; if naming that function requires investigation or the fix might be architectural, use CAMPAIGN.
13
+
14
+ ## Definitions
15
+
16
+ - **Measurement harness** — the repeatable set of commands, fixtures, corpora, environment notes, and result documents used to decide whether performance changed.
17
+ - **Run history** — the durable time series of measurements, one record per run, command, subprocess, or profiled stage.
18
+ - **Profile span** — one named timed piece of work inside the target process (input loading, cache reads, database queries, graph traversal, rendering, a child process, ...).
19
+ - **Hierarchical profiling** — measuring coarse spans first, then recursively splitting only the dominant span until the expensive operation is concrete enough to fix.
20
+ - **Command ledger** — the living document for one optimization target: output contract, current pipeline, timings, tried ideas, and decisions.
21
+
22
+ ## Scenario: target-and-harness (both modes)
23
+
24
+ For a scip-query command target, start with `scip-query bench --json` (baseline timings, command outcomes, environment, optional sampled profiles), then `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000` for cold-path and heavy-detector timings. Do not optimize until a measurement harness exists or is created. Capture representative inputs, the output contract, and correctness checks before editing anything for performance. Record every benchmark in machine-readable run history; measure cold and warm paths separately when they can diverge. Choose the target from user pain, telemetry, benchmark ranking, regression data, cost, frequency, or risk.
25
+
26
+ Artifacts: CAMPAIGN mode creates/updates `docs/benchmarks/YYYY-MM-DD-<target>-baseline.md` (QUICK mode skips this file); both modes create/update `docs/benchmarks/runs/YYYY-MM-DD-<target>.jsonl` — the one required run-history artifact in every mode.
27
+
28
+ Done only when baseline timings, output identity evidence, corpus, environment, and run-history location all exist.
29
+
30
+ ## Scenario: the ledger (CAMPAIGN only)
31
+
32
+ QUICK mode skips this and goes straight to tracing behavior, using the single run-history file as its record. Write `docs/benchmarks/YYYY-MM-DD-<target>-ledger.md` with sections: Output Contract, Target Selection, Current Pipeline, Run History Location, Profile Spans, Bottleneck Candidates, Measurements, Current-Pipeline Optimizations, Alternative Designs, Decisions. Done only when the ledger can explain what must not change.
33
+
34
+ ## Scenario: trace behavior
35
+
36
+ Run `scip-query plan-context`, `trace`, `call-graph`, `code`, `dataflow`, and `complexity` on the entry/hot symbol — `call-graph <entry-symbol>` returns callers/callees, `complexity <hot-symbol>` returns LOC, branch, complexity, callee, fan-in/out counts — then `scip-query change-surface <touched-file> --json --full` to verify blast radius. Record input parsing, option resolution, subprocesses, lookups, database queries, graph traversal, source scans, semantic calls, cache reads/writes, rendering, serialization, and verification. Done only when each major pipeline step can be timed as a profile span.
37
+
38
+ Before adding profiling spans, check whether the target app already has an instrumentation layer — a bespoke profiling harness competes with the one the codebase already trusts. When the optimization target is scip-query itself, its instrumentation is `src/instrumentation/profile.ts` (`profileSpan`/`profileAsyncSpan`), env-gated by `SCIP_QUERY_PROFILE` and `SCIP_QUERY_PROFILE_OUT`, with `SCIP_QUERY_PROFILE_CACHE_STATE` for cache-state labels and inherited workload/subsystem identities — use it instead of adding a parallel harness.
39
+
40
+ ## Scenario: profile the chain
41
+
42
+ Measure the target unprofiled, then measure profiled once and compare overhead. Measure distinct states: cold index, cold evidence/cache fill, warm cache hit, repeated focused run, production-like mixed state. Add coarse spans covering the whole chain, then split the largest workload-weighted span, repeating until the slow operation is a repeated lookup, initialization, scan, traversal, subprocess, serialization step, or wait. Attach cardinality to spans: files, rows, symbols, candidates, cache hits/misses, bytes, edges, nodes, retries, or output rows — write span records with cardinality to run history. When spans carry work identities, run `scip-query work-audit <profile> --json` on the profiling JSONL to separate exact repeats from same-name work on different inputs, ranking repeated-work groups by measured avoidable time (bounded coverage). Done only when the dominant cost is concrete enough to form a falsifiable hypothesis.
43
+
44
+ ## Scenario: diagnose and fix
45
+
46
+ Classify the dominant performance shape as one of: cold-only setup, warm slow path, repeated setup, N+1 work, broad scan, database time, subprocess startup, serialization, or cache invalidation. Prefer fixes in this order: remove accidental repetition; batch scalar work; move stable derived work to an index/cache with invalidation; replace broad scans with indexed lookups; replace wrapper APIs only after output identity proves equivalence; add pruning only when mathematically equivalent or corpus-proven. Make the smallest reversible change that tests one hypothesis at a time. Work both tracks in parallel — tune the current pipeline and evaluate alternative algorithms or data models — and keep only changes that improve real workloads without reducing accuracy, diagnostics, safety, or supported inputs. Reject faster changes that alter the output contract unless the user explicitly approved a behavior change. Done only when before/after timings, profile deltas, and output identity are recorded.
47
+
48
+ ## Scenario: verify, report, and close
49
+
50
+ Run the narrow correctness check, benchmark cases, and routed postchecks, then invoke `scip-verify`. End the campaign with a scoreboard from run history containing: starting value, current value, delta, scenario, corpus, commit/version, output identity, accepted changes, rejected ideas, remaining bottlenecks, and next target.
@@ -0,0 +1,88 @@
1
+ # TLA+ modeling with code evidence
2
+
3
+ Use when a TypeScript system needs a TLA+ model tied to code evidence — before implementing a risky protocol, or as post-implementation trace-conformance against the real system. A **modeled slice** is the bounded part of the real system represented by the model: state, transitions, inputs, outputs, and failure modes.
4
+
5
+ Model the part of the system with the most dangerous interleavings — retries, concurrency, partial failure, money, state machines with guards. Never model a linear happy path: a model that cannot meaningfully fail verifies nothing. If the state space would exceed roughly a million states, the model is too concrete; collapse data you never branch on and replace unbounded values with small symbolic sets.
6
+
7
+ ## Commands
8
+
9
+ - `scip-query tla scaffold <file>` — starts a new model: derives a draft spec, config, and mapping from indexed code.
10
+ - `scip-query tla verify <spec>` — mechanical conformance: checks referents, reads/writes, calls, and runs the model checker.
11
+ - `scip-query tla instrument <spec>` — generates a trace recorder plus wiring sites for each mapped action.
12
+ - `scip-query tla trace-check <spec> --trace <file>` — semantic conformance: checks a recorded execution against the model's Next relation.
13
+ - `scip-query tla fetch-tools` — downloads the pinned tla2tools.jar into the cache when the model checker is unavailable.
14
+
15
+ ## Scenario: scaffold a model from code
16
+
17
+ `scip-query tla scaffold <file>` requires the target file to own mutable module-level state (a `let`/`const` plus a writer function) or, failing that, a class whose instance fields a method of that same class writes; a file of pure functions or constants is rejected — pick the file that holds the state, not the file that only computes over it. `--out` must stay inside the project root.
18
+
19
+ Scaffold calls `getDefinitionsForFile(db, file, { includeClassMemberFallbacks: true })`, which surfaces class-member fallback rows (`ClassName#field.` symbols with a real definition mention) alongside primary rows even when the file has other primary-indexed definitions — verified live with the `Watcher` class in `src/runtime/watch.ts`, so concurrency classes like locks, connection pools, or watchers now scaffold correctly. What remains genuinely invisible to scaffold is narrower: a file where the indexer emitted no member row for a class at all (neither a primary `defn_enclosing_ranges` row nor a `role=1` definition mention) — scaffold reports "no mutable state discovered" because there is nothing in the index to find. When that happens, model by hand from `plan-context`/`trace` evidence instead of via scaffold.
20
+
21
+ TRIAGE the scaffold output first: if discovered variables are mostly constants and the system's real state lives in files or a database (locks, caches, published artifacts), keep the mapping referents but discard the scaffolded variable set — hand-model the protocol's conceptual state and bind it with resource aliases instead.
22
+
23
+ ## Scenario: the modeling loop
24
+
25
+ 1. **Explore.** `scip-query plan-context <target>`, `system`, `trace`, `call-graph`, `dataflow` until state and transitions are concrete.
26
+ 2. **Scaffold.** `scip-query tla scaffold <file>` to generate the draft spec, config, and mapping.
27
+ 3. **Resolve every TODO the scaffold emits** — guards, domains, initial values. The scaffold derives what changes; you must supply when it may change. `tla verify` does not detect unfilled TODOs and will report PASS on a placeholder model — grep the spec for TODO before trusting a green run.
28
+ 4. **Verify.** `scip-query tla verify <spec> --map <map> --config <cfg>` and read the Proof line; every waiver must carry a reason you would defend in review. `--map` is usually unnecessary: if no `Spec.scip-tla.json` sits next to `Spec.tla`, `tla verify` scans sibling `*.scip-tla.json` files for one whose `module` field names this spec (project-relative `.tla` path, bare filename, or TLA MODULE identifier all accepted) and uses it automatically, printing "(matched by module field)". Two or more mappings naming the same module is a hard error listing every candidate; pass `--map` explicitly to disambiguate. Use `--checker none` only when intentionally checking the mapping without SANY, TLC, or Apalache. If the model checker fails, fix the TLA+ model before relying on conformance output.
29
+ 5. **Instrument and trace-check.** Wire the recorder from `scip-query tla instrument`, run the existing tests with `SCIP_TLA_TRACE=<path>` set, then run `scip-query tla trace-check <spec> --trace <path>`. Acceptance means the code's observed behavior is a behavior of the model; divergence names the step to investigate. When modeling a fix-vs-regression pair as two named Next relations in one spec (e.g. `NextCurrent`/`NextVulnerable`), pass `--next <operator>` to pick which one the trace must satisfy — the harness defaults to a bare `Next`, which such specs deliberately don't define.
30
+ 6. **Classify every finding** as code bug, model bug, mapping bug, insufficient trace/alias evidence, or accepted non-modeled behavior.
31
+ 7. **Patch code, model, or mapping and rerun** until only explicitly waived uncertainty remains.
32
+
33
+ Done only when `tla verify` passes with reasoned waivers, at least one recorded trace passes `tla trace-check`, and unexercised actions are listed as accepted gaps.
34
+
35
+ ## Model quality rules
36
+
37
+ - **TypeOK first** — write the type invariant before any property; it catches most modeling mistakes at the lowest checking cost.
38
+ - **Every invariant needs a failure story** — before running TLC, write down the concrete scenario that would violate it; if no scenario exists, the invariant is decorative and should be deleted or replaced.
39
+ - **Falsify every invariant individually** — for each invariant there must be a documented variant or mutation under which TLC refutes it (the CurrentSpec/VulnerableSpec pattern makes this permanent instead of a throwaway edit); an invariant no variant can violate is decorative and should be deleted or redesigned.
40
+ - **Break the model on purpose** — after the first green run, remove one guard or widen one domain and confirm TLC catches it, then restore it; a spec that cannot fail proves nothing.
41
+ - **Safety before liveness** — add fairness only when a liveness property demands it; check deadlock unless termination is intended.
42
+ - **Bound the space deliberately** — use small symbolic constant sets, symmetry where sound, and short sequences; nondeterministic `\in` transitions from the scaffold are permissive placeholders that should be tightened to concrete transitions as you learn the code.
43
+
44
+ ## Trace divergence and regression models
45
+
46
+ Divergence taxonomy: a missing model transition means the model is too strict; an impossible recorded state means instrumentation projects the wrong slice; a genuinely illegal code transition is a bug and requires writing the regression model before fixing it.
47
+
48
+ A **regression model** is a small TLA+ module or checker config derived from a counterexample, production bug, or suspected transition. Fast workflow: preserve the full model as source of truth, create a companion regression spec/config named for the failure and seeded from the exact counterexample trace (a diverging trace-check output is already that trace), prefer bounded constants and narrowed action sets over weakening the main model, run the regression first after each patch then run the full model after it passes, and keep the regression if it protects future behavior.
49
+
50
+ If code changed but the model did not, inspect whether the mapped transition changed meaning; `diff-gate` flags the changed referents.
51
+
52
+ ## The mapping contract
53
+
54
+ Top-level fields: `module`, `config`, `scope`, `variables`, `actions`, `invariants`, `traces` (see the example mapping for `specs/Queue.tla`). Mapping code entries must resolve through `scip-query trace`; variables must map to value-like symbols (a const, let, field, or property holding runtime state — never a type).
55
+
56
+ **Four state backings:** program variables use normal aliases, filesystem-backed state uses resource bindings, SQL-backed state uses statements bindings, and ORM-backed state with no literal SQL uses ormCalls bindings — only genuinely dynamic SQL or an unmatched ORM shape still needs a waiver naming the residual class; never fake attribution.
57
+
58
+ - **Resource mapping** binds a variable to filesystem state — a lock file, a published artifact — anything the model treats as owned state but code only touches through path-taking calls, never a plain assignment. The conformance scanner classifies `writeFileSync`/`rmSync`/`renameSync`/`mkdirSync`/`unlinkSync` calls whose first argument's text contains the declared resource path as writes, and `readFileSync`/`existsSync`/`statSync` calls the same way as reads. Matching is textual containment, not a resolved value — evidence tier stays static-action, and a resource-bound variable still needs a value-like code referent for the kind check.
59
+ - **Statements mapping** (feature Q2) binds a variable to SQL-backed state — prepared statements, table rows behind `db.prepare(...)`/`.exec(...)`/tagged templates — via entries shaped `{ "pattern": "<substring or regex>" }` compiled as a RegExp. Any call expression argument whose static string text (a string literal, or the static fragments of a template literal with `${...}` interpolations excluded) matches the pattern is classified by its leading SQL verb: INSERT/UPDATE/DELETE/REPLACE is a write, SELECT is a read. Dynamic SQL built by string concatenation has no static text to match and still falls through to needing a waiver. Two variables sharing a statements pattern is a mapping-load error, the same as a shared resource path.
60
+ - **ormCalls mapping** (feature C1) binds a variable to ORM-backed state when there is no literal SQL text to match — Drizzle-style query builders such as `db.update(t).set(...)`, `db.insert(t).values(...)`, `db.select().from(t)`, `db.delete(t)` — via entries shaped `{ "table": "<identifier>", "methods"?: [...] }`. A match requires a call chain whose own method name is in the write set (update/insert/delete by default) or read set (select/query/findFirst/findMany by default) AND whose own table argument (or, for select, the `.from(t)` chain segment) names the mapped table — matching never looks at the receiver (`db`, `tx`, ...), only the method + table-arg shape. `methods` narrows the effective set to a subset of the seven-name vocabulary; an unrecognized method name fails to load. Two variables binding the same (table, method) pair is a mapping-load error — but a write-only binding and a read-only binding on the same table do not collide.
61
+
62
+ **Waivers are per-fact and require a reason** — the blanket `allowUnknown` waiver is legacy and should not be used. Write/read waiver symmetry: `actions.<name>.waive.writes` exempts model-code-write, undeclared-write, and missing-write-evidence findings, the same way `waive.reads` exempts the read-side equivalents. A variable-level waive on `actions.<name>.writes` also exempts the corresponding model-mapping-write mismatch against the SANY-derived model text. A waived write still shows up in the Proof line's waiver ledger with its reason — it never silently vanishes.
63
+
64
+ **Line windows** (feature C3): an action code entry can narrow itself to `file#function@L<start>-L<end>` — when several guard/branch actions share one function, a whole-function code reference forces every sibling to claim every write in it, whereas a window scopes fact collection to a sub-range so each branch action attributes only its own write. A mapping line window must fall entirely inside the referent's actual resolved span or `tla verify` reports a hard invalid-line-window error naming the file, function, and actual span — it never silently clamps back to the whole function. (Line windows are line-number-brittle by design: a later refactor that shifts lines is caught loudly by the containment check plus referent resolution, not silently mis-scanned.)
65
+
66
+ **Variable-level controls.** `variables.<v>.selfAlias: false` opts out of the automatic self-name alias (default true); normally a variable's own TLA+ name is always added to its alias list, which can make an object-literal key or identifier that merely echoes the variable's name — but means something unrelated elsewhere in scope — become an unavoidable false write/read attribution. A `selfAlias: false` variable with no other alias, no resource, no statements, and no waive is a mapping load error, since it would otherwise be silently unattributable. `variables.<v>.waive: {reason}` exempts that one variable's missing-referent/invalid-referent-kind findings, for state that genuinely has no code twin (a pure control-flow position, a derived decision, a value observable only through `process.exitCode`) — but a variable-level waive does not exempt read/write facts; those stay on the action's own waive.
67
+
68
+ **Scope enforcement.** Top-level `unmappedWriteScope: 'actions' | 'scope-files'` (default `scope-files`) controls strictness: the default requires every function anywhere in scope that touches a modeled variable to be mapped as an action, or its write is a hard unmapped-write error. Set it to `'actions'` to opt out of the whole-file sweep when scope legitimately contains code the mapping was never meant to cover in full — only the per-action write/read checks still run.
69
+
70
+ **Init binding** (feature Q3): top-level `init: { codeRefs: ["file#function", ...], waive?: {reason} }` binds the model's Init to the code referent(s) that materialize initial state — most often a lazy-init factory. `init.codeRefs` resolves and kind-checks like an action's code field (function-like, missing-referent/invalid-referent-kind findings apply, and waive exempts both). Writes statically found inside an Init referent's own range are Init-attributed and excluded from unmapped-write findings without needing `unmappedWriteScope: 'actions'`. `init.codeRefs` must not overlap any action's code referents — overlap is a mapping-load error, the same category as a variable-alias collision. Lazy initialization is Init, not an action: a factory that lazily builds state corresponds to the model's Init and must be mapped to `init`, never to an action.
71
+
72
+ ## Alias discipline
73
+
74
+ Alias selection is the sharpest knife: never alias a variable to a ubiquitous local identifier (`connection`, `result`, `data`), because every function touching that local gets misattributed across actions. For state with no code twin, use a deliberately unmatchable alias (e.g. `evidenceRowsModelOnly`) so the static layer neither proves nor pollutes, and let the reasoned waiver carry the fact. Turn off the forced self-alias when the variable's own name is a common word (`status`, `phase`, `state`) since object literals elsewhere in scope will otherwise match it and cause misattribution; set `selfAlias: false` and give a precise alias naming the actual stored field. Prefer an honest variable waive over citing an unrelated real symbol just to satisfy the value-like-kind check — name a referent that plainly does not resolve (or resolves to the wrong kind) and waive it, so a reader never has to guess that a `code[]` entry is a decoy.
75
+
76
+ ## Traces and coverage
77
+
78
+ Design for traces early: the trace encoder pins scalar (and scalar-array) variables only, so a model whose state is all functions and tuple-sets cannot be trace-validated; add scalar projection variables (counts, last outcomes, a phase) alongside the structured state if trace-check matters for the slice.
79
+
80
+ Trace until covered: one accepted trace proves one path, not the whole mapping — record traces until every Current action with a code twin is exercised by at least one accepted trace, or is explicitly classified with why it cannot be (unreachable without fault injection, environment-gated, model-only). An action no trace ever exercises is a conformance claim resting on static mapping alone.
81
+
82
+ `tla trace-check ... --coverage` (feature C2) mechanizes coverage checking: it reports steps-exercised-per-action counted from accepted steps only (a step that never proved a legal transition — checker unavailable, or past the divergence point of a rejected trace — does not count), and names every action still unexercised. `--trace` is repeatable and merged/deduped with the mapping's own `traces` list, so recording another trace to cover a gap is additive, not a rewrite. Coverage is informational and does not change trace-check's exit code, so it never substitutes for actually closing the gap.
83
+
84
+ ## Accuracy and evidence tiers
85
+
86
+ `tla verify` is the mechanical checker and `tla trace-check` is the semantic one — only the pair together justifies the word "conforms." A PASS with waivers is a conditional claim — the Proof line says exactly what was and was not proven, and must never be summarized as unconditional. A PASS on a scaffold with unresolved TODOs is meaningless, not conditional, since the checker has no TODO detector and will pass a placeholder model — never report a PASS without confirming the scaffold's TODOs were actually resolved.
87
+
88
+ The write/read scanner follows one call hop from a mapped action's referent (no recursion) — a callee's effect on a declared fact counts as evidence and is marked "(via `<callee>`, one call hop...)" in findings. The one-call-hop scanner never asserts a new, undeclared fact: a callee shared by several actions cannot make one action silently inherit another's write. If a variable's waiver becomes provable via the one-call-hop scanner, update the waiver reason to name the real call chain instead of deleting the explanation — the evidence is still approximate since which specific runtime call path executes is not proven, only that the code family does.
@@ -1,88 +1,59 @@
1
1
  ---
2
2
  name: scip-query
3
- description: Use scip-query effectively in an indexed repository. Routes questions like "how does this work?", "what will break?", "why is this broken?", "make a plan", "review this diff", or "clean this up" to the focused scip-* skill and command family.
4
- commands:
5
- - template: 'scip-query status --capabilities'
6
- when: 'Before routing: confirm the index is fresh.'
7
- - template: 'scip-query plan-context <target>'
8
- when: 'Default loop: anchor a plan for the routed skill.'
9
- - template: 'scip-query diff-gate --json'
10
- when: 'Default loop: the loop is complete only when this passes or is explained.'
3
+ description: Use FIRST for codebase work that should rest on SCIP evidence. Routes understanding to scip-explore, prospective changes to scip-plan, failures to scip-diagnose, read-only problem finding to scip-audit, confirmed fixes to scip-improve, adoption or repair to scip-setup, and finished diffs to scip-verify.
11
4
  ---
12
5
 
13
- # scip-query Router
6
+ # SCIP Query Router
14
7
 
15
- Use this skill only to route. A scip-query workflow is a codebase task whose claims should be grounded in the SCIP index: the compiler-derived map of files, symbols, references, calls, dependencies, and consumers.
8
+ ## Purpose
16
9
 
17
- Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md) when you need freshness, lookup, postcheck, or subagent rules.
10
+ Choose one owning workflow before acting. An owning workflow is the bundled
11
+ skill whose completion criterion matches the request: understanding, planning,
12
+ diagnosis, read-only auditing, implementation, setup, or verification. The
13
+ router does not perform that workflow itself.
18
14
 
19
- <!-- BEGIN GENERATED SKILL COMMANDS -->
20
- ## Commands for this skill
21
-
22
- | Command | Purpose | Returns | Coverage | When |
23
- | --- | --- | --- | --- | --- |
24
- | `scip-query status --capabilities` | Show index status for this project | freshness, generation, language shards, watcher, and optional capabilities | `complete` | Before routing: confirm the index is fresh. |
25
- | `scip-query plan-context <target>` | Pre-edit planning context for a symbol, file, or module | definitions and references; callers and callees; dataflow producers and consumers; backward and forward slices; affected symbols; change-surface risk; dependencies and reverse dependencies; module files and exports; external surface use; complexity; churn; co-change partners; active suppressions | `bounded` | Default loop: anchor a plan for the routed skill. |
26
- | `scip-query diff-gate --json` | Gate the current diff: architecture regressions plus echo, migration, coordination, doc-drift, unused-param, and new-dead candidates; exit 1 on blocking findings | blocking findings with check id, message, and remediation; advisory findings; root-cause groups; changed file and symbol counts; process exit status (1 when blocking findings exist) | `bounded` | Default loop: the loop is complete only when this passes or is explained. |
27
-
28
- Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
29
- <!-- END GENERATED SKILL COMMANDS -->
30
-
31
- ## Default Loop
32
-
33
- For non-trivial code changes:
34
-
35
- 1. Invoke `scip-concrete-plan`, anchored by `scip-query plan-context <target>`. It picks its own mode: ordinary planning by default, high-assurance only for security, money, destructive or irreversible operations, data migration, shared-state concurrency, or broad public API change. Do not demand the high-assurance certificate for routine work.
36
- 2. Implement the plan in the smallest coherent slice.
37
- 3. Invoke `scip-verify`.
38
-
39
- The loop is complete only when `scip-verify` passes or each remaining finding has a specific reason.
15
+ Load `../_shared/SKILL.md` only after the owning workflow's shortlist proves
16
+ insufficient. The shared reference contains the complete command vocabulary,
17
+ coverage rules, and evidence contract; loading it before a route is selected
18
+ adds choices without adding direction.
40
19
 
41
20
  ## Routes
42
21
 
43
- | Work | Skill | Anchor |
44
- | -------------------------------------------------------------------------------------------------------- | ----------------------------- | ------------------------------------------------- |
45
- | Understand a system before answering or editing | `scip-explore` | `system`, `trace`, `call-graph`, `dataflow` |
46
- | Root-cause a bug or regression | `scip-debug` | `trace`, `dataflow`, `change-surface` |
47
- | Diagnose the design flaw behind a family of recurring bugs | `scip-root-cause` | `co-change`, `similar`, `refs` |
48
- | Turn a report into a fix packet | `scip-triage-issue` | `files`, `trace`, `affected` |
49
- | Create a code flow, dependency, or blast-radius diagram | `scip-diagram` | `call-graph`, `dataflow`, `affected` |
50
- | Plan a feature, fix, or refactor | `scip-concrete-plan` | `plan-context` |
51
- | Run a multi-phase program: plan, delegate, verify handoffs, close | `scip-conductor` | `plan-context`, `diff-gate`, `health` |
52
- | Assess public API, route, config, schema, CLI, or export changes | `scip-api-impact` | `surface`, `affected`, `co-change` |
53
- | Pick language-specific high-signal commands | `scip-language-playbook` | language row |
54
- | Benchmark and optimize a command, workflow, or hot path | `scip-hyper-optimization` | `bench`, `plan-context`, profiles |
55
- | Adopt or repair scip-query setup in a repo | `scip-setup` | `setup`, `doctor`, `capabilities` |
56
- | Verify any finished change | `scip-verify` | `status`, `diff-impact`, final gate |
57
- | Audit, rank, or confirm cleanup findings | `scip-cleanup-audit` | `health`, `cleanup-plan`, cleanup detectors |
58
- | Autonomously fix confirmed cleanup findings | `scip-cleanup-improve` | `health`, `cleanup-plan`, verified batches |
59
- | Find or resolve same-name twins that have diverged | `scip-twin-drift` | `twin-drift`, `duplicate-bodies`, `refs` |
60
- | Faked or half-implemented features, checkers that never fail, dead paths behind fallbacks, lying metrics | `scip-integrity-audit` |
61
- | Audit whether a status claim is derived, hedged, or merely asserted | `scip-claim-audit` | `refs`, `code`, `trace` |
62
- | Prove whether a parser/AST branch is actually reachable | `scip-probe-reachability` | `outline --signatures`, `code`, scratch probes |
63
- | Reconcile living docs with code | `scip-doc-reconcile` | `doc-drift` |
64
- | Review or migrate folder ownership | `scip-directory-architecture` | `locality-candidates`, `similar-files` |
65
- | Review deeper maintainability and system compression | `scip-maintainability` | `bottlenecks`, `similar-chains`, `change-surface` |
66
- | Review React reuse and component/hook pressure | `scip-react-maintainability` | React duplicate and pressure commands |
67
- | Review Vue reuse and SFC/composable pressure | `scip-vue-maintainability` | Vue duplicate and pressure commands |
68
- | Model a TypeScript system with TLA+ | `scip-tla-model-system` | `plan-context`, `tla verify` |
69
-
70
- Routing is complete only when one owning skill is selected or the task is small enough for the default loop alone.
71
-
72
- ## Tie-Breaks
73
-
74
- - "Is this implementation real / does it actually work" → `scip-integrity-audit`; "is this well-organized" → `scip-maintainability`; same-name drifted twins specifically → `scip-twin-drift`.
75
- - One change → `scip-concrete-plan`; a program of changes with delegation → `scip-conductor`.
76
- - One failing behavior → `scip-debug`; a family of similar bugs whose fixes keep recurring, or "what is really wrong with this system" backed by bug history → `scip-root-cause`; structure smells with no bug evidence → `scip-maintainability`.
77
-
78
- - Use `scip-cleanup-audit` for reports, ranking, confirmation, or recent AI-residue triage without edits.
79
- - Use `scip-cleanup-improve` when the user asks to fix, improve, continue cleaning, or raise health autonomously.
80
- - Use `scip-maintainability`, `scip-directory-architecture`, or `scip-hyper-optimization` only when the target is architecture, file ownership, or measured speed/cost rather than cleanup.
81
- - Use `scip-twin-drift` for same-name/near-name consolidation questions (a specific concept copied and drifted); use `scip-cleanup-audit`/`scip-cleanup-improve` for general bloat, echoes, and duplication sweeps that are not centered on one drifted twin family.
82
-
83
- ## Setup
84
-
85
- If a repository has not been bootstrapped, invoke `scip-setup`. Use `scip-query setup-agent` only to refresh agent guidance, `scip-query setup-hooks --json` only to repair project-local hooks, and `scip-query setup-ci` only when the user explicitly asks for CI setup.
22
+ | The request starts from… | Owning skill | Completion criterion |
23
+ | --- | --- | --- |
24
+ | Existing code that must be understood, traced, or diagrammed | `scip-explore` | Entry points, flow, dependencies, consumers, and remaining uncertainty are evidenced. |
25
+ | A proposed feature, refactor, migration, API change, performance campaign, TLA+ model, or multi-phase program | `scip-plan` | Current flow, affected consumers, reuse decisions, ordered slices, validation, and risks are explicit. |
26
+ | A failure, regression, recurring bug family, raw issue, or parser/AST reachability question | `scip-diagnose` | The observed failure is connected to a cause, rivals are rejected, and the smallest fix packet is defined. |
27
+ | A question about whether problems exist, without permission to edit | `scip-audit` | The scoped items are classified and ranked with evidence; no code or docs are changed. |
28
+ | Confirmed cleanup, drift, maintainability, frontend, directory, twin, or documentation findings that should be fixed | `scip-improve` | One coherent finding slice is changed and passes its routed postchecks. |
29
+ | First adoption, broken setup, missing capabilities, skill installation, hooks, CI, or uninstall | `scip-setup` | The workspace is ready, or every unavailable capability has an explicit blocker. |
30
+ | A finished diff that must be challenged before commit or release | `scip-verify` | Workspace, impact, applicable postchecks, gate findings, and refutation attempts are all accounted for. |
31
+
32
+ ## Disambiguation
33
+
34
+ - Existing behavior with no symptom routes to `scip-explore`; a contradiction
35
+ or failure routes to `scip-diagnose`.
36
+ - Finding and classifying problems without edits routes to `scip-audit`;
37
+ changing already-confirmed findings routes to `scip-improve`.
38
+ - Prospective work routes to `scip-plan`; a concrete finished diff routes to
39
+ `scip-verify`.
40
+ - Setup wins whenever the index or a required capability is missing, stale,
41
+ invalid, or not yet installed.
42
+ - A request may cross workflows in sequence. Keep one owner at a time:
43
+ diagnose before planning a fix, audit before improving, plan before a
44
+ non-trivial implementation, and verify after every implemented slice.
45
+
46
+ ## Default non-trivial change loop
47
+
48
+ 1. Invoke `scip-plan`, anchored by
49
+ `scip-query plan-context <target>`.
50
+ 2. Implement the smallest coherent planned slice.
51
+ 3. Invoke `scip-verify`; do not declare completion until it passes or every
52
+ remaining finding has a specific evidence-backed disposition.
53
+
54
+ Routing is complete only when exactly one owner is selected for the current
55
+ phase, or the request is small enough that no compiler-resolved relationship
56
+ claim is needed.
86
57
 
87
58
  <!-- BEGIN GENERATED ROUTER COMMAND PREVIEW -->
88
59
  ## Command Preview
@@ -91,27 +62,11 @@ Top commands per routed skill, generated from each skill's own `commands:` front
91
62
 
92
63
  | Skill | Top commands |
93
64
  | --- | --- |
94
- | `scip-api-impact` | `scip-query surface <module-or-package>`, `scip-query refs <symbol>`, `scip-query affected <symbol> --json` |
95
- | `scip-claim-audit` | `scip-query files <pattern>`, `scip-query refs <symbol>`, `scip-query code <symbol>` |
96
- | `scip-cleanup-audit` | `scip-query health --json`, `scip-query cleanup-plan --verify --json`, `scip-query duplicate-bodies --json --full` |
97
- | `scip-cleanup-improve` | `scip-query health --json`, `scip-query cleanup-plan --verify --json`, `scip-query cleanup-apply --verified --batch <n>` |
98
- | `scip-concrete-plan` | `scip-query status --capabilities`, `scip-query plan-context <target>`, `scip-query refs <symbol>` |
99
- | `scip-conductor` | `scip-query plan-context <target>`, `scip-query diff-gate --json`, `scip-query health --json` |
100
- | `scip-debug` | `scip-query files <feature-or-error-term>`, `scip-query trace <candidate-symbol>`, `scip-query call-graph <entry-symbol>` |
101
- | `scip-diagram` | `scip-query system <module>`, `scip-query trace <symbol>`, `scip-query call-graph <symbol>` |
102
- | `scip-directory-architecture` | `scip-query system <scope>`, `scip-query locality-candidates --json --full`, `scip-query similar-files --full --json` |
103
- | `scip-doc-reconcile` | `scip-query doc-drift --json --full`, `scip-query doc-drift <doc>`, `scip-query outline <subject-file>` |
104
- | `scip-explore` | `scip-query stats`, `scip-query system <module-or-scope>`, `scip-query trace <entry-symbol>` |
105
- | `scip-hyper-optimization` | `scip-query bench --json`, `scip-query bench --json --cold-index --include-heavy --timeout-ms 600000`, `scip-query work-audit <profile> --json` |
106
- | `scip-language-playbook` | `scip-query stats`, `scip-query files <feature-or-module-name>`, `scip-query outline <file>` |
107
- | `scip-maintainability` | `scip-query stats`, `scip-query system <scope>`, `scip-query surface <scope>` |
108
- | `scip-probe-reachability` | `scip-query outline <file> --signatures`, `scip-query code <symbol>`, `scip-query trace <symbol>` |
109
- | `scip-react-maintainability` | `scip-query react-component-duplicates --scope <scope> --full --json`, `scip-query react-hook-candidates --scope <scope> --full --json`, `scip-query react-large-component-pressure --scope <scope> --full --json` |
110
- | `scip-root-cause` | `scip-query trace <mechanism-symbol>`, `scip-query co-change <fix-site-file>`, `scip-query system <system-scope>` |
111
- | `scip-setup` | `scip-query setup --json`, `scip-query doctor`, `scip-query status --json` |
112
- | `scip-tla-model-system` | `scip-query tla scaffold <file>`, `scip-query tla verify <spec>`, `scip-query tla instrument <spec>` |
113
- | `scip-triage-issue` | `scip-query files <issue-term>`, `scip-query trace <entry-or-error-symbol>`, `scip-query code <entry-or-error-symbol>` |
114
- | `scip-twin-drift` | `scip-query twin-drift --json --full`, `scip-query duplicate-bodies --json --full`, `scip-query code <symbol>` |
115
- | `scip-verify` | `scip-query doctor`, `scip-query status --capabilities`, `scip-query diff-impact --json` |
116
- | `scip-vue-maintainability` | `scip-query augment-vue --project <path-to-tsconfig>`, `scip-query vue-component-duplicates --scope <scope> --full --json`, `scip-query vue-composable-candidates --scope <scope> --full --json` |
65
+ | `scip-audit` | `scip-query health --json`, `scip-query decorative-checkers --json --full`, `scip-query doc-drift --json --full` |
66
+ | `scip-diagnose` | `scip-query files <feature-or-error-term>`, `scip-query trace <candidate-symbol>`, `scip-query call-graph <entry-symbol>` |
67
+ | `scip-explore` | `scip-query system <module-or-scope>`, `scip-query trace <entry-symbol>`, `scip-query affected <symbol> --json` |
68
+ | `scip-improve` | `scip-query cleanup-plan --verify --json`, `scip-query cleanup-apply --verified --batch <n>`, `scip-query diff-gate --json --compact` |
69
+ | `scip-plan` | `scip-query plan-context <target>`, `scip-query refs <symbol>`, `scip-query affected <symbol> --json` |
70
+ | `scip-setup` | `scip-query setup --json`, `scip-query doctor`, `scip-query status --capabilities` |
71
+ | `scip-verify` | `scip-query doctor`, `scip-query diff-impact --json`, `scip-query diff-gate --json --compact` |
117
72
  <!-- END GENERATED ROUTER COMMAND PREVIEW -->
@@ -1,4 +1,4 @@
1
1
  interface:
2
2
  display_name: "SCIP Query Router"
3
- short_description: "Route codebase work to SCIP skills"
4
- default_prompt: "Use $scip-query to choose the right SCIP-backed workflow for this codebase task."
3
+ short_description: "Route a codebase task to the right SCIP skill"
4
+ default_prompt: "Use $scip-query first to pick the right SCIP-backed skill for this task before doing anything else."