scip-query 0.22.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/CHANGELOG.md +500 -0
  2. package/README.md +13 -0
  3. package/dist/augment-vue-worker.js +1 -1
  4. package/dist/by-kind-H3P6BR5G.js +2 -0
  5. package/dist/call-graph-VTG2CUOQ.js +2 -0
  6. package/dist/call-graph-evidence-BociKRpF.d.ts +19 -0
  7. package/dist/chunk-2BMSSRBH.js +2 -0
  8. package/dist/{chunk-TAYD3AE7.js → chunk-2GJSD5GY.js} +2 -2
  9. package/dist/{chunk-TUQIPUDS.js → chunk-2M2LSIMY.js} +3 -3
  10. package/dist/{chunk-GIQ6CSL4.js → chunk-2N6WBNDC.js} +2 -2
  11. package/dist/{chunk-JHH5SCZ3.js → chunk-2OOY75BW.js} +2 -2
  12. package/dist/{chunk-EELPBR7E.js → chunk-2USA3S3P.js} +2 -2
  13. package/dist/chunk-2VAHDDLM.js +133 -0
  14. package/dist/chunk-2XWIUW5Z.js +455 -0
  15. package/dist/{chunk-57N6LN2A.js → chunk-3AF4TUFK.js} +2 -2
  16. package/dist/chunk-3D4BOXW6.js +20 -0
  17. package/dist/{chunk-FFJQZG6J.js → chunk-3LO4FST5.js} +2 -2
  18. package/dist/{chunk-HXOU4XNH.js → chunk-3WTY4LP2.js} +2 -2
  19. package/dist/{chunk-DPWKKNKI.js → chunk-3Z5AMSK6.js} +2 -2
  20. package/dist/{chunk-F24G5NBE.js → chunk-44IETFOU.js} +2 -2
  21. package/dist/chunk-4FR6GQIT.js +2 -0
  22. package/dist/chunk-4KBTHJLP.js +2 -0
  23. package/dist/chunk-5BIKR67W.js +2 -0
  24. package/dist/{chunk-DJAO2OZJ.js → chunk-5PROPLHI.js} +2 -2
  25. package/dist/chunk-5V7EPTII.js +2 -0
  26. package/dist/{chunk-VZ7NXSHV.js → chunk-62LPZCBQ.js} +2 -2
  27. package/dist/{chunk-LXQUF2RP.js → chunk-64O2JHQA.js} +2 -2
  28. package/dist/chunk-6D4F5VWG.js +10 -0
  29. package/dist/{chunk-NEIQPFBI.js → chunk-6ERFBC3X.js} +2 -2
  30. package/dist/{chunk-4HE7MVWD.js → chunk-6ILKOOGH.js} +2 -2
  31. package/dist/chunk-6MFXCMZC.js +2 -0
  32. package/dist/chunk-6O7FACKB.js +2 -0
  33. package/dist/{chunk-R6M456QG.js → chunk-6TS3KOXR.js} +2 -2
  34. package/dist/{chunk-7U2YQSDE.js → chunk-76QOU4PK.js} +2 -2
  35. package/dist/{chunk-25GWKRUZ.js → chunk-7DUI77BN.js} +2 -2
  36. package/dist/chunk-7F45LJKI.js +2 -0
  37. package/dist/{chunk-DEAB5TGT.js → chunk-7F7T6DCR.js} +2 -2
  38. package/dist/chunk-7H6VHWWJ.js +2 -0
  39. package/dist/chunk-7HXT6YLU.js +5 -0
  40. package/dist/{chunk-KZYID5KV.js → chunk-7R4V5ES6.js} +4 -4
  41. package/dist/chunk-7RIRIADH.js +7 -0
  42. package/dist/chunk-7ZLWLOGT.js +2 -0
  43. package/dist/{chunk-WHADK6OS.js → chunk-A4WEAK35.js} +2 -2
  44. package/dist/chunk-AADQLOQ4.js +38 -0
  45. package/dist/{chunk-XFMVKFSF.js → chunk-AN76MGUE.js} +2 -2
  46. package/dist/chunk-ANLNLY66.js +2 -0
  47. package/dist/chunk-ATXPTSEI.js +81 -0
  48. package/dist/{chunk-EELG7D3Q.js → chunk-AX7IDVFT.js} +2 -2
  49. package/dist/chunk-B3PYOSCX.js +2 -0
  50. package/dist/chunk-B7MPDEAK.js +3 -0
  51. package/dist/chunk-BBB5FBX4.js +2 -0
  52. package/dist/{chunk-Y2VM4CJC.js → chunk-BHKK5RJY.js} +2 -2
  53. package/dist/chunk-BJWFVAA5.js +2 -0
  54. package/dist/chunk-BKVWUP7Y.js +2 -0
  55. package/dist/{chunk-7XA3OM44.js → chunk-BKZYTLGE.js} +2 -2
  56. package/dist/chunk-BL6DCHQP.js +2 -0
  57. package/dist/chunk-BOW7SSQH.js +43 -0
  58. package/dist/{chunk-KQHJEU6V.js → chunk-C4RHHCKL.js} +2 -2
  59. package/dist/chunk-C7C6AKAT.js +117 -0
  60. package/dist/chunk-CD6M6LS2.js +16 -0
  61. package/dist/chunk-CFE6PSG6.js +2 -0
  62. package/dist/{chunk-GPGRZJ3R.js → chunk-CFNIGQMT.js} +2 -2
  63. package/dist/{chunk-K3XFWJI2.js → chunk-CKBUBRYD.js} +2 -2
  64. package/dist/chunk-CZW5MZ5B.js +2 -0
  65. package/dist/chunk-DBBZ63ZX.js +2 -0
  66. package/dist/chunk-DBN7DMJB.js +18 -0
  67. package/dist/{chunk-CKRWA452.js → chunk-DUULLZHZ.js} +2 -2
  68. package/dist/{chunk-6HRZQLOI.js → chunk-DV5Y5NOS.js} +2 -2
  69. package/dist/chunk-DZOIKCTM.js +3 -0
  70. package/dist/chunk-E4PKTOL3.js +2 -0
  71. package/dist/{chunk-GVOMSPGL.js → chunk-E65ELFKU.js} +2 -2
  72. package/dist/{chunk-VXJJTQYE.js → chunk-E7QR35ST.js} +2 -2
  73. package/dist/{chunk-2RE5OCHZ.js → chunk-EFSXAINW.js} +2 -2
  74. package/dist/{chunk-GY7CCCEZ.js → chunk-EHVEIEQN.js} +2 -2
  75. package/dist/{chunk-BVFYEEBH.js → chunk-EHYDXE3Z.js} +2 -2
  76. package/dist/{chunk-HISEUIL2.js → chunk-EP63Y6LD.js} +2 -2
  77. package/dist/chunk-EPX6NQN6.js +4 -0
  78. package/dist/chunk-ETC674NS.js +5 -0
  79. package/dist/{chunk-5H5WTJSD.js → chunk-F5GSBHC6.js} +2 -2
  80. package/dist/chunk-FH3DGXC6.js +2 -0
  81. package/dist/{chunk-2XCGSDIT.js → chunk-FI7VGOR4.js} +2 -2
  82. package/dist/chunk-FJF6VO2P.js +2 -0
  83. package/dist/{chunk-FELGD32K.js → chunk-FLMTCX5R.js} +2 -2
  84. package/dist/chunk-FVFDOIM3.js +2 -0
  85. package/dist/{chunk-AQ2PORIO.js → chunk-G2HU5WRN.js} +2 -2
  86. package/dist/{chunk-7YQOCABQ.js → chunk-G4ALYS4J.js} +2 -2
  87. package/dist/{chunk-SWK4XPUS.js → chunk-G56I7K4W.js} +2 -2
  88. package/dist/{chunk-JFQBRL3J.js → chunk-GC4DG2V5.js} +2 -2
  89. package/dist/chunk-GG45PK4S.js +4 -0
  90. package/dist/{chunk-XN22RGSR.js → chunk-GHNPACNP.js} +2 -2
  91. package/dist/{chunk-XU75YQN4.js → chunk-GINH3YQU.js} +2 -2
  92. package/dist/chunk-GTZZVLKJ.js +2 -0
  93. package/dist/chunk-GXXW5ZHH.js +2 -0
  94. package/dist/{chunk-RNKPYYYE.js → chunk-HAXXKRTD.js} +2 -2
  95. package/dist/chunk-HEZWBAZY.js +2 -0
  96. package/dist/chunk-HMEWLMML.js +2 -0
  97. package/dist/{chunk-2KVU55CW.js → chunk-HOBOVYPO.js} +2 -2
  98. package/dist/{chunk-2YC7YNKT.js → chunk-HRFQ6GW5.js} +2 -2
  99. package/dist/{chunk-RYOYJMGF.js → chunk-HX4X7KG3.js} +2 -2
  100. package/dist/{chunk-AZS7YPCB.js → chunk-HYT2R7LX.js} +2 -2
  101. package/dist/chunk-IKQVBVQL.js +40 -0
  102. package/dist/chunk-J6GLBBRK.js +4 -0
  103. package/dist/{chunk-TNG2FYS5.js → chunk-J7A4PWFX.js} +2 -2
  104. package/dist/chunk-JCSAZ35V.js +2 -0
  105. package/dist/{chunk-EWWY2ZFL.js → chunk-JDU2IV3A.js} +2 -2
  106. package/dist/{chunk-SB25YMEQ.js → chunk-JFMEXGFE.js} +2 -2
  107. package/dist/chunk-JFMI5SGB.js +4 -0
  108. package/dist/chunk-JJP37RGX.js +57 -0
  109. package/dist/chunk-JZ2A7LDM.js +5 -0
  110. package/dist/chunk-KNLQGXVH.js +80 -0
  111. package/dist/chunk-KVQCECPR.js +2 -0
  112. package/dist/{chunk-F24QUEQP.js → chunk-KXXORBZ2.js} +2 -2
  113. package/dist/{chunk-IKVNEGTW.js → chunk-L5KYH6U3.js} +2 -2
  114. package/dist/chunk-L6XHYJPZ.js +21 -0
  115. package/dist/chunk-L7KTFEAV.js +43 -0
  116. package/dist/{chunk-UAQ4T73O.js → chunk-LDXHR5EL.js} +2 -2
  117. package/dist/chunk-LEECKFCJ.js +2 -0
  118. package/dist/{chunk-LO5JSW2C.js → chunk-MHGDSBFX.js} +2 -2
  119. package/dist/{chunk-JUN5DOAK.js → chunk-MLQVVDG3.js} +2 -2
  120. package/dist/chunk-MOKUWRHO.js +3 -0
  121. package/dist/{chunk-44T4DUAA.js → chunk-MPYAPMNE.js} +2 -2
  122. package/dist/{chunk-ARVO6TTW.js → chunk-MV6SPXCR.js} +2 -2
  123. package/dist/{chunk-NRBNAECH.js → chunk-MWN53KRN.js} +2 -2
  124. package/dist/{chunk-TH6IC56G.js → chunk-MZPXPSUJ.js} +2 -2
  125. package/dist/{chunk-FBCVASUG.js → chunk-N55KIE46.js} +2 -2
  126. package/dist/{chunk-VMWUV6WB.js → chunk-NB4D3BNM.js} +2 -2
  127. package/dist/{chunk-JAT6C3VX.js → chunk-NGKBOT6G.js} +2 -2
  128. package/dist/{chunk-Q6T2CAJL.js → chunk-NJGKXKQF.js} +2 -2
  129. package/dist/chunk-NJQISBL4.js +8 -0
  130. package/dist/chunk-NJT3ZEKY.js +16 -0
  131. package/dist/{chunk-KFVSJX25.js → chunk-NKMKZP6A.js} +2 -2
  132. package/dist/chunk-NODFZ6ED.js +2 -0
  133. package/dist/{chunk-ERCYGVAM.js → chunk-NSM5IEVW.js} +2 -2
  134. package/dist/{chunk-YAGYMBEX.js → chunk-NTGUVNR2.js} +2 -2
  135. package/dist/{chunk-N7FP5H5U.js → chunk-NU3KFF2O.js} +8 -8
  136. package/dist/chunk-NWLVNU66.js +557 -0
  137. package/dist/{chunk-Q55NF3ZG.js → chunk-NYKZMCRC.js} +2 -2
  138. package/dist/{chunk-I6UTXNHU.js → chunk-O6BUXZEH.js} +2 -2
  139. package/dist/chunk-ODPDP7A4.js +3 -0
  140. package/dist/{chunk-ZAZGGSM3.js → chunk-OHIV323X.js} +2 -2
  141. package/dist/chunk-OIAPEKMT.js +3 -0
  142. package/dist/chunk-OIOC5EHF.js +3 -0
  143. package/dist/{chunk-YIHNPKWD.js → chunk-ONPPQM4G.js} +2 -2
  144. package/dist/{chunk-RHHCLWQ6.js → chunk-OUHEZBYI.js} +2 -2
  145. package/dist/{chunk-MSR2QRUE.js → chunk-OVGYW7UD.js} +2 -2
  146. package/dist/{chunk-OPSAW5DT.js → chunk-OYKU4B3Y.js} +2 -2
  147. package/dist/{chunk-5YRQIE2B.js → chunk-POBJ6FR2.js} +2 -2
  148. package/dist/{chunk-ZGW4HLPD.js → chunk-PSZPMMWN.js} +2 -2
  149. package/dist/chunk-PXTRBKRK.js +3 -0
  150. package/dist/{chunk-U2N2KE7A.js → chunk-Q5JRIHT3.js} +2 -2
  151. package/dist/{chunk-GRX7JOXQ.js → chunk-Q7ATHARX.js} +2 -2
  152. package/dist/{chunk-5ZMBRQFC.js → chunk-Q7CSKIDM.js} +2 -2
  153. package/dist/{chunk-HG722PO7.js → chunk-QBQE7ZJ5.js} +2 -2
  154. package/dist/{chunk-Z2PZVKPR.js → chunk-QH22UIXP.js} +2 -2
  155. package/dist/chunk-QXCKQTKR.js +60 -0
  156. package/dist/chunk-RBAD4GJ2.js +13 -0
  157. package/dist/chunk-RMDPFPNW.js +2 -0
  158. package/dist/chunk-ROPJDEJZ.js +4 -0
  159. package/dist/{chunk-56NQAEPJ.js → chunk-RVZC6TJE.js} +2 -2
  160. package/dist/{chunk-XJX6LGHL.js → chunk-S4QZBKSR.js} +2 -2
  161. package/dist/chunk-SCPMZ73U.js +2 -0
  162. package/dist/{chunk-7IQXARSQ.js → chunk-SIAP5RGI.js} +2 -2
  163. package/dist/{chunk-4TQU4TX2.js → chunk-SIX4RFR3.js} +2 -2
  164. package/dist/{chunk-AYPDH2LU.js → chunk-SKKXTABJ.js} +2 -2
  165. package/dist/{chunk-ZYM4HOFA.js → chunk-SSRFUQBD.js} +2 -2
  166. package/dist/chunk-SYVJEEUJ.js +3 -0
  167. package/dist/chunk-T3CZAZSI.js +8 -0
  168. package/dist/chunk-T3I6NHBH.js +2 -0
  169. package/dist/{chunk-GDRJB3SB.js → chunk-T6DWDI5E.js} +2 -2
  170. package/dist/chunk-T6HRIROJ.js +7 -0
  171. package/dist/{chunk-OTSPRVNW.js → chunk-TAA7HXHE.js} +2 -2
  172. package/dist/{chunk-IJMD6BRI.js → chunk-TJ2JQYT3.js} +2 -2
  173. package/dist/chunk-TULNMD5T.js +368 -0
  174. package/dist/chunk-U2FPY5XA.js +3 -0
  175. package/dist/chunk-U3SXIMII.js +38 -0
  176. package/dist/{chunk-ENWQWA2R.js → chunk-U6KCHXJ4.js} +2 -2
  177. package/dist/chunk-UH3XSKS5.js +9 -0
  178. package/dist/{chunk-UDY7MIAW.js → chunk-UIFUZVCC.js} +2 -2
  179. package/dist/{chunk-BDGTPN27.js → chunk-UXKURIVI.js} +2 -2
  180. package/dist/{chunk-FGNCOQUX.js → chunk-V2RBODHL.js} +2 -2
  181. package/dist/chunk-VBKUWB6N.js +2 -0
  182. package/dist/{chunk-PIFTZEEM.js → chunk-VBV6ALJE.js} +2 -2
  183. package/dist/{chunk-2OXVP5U5.js → chunk-VDGFWCQV.js} +2 -2
  184. package/dist/chunk-VDSDOEWF.js +2 -0
  185. package/dist/{chunk-C76O5MDS.js → chunk-VZPWVCLN.js} +2 -2
  186. package/dist/chunk-WDSFQDPN.js +2 -0
  187. package/dist/{chunk-BTVKZGWT.js → chunk-WFA35BGR.js} +2 -2
  188. package/dist/{chunk-H7CG6LOE.js → chunk-WLMP3OCW.js} +2 -2
  189. package/dist/{chunk-WOOAY3PA.js → chunk-WSA52GOR.js} +2 -2
  190. package/dist/chunk-WYPL7GF7.js +2 -0
  191. package/dist/{chunk-RDULNRSJ.js → chunk-X3YVZAKZ.js} +2 -2
  192. package/dist/chunk-X6OGVFIT.js +2 -0
  193. package/dist/{chunk-ISWFRGJ6.js → chunk-XKXTR6ZI.js} +2 -2
  194. package/dist/chunk-Y5DFAW5W.js +4 -0
  195. package/dist/chunk-YSYPDRD5.js +3 -0
  196. package/dist/chunk-ZFVPWH62.js +5 -0
  197. package/dist/chunk-ZGIHTH27.js +2 -0
  198. package/dist/{chunk-QKT4UI2Y.js → chunk-ZGIQN2SX.js} +2 -2
  199. package/dist/chunk-ZHG4WAHR.js +12 -0
  200. package/dist/{chunk-CLG6DWVS.js → chunk-ZKB2XUEN.js} +2 -2
  201. package/dist/chunk-ZLMXIQLC.js +21 -0
  202. package/dist/chunk-ZMCQIHI4.js +2 -0
  203. package/dist/cli-main.js +2 -2
  204. package/dist/code-TAVIKWJI.js +2 -0
  205. package/dist/code-result-json-5FEFQCAQ.js +2 -0
  206. package/dist/command-descriptors-7BKH53Y3.js +343 -0
  207. package/dist/dataflow-GFBTVDH3.js +2 -0
  208. package/dist/dependence-slice-GWGQCODG.js +2 -0
  209. package/dist/deps-4QHVDPYA.js +2 -0
  210. package/dist/direct-navigation-4UBC6HNW.js +3 -0
  211. package/dist/entry-map-QCTF4RVY.js +2 -0
  212. package/dist/files-M2UBF5HJ.js +2 -0
  213. package/dist/frontend-profile-roles-D7eCum8P.d.ts +10 -0
  214. package/dist/{health-CPp2Jf1Z.d.ts → health-BI2a9WPy.d.ts} +60 -2
  215. package/dist/hierarchy-2UIHRLW4.js +2 -0
  216. package/dist/imports-WIE3YZOB.js +2 -0
  217. package/dist/index.d.ts +1 -1
  218. package/dist/index.js +1 -1
  219. package/dist/members-YKD636DA.js +2 -0
  220. package/dist/methods-VDF4IMYG.js +2 -0
  221. package/dist/output-continuation-command-4UMDOOLO.js +3 -0
  222. package/dist/output-pagination-2GME6OPY.js +19 -0
  223. package/dist/postinstall.js +1 -1
  224. package/dist/project-reindex-XEQTRCV5.js +3 -0
  225. package/dist/queries/affected.js +1 -1
  226. package/dist/queries/anchors.d.ts +1 -1
  227. package/dist/queries/anchors.js +1 -1
  228. package/dist/queries/architecture.js +1 -1
  229. package/dist/queries/bottlenecks.js +1 -1
  230. package/dist/queries/by-kind.js +1 -1
  231. package/dist/queries/call-graph.d.ts +2 -0
  232. package/dist/queries/call-graph.js +1 -1
  233. package/dist/queries/change-surface.js +1 -1
  234. package/dist/queries/cleanup-plan.js +1 -1
  235. package/dist/queries/co-change.d.ts +20 -2
  236. package/dist/queries/co-change.js +1 -1
  237. package/dist/queries/code.js +1 -1
  238. package/dist/queries/complexity-hotspots.js +1 -1
  239. package/dist/queries/complexity.js +1 -1
  240. package/dist/queries/context.js +1 -1
  241. package/dist/queries/convergence.js +1 -1
  242. package/dist/queries/coupling.js +1 -1
  243. package/dist/queries/cycles.js +1 -1
  244. package/dist/queries/dataflow.js +1 -1
  245. package/dist/queries/dead.d.ts +2 -0
  246. package/dist/queries/dead.js +1 -1
  247. package/dist/queries/decorative-checkers.js +1 -1
  248. package/dist/queries/deep-chains.js +1 -1
  249. package/dist/queries/dependence-slice.js +1 -1
  250. package/dist/queries/dependency-depth.js +1 -1
  251. package/dist/queries/deps.js +1 -1
  252. package/dist/queries/diff-impact.d.ts +9 -0
  253. package/dist/queries/diff-impact.js +1 -1
  254. package/dist/queries/doc-drift.js +1 -1
  255. package/dist/queries/drift.js +1 -1
  256. package/dist/queries/duplicate-bodies.d.ts +28 -1
  257. package/dist/queries/duplicate-bodies.js +1 -1
  258. package/dist/queries/entry-map.d.ts +1 -1
  259. package/dist/queries/entry-map.js +1 -1
  260. package/dist/queries/evidence.js +1 -1
  261. package/dist/queries/extract-candidates.d.ts +50 -23
  262. package/dist/queries/extract-candidates.js +1 -1
  263. package/dist/queries/fan.js +1 -1
  264. package/dist/queries/files.js +1 -1
  265. package/dist/queries/health.d.ts +1 -1
  266. package/dist/queries/health.js +1 -1
  267. package/dist/queries/hierarchy.js +1 -1
  268. package/dist/queries/hotspots.js +1 -1
  269. package/dist/queries/imports.js +1 -1
  270. package/dist/queries/incomplete-migration.js +1 -1
  271. package/dist/queries/index.d.ts +4 -3
  272. package/dist/queries/index.js +1 -1
  273. package/dist/queries/isolated.js +1 -1
  274. package/dist/queries/locality-candidates.js +1 -1
  275. package/dist/queries/members.js +1 -1
  276. package/dist/queries/methods.js +1 -1
  277. package/dist/queries/not-implemented.js +1 -1
  278. package/dist/queries/outline.js +1 -1
  279. package/dist/queries/passthrough-candidates.d.ts +9 -1
  280. package/dist/queries/passthrough-candidates.js +1 -1
  281. package/dist/queries/plan-context.js +1 -1
  282. package/dist/queries/react-component-duplicates.d.ts +19 -3
  283. package/dist/queries/react-component-duplicates.js +1 -1
  284. package/dist/queries/react-hook-candidates.d.ts +22 -3
  285. package/dist/queries/react-hook-candidates.js +1 -1
  286. package/dist/queries/react-large-component-pressure.d.ts +17 -3
  287. package/dist/queries/react-large-component-pressure.js +1 -1
  288. package/dist/queries/recent-duplicates.js +1 -1
  289. package/dist/queries/redundant-reexports.js +1 -1
  290. package/dist/queries/reference-neighborhood.js +1 -1
  291. package/dist/queries/reference-reachability.js +1 -1
  292. package/dist/queries/refs.js +1 -1
  293. package/dist/queries/self-audit.d.ts +7 -1
  294. package/dist/queries/self-audit.js +1 -1
  295. package/dist/queries/similar-chains.js +1 -1
  296. package/dist/queries/similar-files.js +1 -1
  297. package/dist/queries/similar-signatures.js +1 -1
  298. package/dist/queries/similar.js +1 -1
  299. package/dist/queries/slice.js +1 -1
  300. package/dist/queries/source-inspection.js +1 -1
  301. package/dist/queries/source-search.js +1 -1
  302. package/dist/queries/stale-abstractions.js +1 -1
  303. package/dist/queries/surface.js +1 -1
  304. package/dist/queries/symbols.js +1 -1
  305. package/dist/queries/system-map.d.ts +1 -1
  306. package/dist/queries/system-map.js +1 -1
  307. package/dist/queries/system.js +1 -1
  308. package/dist/queries/test-quality.js +1 -1
  309. package/dist/queries/trace.js +1 -1
  310. package/dist/queries/twin-ab.js +1 -1
  311. package/dist/queries/twin-drift.d.ts +22 -6
  312. package/dist/queries/twin-drift.js +1 -1
  313. package/dist/queries/unused-imports.js +1 -1
  314. package/dist/queries/unused-params.js +1 -1
  315. package/dist/queries/value-flow.js +1 -1
  316. package/dist/queries/vue-component-duplicates.js +1 -1
  317. package/dist/queries/vue-composable-candidates.js +1 -1
  318. package/dist/queries/vue-large-view-pressure.js +1 -1
  319. package/dist/queries/wrapper-candidates.d.ts +16 -1
  320. package/dist/queries/wrapper-candidates.js +1 -1
  321. package/dist/query-service-fastpath.js +5 -5
  322. package/dist/query-service-server.js +3 -3
  323. package/dist/refs-JNK5CLM7.js +2 -0
  324. package/dist/refs-pagination-6BLRYGMV.js +2 -0
  325. package/dist/reindex-worker.js +25 -25
  326. package/dist/reindex.d.ts +3 -2
  327. package/dist/reindex.js +35 -35
  328. package/dist/runtime.d.ts +34 -2
  329. package/dist/runtime.js +4 -4
  330. package/dist/rust-semantic-session-server.js +1 -1
  331. package/dist/rust-semantic-session-worker.js +1 -1
  332. package/dist/rust-semantic-worker.js +1 -1
  333. package/dist/{scip-cli-H-n59izO.d.ts → scip-cli-DOerTq-R.d.ts} +42 -4
  334. package/dist/slice-PHPVNCWX.js +2 -0
  335. package/dist/surface-MQX5MPIV.js +2 -0
  336. package/dist/symbol-resolution-DBLVXLBC.js +2 -0
  337. package/dist/system-JOPKV4OG.js +2 -0
  338. package/dist/trace-I2P2YFH4.js +2 -0
  339. package/dist/typescript-mailbox-worker.js +1 -1
  340. package/dist/value-flow-JJVMF7NP.js +2 -0
  341. package/dist/watch-server.js +3 -3
  342. package/docs/COMMAND_REFERENCE.md +2 -2
  343. package/docs/DETECTOR_GUIDE.md +51 -12
  344. package/docs/accuracy-audit-checklist.md +36 -13
  345. package/docs/locality-analyzer-design.md +9 -9
  346. package/package.json +2 -2
  347. package/skills/conductor/SKILL.md +110 -0
  348. package/skills/conductor/agents/openai.yaml +4 -0
  349. package/skills/principal-maintainability-review/SKILL.md +273 -0
  350. package/skills/principal-maintainability-review/agents/openai.yaml +4 -0
  351. package/skills/scip-calibrate/SKILL.md +102 -0
  352. package/skills/scip-calibrate/agents/openai.yaml +4 -0
  353. package/skills/scip-claim-audit/SKILL.md +113 -0
  354. package/skills/scip-claim-audit/agents/openai.yaml +4 -0
  355. package/skills/scip-probe-reachability/SKILL.md +93 -0
  356. package/skills/scip-probe-reachability/agents/openai.yaml +4 -0
  357. package/skills/scip-root-cause/SKILL.md +160 -0
  358. package/skills/scip-root-cause/agents/openai.yaml +4 -0
  359. package/skills/scip-system-compression/SKILL.md +252 -0
  360. package/skills/scip-system-compression/agents/openai.yaml +4 -0
  361. package/skills/scip-system-compression/references/compression-atlas.md +116 -0
  362. package/skills/scip-system-compression/references/compression-patterns.md +87 -0
  363. package/skills/scip-twin-drift/SKILL.md +109 -0
  364. package/skills/scip-twin-drift/agents/openai.yaml +4 -0
  365. package/dist/by-kind-4IYG2SKW.js +0 -2
  366. package/dist/call-graph-WQNXMNNN.js +0 -2
  367. package/dist/call-graph-evidence-lZa2dwQA.d.ts +0 -11
  368. package/dist/chunk-2BTJALUS.js +0 -454
  369. package/dist/chunk-3QXC54FQ.js +0 -3
  370. package/dist/chunk-3TJY6M3B.js +0 -7
  371. package/dist/chunk-42W3LFUK.js +0 -13
  372. package/dist/chunk-4GAQ6FI4.js +0 -43
  373. package/dist/chunk-6NC3YSPY.js +0 -38
  374. package/dist/chunk-6VEFRPTD.js +0 -5
  375. package/dist/chunk-7C26EKLZ.js +0 -4
  376. package/dist/chunk-7JYHQAH2.js +0 -22
  377. package/dist/chunk-7KSO2OAP.js +0 -2
  378. package/dist/chunk-7XZGZBSQ.js +0 -2
  379. package/dist/chunk-A77SCPW2.js +0 -3
  380. package/dist/chunk-AK3PYTIK.js +0 -5
  381. package/dist/chunk-AMIMMNA4.js +0 -11
  382. package/dist/chunk-AUY5BL74.js +0 -2
  383. package/dist/chunk-BDHFVH2M.js +0 -18
  384. package/dist/chunk-BECZLYNU.js +0 -8
  385. package/dist/chunk-BUTEIZKP.js +0 -10
  386. package/dist/chunk-BWVQP3LB.js +0 -38
  387. package/dist/chunk-BYDAFMSR.js +0 -57
  388. package/dist/chunk-BZYSGZRK.js +0 -2
  389. package/dist/chunk-C7IJMOFP.js +0 -134
  390. package/dist/chunk-CBBHFNLX.js +0 -2
  391. package/dist/chunk-D2MVJSP4.js +0 -21
  392. package/dist/chunk-D35XIZGN.js +0 -2
  393. package/dist/chunk-DKM723YF.js +0 -79
  394. package/dist/chunk-DRENNWRG.js +0 -2
  395. package/dist/chunk-E44IVWIJ.js +0 -367
  396. package/dist/chunk-EDMB6SSO.js +0 -7
  397. package/dist/chunk-EETGXQY7.js +0 -3
  398. package/dist/chunk-FKGQOTKD.js +0 -2
  399. package/dist/chunk-GH5YSGZL.js +0 -5
  400. package/dist/chunk-GQIDEID3.js +0 -2
  401. package/dist/chunk-HCVJR2V4.js +0 -3
  402. package/dist/chunk-IMKZEXZG.js +0 -2
  403. package/dist/chunk-ISIQLPJ2.js +0 -61
  404. package/dist/chunk-IXESDH3J.js +0 -2
  405. package/dist/chunk-JJ62MTQH.js +0 -40
  406. package/dist/chunk-JT6XX7QY.js +0 -8
  407. package/dist/chunk-KFOYCQAJ.js +0 -9
  408. package/dist/chunk-LRI5OMPE.js +0 -2
  409. package/dist/chunk-MHIEP7EG.js +0 -4
  410. package/dist/chunk-NK3JMP22.js +0 -2
  411. package/dist/chunk-NVSZNESQ.js +0 -2
  412. package/dist/chunk-OJNK5ALA.js +0 -2
  413. package/dist/chunk-OXYAWIEA.js +0 -2
  414. package/dist/chunk-OZETODHH.js +0 -2
  415. package/dist/chunk-PBUH2P5S.js +0 -3
  416. package/dist/chunk-PLJUQFQN.js +0 -2
  417. package/dist/chunk-PLYUVM4F.js +0 -2
  418. package/dist/chunk-PXXYQK55.js +0 -2
  419. package/dist/chunk-Q5TA4OY4.js +0 -20
  420. package/dist/chunk-Q7GBK5T7.js +0 -81
  421. package/dist/chunk-QLBSG7U5.js +0 -3
  422. package/dist/chunk-QWKHW6VZ.js +0 -2
  423. package/dist/chunk-RPL3ARU7.js +0 -16
  424. package/dist/chunk-SVHTMVA4.js +0 -4
  425. package/dist/chunk-T6QD2ZQB.js +0 -43
  426. package/dist/chunk-TD7VKJ2Y.js +0 -117
  427. package/dist/chunk-TKDNDQA7.js +0 -3
  428. package/dist/chunk-TQZV7KV4.js +0 -2
  429. package/dist/chunk-TUSPIVZ3.js +0 -4
  430. package/dist/chunk-URSGGIZX.js +0 -2
  431. package/dist/chunk-UT7TADJX.js +0 -2
  432. package/dist/chunk-V4NG5OMS.js +0 -554
  433. package/dist/chunk-VTCIYFEK.js +0 -2
  434. package/dist/chunk-VU6LIWHT.js +0 -2
  435. package/dist/chunk-VUSKPCUB.js +0 -2
  436. package/dist/chunk-WN3TCGJ4.js +0 -2
  437. package/dist/chunk-WSLEJSFR.js +0 -2
  438. package/dist/chunk-WYZIHUPZ.js +0 -16
  439. package/dist/chunk-XE33FV5W.js +0 -2
  440. package/dist/chunk-XGGBK66W.js +0 -4
  441. package/dist/chunk-XSWYJCAK.js +0 -2
  442. package/dist/chunk-Y334QQU5.js +0 -3
  443. package/dist/chunk-Z2AWCTN6.js +0 -2
  444. package/dist/chunk-ZOXKSQQB.js +0 -2
  445. package/dist/chunk-ZPASRBLF.js +0 -2
  446. package/dist/chunk-ZZ3Z7D56.js +0 -2
  447. package/dist/code-EQJFDT6I.js +0 -2
  448. package/dist/code-result-json-7UWIWBOO.js +0 -2
  449. package/dist/command-descriptors-ORNTVNYV.js +0 -342
  450. package/dist/dataflow-6VL54GX5.js +0 -2
  451. package/dist/dependence-slice-DT2NUHD2.js +0 -2
  452. package/dist/deps-DB7H5IKC.js +0 -2
  453. package/dist/direct-navigation-O3LUAYWQ.js +0 -3
  454. package/dist/entry-map-6K62RV3D.js +0 -2
  455. package/dist/files-MSLD7MO6.js +0 -2
  456. package/dist/hierarchy-IVBXAKFA.js +0 -2
  457. package/dist/imports-FRAVZ3Y2.js +0 -2
  458. package/dist/members-KJOJDYGO.js +0 -2
  459. package/dist/methods-2AYABBT3.js +0 -2
  460. package/dist/output-continuation-command-JHMPH6NC.js +0 -3
  461. package/dist/output-pagination-3OFL2MJV.js +0 -19
  462. package/dist/project-reindex-HYO4WD7Z.js +0 -3
  463. package/dist/refs-ARMA6XUJ.js +0 -2
  464. package/dist/refs-pagination-VUGIWN6U.js +0 -2
  465. package/dist/slice-YOB5YFAM.js +0 -2
  466. package/dist/surface-VY5EFWTW.js +0 -2
  467. package/dist/symbol-resolution-DGQN4XIV.js +0 -2
  468. package/dist/system-2KQ3QD2P.js +0 -2
  469. package/dist/trace-HTIPTXAE.js +0 -2
  470. package/dist/value-flow-5FV3VQI7.js +0 -2
@@ -91,15 +91,15 @@ The output should include confidence, reasons, counterevidence, and the exact co
91
91
 
92
92
  The locality analyzer should not replace existing analyzers. It should complete their story.
93
93
 
94
- | Existing analyzer | What it says today | Locality companion question |
95
- | ---------------------------------------------------- | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
96
- | `react-large-component-pressure` | This React component is too large. | If pieces are extracted, which ones are private, feature-local, or shared? |
97
- | `vue-large-view-pressure` | This Vue SFC is too large. | Should extracted child components/composables live beside the view, in the feature, or in app shared? |
98
- | `extract-candidates` | This function contains a possible extraction cluster. | Would the extracted helper have one real owner or a broader consumer set? |
99
- | `react-hook-candidates`, `vue-composable-candidates` | Several components repeat behavior. | Is the hook/composable local to one feature or reusable across domains? |
100
- | `recent-duplicates`, `echo` | New code duplicates older code. | Which existing owner should the new code reuse, and would reuse widen the wrong API? |
101
- | `incomplete-migration` | A helper extraction stopped halfway. | Is the helper in the right place for all remaining call sites? |
102
- | `co-change` | Files move together historically. | Does history imply a hidden shared owner or only a local synchronization point? |
94
+ | Existing analyzer | What it says today | Locality companion question |
95
+ | ---------------------------------------------------- | ------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
96
+ | `react-large-component-pressure` | This React component is too large. | If pieces are extracted, which ones are private, feature-local, or shared? |
97
+ | `vue-large-view-pressure` | This Vue SFC is too large. | Should extracted child components/composables live beside the view, in the feature, or in app shared? |
98
+ | `extract-candidates` | This function has a region of exclusive callees. | Would the extracted helper have one real owner or a broader consumer set? |
99
+ | `react-hook-candidates`, `vue-composable-candidates` | Several components repeat behavior. | Is the hook/composable local to one feature or reusable across domains? |
100
+ | `recent-duplicates`, `echo` | New code duplicates older code. | Which existing owner should the new code reuse, and would reuse widen the wrong API? |
101
+ | `incomplete-migration` | A helper extraction stopped halfway. | Is the helper in the right place for all remaining call sites? |
102
+ | `co-change` | Files move together historically. | Does history imply a hidden shared owner or only a local synchronization point? |
103
103
 
104
104
  ## Algorithm Sketch
105
105
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "scip-query",
3
- "version": "0.22.0",
3
+ "version": "0.24.0",
4
4
  "description": "Evidence and verification for AI coding agents: map code, reuse concepts, finish migrations, and gate diffs.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -371,7 +371,7 @@
371
371
  "api:report": "node scripts/api-surface-contract.mjs report",
372
372
  "api:check": "npm run build && node scripts/api-surface-contract.mjs check && tsc -p tests/fixtures/public-api-consumer/tsconfig.json",
373
373
  "api:update": "npm run build && node scripts/api-surface-contract.mjs update",
374
- "lint": "npm run format:check && eslint src tests tsup.config.ts scripts/api-surface-contract.mjs scripts/audit-production-dependencies.mjs scripts/benchmark-cold-reindex.ts scripts/benchmark-graph-literal.ts scripts/benchmark-query-service.ts scripts/benchmark-reindex-accounting.ts scripts/benchmark-source-search.ts scripts/build-scip-windows.mjs scripts/cache-lifecycle-soak.ts scripts/codex-exploration-sandbox.mjs scripts/codex-exploration-trial-core.mjs scripts/codex-exploration-trial.mjs scripts/compare-exploration-trials.mjs scripts/exploration-benchmark-core.mjs scripts/exploration-benchmark.mjs scripts/npm-release-state.ts scripts/npm-release.ts scripts/publish-scip-windows.ts scripts/release-npm-guard.ts scripts/release-npm.ts scripts/scip-windows-package-identity.ts scripts/scip-windows-provenance.mjs scripts/scip-windows-release.ts scripts/verify-identity-collision-cli.mjs scripts/verify-scip-windows.mjs scripts/verify-scip-windows-registry.ts skills/scip-explore/scripts/capture-evidence.mjs && npm run api:check && node scripts/check-skill-links.mjs",
374
+ "lint": "npm run format:check && eslint src tests tsup.config.ts scripts/api-surface-contract.mjs scripts/audit-production-dependencies.mjs scripts/benchmark-cold-reindex.ts scripts/benchmark-graph-literal.ts scripts/benchmark-query-service.ts scripts/benchmark-reindex-accounting.ts scripts/benchmark-source-search.ts scripts/build-scip-windows.mjs scripts/cache-lifecycle-soak.ts scripts/codex-exploration-sandbox.mjs scripts/codex-exploration-trial-core.mjs scripts/codex-exploration-trial.mjs scripts/compare-exploration-trials.mjs scripts/exploration-benchmark-core.mjs scripts/exploration-benchmark.mjs scripts/npm-release-state.ts scripts/npm-release.ts scripts/publish-scip-windows.ts scripts/release-npm-guard.ts scripts/release-npm.ts scripts/scip-windows-package-identity.ts scripts/scip-windows-provenance.mjs scripts/scip-windows-release.ts scripts/score-detector-labels.ts scripts/verify-identity-collision-cli.mjs scripts/verify-scip-windows.mjs scripts/verify-scip-windows-registry.ts skills/scip-explore/scripts/capture-evidence.mjs && npm run api:check && node scripts/check-skill-links.mjs",
375
375
  "build:scip-windows": "node scripts/build-scip-windows.mjs",
376
376
  "verify:scip-windows": "node scripts/verify-scip-windows.mjs",
377
377
  "verify:identity-collision-cli": "node scripts/verify-identity-collision-cli.mjs",
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: conductor
3
+ description: Plan and conduct multi-step engineering programs like a skeptical principal engineer. Use for writing executable multi-phase plans, delegating implementation, reviewing another agent's work, or carrying a large change end to end with verification at every handoff.
4
+ ---
5
+
6
+ # conductor
7
+
8
+ This skill is how to run a _program_ of work: planning, delegation, review,
9
+ and closure. It is not how to write one change plan; use `$scip-plan` for an
10
+ individual change in a scip-query-indexed repository.
11
+
12
+ ## The Three Laws
13
+
14
+ 1. **A green result you have never seen fail is unverified.** Applies to
15
+ tests, gates, reports from other agents, and your own checks.
16
+ `$scip-integrity-audit` is the same law aimed at code.
17
+ 2. **A plan is a contract for a less-capable executor, not a note to self.**
18
+ If a competent-but-uninspired agent could not execute a step without
19
+ guessing, the step is not finished being written.
20
+ 3. **Nothing is silent.** Every finding, deviation, and shortcut is either
21
+ fixed or written down with a reason someone else would accept. Zero
22
+ percent silent is the invariant; "fixed everything" is not.
23
+
24
+ ## Writing the Plan
25
+
26
+ - **Goal states what DONE MEANS falsifiably**: a command someone can run
27
+ and a result they can check, not an aspiration.
28
+ - **Pre-register acceptance benchmarks.** Before any work: measure the
29
+ current number (test count, timing, finding count, proof line), write it
30
+ in the plan, and state the target number. Work that cannot move a
31
+ pre-registered number is scope to question.
32
+ - **Every step carries five fields**: file anchor with verified current
33
+ behavior (cite how you know); the exact change; the validation command
34
+ with expected output; testability design (pure core, injected effects);
35
+ why this step is safe _in this order_. "Update X" with no current and
36
+ target behavior is a wish, not a step.
37
+ - **Order phases by information gain and risk**: blockers and
38
+ evidence-integrity first; cheap discriminating probes before expensive
39
+ builds; measurement before optimization; anything not yet decided by the
40
+ human is a GATED phase the executor must not start. Infrastructure the
41
+ later steps inherit (a labeling choke point, a shared helper layer)
42
+ lands before the features that need it.
43
+ - **Flag one-way doors** with their migration path, and keep an explicit
44
+ DEFER list so cut scope is visible instead of forgotten.
45
+ - **Include the working agreement**: ONE COMMIT PER STEP (bisectability is
46
+ non-negotiable; phase-level commits hide which step broke), the exact
47
+ gate commands, meaning the FULL gate set the repo defines per phase
48
+ (tests, typecheck, lint and format, build) and not just focused tests
49
+ (focused tests hide cross-phase regressions; omitting the linter is how
50
+ red mains ship), regeneration duties, and the deviation protocol:
51
+ "if source contradicts an anchor, BLOCKED-note it and continue; never
52
+ improvise silently."
53
+
54
+ ## Conducting the Work
55
+
56
+ - **Delegate breadth, keep judgment.** Fan out mechanical, scoped work;
57
+ personally own anything requiring taste, cross-cutting context, or the
58
+ final word on "is this real."
59
+ - **Concurrent agents get disjoint write scopes**, named in their briefs.
60
+ If a collision happens anyway: stop racing, apply-verify-commit
61
+ atomically in one action, and re-sequence to a single writer.
62
+ - **Never accept a report; reproduce its evidence.** On every handoff,
63
+ choose the _minimal discriminating probe_: the one command most likely to
64
+ expose the report being wrong (a mutation input, a hand count, the
65
+ benchmark number, a `scip-query diff-impact` over the claimed change), and
66
+ run it yourself. A report verified by reading it is not verified.
67
+ - **Make the commit cadence mechanical, not aspirational.** At every step
68
+ boundary run the arithmetic check: steps completed equals commits made. If
69
+ they differ, stop and commit before touching anything new. "I'll commit
70
+ when it's all done" is the signature decay of a long or low-effort run.
71
+ A self-check that is a count cannot be rationalized.
72
+ - **Loop until the gate is quiet**: fix, re-run the discriminating probe,
73
+ re-run the gate, and only then move on. After the program, fold what was
74
+ learned back into the durable layer (docs, skills, followups). Insight
75
+ that lives only in the conversation is lost.
76
+ - **Escalate only genuine decision points**: one-way doors, scope changes,
77
+ taste, spending. Everything else: decide, act, disclose.
78
+
79
+ ## Scar Rules (each bought with a real failure)
80
+
81
+ - **Verify your verifier.** A gate check that cannot fail is no gate: a
82
+ lint grep that only matches one linter's output, an impact check run on a
83
+ clean tree, a test suite that skips the new path. Prove the check catches
84
+ a planted failure once before trusting its green.
85
+ - **Never `git checkout`, `git restore`, or `git stash` on a tree with
86
+ uncommitted work**, yours or anyone's. Revert probe edits by targeted
87
+ deletion. If source is lost, check `dist/*.map` sourcesContent before
88
+ panicking.
89
+ - **Commit working states early and surgically** with explicit paths, never
90
+ `add -A` on a shared tree. An unbisectable pile of work is a liability.
91
+ - **Watch for your own gate holes**: after any "all green," ask what that
92
+ check does NOT cover (eslint versus prettier; unit versus integration;
93
+ clean-tree vacuity).
94
+
95
+ ## Self-Report (required output)
96
+
97
+ End every conducted program, and every plan written under this skill,
98
+ with a checklist mapping each section above to concrete evidence:
99
+ the pre-registered benchmarks and their before and after values; each
100
+ handoff's discriminating probe and its OBSERVED result (a probe listed but
101
+ not run counts as not run); the deviation ledger; the DEFER list; which
102
+ learnings were folded back and where. A reviewer must be able to audit the
103
+ _conduct_, not just the artifact.
104
+
105
+ ## Completion
106
+
107
+ The program is complete only when: every pre-registered benchmark met or
108
+ its miss explained; every handoff probe run and recorded; the gate quiet on
109
+ the final state; nothing silent, meaning every finding fixed or ledgered;
110
+ and the self-report written.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: 'Conductor'
3
+ short_description: 'Plan and conduct multi-phase engineering programs with verified handoffs'
4
+ default_prompt: 'Use $conductor to plan and conduct this multi-phase program end to end: pre-register benchmarks, write executor-ready steps, reproduce the evidence at every handoff, and close with the self-report.'
@@ -0,0 +1,273 @@
1
+ ---
2
+ name: principal-maintainability-review
3
+ description: Review maintainability like a principal engineer. Use when the user asks what a senior, staff, principal, or highly opinionated maintainer would notice, whether code looks vibe-coded, what is gross, what should be fundamentally different, or which architecture smells matter beyond ordinary deduplication. Finds scattered concepts, hidden policies, accidental variation, and compression opportunities, then proposes or executes maintainability-improving refactors.
4
+ metadata:
5
+ commands:
6
+ - template: 'scip-query search <text>'
7
+ when: 'Locate a policy word, threshold, helper name, or repeated literal across the review scope.'
8
+ - template: 'scip-query system <scope>'
9
+ when: 'Map a module: files, exported symbols, dependencies in and out.'
10
+ - template: 'scip-query surface <scope>'
11
+ when: 'See which symbols consumers actually use from a module.'
12
+ - template: 'scip-query outline <file>'
13
+ when: 'Inventory one file before claiming it has unrelated reasons to change.'
14
+ - template: 'scip-query evidence --symbol <symbol> --edge <family> --direction <direction> --depth <n> --max-edges <n>'
15
+ when: 'Project callers, callees, dataflow, or ownership around a suspected scattered concept.'
16
+ - template: 'scip-query code <selector>'
17
+ when: 'Read exact source when the body itself decides whether variation is essential.'
18
+ - template: 'scip-query similar --cross-file-only'
19
+ when: 'Probe for functions with overlapping callee sets across files.'
20
+ - template: 'scip-query similar-files'
21
+ when: 'Probe for files with overlapping dependency profiles.'
22
+ - template: 'scip-query stale-abstractions --include-low-confidence'
23
+ when: 'Probe for types, interfaces, and classes with zero or one consumer.'
24
+ - template: 'scip-query wrapper-candidates'
25
+ when: 'Probe for single-consumer indirection.'
26
+ - template: 'scip-query passthrough-candidates'
27
+ when: 'Probe for functions that only forward to one callee.'
28
+ - template: 'scip-query drift --architecture'
29
+ when: 'Probe for files that deviate from sibling conventions and for declared boundary violations.'
30
+ - template: 'scip-query health --full'
31
+ when: 'Run every configured detector once as a sampling frame, never as a target.'
32
+ - template: 'scip-query diff-impact'
33
+ when: 'After an implemented slice, map changed symbols and downstream consumers.'
34
+ - template: 'scip-query architecture'
35
+ when: 'After an implemented slice, confirm declared boundaries still hold.'
36
+ ---
37
+
38
+ # Principal Maintainability Review
39
+
40
+ <!-- BEGIN GENERATED SKILL COMMANDS -->
41
+ ## Command and question manual
42
+
43
+ | Command syntax | Question it answers |
44
+ | --- | --- |
45
+ | `scip-query search <text>` | Locate a policy word, threshold, helper name, or repeated literal across the review scope. |
46
+ | `scip-query system <scope>` | Map a module: files, exported symbols, dependencies in and out. |
47
+ | `scip-query surface <scope>` | See which symbols consumers actually use from a module. |
48
+ | `scip-query outline <file>` | Inventory one file before claiming it has unrelated reasons to change. |
49
+ | `scip-query evidence --symbol <symbol> --edge <family> --direction <direction> --depth <n> --max-edges <n>` | Project callers, callees, dataflow, or ownership around a suspected scattered concept. |
50
+ | `scip-query code <selector>` | Read exact source when the body itself decides whether variation is essential. |
51
+ | `scip-query similar --cross-file-only` | Probe for functions with overlapping callee sets across files. |
52
+ | `scip-query similar-files` | Probe for files with overlapping dependency profiles. |
53
+ | `scip-query stale-abstractions --include-low-confidence` | Probe for types, interfaces, and classes with zero or one consumer. |
54
+ | `scip-query wrapper-candidates` | Probe for single-consumer indirection. |
55
+ | `scip-query passthrough-candidates` | Probe for functions that only forward to one callee. |
56
+ | `scip-query drift --architecture` | Probe for files that deviate from sibling conventions and for declared boundary violations. |
57
+ | `scip-query health --full` | Run every configured detector once as a sampling frame, never as a target. |
58
+ | `scip-query diff-impact` | After an implemented slice, map changed symbols and downstream consumers. |
59
+ | `scip-query architecture` | After an implemented slice, confirm declared boundaries still hold. |
60
+
61
+ These commands are controls, not a checklist. Use every capability needed by the task, but make each query answer a distinct question. There is no required sequence or query limit. Run a command's `--help` when you need a flag not shown in its template.
62
+ <!-- END GENERATED SKILL COMMANDS -->
63
+
64
+ ## Purpose
65
+
66
+ Use this skill to review a codebase from the standpoint of an expert maintainer who is optimizing for future comprehension and change safety, not just correctness, test count, or line count.
67
+
68
+ A principal maintainability review is an architecture review over real code units such as files, symbols, tests, commands, adapters, caches, public exports, and docs; it identifies where one human concept is scattered across many local implementations and replaces that scatter, when justified, with a smaller named mechanism that preserves behavior.
69
+
70
+ This differs from a normal refactor because the target is maintainer memory load. The question is not only "is there duplication?" The question is "what hidden concept, policy, lifecycle, or pipeline must a future maintainer rediscover to change this safely?"
71
+
72
+ Keep a review read-only unless the user separately authorizes edits.
73
+
74
+ ## Trigger Posture
75
+
76
+ When this skill triggers, adopt an evaluative but evidence-grounded stance. The user is asking for taste and judgment, not a neutral file tour.
77
+
78
+ Translate persona prompts into technical review prompts:
79
+
80
+ - "What would a principal engineer notice?" means "Which concepts are scattered, undernamed, or locally reimplemented?"
81
+ - "Would this look vibe-coded?" means "Where does the structure fail to communicate the domain model or maintenance contract?"
82
+ - "What is gross here?" means "Which code shapes create avoidable future mistakes?"
83
+ - "What would be fundamentally better?" means "Which smaller mechanism would preserve behavior while reducing concept count?"
84
+
85
+ Do not mock the code. Be direct about smells, but keep claims tied to concrete evidence. Taste is allowed only when it is tied to concrete files, symbols, tests, public surfaces, callers, or maintenance failure modes.
86
+
87
+ ## Core Concepts
88
+
89
+ A code smell is an observable codebase fact that predicts avoidable future mistakes because the same knowledge must be rediscovered, synchronized, or defended in several places.
90
+
91
+ A concept boundary is the line around code units that exist for one reason to change. A weak boundary mixes unrelated reasons to change, such as parsing syntax, choosing fallback policy, caching data, and rendering output in one module.
92
+
93
+ A hidden policy is a rule for choosing behavior when several plausible behaviors exist, but the rule is implemented through local branches, repeated comments, or caller folklore instead of a named mechanism.
94
+
95
+ A lifecycle is a repeatable sequence of states or steps that makes a result valid, such as parse -> fallback -> emit, candidate -> evidence -> score -> report, or load -> augment -> write -> invalidate.
96
+
97
+ Concept count is the number of distinct ideas a maintainer must hold active to make a safe change. Lowering concept count is valuable only when the new structure still explains all real variation.
98
+
99
+ Accidental variation is difference in code shape that does not correspond to a difference in behavior, domain facts, or external constraints.
100
+
101
+ Essential variation is difference that must remain because the real-world referents differ, such as different language grammars, API contracts, runtime environments, or public compatibility boundaries.
102
+
103
+ A unifying definition is the single essential trait that makes several code sites one concept. It is a test, not a label: if no single trait covers every cited site, the sites are not one concept, and consolidating them anyway would package essential variation into a false abstraction.
104
+
105
+ ## Workflow
106
+
107
+ ### 1. State the Review Question
108
+
109
+ Restate the task in concrete terms:
110
+
111
+ ```text
112
+ What future-maintenance mistakes does this structure invite, and what smaller named mechanisms would prevent them without hiding real variation?
113
+ ```
114
+
115
+ Name the scope: repo, module, command family, query family, runtime surface, fixture set, or feature path. If the user asks to execute changes, proceed after building enough evidence. If they ask only "what else is there?", return the next ranked smell set and its evidence.
116
+
117
+ ### 2. Build an Evidence Map
118
+
119
+ Start from real units:
120
+
121
+ ```bash
122
+ scip-query search <policy-word-or-helper-name>
123
+ scip-query system <scope>
124
+ scip-query surface <scope>
125
+ scip-query outline <file>
126
+ scip-query evidence --symbol <symbol> --edge execution --direction incoming --depth 1 --max-edges 60
127
+ scip-query evidence --symbol <symbol> --edge ownership --direction both --depth 1 --max-edges 40
128
+ ```
129
+
130
+ Use smell probes as signals, not verdicts:
131
+
132
+ ```bash
133
+ scip-query similar --cross-file-only
134
+ scip-query similar-files
135
+ scip-query extract-candidates
136
+ scip-query wrapper-candidates
137
+ scip-query passthrough-candidates
138
+ scip-query stale-abstractions --include-low-confidence
139
+ scip-query drift --architecture
140
+ scip-query health --full
141
+ ```
142
+
143
+ If no SCIP index exists, run `scip-query setup` first, or fall back to tests, build config, and manual code reading and say so in the report.
144
+
145
+ ### 3. Name the Referents
146
+
147
+ For each suspicious area, identify the concrete referents before judging it:
148
+
149
+ - files and exported symbols
150
+ - callers and downstream public surfaces
151
+ - tests and fixtures that define behavior
152
+ - data structures and result records
153
+ - fallback paths, caches, registries, adapters, and command handlers
154
+ - generated artifacts or compatibility constraints
155
+
156
+ Do not call something a smell until you can point to the code units that make the future-maintenance risk real.
157
+
158
+ ### 4. Ask the Principal Questions
159
+
160
+ For each cluster, answer:
161
+
162
+ - What one concept is being implemented in several places, and what single essential trait makes them one concept?
163
+ - What policy is hidden in branches, comments, argument conventions, or test fixtures?
164
+ - What lifecycle is present but unnamed?
165
+ - Which differences are essential, and which are accidental?
166
+ - What must a new maintainer know that the local interface does not admit?
167
+ - Would a small named mechanism remove a reason to change, or only move code around?
168
+ - What behavior or public API constrains the refactor?
169
+
170
+ Prefer severe smells in this order:
171
+
172
+ 1. Hidden correctness or evidence policy spread across modules.
173
+ 2. Repeated lifecycle or pipeline with no named owner.
174
+ 3. Public surface that exposes accidental internals.
175
+ 4. Large module with multiple unrelated reasons to change.
176
+ 5. Tests that encode incident history without a contract vocabulary.
177
+ 6. Adapter families with repeated capability or fallback shapes.
178
+ 7. Suppression comments that document architecture decisions instead of exceptions.
179
+ 8. Thin wrappers, pass-throughs, and helper layers that do not buy clarity.
180
+
181
+ ### 5. Rank by Compression Value
182
+
183
+ A good target should satisfy most of these:
184
+
185
+ - It removes a hidden policy or names a lifecycle.
186
+ - It reduces the amount of context needed to make future changes.
187
+ - It makes tests easier to state as contracts.
188
+ - It prevents drift among sibling modules.
189
+ - It lowers public API accident risk.
190
+ - It deletes, merges, or enforces a real mechanism instead of merely relocating code.
191
+
192
+ Reject false compression when:
193
+
194
+ - similar code reflects essential variation
195
+ - a helper would hide grammar, protocol, or domain differences
196
+ - the new abstraction needs more concepts than it removes
197
+ - a compatibility boundary must stay explicit
198
+ - the smell is only aesthetic
199
+
200
+ Every scattered-concept or consolidation claim ships 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.
201
+
202
+ ### 6. Produce a Register or Atlas
203
+
204
+ For broad review, create or update a Markdown register under `docs/plans/` unless the user asks not to edit files.
205
+
206
+ Use this shape:
207
+
208
+ ```markdown
209
+ # Principal Maintainability Register
210
+
211
+ ## Executive Read
212
+
213
+ ## Current Status
214
+
215
+ ## Smell Ledger
216
+
217
+ | Priority | Smell | Evidence | Why it hurts | Better shape | Disposition |
218
+ | --- | --- | --- | --- | --- | --- |
219
+
220
+ ## Next Slice
221
+
222
+ ## Deferred Boundaries
223
+
224
+ ## Verification Plan
225
+ ```
226
+
227
+ Use dispositions: `merge`, `delete`, `inline`, `extract`, `generate`, `enforce`, `supersede`, `defer`, `skip`.
228
+
229
+ For implementation work, write an atlas for the chosen slice before editing. `$scip-system-compression` owns the full atlas template; use it when the scope is a subsystem rather than one slice.
230
+
231
+ ### 7. Implement Conservatively
232
+
233
+ When asked to fix the smells:
234
+
235
+ - Introduce the smallest named mechanism that matches the real concept.
236
+ - Keep essential variation close to the adapter or domain code that knows it.
237
+ - Move hidden policies behind interfaces that make the choice visible.
238
+ - Preserve behavior before broadening scope.
239
+ - Update docs and registers to record deferred boundaries and why.
240
+ - Commit coherent slices after verification when the user asked for commits.
241
+
242
+ Avoid "frameworking." A new abstraction is justified only if it removes real concept count or enforces a policy that callers were already hand-maintaining.
243
+
244
+ ### 8. Verify the Review Did Real Work
245
+
246
+ After changes, run the narrow tests for the touched subsystem and the repository's standard checks, then:
247
+
248
+ ```bash
249
+ scip-query diff-impact
250
+ scip-query architecture
251
+ scip-query stale-abstractions --include-low-confidence
252
+ scip-query wrapper-candidates
253
+ scip-query passthrough-candidates
254
+ ```
255
+
256
+ The final answer states:
257
+
258
+ - the named smell addressed
259
+ - the mechanism introduced or simplified
260
+ - what was deliberately not compressed, and which dissenter kept it separate
261
+ - verification results
262
+ - commit hash, when committed
263
+
264
+ ## Output Style
265
+
266
+ Be candid and specific. Use plain engineering language:
267
+
268
+ - "This module has three reasons to change."
269
+ - "This helper names a policy that was previously caller folklore."
270
+ - "This similarity is false; the syntax differences are essential."
271
+ - "This is a good next slice because it removes a lifecycle repeated across sibling adapters."
272
+
273
+ Do not rely on persona language in the final artifact. The persona is a prompt for judgment; the deliverable is an evidence-backed maintainability review.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: 'Principal Maintainability Review'
3
+ short_description: 'Find the maintainability smells a principal engineer would flag, with evidence'
4
+ default_prompt: 'Use $principal-maintainability-review to find the highest-value maintainability smells in this codebase: scattered concepts, hidden policies, unnamed lifecycles, and false compression, each tied to files and symbols.'
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: scip-calibrate
3
+ description: Calibrate scip-query's detectors against a repository before trusting them. Use when adopting scip-query in a new or foreign codebase, after major detector changes, or when a health score or detector output seems too noisy or too clean.
4
+ metadata:
5
+ commands:
6
+ - template: 'scip-query capabilities --matrix'
7
+ when: 'Inventory: which languages got which evidence tier before judging any detector.'
8
+ - template: 'scip-query health --json'
9
+ when: 'Battery sweep: every detector finding count as a sampling frame, not a verdict.'
10
+ - template: 'scip-query dead --json'
11
+ when: 'Sample: the detector historically most exposed to monorepo and cross-package false positives.'
12
+ - template: 'scip-query twin-drift -s <scope> --json'
13
+ when: 'Sample: same-name divergence groups to classify from the code.'
14
+ - template: 'scip-query similar <symbol>'
15
+ when: 'Sample: callee-overlap pairs to classify from the code.'
16
+ - template: 'scip-query code <selector>'
17
+ when: 'Classify: read the cited site; the finding text is never the evidence.'
18
+ - template: 'scip-query suppress <id> --reason <text>'
19
+ when: 'Tune: record one accepted finding with a concrete reason.'
20
+ - template: 'scip-query config-validate'
21
+ when: 'Tune: validate .scipquery.json and suppressions after every knob change.'
22
+ ---
23
+
24
+ # scip-calibrate
25
+
26
+ <!-- BEGIN GENERATED SKILL COMMANDS -->
27
+ ## Command and question manual
28
+
29
+ | Command syntax | Question it answers |
30
+ | --- | --- |
31
+ | `scip-query capabilities --matrix` | Inventory: which languages got which evidence tier before judging any detector. |
32
+ | `scip-query health --json` | Battery sweep: every detector finding count as a sampling frame, not a verdict. |
33
+ | `scip-query dead --json` | Sample: the detector historically most exposed to monorepo and cross-package false positives. |
34
+ | `scip-query twin-drift -s <scope> --json` | Sample: same-name divergence groups to classify from the code. |
35
+ | `scip-query similar <symbol>` | Sample: callee-overlap pairs to classify from the code. |
36
+ | `scip-query code <selector>` | Classify: read the cited site; the finding text is never the evidence. |
37
+ | `scip-query suppress <id> --reason <text>` | Tune: record one accepted finding with a concrete reason. |
38
+ | `scip-query config-validate` | Tune: validate .scipquery.json and suppressions after every knob change. |
39
+
40
+ These commands are controls, not a checklist. Use every capability needed by the task, but make each query answer a distinct question. There is no required sequence or query limit. Run a command's `--help` when you need a flag not shown in its template.
41
+ <!-- END GENERATED SKILL COMMANDS -->
42
+
43
+ Use this skill to measure whether scip-query's detectors tell the truth about a specific repository before believing anything they say about it. A detector tuned on one codebase's conventions can be precise there and noisy elsewhere. Calibration is how you find out which you have, and it converts every noise archetype you find into either a repo-side knob or an upstream detector bug.
44
+
45
+ ## The Stance
46
+
47
+ A health score you have not calibrated is a number, not a fact. Never present detector output from an uncalibrated repo as findings; present it as candidate findings pending classification. The score must EARN trust the same way a checker earns it in `$scip-integrity-audit`: by being witnessed telling the truth on samples you verified yourself.
48
+
49
+ ## Protocol
50
+
51
+ Run all four stages. Each has a checkable exit.
52
+
53
+ ### 1. Index and inventory
54
+
55
+ Run `scip-query status` and, if the index is stale or missing, `scip-query reindex`. Then `scip-query capabilities --matrix`. Record which languages got which evidence tier (SCIP-indexed versus source-fallback versus regex). A detector's expected precision differs per tier, and a repo that is mostly fallback-tier must be judged against fallback expectations. Note monorepo shape (workspaces, cross-package imports): historically the single largest false-positive source, with `dead` flagging cross-package consumers.
56
+
57
+ Complete when: languages, tiers, and workspace shape are written down.
58
+
59
+ ### 2. Battery sweep
60
+
61
+ Run `scip-query health --json` and the standalone detectors it does not include (`twin-drift`, `decorative-checkers`, `not-implemented`, `test-quality`). Do not react to anything yet. Big numbers are not findings; they are sampling frames.
62
+
63
+ Watch for finding WALLS: one hub file or one convention mismatch generating dozens of near-identical findings. A wall is always either a missing repo knob or a detector bug. It is never "the repo is just bad."
64
+
65
+ Complete when: every detector's finding count and every wall are recorded.
66
+
67
+ ### 3. Sample and classify (the actual calibration)
68
+
69
+ For each detector with findings: sample about 10 (all of them if fewer), READ THE CODE at each site with `scip-query code`, and classify actionable versus noise. Two rules make this real calibration instead of theater:
70
+
71
+ - Classify from the code, never from the finding text. A finding that sounds plausible and a finding that is true are different things; the difference is only visible at the cited file and line.
72
+ - For every noise finding, name the ARCHETYPE (for example "type-only import invisible to indexer", "delegation chain flagged as twin", "generic shared helpers saturating similarity"). Archetypes are the deliverable: a noise rate without archetypes cannot be fixed.
73
+
74
+ Then give each detector a verdict: **keep** (precision acceptable), **retune** (name the threshold and the value), or **demote to advisory** for this repo.
75
+
76
+ Complete when: every detector has sampled precision, named archetypes, and a verdict.
77
+
78
+ ### 4. Tune the knobs, file the bugs
79
+
80
+ Apply repo-side fixes for what belongs to the repo, and file upstream for what belongs to the detector:
81
+
82
+ - `scip-query suppress <id> --reason <text>`: one per accepted finding, WITH a concrete reason. A reasonless suppression is hiding, not tuning.
83
+ - `docs.snapshotPaths` in `.scipquery.json`: dated or archival docs that must never generate doc-drift findings.
84
+ - Coverage contracts: enumerations the detectors should police.
85
+ - `commandAnalysisBudget`: cap analysis honestly on very large indexes.
86
+ - Detector bugs (noise archetypes no knob can express) go upstream with the archetype, a concrete example, and the sampled rate. Never tune a threshold to hide an archetype; that trades visible noise for invisible blindness.
87
+
88
+ Run `scip-query config-validate` after every knob change.
89
+
90
+ Complete when: the battery from stage 2 re-runs materially quieter, and every remaining finding class is either actionable, suppressed with a reason, or filed upstream.
91
+
92
+ ## Failure Modes (each observed in a real calibration)
93
+
94
+ - **Sampling too few.** One good finding does not make a detector precise; one bad finding does not make it noise. Ten per detector is the floor.
95
+ - **Classifying from the finding text.** The finding always sounds right; it was generated to. Only the code knows.
96
+ - **Tuning to green.** Raising a threshold until the noise disappears also disappears the real findings. If the archetype is a detector bug, file it and live with the noise until it is fixed.
97
+ - **Trusting a clean run.** Zero findings on a detector can mean precision or can mean the detector cannot see this repo's conventions at all (wrong import style, unindexed language). Verify at least one known-true positive per major detector; plant one if none exists.
98
+ - **Calibrating the wrong tree.** Use clones or worktrees for anything that mutates; the target repo is read-only unless its owner said otherwise.
99
+
100
+ ## After Calibration
101
+
102
+ Write the calibration report to `docs/validation/YYYY-MM-DD-external-calibration-<repo>.md`: battery table, walls, per-detector verdicts, noise archetypes, caps and deviations. Re-run this protocol only after major detector upgrades or when detector behavior visibly drifts from what you measured.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: 'SCIP Calibrate'
3
+ short_description: "Measure scip-query's detector precision on a repository before trusting its scores"
4
+ default_prompt: 'Run the $scip-calibrate protocol against this repository: inventory evidence tiers, sweep the detector battery, sample and classify each detector from the code, then tune repo knobs and file detector bugs.'