scip-query 0.19.4 → 0.19.6

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 (400) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/README.md +242 -49
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/{chunk-2YU7I3QO.js → chunk-24QNP7MN.js} +2 -2
  5. package/dist/{chunk-CNKAGUPL.js → chunk-26X7KCJR.js} +2 -2
  6. package/dist/{chunk-GPBBJ5Y4.js → chunk-273W2U4Y.js} +3 -3
  7. package/dist/{chunk-7GXM52MI.js → chunk-2CVXCGL4.js} +2 -2
  8. package/dist/{chunk-ABMYA4TN.js → chunk-2EZSOTSY.js} +2 -2
  9. package/dist/{chunk-HKEHS2AS.js → chunk-2GSQR6YA.js} +2 -2
  10. package/dist/{chunk-FECYOO5O.js → chunk-2OXVAGGT.js} +2 -2
  11. package/dist/chunk-2ZOCHAL2.js +8 -0
  12. package/dist/{chunk-QGXBRIM5.js → chunk-336DC5NJ.js} +2 -2
  13. package/dist/chunk-35SQLYCQ.js +2 -0
  14. package/dist/{chunk-VXQNNXJE.js → chunk-3OIKRYU5.js} +2 -2
  15. package/dist/{chunk-52ZYCAEO.js → chunk-47X75ZKH.js} +2 -2
  16. package/dist/{chunk-NPKYOIFM.js → chunk-4CGVLUDP.js} +2 -2
  17. package/dist/chunk-4RI4BJGT.js +8 -0
  18. package/dist/{chunk-P2PC2WGR.js → chunk-52HQTTPB.js} +2 -2
  19. package/dist/{chunk-YNRNA5LK.js → chunk-5OC3HWP5.js} +2 -2
  20. package/dist/{chunk-STOL2BTL.js → chunk-6XFC7PQ5.js} +2 -2
  21. package/dist/{chunk-J77UIT3I.js → chunk-6XHTISLI.js} +2 -2
  22. package/dist/chunk-6YTSKJJ3.js +2 -0
  23. package/dist/{chunk-BTEE5NZQ.js → chunk-7E3TH5ZN.js} +2 -2
  24. package/dist/{chunk-X6D5IC6I.js → chunk-7LABSJSR.js} +2 -2
  25. package/dist/chunk-7Q6VYYCH.js +2 -0
  26. package/dist/{chunk-FWUUZTIO.js → chunk-A43URCQ3.js} +2 -2
  27. package/dist/chunk-A63U2W3P.js +3 -0
  28. package/dist/{chunk-3MJ5YA4Y.js → chunk-ADFSIJP2.js} +2 -2
  29. package/dist/chunk-AOLE4DYM.js +6 -0
  30. package/dist/chunk-APMMR5Y2.js +2 -0
  31. package/dist/chunk-B5MHCHP3.js +107 -0
  32. package/dist/{chunk-4RSI5EMG.js → chunk-CSTYYXKC.js} +2 -2
  33. package/dist/{chunk-25LPM4DG.js → chunk-CYJM7CYF.js} +2 -2
  34. package/dist/{chunk-S44IULR6.js → chunk-DD5BOU5I.js} +2 -2
  35. package/dist/{chunk-YGAGTIDK.js → chunk-DGMCFMPG.js} +7 -7
  36. package/dist/{chunk-UOAV44HR.js → chunk-E2ZXPB7J.js} +2 -2
  37. package/dist/{chunk-IZKFSVBV.js → chunk-EVOC5I5I.js} +2 -2
  38. package/dist/{chunk-XTX6QHOF.js → chunk-F42A3AKG.js} +2 -2
  39. package/dist/{chunk-Q4IIEGXJ.js → chunk-FHCTEANE.js} +2 -2
  40. package/dist/{chunk-3SVWW4PN.js → chunk-FKGN4A4E.js} +2 -2
  41. package/dist/{chunk-IG7N5ZIK.js → chunk-FQTPPXNA.js} +2 -2
  42. package/dist/{chunk-F6O7AAC3.js → chunk-G4UQL4CP.js} +2 -2
  43. package/dist/chunk-GA64UPMI.js +6 -0
  44. package/dist/{chunk-ZXJYMGD3.js → chunk-GK3GRUJX.js} +2 -2
  45. package/dist/chunk-HEBAY673.js +2 -0
  46. package/dist/chunk-HELS7KFF.js +2 -0
  47. package/dist/{chunk-B5NLK2B3.js → chunk-IPDCSB6N.js} +2 -2
  48. package/dist/{chunk-M7MTH5NR.js → chunk-IYAOX36F.js} +2 -2
  49. package/dist/{chunk-YVVCVR2L.js → chunk-J7VT2CRB.js} +2 -2
  50. package/dist/{chunk-4333ETTV.js → chunk-JELJLXEE.js} +2 -2
  51. package/dist/{chunk-LBMJEAEW.js → chunk-JERWGHQT.js} +2 -2
  52. package/dist/chunk-JJJCO4QC.js +945 -0
  53. package/dist/{chunk-6E7UTQY7.js → chunk-JZNLMHWY.js} +2 -2
  54. package/dist/{chunk-R4FQGQ4X.js → chunk-K42M2KWT.js} +2 -2
  55. package/dist/{chunk-H7UKLTWJ.js → chunk-KLVJABXA.js} +2 -2
  56. package/dist/chunk-KP4KBDVF.js +3 -0
  57. package/dist/{chunk-RV2FQIX3.js → chunk-LMFVTUW2.js} +2 -2
  58. package/dist/chunk-LRTP3DKL.js +3 -0
  59. package/dist/{chunk-U6WNH5GC.js → chunk-MGBJHRFB.js} +2 -2
  60. package/dist/{chunk-QDV6RDCP.js → chunk-MLGTCX56.js} +2 -2
  61. package/dist/{chunk-54HA4ZXH.js → chunk-N3SE646F.js} +2 -2
  62. package/dist/{chunk-KP6XRY5Z.js → chunk-NBRUH7OE.js} +2 -2
  63. package/dist/{chunk-M7AIS73L.js → chunk-NN4ZIRPK.js} +2 -2
  64. package/dist/{chunk-I5RJM53C.js → chunk-NQLSSVOB.js} +2 -2
  65. package/dist/{chunk-4SALD7RU.js → chunk-OBKDTVZ3.js} +2 -2
  66. package/dist/{chunk-GBQ5NYPR.js → chunk-OHWZKLVA.js} +6 -6
  67. package/dist/{chunk-6NSFJYRC.js → chunk-OP3MTFJR.js} +2 -2
  68. package/dist/{chunk-EOOJGLDU.js → chunk-OQ2A4G2G.js} +2 -2
  69. package/dist/{chunk-DLWR3NUU.js → chunk-P6HBYNBE.js} +2 -2
  70. package/dist/{chunk-QVWS2VWZ.js → chunk-PC44K7RF.js} +2 -2
  71. package/dist/{chunk-A2EZV2UM.js → chunk-QBYYWGAT.js} +2 -2
  72. package/dist/{chunk-QRGV2F7L.js → chunk-QHKUY4FW.js} +2 -2
  73. package/dist/chunk-QHRL4LKM.js +2 -0
  74. package/dist/{chunk-I5AWSI2G.js → chunk-QQWOFXNW.js} +2 -2
  75. package/dist/{chunk-WQTAC523.js → chunk-RBFFD4V2.js} +2 -2
  76. package/dist/{chunk-SOAT6NLA.js → chunk-RJHCPSZ7.js} +2 -2
  77. package/dist/{chunk-VGRICIQI.js → chunk-RWRLUZ6U.js} +2 -2
  78. package/dist/{chunk-4T3LTWUS.js → chunk-S2GP3CU3.js} +2 -2
  79. package/dist/{chunk-HEXVUYFQ.js → chunk-SHKZ7OVJ.js} +2 -2
  80. package/dist/{chunk-NSS46APD.js → chunk-TFUU5MQQ.js} +2 -2
  81. package/dist/{chunk-IUFDSKGG.js → chunk-TYQ76QHQ.js} +2 -2
  82. package/dist/{chunk-NRCXJDHL.js → chunk-U5CNPPTZ.js} +2 -2
  83. package/dist/{chunk-MITTUCEH.js → chunk-UQK5CRUK.js} +2 -2
  84. package/dist/{chunk-XLTP42QA.js → chunk-UUJBLG6J.js} +2 -2
  85. package/dist/chunk-UXP636P5.js +144 -0
  86. package/dist/{chunk-64RFXJT5.js → chunk-VEVBIAOJ.js} +6 -6
  87. package/dist/chunk-VKRQDBW5.js +9 -0
  88. package/dist/{chunk-C7NIYIQ4.js → chunk-VOQFGC2W.js} +4 -4
  89. package/dist/{chunk-DZ74OMG6.js → chunk-VP542C25.js} +2 -2
  90. package/dist/{chunk-Q3AFUTGB.js → chunk-WMXRRBII.js} +2 -2
  91. package/dist/{chunk-ZGZUZ7XE.js → chunk-WXAAURU7.js} +2 -2
  92. package/dist/chunk-X3NLZHPA.js +20 -0
  93. package/dist/{chunk-WER3B7MI.js → chunk-XF3KLXN3.js} +2 -2
  94. package/dist/{chunk-NH5ALKPW.js → chunk-XVJ3V7LM.js} +2 -2
  95. package/dist/{chunk-4XTA5OMB.js → chunk-YGQN3XGZ.js} +2 -2
  96. package/dist/{chunk-CFMXJPHH.js → chunk-YHXBD52M.js} +2 -2
  97. package/dist/{chunk-7B3UPBVA.js → chunk-YLVE3SXZ.js} +2 -2
  98. package/dist/{chunk-YIJ7ZAA4.js → chunk-YTUD45PU.js} +2 -2
  99. package/dist/{chunk-VTKGCT3V.js → chunk-YWB2EBNB.js} +2 -2
  100. package/dist/{chunk-UKZBVX4U.js → chunk-Z2LHPIOM.js} +2 -2
  101. package/dist/chunk-Z5QQPJ3U.js +30 -0
  102. package/dist/{chunk-NZL2DBT7.js → chunk-ZLJLE6LK.js} +2 -2
  103. package/dist/{chunk-XYADIZHU.js → chunk-ZTTISZ7J.js} +2 -2
  104. package/dist/cli.js +3 -3
  105. package/dist/command-descriptors-SJDZ7QGR.js +617 -0
  106. package/dist/{config-types-D20KuvvZ.d.ts → config-types-BWQ5xPGI.d.ts} +4 -0
  107. package/dist/{db-G_II8yXU.d.ts → db-B0r1o7Vt.d.ts} +18 -1
  108. package/dist/direct-navigation-HTKOZEOM.js +3 -0
  109. package/dist/{health-oblXYgkF.d.ts → health-CFnlCiTz.d.ts} +1 -1
  110. package/dist/index.d.ts +2 -2
  111. package/dist/index.js +1 -1
  112. package/dist/postinstall.js +1 -1
  113. package/dist/queries/affected.d.ts +2 -2
  114. package/dist/queries/affected.js +1 -1
  115. package/dist/queries/architecture.d.ts +2 -2
  116. package/dist/queries/architecture.js +1 -1
  117. package/dist/queries/bottlenecks.d.ts +2 -2
  118. package/dist/queries/bottlenecks.js +1 -1
  119. package/dist/queries/by-kind.d.ts +2 -2
  120. package/dist/queries/by-kind.js +1 -1
  121. package/dist/queries/call-graph.d.ts +2 -2
  122. package/dist/queries/call-graph.js +1 -1
  123. package/dist/queries/change-surface.d.ts +2 -2
  124. package/dist/queries/change-surface.js +1 -1
  125. package/dist/queries/cleanup-plan.d.ts +2 -2
  126. package/dist/queries/cleanup-plan.js +1 -1
  127. package/dist/queries/co-change.d.ts +2 -2
  128. package/dist/queries/co-change.js +1 -1
  129. package/dist/queries/code.d.ts +2 -2
  130. package/dist/queries/code.js +1 -1
  131. package/dist/queries/complexity-hotspots.d.ts +2 -2
  132. package/dist/queries/complexity-hotspots.js +1 -1
  133. package/dist/queries/complexity.d.ts +2 -2
  134. package/dist/queries/complexity.js +1 -1
  135. package/dist/queries/convergence.d.ts +2 -2
  136. package/dist/queries/convergence.js +1 -1
  137. package/dist/queries/coupling.d.ts +2 -2
  138. package/dist/queries/coupling.js +1 -1
  139. package/dist/queries/cycles.d.ts +2 -2
  140. package/dist/queries/cycles.js +1 -1
  141. package/dist/queries/dataflow.d.ts +2 -2
  142. package/dist/queries/dataflow.js +1 -1
  143. package/dist/queries/dead.d.ts +2 -2
  144. package/dist/queries/dead.js +1 -1
  145. package/dist/queries/decorative-checkers.d.ts +3 -3
  146. package/dist/queries/decorative-checkers.js +1 -1
  147. package/dist/queries/deep-chains.d.ts +2 -2
  148. package/dist/queries/deep-chains.js +1 -1
  149. package/dist/queries/deps.d.ts +2 -2
  150. package/dist/queries/deps.js +1 -1
  151. package/dist/queries/diff-gate.d.ts +30 -2
  152. package/dist/queries/diff-gate.js +1 -1
  153. package/dist/queries/diff-impact.d.ts +2 -2
  154. package/dist/queries/diff-impact.js +1 -1
  155. package/dist/queries/doc-drift.d.ts +2 -2
  156. package/dist/queries/doc-drift.js +1 -1
  157. package/dist/queries/drift.d.ts +2 -2
  158. package/dist/queries/drift.js +1 -1
  159. package/dist/queries/duplicate-bodies.d.ts +2 -2
  160. package/dist/queries/duplicate-bodies.js +1 -1
  161. package/dist/queries/extract-candidates.d.ts +2 -2
  162. package/dist/queries/extract-candidates.js +1 -1
  163. package/dist/queries/fan.d.ts +2 -2
  164. package/dist/queries/fan.js +1 -1
  165. package/dist/queries/files.d.ts +2 -2
  166. package/dist/queries/health.d.ts +3 -3
  167. package/dist/queries/health.js +1 -1
  168. package/dist/queries/hierarchy.d.ts +2 -2
  169. package/dist/queries/hierarchy.js +1 -1
  170. package/dist/queries/hotspots.d.ts +2 -2
  171. package/dist/queries/hotspots.js +1 -1
  172. package/dist/queries/imports.d.ts +2 -2
  173. package/dist/queries/imports.js +1 -1
  174. package/dist/queries/incomplete-migration.d.ts +2 -2
  175. package/dist/queries/incomplete-migration.js +1 -1
  176. package/dist/queries/index.d.ts +17 -3
  177. package/dist/queries/index.js +1 -1
  178. package/dist/queries/isolated.d.ts +2 -2
  179. package/dist/queries/isolated.js +1 -1
  180. package/dist/queries/locality-candidates.d.ts +2 -2
  181. package/dist/queries/locality-candidates.js +1 -1
  182. package/dist/queries/members.d.ts +2 -2
  183. package/dist/queries/members.js +1 -1
  184. package/dist/queries/methods.d.ts +2 -2
  185. package/dist/queries/methods.js +1 -1
  186. package/dist/queries/not-implemented.d.ts +3 -3
  187. package/dist/queries/not-implemented.js +1 -1
  188. package/dist/queries/outline.d.ts +2 -2
  189. package/dist/queries/outline.js +1 -1
  190. package/dist/queries/passthrough-candidates.d.ts +2 -2
  191. package/dist/queries/passthrough-candidates.js +1 -1
  192. package/dist/queries/plan-context.d.ts +2 -2
  193. package/dist/queries/plan-context.js +1 -1
  194. package/dist/queries/react-component-duplicates.d.ts +2 -2
  195. package/dist/queries/react-component-duplicates.js +1 -1
  196. package/dist/queries/react-hook-candidates.d.ts +2 -2
  197. package/dist/queries/react-hook-candidates.js +1 -1
  198. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  199. package/dist/queries/react-large-component-pressure.js +1 -1
  200. package/dist/queries/recent-duplicates.d.ts +2 -2
  201. package/dist/queries/recent-duplicates.js +1 -1
  202. package/dist/queries/redundant-reexports.d.ts +2 -2
  203. package/dist/queries/redundant-reexports.js +1 -1
  204. package/dist/queries/refs.d.ts +2 -2
  205. package/dist/queries/refs.js +1 -1
  206. package/dist/queries/self-audit.d.ts +2 -2
  207. package/dist/queries/self-audit.js +1 -1
  208. package/dist/queries/similar-chains.d.ts +2 -2
  209. package/dist/queries/similar-chains.js +1 -1
  210. package/dist/queries/similar-files.d.ts +2 -2
  211. package/dist/queries/similar-files.js +1 -1
  212. package/dist/queries/similar-signatures.d.ts +2 -2
  213. package/dist/queries/similar-signatures.js +1 -1
  214. package/dist/queries/similar.d.ts +2 -2
  215. package/dist/queries/similar.js +1 -1
  216. package/dist/queries/slice.d.ts +2 -2
  217. package/dist/queries/slice.js +1 -1
  218. package/dist/queries/stale-abstractions.d.ts +2 -2
  219. package/dist/queries/stale-abstractions.js +1 -1
  220. package/dist/queries/stats.d.ts +2 -2
  221. package/dist/queries/stats.js +1 -1
  222. package/dist/queries/surface.d.ts +2 -2
  223. package/dist/queries/surface.js +1 -1
  224. package/dist/queries/symbols.d.ts +2 -2
  225. package/dist/queries/symbols.js +1 -1
  226. package/dist/queries/system.d.ts +2 -2
  227. package/dist/queries/system.js +1 -1
  228. package/dist/queries/test-quality.d.ts +2 -2
  229. package/dist/queries/test-quality.js +1 -1
  230. package/dist/queries/trace.d.ts +2 -2
  231. package/dist/queries/trace.js +1 -1
  232. package/dist/queries/twin-ab.d.ts +3 -3
  233. package/dist/queries/twin-ab.js +1 -1
  234. package/dist/queries/twin-drift.d.ts +2 -2
  235. package/dist/queries/twin-drift.js +1 -1
  236. package/dist/queries/unused-imports.d.ts +2 -2
  237. package/dist/queries/unused-imports.js +1 -1
  238. package/dist/queries/unused-params.d.ts +2 -2
  239. package/dist/queries/unused-params.js +1 -1
  240. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  241. package/dist/queries/vue-component-duplicates.js +1 -1
  242. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  243. package/dist/queries/vue-composable-candidates.js +1 -1
  244. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  245. package/dist/queries/vue-large-view-pressure.js +1 -1
  246. package/dist/queries/wrapper-candidates.d.ts +2 -2
  247. package/dist/queries/wrapper-candidates.js +1 -1
  248. package/dist/reindex-worker.js +23 -24
  249. package/dist/reindex.d.ts +10 -4
  250. package/dist/reindex.js +33 -38
  251. package/dist/runtime.d.ts +167 -11
  252. package/dist/runtime.js +3 -2
  253. package/dist/rust-semantic-session-server.js +1 -1
  254. package/dist/rust-semantic-session-worker.js +1 -1
  255. package/dist/rust-semantic-worker.js +1 -1
  256. package/dist/{scip-cli-kRpaexVJ.d.ts → scip-cli-DCvnlZCu.d.ts} +5 -1
  257. package/dist/watch-server.js +5 -5
  258. package/docs/AGENT_GUIDE.md +1 -1
  259. package/docs/AI_FAILURE_MODES.md +18 -18
  260. package/docs/API_EVOLUTION.md +71 -0
  261. package/docs/CLI_JSON_OUTPUT.md +83 -0
  262. package/docs/COMMAND_REFERENCE.md +10 -8
  263. package/docs/COMMITTED_RECORD_COMPATIBILITY.md +117 -0
  264. package/docs/CONFIGURATION_WRITE_SAFETY.md +130 -0
  265. package/docs/DETECTOR_GUIDE.md +47 -47
  266. package/docs/DURABILITY.md +103 -0
  267. package/docs/INDEX_GENERATIONS.md +121 -0
  268. package/docs/LOCK_PROTOCOL.md +133 -0
  269. package/docs/MAILBOX_LIFECYCLE.md +197 -0
  270. package/docs/REINDEX_METADATA_COMPATIBILITY.md +84 -0
  271. package/docs/RUST_DURABLE_SESSION_PROTOCOL.md +126 -0
  272. package/docs/TELEMETRY_RETENTION.md +72 -0
  273. package/docs/TIME_SEMANTICS.md +77 -0
  274. package/docs/WATCH_REFRESH_REQUESTS.md +110 -0
  275. package/docs/WINDOWS_SIDECAR_RELEASE.md +298 -0
  276. package/docs/analyzer-validation-ledger.md +24 -23
  277. package/docs/schemas/cli-json-envelope.schema.json +53 -0
  278. package/docs/schemas/npm-release-state.schema.json +146 -0
  279. package/docs/schemas/outcome-event-record.schema.json +39 -0
  280. package/docs/schemas/project-config.schema.json +247 -0
  281. package/docs/schemas/suppression-record.schema.json +31 -0
  282. package/docs/schemas/windows-sidecar-provenance.schema.json +137 -0
  283. package/package.json +15 -5
  284. package/scripts/build-scip-windows.mjs +180 -61
  285. package/scripts/scip-windows-provenance.mjs +364 -0
  286. package/scripts/verify-scip-windows.mjs +29 -0
  287. package/skills/_shared/SKILL.md +91 -242
  288. package/skills/_shared/agents/openai.yaml +1 -1
  289. package/skills/_shared/references/agent-contract-catalog.md +105 -0
  290. package/skills/_shared/references/command-catalog.md +118 -0
  291. package/skills/_shared/references/detector-precision-and-diffgate.md +59 -0
  292. package/skills/_shared/references/evidence-and-dead-code.md +25 -0
  293. package/skills/scip-audit/SKILL.md +76 -0
  294. package/skills/scip-audit/agents/openai.yaml +4 -0
  295. package/skills/scip-audit/references/claims.md +98 -0
  296. package/skills/scip-audit/references/cleanup.md +101 -0
  297. package/skills/scip-audit/references/directory.md +222 -0
  298. package/skills/scip-audit/references/frontend.md +130 -0
  299. package/skills/scip-audit/references/integrity.md +154 -0
  300. package/skills/scip-audit/references/maintainability.md +162 -0
  301. package/skills/scip-audit/references/twin-drift.md +104 -0
  302. package/skills/scip-diagnose/SKILL.md +52 -0
  303. package/skills/scip-diagnose/agents/openai.yaml +4 -0
  304. package/skills/scip-diagnose/references/debug.md +117 -0
  305. package/skills/{scip-probe-reachability/SKILL.md → scip-diagnose/references/probe-reachability.md} +12 -27
  306. package/skills/scip-diagnose/references/root-cause.md +145 -0
  307. package/skills/scip-diagnose/references/triage.md +119 -0
  308. package/skills/scip-explore/SKILL.md +53 -84
  309. package/skills/scip-explore/agents/openai.yaml +2 -2
  310. package/skills/scip-explore/references/diagrams.md +40 -0
  311. package/skills/scip-explore/references/language-playbook.md +49 -0
  312. package/skills/scip-improve/SKILL.md +56 -0
  313. package/skills/scip-improve/agents/openai.yaml +4 -0
  314. package/skills/scip-improve/references/cleanup-batches.md +53 -0
  315. package/skills/scip-improve/references/directory-moves.md +53 -0
  316. package/skills/scip-improve/references/doc-reconcile.md +30 -0
  317. package/skills/scip-improve/references/frontend-extraction.md +39 -0
  318. package/skills/scip-improve/references/maintainability-mechanism.md +43 -0
  319. package/skills/scip-improve/references/twin-drift.md +35 -0
  320. package/skills/scip-plan/SKILL.md +68 -0
  321. package/skills/scip-plan/agents/openai.yaml +4 -0
  322. package/skills/scip-plan/references/api-impact.md +19 -0
  323. package/skills/scip-plan/references/conductor.md +41 -0
  324. package/skills/scip-plan/references/high-assurance.md +43 -0
  325. package/skills/scip-plan/references/hyper-optimization.md +50 -0
  326. package/skills/scip-plan/references/tla-model.md +88 -0
  327. package/skills/scip-query/SKILL.md +52 -97
  328. package/skills/scip-query/agents/openai.yaml +2 -2
  329. package/skills/scip-setup/SKILL.md +65 -176
  330. package/skills/scip-setup/agents/openai.yaml +3 -3
  331. package/skills/scip-setup/references/bootstrap-workflow.md +120 -0
  332. package/skills/scip-setup/references/language-verification.md +61 -0
  333. package/skills/scip-setup/references/lifecycle-commands.md +119 -0
  334. package/skills/scip-setup/references/per-repo-triage.md +24 -0
  335. package/skills/scip-verify/SKILL.md +123 -70
  336. package/skills/scip-verify/agents/openai.yaml +2 -2
  337. package/skills/scip-verify/references/calibrate-detectors.md +170 -0
  338. package/dist/chunk-2CTX5CMX.js +0 -4
  339. package/dist/chunk-2Y373BDD.js +0 -2
  340. package/dist/chunk-C2QSK7E7.js +0 -2
  341. package/dist/chunk-D4U5Q3FT.js +0 -7
  342. package/dist/chunk-K2ERX4UT.js +0 -3
  343. package/dist/chunk-KHE7J5ZN.js +0 -3
  344. package/dist/chunk-L7SPDE73.js +0 -84
  345. package/dist/chunk-LHMNRHGV.js +0 -3
  346. package/dist/chunk-LM72NQ7T.js +0 -3
  347. package/dist/chunk-MSWVMDAH.js +0 -122
  348. package/dist/chunk-NH7WNNQC.js +0 -20
  349. package/dist/chunk-OMPZHGHO.js +0 -2
  350. package/dist/chunk-SVLTAG5O.js +0 -927
  351. package/dist/chunk-U7DSEKOM.js +0 -30
  352. package/dist/chunk-V27BEQJN.js +0 -7
  353. package/dist/chunk-VMNZB6WI.js +0 -4
  354. package/dist/chunk-XBN5VO53.js +0 -2
  355. package/dist/chunk-ZAIILQNP.js +0 -5
  356. package/dist/command-descriptors-MFU4BCJ7.js +0 -612
  357. package/dist/direct-navigation-MRMQFIRB.js +0 -3
  358. package/skills/scip-api-impact/SKILL.md +0 -139
  359. package/skills/scip-api-impact/agents/openai.yaml +0 -4
  360. package/skills/scip-calibrate/SKILL.md +0 -131
  361. package/skills/scip-calibrate/agents/openai.yaml +0 -4
  362. package/skills/scip-claim-audit/SKILL.md +0 -106
  363. package/skills/scip-claim-audit/agents/openai.yaml +0 -4
  364. package/skills/scip-cleanup-audit/SKILL.md +0 -126
  365. package/skills/scip-cleanup-audit/agents/openai.yaml +0 -4
  366. package/skills/scip-cleanup-improve/SKILL.md +0 -84
  367. package/skills/scip-cleanup-improve/agents/openai.yaml +0 -4
  368. package/skills/scip-concrete-plan/SKILL.md +0 -262
  369. package/skills/scip-concrete-plan/agents/openai.yaml +0 -4
  370. package/skills/scip-conductor/SKILL.md +0 -133
  371. package/skills/scip-conductor/agents/openai.yaml +0 -4
  372. package/skills/scip-debug/SKILL.md +0 -130
  373. package/skills/scip-debug/agents/openai.yaml +0 -4
  374. package/skills/scip-diagram/SKILL.md +0 -110
  375. package/skills/scip-diagram/agents/openai.yaml +0 -4
  376. package/skills/scip-directory-architecture/SKILL.md +0 -254
  377. package/skills/scip-directory-architecture/agents/openai.yaml +0 -4
  378. package/skills/scip-doc-reconcile/SKILL.md +0 -89
  379. package/skills/scip-doc-reconcile/agents/openai.yaml +0 -4
  380. package/skills/scip-hyper-optimization/SKILL.md +0 -156
  381. package/skills/scip-hyper-optimization/agents/openai.yaml +0 -4
  382. package/skills/scip-integrity-audit/SKILL.md +0 -152
  383. package/skills/scip-integrity-audit/agents/openai.yaml +0 -4
  384. package/skills/scip-language-playbook/SKILL.md +0 -106
  385. package/skills/scip-language-playbook/agents/openai.yaml +0 -4
  386. package/skills/scip-maintainability/SKILL.md +0 -158
  387. package/skills/scip-maintainability/agents/openai.yaml +0 -4
  388. package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
  389. package/skills/scip-react-maintainability/SKILL.md +0 -101
  390. package/skills/scip-react-maintainability/agents/openai.yaml +0 -4
  391. package/skills/scip-root-cause/SKILL.md +0 -150
  392. package/skills/scip-root-cause/agents/openai.yaml +0 -4
  393. package/skills/scip-tla-model-system/SKILL.md +0 -148
  394. package/skills/scip-tla-model-system/agents/openai.yaml +0 -4
  395. package/skills/scip-triage-issue/SKILL.md +0 -126
  396. package/skills/scip-triage-issue/agents/openai.yaml +0 -4
  397. package/skills/scip-twin-drift/SKILL.md +0 -107
  398. package/skills/scip-twin-drift/agents/openai.yaml +0 -4
  399. package/skills/scip-vue-maintainability/SKILL.md +0 -107
  400. package/skills/scip-vue-maintainability/agents/openai.yaml +0 -4
@@ -1,152 +0,0 @@
1
- ---
2
- name: scip-integrity-audit
3
- description: Audit whether implementations are real with scip-query. Use for suspected faked or half-implemented features, decorative checkers or verifiers that never fail, dead code paths hidden behind graceful fallbacks, metrics that may be lying, or a "does any of this actually work" interrogation of a system.
4
- commands:
5
- - scip-query refs <symbol>
6
- - scip-query code <symbol>
7
- - scip-query trace <symbol>
8
- - scip-query call-graph <symbol>
9
- - scip-query twin-drift -s <scope> --json
10
- - scip-query twin-ab <symbolA> <symbolB>
11
- - scip-query outline <file> --signatures
12
- - scip-query decorative-checkers -s <scope> --json
13
- - scip-query not-implemented -s <scope> --json
14
- - scip-query test-quality -s <scope> --json
15
- ---
16
-
17
- # scip-integrity-audit
18
-
19
- Use this skill to interrogate whether a system's claims are backed by real
20
- implementations. Structural review asks "is this well organized?"
21
- (`scip-maintainability`); this skill asks **"is this real?"** — it hunts
22
- decorative checkers, adapters written against imagined data, features that
23
- have silently never run, and numbers nobody ever recomputed.
24
-
25
- Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
26
-
27
- ## The Stance
28
-
29
- A green result you have never seen fail is unverified. Every status word,
30
- banner, and metric is testimony from the code, not evidence about the code —
31
- cross-examine the producer before believing it. The most dangerous code is
32
- not broken code; it is code that reports success without doing the work.
33
-
34
- ## Drills
35
-
36
- Run all five over the chosen scope. Each has a checkable exit.
37
-
38
- ### 1. Falsify every checker
39
-
40
- Inventory everything in scope that accepts/rejects, passes/fails, or
41
- validates (checkers, gates, verifiers, validators — find producers with
42
- `refs`/`call-graph` on the status words in output). For each one, construct
43
- an input that MUST fail — a wrong binding, a corrupt file, an impossible
44
- value — and run it. A checker that passes its should-fail input is
45
- decorative: file it as a defect, not a note.
46
- Before filing, attempt the defense: an accusation triggers a rewrite, so
47
- search for the failure exit the drill may have missed — a config-gated
48
- branch, an async rejection, one-hop delegation (the calibration's known
49
- noise archetypes). File the defect with the executed should-fail input
50
- attached and the defense attempt noted; a defense that succeeds clears the
51
- checker and stays in the record as its witness.
52
- Complete only when every checker in scope has been witnessed rejecting a
53
- constructed should-fail input, or is listed with a reason it cannot be.
54
-
55
- Mechanized by: `scip-query decorative-checkers` finds `validate*`/`verify*`/
56
- `check*`/`assert*`/`is*`/`has*` callables with no reachable failure exit
57
- anywhere in their body (calibrated 2026-07-03 against two external repos —
58
- standalone-only; noise archetypes past one-hop delegation in
59
- `docs/validation/2026-07-03-integrity-detector-calibration.md`). Run it first
60
- to shortlist candidates before hand-constructing should-fail inputs.
61
-
62
- ### 2. Diff every adapter against captured reality
63
-
64
- For each parser/adapter of an external format (tool output, XML/JSON
65
- schemas, protocol messages): obtain ONE real sample from the actual source
66
- and diff it against the code's assumptions and the tests' fixtures. Ask of
67
- every fixture: was this generated from reality, or imagined? A parser and a
68
- hand-written fixture can validate each other's shared hallucination
69
- indefinitely.
70
- Complete only when every adapter has been checked against at least one
71
- captured-real sample.
72
-
73
- ### 3. Autopsy every fallback
74
-
75
- Graceful degradation is where dead features hide: a primary path that has
76
- never worked looks identical to a healthy fallback. For every catch block,
77
- `?? fallback`, and degraded mode in scope: produce an execution witness that
78
- the PRIMARY path runs (a test, a probe, a log). Use `scip-probe-reachability`
79
- for parser/AST branch reachability. A fallback that always fires means the
80
- feature above it is dead — date of death: birth.
81
- Complete only when every fallback's primary path has a witness or a filed
82
- defect.
83
-
84
- Mechanized by: `scip-query not-implemented` finds reachable placeholder
85
- stubs (`throw new Error('not implemented')`, TODO-comment + return-default,
86
- empty bodies) that a real caller, entry surface, or package-surface export
87
- can actually reach — the graph fact that separates "primary path never
88
- built" from `dead`'s "primary path built but unreferenced." Standalone-only
89
- (calibrated 2026-07-03; 0 live findings on two external repos post-fix, see
90
- the calibration report) — treat a clean run as "nothing this shape found,"
91
- not as "every fallback's primary path is proven live."
92
-
93
- ### 4. Hand-compute every metric twice
94
-
95
- For each number the system reports (scores, counts, estimates): pick two
96
- concrete instances, compute the expected value by hand from first
97
- principles, and compare. Off-by-a-factor errors (double counting, inflated
98
- estimates) survive for years because nobody ever recomputes one sample.
99
- Complete only when every reported metric has two hand-verified samples.
100
-
101
- ### 5. Cross-examine same-concept twins
102
-
103
- Where one concept is computed in more than one place, feed both the same
104
- input and require the same answer. `twin-drift` finds the same-name cases
105
- mechanically; for same-concept-different-name pairs, trace the concept's
106
- consumers with `refs` and compare implementations with `code`. Once a pair
107
- is identified, `scip-query twin-ab <symbolA> <symbolB>` scaffolds a
108
- table-driven vitest file that imports both and asserts equal output —
109
- fill in the input table and run it. Disagreement between twins means at
110
- least one is wrong — determine which before consolidating.
111
- Complete only when every discovered twin pair has been compared on a shared
112
- input.
113
-
114
- ## Severity
115
-
116
- Rank findings by what the failure does to a user who trusted the output:
117
- a decorative checker or false "verified" banner outranks everything; a
118
- dead-but-fallbacked feature outranks a wrong metric; a wrong metric outranks
119
- structural mess. Route structural findings to `scip-maintainability` —
120
- they are real but they are not lies.
121
-
122
- ## Reporting
123
-
124
- File each finding with: the claim as displayed, the producer (file:line),
125
- the drill that exposed it, the should-fail input or real sample used, and
126
- the fix. The audit is complete only when every drill's exit criterion is
127
- met for the scope, and every defect found has a regression artifact — a
128
- test, fixture, or model that fails on the pre-fix behavior.
129
-
130
- End with a derived verdict, not an impression:
131
-
132
- ```markdown
133
- Integrity: <scope> — <c> checkers witnessed failing, <a> adapters diffed
134
- against reality, <f> fallback primaries witnessed live, <m> metrics
135
- recomputed, <t> twins compared; <d> defects filed, <u> unverifiable (reasons)
136
- ```
137
-
138
- A suspect scope that produces zero defects is itself a claim: state what
139
- made the suspicion wrong, or rerun the drill that should have caught it.
140
-
141
- A regression artifact that doesn't actually assert anything, or asserts the
142
- same literal it stubbed into its own mock, is a fake witness — the same
143
- "reports success without doing the work" failure mode this skill hunts in
144
- production code, just relocated to the test suite. Run `scip-query
145
- test-quality -s <scope>` over the audit's own regression artifacts (and,
146
- periodically, over the suite at large) to catch this: assertion-free test
147
- bodies, a skipped-test ledger with git-blame age (a skip with no fix date
148
- attached is a claim nobody is checking), and mock-echo (a test that only
149
- proves its own stub). Standalone-only, mixed precision by sub-check
150
- (calibrated 2026-07-03): assertion-free and skipped are high-precision;
151
- mock-echo is intentionally low-precision (syntactic same-literal matching,
152
- not dataflow) — treat its output as a reviewed candidate list, not a verdict.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "scip integrity audit"
3
- short_description: "Interrogate whether implementations are real: falsify checkers, diff adapters against reality, autopsy fallbacks."
4
- default_prompt: "Run the scip-integrity-audit drills over this codebase and report every decorative checker, dead-behind-fallback feature, and lying metric."
@@ -1,106 +0,0 @@
1
- ---
2
- name: scip-language-playbook
3
- description: Choose language-specific scip-query commands. Use when entering an unfamiliar TypeScript, Python, Java, Scala, Kotlin, Rust, Go, C, C++, Ruby, C#, Visual Basic, Dart, PHP, Clojure, ClojureScript, or Vue codebase and you need high-signal exploration or de-bloat commands first.
4
- commands:
5
- - template: "scip-query stats"
6
- when: "Universal first pass: repo-wide size and shape."
7
- - template: "scip-query files <feature-or-module-name>"
8
- when: "Universal first pass: locate the files for a feature or module."
9
- - template: "scip-query outline <file>"
10
- when: "Universal first pass: symbol tree for a candidate file."
11
- - template: "scip-query trace <symbol>"
12
- when: "Universal first pass: definition plus every reference."
13
- - template: "scip-query code <symbol>"
14
- when: "Universal first pass: confirm behavior claims with source."
15
- ---
16
-
17
- # scip-language-playbook
18
-
19
- Use this reference to pick the shortest command path from "what is this system doing?" to verified language-specific answers.
20
-
21
- Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
22
-
23
- <!-- BEGIN GENERATED SKILL COMMANDS -->
24
- ## Commands for this skill
25
-
26
- | Command | Purpose | When |
27
- | --- | --- | --- |
28
- | `scip-query stats` | Show index statistics | Universal first pass: repo-wide size and shape. |
29
- | `scip-query files <feature-or-module-name>` | Find files matching a pattern | Universal first pass: locate the files for a feature or module. |
30
- | `scip-query outline <file>` | Tree view of symbols in a file, with line ranges | Universal first pass: symbol tree for a candidate file. |
31
- | `scip-query trace <symbol>` | Trace a symbol: definition + all references | Universal first pass: definition plus every reference. |
32
- | `scip-query code <symbol>` | Read the source code for a symbol (bounded to its definition range) | Universal first pass: confirm behavior claims with source. |
33
-
34
- Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
35
- <!-- END GENERATED SKILL COMMANDS -->
36
-
37
- ## Rules
38
-
39
- 1. Start with the active language row before broader or noisier commands.
40
- 2. Pair relationship commands with `code` for behavior claims.
41
- 3. For de-bloat, cross-check multiple detector families.
42
- 4. When a command is weaker in a language, use the listed fallback.
43
-
44
- ## Universal First Pass
45
-
46
- ```bash
47
- scip-query stats
48
- scip-query kind-counts
49
- scip-query files <feature-or-module-name>
50
- scip-query outline <file>
51
- scip-query by-kind function --scope <feature-or-module-name>
52
- scip-query trace <symbol>
53
- scip-query hierarchy <symbol>
54
- scip-query code <symbol>
55
- ```
56
-
57
- ## Language Rows
58
-
59
- | Language | Use first | De-bloat set | Fallback note |
60
- | --- | --- | --- | --- |
61
- | TypeScript | `system`, `surface`, `call-graph`, `dataflow`, `change-surface` | `health`, `dead`, `similar`, `similar --plan`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `unused-imports`, `redundant-reexports` | Strongest verified surface. Vue script blocks use this path too. |
62
- | Python | `outline`, `kind-counts --scope`, `system`, `imports`, `imported-by`, `call-graph` | `dead`, `unused-imports`, `drift`, `similar-signatures`, `complexity`, `complexity-hotspots` | Prefer source-backed fallbacks when call/kind metadata is sparse. |
63
- | Java | `system`, `surface`, `call-graph`, `deps`, `rdeps`, `slice` | `health`, `dead`, `similar-files`, `similar-chains`, `wrapper-candidates`, `stale-abstractions`, `extract-candidates` | Use module/package surfaces to avoid class-only tunnel vision. |
64
- | Scala | `surface`, `trace`, `call-graph`, `imports`, `imported-by` | `dead`, `similar-files`, `similar-chains`, `extract-candidates`, `stale-abstractions`, `unused-imports` | Confirm behavior with `code`. |
65
- | Kotlin | `surface`, `trace`, `call-graph`, `imports`, `imported-by` | `dead`, `similar-files`, `similar-chains`, `extract-candidates`, `stale-abstractions`, `unused-imports` | Confirm behavior with `code`. |
66
- | Rust | `trace`, `call-graph`, `refs`, `methods`, `surface` | `dead`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `similar-signatures`, `redundant-reexports` | Methods and surface are usually high signal. |
67
- | Go | `surface`, `trace`, `call-graph`, `refs`, `fan-in` | `dead`, `wrapper-candidates`, `passthrough-candidates`, `similar-files`, `similar-signatures`, `complexity` | Use package-level surfaces and confirm exported APIs before cleanup. |
68
- | C++ | `trace`, `refs`, `methods`, `surface`, `code` | `dead`, `wrapper-candidates`, `similar-files`, `similar-chains`, `extract-candidates`, `unused-imports` | Try `call-graph` after trace/refs/code. |
69
- | C | `trace`, `call-graph`, `refs`, `outline`, `fan-out` | `dead`, `wrapper-candidates`, `similar-files`, `similar-chains`, `extract-candidates`, `unused-imports` | Skip class/member commands. |
70
- | Ruby | `trace`, `call-graph`, `refs`, `imports`, `imported-by` | `dead`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `similar-files`, `similar-signatures` | Confirm dynamic-looking paths with source. |
71
- | C# | `surface`, `call-graph`, `trace`, `methods`, `refs` | `dead`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `similar-files`, `extract-candidates` | Use surfaces and methods together. |
72
- | Visual Basic | `surface`, `call-graph`, `trace`, `methods`, `refs` | `dead`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `similar-files`, `extract-candidates` | Use surfaces and methods together. |
73
- | Dart | `surface`, `call-graph`, `trace`, `imports`, `imported-by` | `dead`, `wrapper-candidates`, `stale-abstractions`, `similar-files`, `similar-signatures`, `redundant-reexports` | Confirm exported API shape with `surface`. |
74
- | PHP | `trace`, `refs`, `methods`, `surface`, `code` | `dead`, `wrapper-candidates`, `stale-abstractions`, `similar-files`, `similar-signatures`, `extract-candidates` | Try `call-graph` after trace/refs/code. |
75
- | Clojure / ClojureScript | `files`, `outline`, `trace`, `refs`, `call-graph` | `dead`, `similar-files`, `similar-signatures`, `complexity`, `complexity-hotspots` | SCIP indexing comes from `scip-clojure`; no TypeScript-style semantic provider is available. |
76
-
77
- ## Minimal Workflows
78
-
79
- Understand a feature:
80
-
81
- ```bash
82
- scip-query files <feature>
83
- scip-query outline <file>
84
- scip-query kind-counts --scope <feature>
85
- scip-query fan-out <file>
86
- scip-query trace <entry-symbol>
87
- scip-query call-graph <entry-symbol>
88
- scip-query code <entry-symbol>
89
- scip-query surface <module>
90
- ```
91
-
92
- Find DRY and de-bloat wins:
93
-
94
- ```bash
95
- scip-query health
96
- scip-query dead
97
- scip-query wrapper-candidates
98
- scip-query passthrough-candidates
99
- scip-query stale-abstractions
100
- scip-query similar-files
101
- scip-query similar-chains
102
- scip-query similar-signatures
103
- scip-query extract-candidates
104
- ```
105
-
106
- When recommending a command sequence, name the language and why these commands are highest-signal for it.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "SCIP Language Playbook"
3
- short_description: "Pick high-signal SCIP commands by language"
4
- default_prompt: "Use $scip-language-playbook to choose the best scip-query commands for this language and task."
@@ -1,158 +0,0 @@
1
- ---
2
- name: scip-maintainability
3
- description: Review maintainability with scip-query evidence. Use for hidden policies, scattered concepts, accidental variation, weak boundaries, system compression, architecture smells, structural refactors, or maintainability improvements beyond health scores.
4
- commands:
5
- - template: "scip-query stats"
6
- when: "Map evidence: repo-wide size before bounding the review."
7
- - template: "scip-query system <scope>"
8
- when: "Map evidence: files, symbols, deps in/out for the scope."
9
- - template: "scip-query surface <scope>"
10
- when: "Map evidence: what consumers actually use from the scope."
11
- - template: "scip-query change-surface <file>"
12
- when: "Map evidence: exports, consumers, and blast-radius risk."
13
- - template: "scip-query affected <symbol>"
14
- when: "Map evidence: transitive consumers of a candidate symbol."
15
- - template: "scip-query drift --patterns --architecture"
16
- when: "Map evidence: declared architecture violations plus boundary and pattern signals; treat opt-in pattern hits as leads, not findings."
17
- ---
18
-
19
- # scip-maintainability
20
-
21
- Use this skill to review a codebase as a maintainer who must make future changes safely. Maintainability is the degree to which real code units let a maintainer understand, verify, and change behavior without rediscovering hidden knowledge.
22
-
23
- Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
24
-
25
- <!-- BEGIN GENERATED SKILL COMMANDS -->
26
- ## Commands for this skill
27
-
28
- | Command | Purpose | When |
29
- | --- | --- | --- |
30
- | `scip-query stats` | Show index statistics | Map evidence: repo-wide size before bounding the review. |
31
- | `scip-query system <scope>` | Full module map: files, symbols, deps in/out | Map evidence: files, symbols, deps in/out for the scope. |
32
- | `scip-query surface <scope>` | What symbols consumers actually use from this module | Map evidence: what consumers actually use from the scope. |
33
- | `scip-query change-surface <file>` | Pre-change briefing: exports, consumers, and blast-radius risk | Map evidence: exports, consumers, and blast-radius risk. |
34
- | `scip-query affected <symbol>` | Transitive closure of symbols that could break if this symbol changes | Map evidence: transitive consumers of a candidate symbol. |
35
- | `scip-query drift --patterns --architecture` | Detect drift candidates: unused imports and declared architecture violations; pass --architecture for boundary context | Map evidence: declared architecture violations plus boundary and pattern signals; treat opt-in pattern hits as leads, not findings. |
36
-
37
- Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
38
- <!-- END GENERATED SKILL COMMANDS -->
39
-
40
- ## Terms
41
-
42
- A code smell is an observable codebase fact that predicts avoidable future mistakes because the same knowledge must be rediscovered, synchronized, or defended in more than one place.
43
-
44
- A concept boundary is the line around code units that exist for one reason to change.
45
-
46
- A hidden policy is a rule for choosing behavior when several plausible behaviors exist, but the rule lives in local branches, comments, conventions, or caller folklore instead of a named mechanism.
47
-
48
- A lifecycle is a repeatable sequence of states or steps that makes a result valid.
49
-
50
- Accidental variation is difference in code shape that does not correspond to behavior, domain facts, runtime constraints, or external contracts.
51
-
52
- Essential variation is difference that must remain because the real units differ: language grammars, user-visible APIs, runtime environments, or compatibility boundaries.
53
-
54
- System compression is replacing several mechanisms that perform the same role, policy, lifecycle, or surface job with fewer named mechanisms that preserve behavior.
55
-
56
- A unifying definition is the single essential trait that makes several code sites one concept; what makes it a test is that failing to state it proves the sites are not one concept, and consolidating them anyway would package-deal essential variation into a false abstraction.
57
-
58
- ## Rules
59
-
60
- 1. Ground claims in files, symbols, references, call graphs, dependencies, surfaces, and blast radius.
61
- 2. Do not chase health scores; detector counts are clues, not objectives.
62
- 3. Name concrete referents before naming the smell.
63
- 4. Preserve essential variation.
64
- 5. Add an abstraction only when it removes hidden policy, names a lifecycle, enforces a rule, or reduces concept count.
65
- 6. Prefer deletion, inlining, merging, generation, or enforcement before broad frameworks.
66
- 7. A scattered-concept or consolidation claim ships its unifying definition. If no single essential trait covers every cited site, the variation is essential: record it and do not consolidate.
67
-
68
- ## Workflow
69
-
70
- ### 1. Bound the review
71
-
72
- Restate the question:
73
-
74
- ```text
75
- What future-maintenance mistakes does this structure invite, and what smaller named mechanisms would prevent them without hiding real variation?
76
- ```
77
-
78
- Name the scope: repo, module, command family, query family, runtime surface, fixture set, or feature path.
79
-
80
- This step is complete only when the review question and scope are concrete.
81
-
82
- ### 2. Map evidence
83
-
84
- ```bash
85
- scip-query stats
86
- scip-query system <scope>
87
- scip-query surface <scope>
88
- scip-query files <pattern>
89
- scip-query outline <file>
90
- scip-query deps <file>
91
- scip-query rdeps <file>
92
- scip-query trace <symbol>
93
- scip-query call-graph <symbol>
94
- scip-query affected <symbol>
95
- scip-query change-surface <file>
96
- ```
97
-
98
- Use cleanup commands as probes: `health`, `similar`, `similar-files`, `similar-chains`, `extract-candidates`, `wrapper-candidates`, `passthrough-candidates`, `stale-abstractions`, `drift`, and `cycles`.
99
-
100
- This step is complete only when concrete units, consumers, tests, fallbacks, adapters, generated artifacts, and compatibility constraints are visible.
101
-
102
- ### 3. Build the role inventory
103
-
104
- For each cluster, ask:
105
-
106
- - What one concept appears in several places — and what single essential trait makes them one concept? If the trait cannot be stated, they are not one concept.
107
- - What policy is hidden?
108
- - What lifecycle is unnamed?
109
- - Which differences are essential?
110
- - What must a maintainer know that the local interface does not admit?
111
- - Would a smaller mechanism remove a reason to change, or only move code?
112
-
113
- This step is complete only when every candidate smell names its referents and its future-maintenance failure mode.
114
-
115
- ### 4. Rank pressure
116
-
117
- Prefer severe smells in this order:
118
-
119
- 1. Hidden correctness or evidence policy spread across modules.
120
- 2. Repeated lifecycle or pipeline with no owner.
121
- 3. Public surface exposing accidental internals.
122
- 4. Large module with unrelated reasons to change.
123
- 5. Tests that encode incident history without contract vocabulary.
124
- 6. Adapter families with repeated capability or fallback shapes.
125
- 7. Suppression comments that document architecture decisions instead of exceptions.
126
- 8. Thin wrappers and passthroughs that do not buy clarity.
127
-
128
- Reject smells that are aesthetic, unverifiable, or false compression.
129
-
130
- This step is complete only when each target is ranked, skipped, or deferred with evidence.
131
-
132
- ### 5. Choose a model
133
-
134
- For substantial changes, compare at least two models:
135
-
136
- - Conservative: delete or inline local bloat.
137
- - Shape-level: introduce one small mechanism for a repeated role or lifecycle.
138
- - Radical: replace a scattered surface with metadata, generation, or enforced policy.
139
-
140
- Evaluate behavior preserved, concept count removed, blast radius, deletion potential, false-abstraction failure mode, migration path, and verification cost.
141
-
142
- This step is complete only when the chosen model removes a concept or policy duplication rather than merely extracting a helper.
143
-
144
- ### 6. Produce a register or atlas
145
-
146
- For broad review, write a register under `docs/plans/` unless the user asks not to edit files. For implementation, write an atlas before editing.
147
-
148
- Use dispositions: `merge`, `delete`, `inline`, `extract`, `generate`, `enforce`, `supersede`, `defer`, `skip`.
149
-
150
- Every `merge`, `extract`, or `generate` entry carries its unifying definition and its strongest dissenter — the cited site most likely to differ essentially — with the evidence that it does not. A dissenter that survives moves the entry to `skip` with reason `essential variation`; the dissenter stays in the register either way.
151
-
152
- This step is complete only when each opportunity has evidence, disposition, dependency order, touch map, and validation plan.
153
-
154
- ### 7. Implement and verify when asked
155
-
156
- Implement the smallest named mechanism that matches the real concept. Keep essential variation near the adapter or domain code that knows it. After changes, run focused tests and routed postchecks from the shared reference, then invoke `scip-verify`.
157
-
158
- Report the smell addressed, mechanism introduced or removed, what was deliberately not compressed, and verification results.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "SCIP Maintainability"
3
- short_description: "Review hidden policy and boundaries"
4
- default_prompt: "Use $scip-maintainability to find maintainability risks, hidden policies, and weak boundaries with SCIP evidence."
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "SCIP Probe Reachability"
3
- short_description: "Prove parser/AST branches are reachable by running the real parser"
4
- default_prompt: "Enumerate the node-type/shape branches in the target parser or AST-consuming function, construct a minimal input per branch, run the real parser on each in a scratch script, and file findings for every unreached branch."
@@ -1,101 +0,0 @@
1
- ---
2
- name: scip-react-maintainability
3
- description: Review React maintainability with scip-query. Use for React, TSX, JSX, Next.js, duplicated components, hook candidates, large components, frontend health pressure, or verifying reuse after refactors.
4
- commands:
5
- - template: "scip-query react-component-duplicates --scope <scope> --full --json"
6
- when: "Bound and scan: duplicated JSX structure candidates."
7
- - template: "scip-query react-hook-candidates --scope <scope> --full --json"
8
- when: "Bound and scan: shared state/effect/request extraction candidates."
9
- - template: "scip-query react-large-component-pressure --scope <scope> --full --json"
10
- when: "Bound and scan: components carrying several reasons to change."
11
- - template: "scip-query recent-duplicates --scope <scope> --full --json"
12
- when: "Bound and scan: recent code re-implementing established components."
13
- - template: "scip-query similar <closest-existing-component-or-hook>"
14
- when: "Cross-check candidates: existing component or hook to reuse instead."
15
- - template: "scip-query health --scope <scope> --json"
16
- when: "Bound and scan: frontend health pressure for the scope."
17
- ---
18
-
19
- # scip-react-maintainability
20
-
21
- Use this skill to review React frontends as maintainable systems of components, hooks, JSX structure, and behavior lifecycles.
22
-
23
- Load shared mechanics from [`../_shared/SKILL.md`](../_shared/SKILL.md).
24
-
25
- <!-- BEGIN GENERATED SKILL COMMANDS -->
26
- ## Commands for this skill
27
-
28
- | Command | Purpose | When |
29
- | --- | --- | --- |
30
- | `scip-query react-component-duplicates --scope <scope> --full --json` | Find heuristic duplicated React component structure candidates from JSX tags, props, events, and bindings | Bound and scan: duplicated JSX structure candidates. |
31
- | `scip-query react-hook-candidates --scope <scope> --full --json` | Find heuristic React hook extraction candidates from shared state, effects, requests, and handlers | Bound and scan: shared state/effect/request extraction candidates. |
32
- | `scip-query react-large-component-pressure --scope <scope> --full --json` | Find heuristic large React component pressure candidates from component lines, JSX structure, and hook behavior | Bound and scan: components carrying several reasons to change. |
33
- | `scip-query recent-duplicates --scope <scope> --full --json` | Directional duplicate candidates: recent code that re-implements established callable, React, or Vue code | Bound and scan: recent code re-implementing established components. |
34
- | `scip-query similar <closest-existing-component-or-hook>` | Find heuristic function similarity candidates from callee fingerprints | Cross-check candidates: existing component or hook to reuse instead. |
35
- | `scip-query health --scope <scope> --json` | Composite codebase health report with prioritized action list | Bound and scan: frontend health pressure for the scope. |
36
-
37
- Use this shortlist first. Open [`../_shared/SKILL.md`](../_shared/SKILL.md) only when it is insufficient.
38
- <!-- END GENERATED SKILL COMMANDS -->
39
-
40
- ## Terms
41
-
42
- A React component duplicate candidate is a pair or group of rendered structures that repeat the same user-facing arrangement, controls, states, props, or data-presentation shape enough that a shared component may reduce drift.
43
-
44
- A React hook candidate is a pair or group of component behaviors that repeat the same state lifecycle, effects, requests, validation, persistence, callback policy, or derived-data rule enough that a shared hook may preserve behavior better.
45
-
46
- Large component pressure means one component or file contains several kinds of knowledge that change for different reasons.
47
-
48
- ## Workflow
49
-
50
- ### 1. Bound and scan
51
-
52
- Pick the narrowest React source root, feature area, or changed-file scope that still includes likely reuse partners. Run uncapped commands:
53
-
54
- ```bash
55
- scip-query react-component-duplicates --scope <scope> --full --json
56
- scip-query react-hook-candidates --scope <scope> --full --json
57
- scip-query react-large-component-pressure --scope <scope> --full --json
58
- scip-query recent-duplicates --scope <scope> --full --json
59
- scip-query health --scope <scope> --json
60
- ```
61
-
62
- This step is complete only when command scope, counts, and uncapped/full status are recorded.
63
-
64
- ### 2. Cross-check candidates
65
-
66
- - Component duplicate only: inspect for shared presentational component or existing component reuse.
67
- - Hook candidate only: inspect for shared behavior, lifecycle, request, validation, persistence, or derived-state policy.
68
- - Both: inspect for a feature-level concept needing both component and hook boundaries.
69
- - Large component only: split by reason to change, not by line count.
70
-
71
- Use:
72
-
73
- ```bash
74
- scip-query outline <file>
75
- scip-query deps <file>
76
- scip-query rdeps <file>
77
- scip-query similar-files --scope <scope>
78
- scip-query similar <closest-existing-component-or-hook>
79
- ```
80
-
81
- This step is complete only when each top candidate is reuse, extract, split, skip, or blocked.
82
-
83
- ### 3. Act on findings
84
-
85
- Prefer reuse before extraction. Extract components for repeated UI structure, states, props, slots/children, or design-system composition. Extract hooks for repeated state, effects, requests, subscriptions, memoized derivations, callbacks, or persistence. Keep domain-specific variation at call sites when essential.
86
-
87
- This step is complete only when the chosen action reduces future drift without creating boolean-soup APIs or wrapper components with no policy.
88
-
89
- ### 4. Verify
90
-
91
- Run routed postchecks from the shared reference, including React commands, `incomplete-migration`, `recent-duplicates`, `unused-params`, and wrapper/passthrough/stale checks, then invoke `scip-verify`.
92
-
93
- The work is complete only when acted-on candidate pairs disappear, weaken materially, or are explicitly accepted as essential variation.
94
-
95
- ## False Positive Checks
96
-
97
- Shared design-system primitives, icons, labels, route names, or test IDs are not enough. Similar JSX with different domain lifecycles may justify a presentational component but not a hook. A large file is review pressure, not proof of duplication.
98
-
99
- ## Report
100
-
101
- Report executive read, command evidence, candidate groups, recommended action, post-change proof, and remaining accepted variation.
@@ -1,4 +0,0 @@
1
- interface:
2
- display_name: "SCIP React Maintainability"
3
- short_description: "Review React reuse and component pressure"
4
- default_prompt: "Use $scip-react-maintainability to review React reuse, hooks, components, and frontend health pressure."