scip-query 0.24.0 → 0.26.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.
- package/CHANGELOG.md +247 -1
- package/README.md +111 -124
- package/dist/augment-vue-worker.js +1 -1
- package/dist/by-kind-PRVFAGTQ.js +2 -0
- package/dist/call-graph-DVPAQV2F.js +2 -0
- package/dist/{call-graph-evidence-BociKRpF.d.ts → call-graph-evidence-CUtj8V2I.d.ts} +1 -1
- package/dist/chunk-2FSBGL5P.js +2 -0
- package/dist/chunk-2HLAFUCY.js +2 -0
- package/dist/chunk-2IWUT6CJ.js +3 -0
- package/dist/chunk-2KNN7GTQ.js +2 -0
- package/dist/chunk-2LHXRE2B.js +8 -0
- package/dist/{chunk-E65ELFKU.js → chunk-2YXE77TJ.js} +2 -2
- package/dist/chunk-36SGVCGX.js +2 -0
- package/dist/chunk-3ABBFPTP.js +2 -0
- package/dist/chunk-3IVFU4FD.js +3 -0
- package/dist/chunk-3JIQS44J.js +7 -0
- package/dist/chunk-3ZRB6DNK.js +7 -0
- package/dist/{chunk-6YTSKJJ3.js → chunk-42EOW5VI.js} +1 -1
- package/dist/{chunk-BHKK5RJY.js → chunk-4BHGBMNO.js} +2 -2
- package/dist/chunk-4BP3UBDG.js +2 -0
- package/dist/chunk-4D6RO7G4.js +2 -0
- package/dist/chunk-4FEWQ6RH.js +2 -0
- package/dist/chunk-4IGEOBG7.js +2 -0
- package/dist/chunk-4QZXBUKC.js +2 -0
- package/dist/chunk-4WBDEVX2.js +4 -0
- package/dist/chunk-4WCUBZU3.js +8 -0
- package/dist/chunk-4WTUBQ36.js +40 -0
- package/dist/chunk-4XQ4O6IM.js +3 -0
- package/dist/chunk-55UQAMZO.js +4 -0
- package/dist/chunk-5D2LVK7O.js +125 -0
- package/dist/chunk-5IYJ56TT.js +2 -0
- package/dist/chunk-5PLMJC7Q.js +2 -0
- package/dist/chunk-5TNQJUR2.js +5 -0
- package/dist/chunk-62BDNPMI.js +2 -0
- package/dist/chunk-64DZ5TXR.js +7 -0
- package/dist/chunk-65245JCM.js +2 -0
- package/dist/chunk-6FFVZZL4.js +2 -0
- package/dist/chunk-6KO5JHAR.js +2 -0
- package/dist/chunk-6LRXOOSX.js +2 -0
- package/dist/chunk-6LSEIIF7.js +2 -0
- package/dist/chunk-6YMNWD3H.js +6 -0
- package/dist/chunk-72AD6ZRR.js +5 -0
- package/dist/chunk-73AAKPUC.js +4 -0
- package/dist/chunk-76CZ77DF.js +2 -0
- package/dist/chunk-7VPEEAAG.js +2 -0
- package/dist/chunk-7WTPQ4NX.js +14 -0
- package/dist/chunk-7Y5T6XDP.js +2 -0
- package/dist/chunk-A2IIGFMJ.js +5 -0
- package/dist/chunk-AB5KCTEV.js +2 -0
- package/dist/chunk-AC566WBP.js +6 -0
- package/dist/chunk-AGWFSTXC.js +3 -0
- package/dist/chunk-AOSIYPTA.js +2 -0
- package/dist/chunk-AUVEWPIF.js +2 -0
- package/dist/chunk-B56T42J3.js +25 -0
- package/dist/chunk-BIQEF5NE.js +2 -0
- package/dist/chunk-BL6XJKTA.js +3 -0
- package/dist/chunk-BMKOQJRI.js +2 -0
- package/dist/chunk-BOZ4EXBB.js +3 -0
- package/dist/chunk-BUTWYEPH.js +2 -0
- package/dist/chunk-BZB4QPIP.js +2 -0
- package/dist/{chunk-6ILKOOGH.js → chunk-CE357GEE.js} +4 -4
- package/dist/chunk-CFN45HFP.js +2 -0
- package/dist/chunk-CFYMZFXT.js +368 -0
- package/dist/chunk-CN5EH7O3.js +2 -0
- package/dist/chunk-D254DNNQ.js +4 -0
- package/dist/chunk-D3FDISIC.js +2 -0
- package/dist/chunk-D3NX5XIE.js +3 -0
- package/dist/chunk-DA7RPPDF.js +3 -0
- package/dist/chunk-DDMC3FON.js +3 -0
- package/dist/chunk-DIO3FUSG.js +2 -0
- package/dist/chunk-DJ2NNSUK.js +3 -0
- package/dist/chunk-DKYQIM3C.js +18 -0
- package/dist/{chunk-OHIV323X.js → chunk-DOOEL2IV.js} +2 -2
- package/dist/chunk-DVFP6PZI.js +2 -0
- package/dist/chunk-E3FDPXZK.js +2 -0
- package/dist/chunk-E7YNJLCB.js +2 -0
- package/dist/chunk-EFGW5JPH.js +2 -0
- package/dist/chunk-EJVTR244.js +13 -0
- package/dist/chunk-EOV7RTRZ.js +2 -0
- package/dist/chunk-ETOIKRHO.js +2 -0
- package/dist/chunk-EYK3ZAO2.js +3 -0
- package/dist/chunk-F2V2LPET.js +52 -0
- package/dist/chunk-F4LUHJTF.js +2 -0
- package/dist/chunk-F4PUT6IT.js +2 -0
- package/dist/chunk-F56GCXXS.js +5 -0
- package/dist/chunk-FC2EVQRM.js +2 -0
- package/dist/chunk-FL7NBMHP.js +3 -0
- package/dist/chunk-FMRN2TRL.js +3 -0
- package/dist/chunk-FVULPZDF.js +20 -0
- package/dist/chunk-GCKCF5FL.js +43 -0
- package/dist/chunk-GH2PYF46.js +2 -0
- package/dist/chunk-GHJAGXIP.js +2 -0
- package/dist/{chunk-2GJSD5GY.js → chunk-GMVSHUKZ.js} +2 -2
- package/dist/chunk-GS6KDO4R.js +2 -0
- package/dist/chunk-GUUBXNN7.js +2 -0
- package/dist/chunk-GVWX5T43.js +80 -0
- package/dist/chunk-GZKFETP5.js +2 -0
- package/dist/chunk-H4EQHO6J.js +9 -0
- package/dist/chunk-H73WY2RM.js +2 -0
- package/dist/chunk-H75GSPRV.js +60 -0
- package/dist/chunk-HDR3AHSV.js +61 -0
- package/dist/chunk-HQBSL74Y.js +2 -0
- package/dist/chunk-HRRFKWPZ.js +2 -0
- package/dist/chunk-HXENDJC6.js +2 -0
- package/dist/chunk-IIBAZNSW.js +21 -0
- package/dist/chunk-INLMWEUU.js +12 -0
- package/dist/chunk-IWQPAF4F.js +2 -0
- package/dist/chunk-IZJ6YUKP.js +35 -0
- package/dist/chunk-J2TMAIN5.js +60 -0
- package/dist/chunk-J5FJMODQ.js +142 -0
- package/dist/chunk-J7HZPIO3.js +2 -0
- package/dist/chunk-JEVRKFRL.js +2 -0
- package/dist/chunk-JFXSGAEB.js +30 -0
- package/dist/chunk-JVRTHGFS.js +3 -0
- package/dist/chunk-JYWEX7RR.js +360 -0
- package/dist/chunk-K3YL22N6.js +2 -0
- package/dist/chunk-K4CN7GXK.js +12 -0
- package/dist/chunk-K5TBVXU4.js +30 -0
- package/dist/chunk-KDDIE2DP.js +9 -0
- package/dist/chunk-KHWRRPV4.js +2 -0
- package/dist/chunk-KI6NBKDY.js +14 -0
- package/dist/chunk-KU3QRSTH.js +2 -0
- package/dist/chunk-KZBJWZJB.js +2 -0
- package/dist/chunk-L7GFM3NP.js +3 -0
- package/dist/chunk-LMO6PK3V.js +35 -0
- package/dist/chunk-LN4YXJJU.js +2 -0
- package/dist/chunk-LOVIZBJ4.js +43 -0
- package/dist/chunk-LPCRK4A2.js +11 -0
- package/dist/chunk-MMHZKBFA.js +2 -0
- package/dist/{chunk-A4WEAK35.js → chunk-MOQQBQRD.js} +2 -2
- package/dist/chunk-N2WN6I3L.js +2 -0
- package/dist/chunk-N3ORQT7L.js +2 -0
- package/dist/chunk-NAZ3RAIW.js +2 -0
- package/dist/chunk-NDUNO5JQ.js +2 -0
- package/dist/chunk-NEIWRNAZ.js +4 -0
- package/dist/chunk-NJJMVD65.js +2 -0
- package/dist/chunk-NLOQOBXI.js +20 -0
- package/dist/chunk-NOLZOVCU.js +2 -0
- package/dist/chunk-NOWINRRN.js +2 -0
- package/dist/chunk-NZAXKGRL.js +16 -0
- package/dist/chunk-O2C4UILI.js +2 -0
- package/dist/chunk-O3RHA6ZT.js +3 -0
- package/dist/chunk-O4UZSPPI.js +3 -0
- package/dist/chunk-OGFV2BUX.js +2 -0
- package/dist/chunk-OZCJXZK6.js +499 -0
- package/dist/chunk-P6ODM7BY.js +2 -0
- package/dist/{chunk-GHNPACNP.js → chunk-PAVGPRHJ.js} +2 -2
- package/dist/chunk-PH52RA7D.js +2 -0
- package/dist/chunk-PKN354TH.js +3 -0
- package/dist/chunk-PWOASWEG.js +11 -0
- package/dist/chunk-QIWXRW72.js +2 -0
- package/dist/chunk-QJRMOK5N.js +2 -0
- package/dist/{chunk-YXPUP5G2.js → chunk-QOIXNWQR.js} +2 -2
- package/dist/chunk-QXEUDXBT.js +3 -0
- package/dist/chunk-QYUVVBMR.js +6 -0
- package/dist/chunk-QZ7KQZRN.js +2 -0
- package/dist/chunk-R6LQBUDH.js +2 -0
- package/dist/chunk-RBS42E55.js +20 -0
- package/dist/chunk-RSJKPCFX.js +26 -0
- package/dist/chunk-S6CZA3MV.js +2 -0
- package/dist/chunk-STMVAHJP.js +2 -0
- package/dist/chunk-SYVPTTVW.js +2 -0
- package/dist/chunk-T6DK3ZP7.js +2 -0
- package/dist/chunk-TKD34PHN.js +4 -0
- package/dist/chunk-TNNQFH7W.js +2 -0
- package/dist/chunk-TNV7SSUF.js +2 -0
- package/dist/chunk-TO7ZR3EH.js +8 -0
- package/dist/chunk-TOU3CHK4.js +2 -0
- package/dist/chunk-TRBI4UKT.js +2 -0
- package/dist/chunk-TZCVNCAN.js +4 -0
- package/dist/chunk-U4LZA5LL.js +3 -0
- package/dist/chunk-U5RIG3JP.js +3 -0
- package/dist/chunk-UP5KXN2I.js +2 -0
- package/dist/chunk-UQFR3NDH.js +5 -0
- package/dist/chunk-UXYXF7GV.js +2 -0
- package/dist/chunk-VB3GOKOS.js +2 -0
- package/dist/{chunk-4FR6GQIT.js → chunk-VF5JZICY.js} +2 -2
- package/dist/chunk-VTY3VK6E.js +2 -0
- package/dist/chunk-VX2O4RIS.js +2 -0
- package/dist/chunk-WKPV2TDZ.js +2 -0
- package/dist/chunk-WOFQ5DTB.js +2 -0
- package/dist/chunk-WS4C6TCK.js +2 -0
- package/dist/chunk-WXU3DGPU.js +2 -0
- package/dist/{chunk-ATXPTSEI.js → chunk-X6RMKHJQ.js} +7 -7
- package/dist/{chunk-44IETFOU.js → chunk-XHMN6ZX7.js} +2 -2
- package/dist/chunk-XHTVFLWW.js +2 -0
- package/dist/chunk-XKIDJCIK.js +2 -0
- package/dist/chunk-XTYTYZPT.js +2 -0
- package/dist/chunk-Y2JHHTTA.js +2 -0
- package/dist/chunk-YGVRMGYN.js +4 -0
- package/dist/chunk-YNQCGEQE.js +2 -0
- package/dist/chunk-YOQVEXVE.js +14 -0
- package/dist/chunk-YRT2WLYY.js +2 -0
- package/dist/chunk-YTAP5Y2G.js +2 -0
- package/dist/chunk-YTYWI7VB.js +2 -0
- package/dist/chunk-YULZRALL.js +2 -0
- package/dist/chunk-Z33WQG4Q.js +2 -0
- package/dist/chunk-ZGTYGDMF.js +16 -0
- package/dist/chunk-ZHMRSZFD.js +43 -0
- package/dist/chunk-ZHSP366W.js +10 -0
- package/dist/chunk-ZIBYCYKK.js +7 -0
- package/dist/chunk-ZLADLUE6.js +3 -0
- package/dist/chunk-ZO4YXUT6.js +4 -0
- package/dist/{chunk-MZPXPSUJ.js → chunk-ZR4HBC2H.js} +2 -2
- package/dist/cli-main.js +6 -6
- package/dist/cli.js +1 -1
- package/dist/{code-B17qEMbt.d.ts → code-BNyrCF3_.d.ts} +3 -2
- package/dist/code-IL5WH3NZ.js +2 -0
- package/dist/code-result-json-ANTBEDFP.js +4 -0
- package/dist/command-descriptors-HEEMDHTU.js +222 -0
- package/dist/deps-EOWFC6FD.js +2 -0
- package/dist/direct-navigation-Y5B6OSIQ.js +3 -0
- package/dist/{exploration-topology-BG4v30HZ.d.ts → exploration-topology-CSgEyAz-.d.ts} +3 -1
- package/dist/files-K4AI3JUM.js +2 -0
- package/dist/{health-BI2a9WPy.d.ts → health-BtfmNrfa.d.ts} +5 -79
- package/dist/hierarchy-6W5NDIFI.js +2 -0
- package/dist/imports-WH365QY4.js +2 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.js +1 -1
- package/dist/members-K3PHMF5S.js +2 -0
- package/dist/methods-E7KVMBX4.js +2 -0
- package/dist/output-continuation-command-BJSY67SN.js +3 -0
- package/dist/output-pagination-UZJ5ACIX.js +24 -0
- package/dist/postinstall.js +1 -1
- package/dist/project-reindex-EP24WT4X.js +3 -0
- package/dist/queries/affected.js +1 -1
- package/dist/queries/architecture.d.ts +15 -4
- package/dist/queries/architecture.js +1 -1
- package/dist/queries/bottlenecks.js +1 -1
- package/dist/queries/by-kind.js +1 -1
- package/dist/queries/call-graph.d.ts +1 -1
- package/dist/queries/call-graph.js +1 -1
- package/dist/queries/change-surface.d.ts +1 -0
- package/dist/queries/change-surface.js +1 -1
- package/dist/queries/cleanup-plan.d.ts +3 -3
- package/dist/queries/cleanup-plan.js +1 -1
- package/dist/queries/co-change.js +1 -1
- package/dist/queries/code.d.ts +1 -1
- package/dist/queries/code.js +1 -1
- package/dist/queries/complexity.d.ts +6 -3
- package/dist/queries/complexity.js +1 -1
- package/dist/queries/context.d.ts +1 -7
- package/dist/queries/context.js +1 -1
- package/dist/queries/coupling.js +1 -1
- package/dist/queries/cycles.js +1 -1
- package/dist/queries/dead.js +1 -1
- package/dist/queries/decorative-checkers.js +1 -1
- package/dist/queries/dependence-slice.d.ts +46 -22
- package/dist/queries/dependence-slice.js +1 -1
- package/dist/queries/dependency-depth.d.ts +1 -7
- package/dist/queries/dependency-depth.js +1 -1
- package/dist/queries/deps.js +1 -1
- package/dist/queries/diff-impact.d.ts +3 -1
- package/dist/queries/diff-impact.js +1 -1
- package/dist/queries/doc-drift.js +1 -1
- package/dist/queries/drift.d.ts +1 -1
- package/dist/queries/drift.js +1 -1
- package/dist/queries/duplicate-bodies.d.ts +1 -1
- package/dist/queries/duplicate-bodies.js +1 -1
- package/dist/queries/entry-map.d.ts +2 -4
- package/dist/queries/entry-map.js +1 -1
- package/dist/queries/evidence.d.ts +121 -61
- package/dist/queries/evidence.js +1 -1
- package/dist/queries/fan.js +1 -1
- package/dist/queries/files.js +1 -1
- package/dist/queries/health.d.ts +1 -1
- package/dist/queries/health.js +1 -1
- package/dist/queries/hierarchy.d.ts +2 -2
- package/dist/queries/hierarchy.js +1 -1
- package/dist/queries/hotspots.d.ts +1 -1
- package/dist/queries/hotspots.js +1 -1
- package/dist/queries/imports.d.ts +1 -0
- package/dist/queries/imports.js +1 -1
- package/dist/queries/incomplete-migration.d.ts +3 -3
- package/dist/queries/incomplete-migration.js +1 -1
- package/dist/queries/index.d.ts +15 -64
- package/dist/queries/index.js +1 -1
- package/dist/queries/locality-candidates.d.ts +4 -4
- package/dist/queries/locality-candidates.js +1 -1
- package/dist/queries/members.d.ts +2 -2
- package/dist/queries/members.js +1 -1
- package/dist/queries/methods.js +1 -1
- package/dist/queries/not-implemented.d.ts +2 -6
- package/dist/queries/not-implemented.js +1 -1
- package/dist/queries/outline.js +1 -1
- package/dist/queries/passthrough-candidates.js +1 -1
- package/dist/queries/react-component-duplicates.js +1 -1
- package/dist/queries/react-hook-candidates.js +1 -1
- package/dist/queries/react-large-component-pressure.js +1 -1
- package/dist/queries/recent-duplicates.js +1 -1
- package/dist/queries/redundant-reexports.d.ts +4 -14
- package/dist/queries/redundant-reexports.js +1 -1
- package/dist/queries/refs.d.ts +4 -1
- package/dist/queries/refs.js +1 -1
- package/dist/queries/review.d.ts +188 -0
- package/dist/queries/review.js +2 -0
- package/dist/queries/similar-files.d.ts +7 -10
- package/dist/queries/similar-files.js +1 -1
- package/dist/queries/similar-signatures.js +1 -1
- package/dist/queries/similar.d.ts +19 -1
- package/dist/queries/similar.js +1 -1
- package/dist/queries/slice-cohesion.d.ts +205 -0
- package/dist/queries/slice-cohesion.js +2 -0
- package/dist/queries/source-inspection.d.ts +6 -202
- package/dist/queries/source-inspection.js +1 -1
- package/dist/queries/source-search.d.ts +2 -3
- package/dist/queries/source-search.js +1 -1
- package/dist/queries/stats.d.ts +1 -0
- package/dist/queries/stats.js +1 -1
- package/dist/queries/surface.js +1 -1
- package/dist/queries/symbols.js +1 -1
- package/dist/queries/system.d.ts +4 -2
- package/dist/queries/system.js +1 -1
- package/dist/queries/test-quality.d.ts +1 -1
- package/dist/queries/test-quality.js +1 -1
- package/dist/queries/twin-drift.d.ts +1 -1
- package/dist/queries/twin-drift.js +1 -1
- package/dist/queries/unused-imports.js +1 -1
- package/dist/queries/unused-params.d.ts +3 -15
- package/dist/queries/unused-params.js +1 -1
- package/dist/queries/vue-component-duplicates.js +1 -1
- package/dist/queries/vue-composable-candidates.js +1 -1
- package/dist/queries/vue-large-view-pressure.js +1 -1
- package/dist/query-service-fastpath.js +5 -5
- package/dist/query-service-server.js +4 -4
- package/dist/refs-CCBJG7WK.js +2 -0
- package/dist/refs-pagination-DRNLVU4S.js +2 -0
- package/dist/reindex-worker.js +79 -29
- package/dist/reindex.js +45 -45
- package/dist/repository-cache-worker.js +2 -0
- package/dist/runtime.d.ts +8 -8
- package/dist/runtime.js +3 -4
- package/dist/rust-semantic-session-server.js +1 -1
- package/dist/rust-semantic-session-worker.js +1 -1
- package/dist/rust-semantic-worker.js +1 -1
- package/dist/service-queries-2WAJI7R6.js +6 -0
- package/dist/source-inspection-91U9zdO3.d.ts +341 -0
- package/dist/{source-search-types-Dwz8KeuW.d.ts → source-search-types-DWGYNg8M.d.ts} +15 -2
- package/dist/stats-G7DIV6VU.js +2 -0
- package/dist/surface-IO55UALI.js +2 -0
- package/dist/system-ZBMSHJXU.js +2 -0
- package/dist/{queries/trace.d.ts → trace-BMjw3prn.d.ts} +1 -18
- package/dist/typescript-indexer.js +2 -0
- package/dist/typescript-mailbox-worker.js +1 -1
- package/dist/watch-server.js +3 -3
- package/docs/AGENT_GUIDE.md +19 -128
- package/docs/CLI_JSON_OUTPUT.md +21 -17
- package/docs/COMMAND_REFERENCE.md +34 -49
- package/docs/CURRENT_COMMANDS.md +123 -0
- package/docs/DETECTOR_EVIDENCE_CONTRACTS.md +0 -40
- package/docs/DETECTOR_GUIDE.md +27 -23
- package/docs/PRODUCT_VISION.md +135 -0
- package/docs/PROPERTY_TESTING.md +73 -0
- package/docs/REVIEW.md +76 -0
- package/docs/SKILLS.md +51 -0
- package/docs/WINDOWS_SIDECAR_RELEASE.md +12 -3
- package/docs/accuracy-audit-checklist.md +34 -0
- package/docs/analyzer-inventory.md +2 -2
- package/package.json +18 -80
- package/scripts/evidence-product-contract.mjs +7 -3
- package/scripts/record-review-coverage.mjs +118 -0
- package/scripts/scip-windows-provenance.mjs +29 -19
- package/skills/scip-architecture-review/SKILL.md +57 -0
- package/skills/scip-architecture-review/agents/openai.yaml +4 -0
- package/skills/scip-architecture-review/references/design-checks.md +17 -0
- package/skills/scip-explore/SKILL.md +15 -59
- package/skills/scip-explore/agents/openai.yaml +3 -3
- package/skills/scip-explore/references/external-evidence.md +2 -2
- package/skills/scip-explore/references/information-model.md +26 -29
- package/skills/scip-explore/scripts/capture-evidence.mjs +68 -34
- package/skills/scip-integrity-audit/SKILL.md +53 -181
- package/skills/scip-integrity-audit/agents/openai.yaml +3 -3
- package/skills/scip-integrity-audit/references/integrity-probes.md +27 -0
- package/skills/scip-plan/SKILL.md +39 -65
- package/skills/scip-plan/agents/openai.yaml +2 -2
- package/skills/scip-query/SKILL.md +28 -81
- package/skills/scip-query/agents/openai.yaml +2 -2
- package/skills/scip-query/references/command-guide.md +169 -0
- package/skills/scip-setup/SKILL.md +4 -2
- package/skills/scip-setup/agents/openai.yaml +3 -3
- package/dist/by-kind-H3P6BR5G.js +0 -2
- package/dist/call-graph-VTG2CUOQ.js +0 -2
- package/dist/chunk-26CT72HM.js +0 -2
- package/dist/chunk-2BMSSRBH.js +0 -2
- package/dist/chunk-2M2LSIMY.js +0 -7
- package/dist/chunk-2N6WBNDC.js +0 -29
- package/dist/chunk-2OOY75BW.js +0 -2
- package/dist/chunk-2USA3S3P.js +0 -3
- package/dist/chunk-2VAHDDLM.js +0 -133
- package/dist/chunk-2XWIUW5Z.js +0 -455
- package/dist/chunk-35NLDRZC.js +0 -2
- package/dist/chunk-3AF4TUFK.js +0 -3
- package/dist/chunk-3D4BOXW6.js +0 -20
- package/dist/chunk-3LO4FST5.js +0 -16
- package/dist/chunk-3WTY4LP2.js +0 -3
- package/dist/chunk-3Z5AMSK6.js +0 -29
- package/dist/chunk-4KBTHJLP.js +0 -2
- package/dist/chunk-5BIKR67W.js +0 -2
- package/dist/chunk-5PROPLHI.js +0 -2
- package/dist/chunk-5V7EPTII.js +0 -2
- package/dist/chunk-62LPZCBQ.js +0 -3
- package/dist/chunk-64O2JHQA.js +0 -2
- package/dist/chunk-6D4F5VWG.js +0 -10
- package/dist/chunk-6ERFBC3X.js +0 -3
- package/dist/chunk-6MFXCMZC.js +0 -2
- package/dist/chunk-6O7FACKB.js +0 -2
- package/dist/chunk-6TS3KOXR.js +0 -2
- package/dist/chunk-76QOU4PK.js +0 -3
- package/dist/chunk-7DUI77BN.js +0 -2
- package/dist/chunk-7F45LJKI.js +0 -2
- package/dist/chunk-7F7T6DCR.js +0 -2
- package/dist/chunk-7H6VHWWJ.js +0 -2
- package/dist/chunk-7HXT6YLU.js +0 -5
- package/dist/chunk-7KCZELVM.js +0 -2
- package/dist/chunk-7R4V5ES6.js +0 -6
- package/dist/chunk-7RIRIADH.js +0 -7
- package/dist/chunk-7ZLWLOGT.js +0 -2
- package/dist/chunk-AADQLOQ4.js +0 -38
- package/dist/chunk-AN76MGUE.js +0 -2
- package/dist/chunk-ANLNLY66.js +0 -2
- package/dist/chunk-AX7IDVFT.js +0 -2
- package/dist/chunk-B3X6KU75.js +0 -2
- package/dist/chunk-B7MPDEAK.js +0 -3
- package/dist/chunk-BBB5FBX4.js +0 -2
- package/dist/chunk-BJT7LSPK.js +0 -3
- package/dist/chunk-BJWFVAA5.js +0 -2
- package/dist/chunk-BKVWUP7Y.js +0 -2
- package/dist/chunk-BKZYTLGE.js +0 -35
- package/dist/chunk-BL6DCHQP.js +0 -2
- package/dist/chunk-BOW7SSQH.js +0 -43
- package/dist/chunk-C4RHHCKL.js +0 -7
- package/dist/chunk-C7C6AKAT.js +0 -117
- package/dist/chunk-CD6M6LS2.js +0 -16
- package/dist/chunk-CFE6PSG6.js +0 -2
- package/dist/chunk-CFNIGQMT.js +0 -2
- package/dist/chunk-CKBUBRYD.js +0 -2
- package/dist/chunk-CZW5MZ5B.js +0 -2
- package/dist/chunk-DBBZ63ZX.js +0 -2
- package/dist/chunk-DBN7DMJB.js +0 -18
- package/dist/chunk-DUULLZHZ.js +0 -3
- package/dist/chunk-DV5Y5NOS.js +0 -2
- package/dist/chunk-DZOIKCTM.js +0 -3
- package/dist/chunk-E4PKTOL3.js +0 -2
- package/dist/chunk-E7QR35ST.js +0 -2
- package/dist/chunk-EFSXAINW.js +0 -2
- package/dist/chunk-EHVEIEQN.js +0 -18
- package/dist/chunk-EHYDXE3Z.js +0 -2
- package/dist/chunk-EP63Y6LD.js +0 -2
- package/dist/chunk-EPX6NQN6.js +0 -4
- package/dist/chunk-ETC674NS.js +0 -5
- package/dist/chunk-F5GSBHC6.js +0 -3
- package/dist/chunk-FH3DGXC6.js +0 -2
- package/dist/chunk-FI7VGOR4.js +0 -16
- package/dist/chunk-FJF6VO2P.js +0 -2
- package/dist/chunk-FLMTCX5R.js +0 -2
- package/dist/chunk-FVFDOIM3.js +0 -2
- package/dist/chunk-G2HU5WRN.js +0 -2
- package/dist/chunk-G4ALYS4J.js +0 -2
- package/dist/chunk-G56I7K4W.js +0 -26
- package/dist/chunk-GC4DG2V5.js +0 -2
- package/dist/chunk-GG45PK4S.js +0 -4
- package/dist/chunk-GINH3YQU.js +0 -20
- package/dist/chunk-GTZZVLKJ.js +0 -2
- package/dist/chunk-GXXW5ZHH.js +0 -2
- package/dist/chunk-H5EXS3HM.js +0 -2
- package/dist/chunk-HAXXKRTD.js +0 -4
- package/dist/chunk-HEZWBAZY.js +0 -2
- package/dist/chunk-HMEWLMML.js +0 -2
- package/dist/chunk-HOBOVYPO.js +0 -11
- package/dist/chunk-HRFQ6GW5.js +0 -8
- package/dist/chunk-HX4X7KG3.js +0 -2
- package/dist/chunk-HYT2R7LX.js +0 -4
- package/dist/chunk-IKQVBVQL.js +0 -40
- package/dist/chunk-IW5XQG5G.js +0 -2
- package/dist/chunk-J6GLBBRK.js +0 -4
- package/dist/chunk-J7A4PWFX.js +0 -3
- package/dist/chunk-JCSAZ35V.js +0 -2
- package/dist/chunk-JDU2IV3A.js +0 -2
- package/dist/chunk-JFMEXGFE.js +0 -2
- package/dist/chunk-JFMI5SGB.js +0 -4
- package/dist/chunk-JJP37RGX.js +0 -57
- package/dist/chunk-JZ2A7LDM.js +0 -5
- package/dist/chunk-KMVGRIO2.js +0 -2
- package/dist/chunk-KNLQGXVH.js +0 -80
- package/dist/chunk-KVQCECPR.js +0 -2
- package/dist/chunk-KXXORBZ2.js +0 -4
- package/dist/chunk-L5KYH6U3.js +0 -35
- package/dist/chunk-L6XHYJPZ.js +0 -21
- package/dist/chunk-L7KTFEAV.js +0 -43
- package/dist/chunk-LDXHR5EL.js +0 -23
- package/dist/chunk-LEECKFCJ.js +0 -2
- package/dist/chunk-MHGDSBFX.js +0 -2
- package/dist/chunk-MLQVVDG3.js +0 -74
- package/dist/chunk-MOKUWRHO.js +0 -3
- package/dist/chunk-MPYAPMNE.js +0 -2
- package/dist/chunk-MTDBHTSF.js +0 -2
- package/dist/chunk-MV6SPXCR.js +0 -7
- package/dist/chunk-MWN53KRN.js +0 -60
- package/dist/chunk-MXNGIEPU.js +0 -3
- package/dist/chunk-N55KIE46.js +0 -2
- package/dist/chunk-NB4D3BNM.js +0 -2
- package/dist/chunk-NGKBOT6G.js +0 -23
- package/dist/chunk-NJGKXKQF.js +0 -2
- package/dist/chunk-NJQISBL4.js +0 -8
- package/dist/chunk-NJT3ZEKY.js +0 -16
- package/dist/chunk-NKMKZP6A.js +0 -2
- package/dist/chunk-NODFZ6ED.js +0 -2
- package/dist/chunk-NSM5IEVW.js +0 -2
- package/dist/chunk-NTGUVNR2.js +0 -3
- package/dist/chunk-NU3KFF2O.js +0 -57
- package/dist/chunk-NWLVNU66.js +0 -557
- package/dist/chunk-NYKZMCRC.js +0 -4
- package/dist/chunk-O6BUXZEH.js +0 -6
- package/dist/chunk-ODPDP7A4.js +0 -3
- package/dist/chunk-OIAPEKMT.js +0 -3
- package/dist/chunk-OIOC5EHF.js +0 -3
- package/dist/chunk-ONPPQM4G.js +0 -2
- package/dist/chunk-OUHEZBYI.js +0 -2
- package/dist/chunk-OVGYW7UD.js +0 -29
- package/dist/chunk-OYKU4B3Y.js +0 -2
- package/dist/chunk-POBJ6FR2.js +0 -5
- package/dist/chunk-PSZPMMWN.js +0 -2
- package/dist/chunk-PXTRBKRK.js +0 -3
- package/dist/chunk-Q5JRIHT3.js +0 -4
- package/dist/chunk-Q7ATHARX.js +0 -2
- package/dist/chunk-Q7CSKIDM.js +0 -5
- package/dist/chunk-QBQE7ZJ5.js +0 -3
- package/dist/chunk-QH22UIXP.js +0 -5
- package/dist/chunk-QXCKQTKR.js +0 -60
- package/dist/chunk-RBAD4GJ2.js +0 -13
- package/dist/chunk-RMDPFPNW.js +0 -2
- package/dist/chunk-ROPJDEJZ.js +0 -4
- package/dist/chunk-RVZC6TJE.js +0 -2
- package/dist/chunk-S4QZBKSR.js +0 -3
- package/dist/chunk-SCPMZ73U.js +0 -2
- package/dist/chunk-SIAP5RGI.js +0 -73
- package/dist/chunk-SIX4RFR3.js +0 -3
- package/dist/chunk-SKKXTABJ.js +0 -16
- package/dist/chunk-SSRFUQBD.js +0 -2
- package/dist/chunk-SYVJEEUJ.js +0 -3
- package/dist/chunk-T3CZAZSI.js +0 -8
- package/dist/chunk-T6DWDI5E.js +0 -3
- package/dist/chunk-T6HRIROJ.js +0 -7
- package/dist/chunk-TAA7HXHE.js +0 -2
- package/dist/chunk-TJ2JQYT3.js +0 -2
- package/dist/chunk-TULNMD5T.js +0 -368
- package/dist/chunk-U2FPY5XA.js +0 -3
- package/dist/chunk-U3SXIMII.js +0 -38
- package/dist/chunk-U6KCHXJ4.js +0 -2
- package/dist/chunk-UH3XSKS5.js +0 -9
- package/dist/chunk-UIFUZVCC.js +0 -2
- package/dist/chunk-UXKURIVI.js +0 -2
- package/dist/chunk-V2RBODHL.js +0 -2
- package/dist/chunk-VBKUWB6N.js +0 -2
- package/dist/chunk-VBV6ALJE.js +0 -2
- package/dist/chunk-VDGFWCQV.js +0 -2
- package/dist/chunk-VDSDOEWF.js +0 -2
- package/dist/chunk-VZPWVCLN.js +0 -20
- package/dist/chunk-WDSFQDPN.js +0 -2
- package/dist/chunk-WFA35BGR.js +0 -7
- package/dist/chunk-WLMP3OCW.js +0 -2
- package/dist/chunk-WSA52GOR.js +0 -2
- package/dist/chunk-WYPL7GF7.js +0 -2
- package/dist/chunk-X3YVZAKZ.js +0 -5
- package/dist/chunk-X6OGVFIT.js +0 -2
- package/dist/chunk-XDAUYDFT.js +0 -2
- package/dist/chunk-XKXTR6ZI.js +0 -9
- package/dist/chunk-Y5DFAW5W.js +0 -4
- package/dist/chunk-YSYPDRD5.js +0 -3
- package/dist/chunk-ZFVPWH62.js +0 -5
- package/dist/chunk-ZGIHTH27.js +0 -2
- package/dist/chunk-ZGIQN2SX.js +0 -2
- package/dist/chunk-ZHG4WAHR.js +0 -12
- package/dist/chunk-ZKB2XUEN.js +0 -4
- package/dist/chunk-ZLMXIQLC.js +0 -21
- package/dist/chunk-ZMCQIHI4.js +0 -2
- package/dist/code-TAVIKWJI.js +0 -2
- package/dist/code-result-json-5FEFQCAQ.js +0 -2
- package/dist/command-descriptors-7BKH53Y3.js +0 -343
- package/dist/dataflow-GFBTVDH3.js +0 -2
- package/dist/dependence-slice-GWGQCODG.js +0 -2
- package/dist/deps-4QHVDPYA.js +0 -2
- package/dist/direct-navigation-4UBC6HNW.js +0 -3
- package/dist/entry-map-QCTF4RVY.js +0 -2
- package/dist/files-M2UBF5HJ.js +0 -2
- package/dist/graph-evidence-Bjyky2V4.d.ts +0 -126
- package/dist/hierarchy-2UIHRLW4.js +0 -2
- package/dist/imports-WIE3YZOB.js +0 -2
- package/dist/members-YKD636DA.js +0 -2
- package/dist/methods-VDF4IMYG.js +0 -2
- package/dist/next-anchor-candidates-BwMczMvX.d.ts +0 -90
- package/dist/output-continuation-command-4UMDOOLO.js +0 -3
- package/dist/output-pagination-2GME6OPY.js +0 -19
- package/dist/project-reindex-XEQTRCV5.js +0 -3
- package/dist/queries/anchors.d.ts +0 -123
- package/dist/queries/anchors.js +0 -2
- package/dist/queries/complexity-hotspots.d.ts +0 -40
- package/dist/queries/complexity-hotspots.js +0 -2
- package/dist/queries/convergence.d.ts +0 -33
- package/dist/queries/convergence.js +0 -2
- package/dist/queries/dataflow.d.ts +0 -77
- package/dist/queries/dataflow.js +0 -2
- package/dist/queries/deep-chains.d.ts +0 -5
- package/dist/queries/deep-chains.js +0 -2
- package/dist/queries/extract-candidates.d.ts +0 -79
- package/dist/queries/extract-candidates.js +0 -2
- package/dist/queries/isolated.d.ts +0 -24
- package/dist/queries/isolated.js +0 -2
- package/dist/queries/plan-context.d.ts +0 -33
- package/dist/queries/plan-context.js +0 -2
- package/dist/queries/reference-neighborhood.d.ts +0 -4
- package/dist/queries/reference-neighborhood.js +0 -2
- package/dist/queries/reference-reachability.d.ts +0 -48
- package/dist/queries/reference-reachability.js +0 -2
- package/dist/queries/self-audit.d.ts +0 -69
- package/dist/queries/self-audit.js +0 -2
- package/dist/queries/similar-chains.d.ts +0 -48
- package/dist/queries/similar-chains.js +0 -2
- package/dist/queries/slice.d.ts +0 -4
- package/dist/queries/slice.js +0 -2
- package/dist/queries/stale-abstractions.d.ts +0 -72
- package/dist/queries/stale-abstractions.js +0 -2
- package/dist/queries/system-map.d.ts +0 -449
- package/dist/queries/system-map.js +0 -2
- package/dist/queries/trace.js +0 -2
- package/dist/queries/twin-ab.d.ts +0 -66
- package/dist/queries/twin-ab.js +0 -2
- package/dist/queries/value-flow.d.ts +0 -43
- package/dist/queries/value-flow.js +0 -2
- package/dist/queries/wrapper-candidates.d.ts +0 -49
- package/dist/queries/wrapper-candidates.js +0 -2
- package/dist/refs-JNK5CLM7.js +0 -2
- package/dist/refs-pagination-6BLRYGMV.js +0 -2
- package/dist/slice-PHPVNCWX.js +0 -2
- package/dist/source-snippet-_wrcgmZc.d.ts +0 -15
- package/dist/stats-OOJ74B32.js +0 -2
- package/dist/surface-MQX5MPIV.js +0 -2
- package/dist/symbol-resolution-DBLVXLBC.js +0 -2
- package/dist/system-JOPKV4OG.js +0 -2
- package/dist/trace-I2P2YFH4.js +0 -2
- package/dist/value-flow-JJVMF7NP.js +0 -2
- package/skills/concrete-plan/SKILL.md +0 -8
- package/skills/concrete-plan/agents/openai.yaml +0 -4
- package/skills/conductor/SKILL.md +0 -110
- package/skills/conductor/agents/openai.yaml +0 -4
- package/skills/principal-maintainability-review/SKILL.md +0 -273
- package/skills/principal-maintainability-review/agents/openai.yaml +0 -4
- package/skills/scip-calibrate/SKILL.md +0 -102
- package/skills/scip-calibrate/agents/openai.yaml +0 -4
- package/skills/scip-claim-audit/SKILL.md +0 -113
- package/skills/scip-claim-audit/agents/openai.yaml +0 -4
- package/skills/scip-probe-reachability/SKILL.md +0 -93
- package/skills/scip-probe-reachability/agents/openai.yaml +0 -4
- package/skills/scip-root-cause/SKILL.md +0 -160
- package/skills/scip-root-cause/agents/openai.yaml +0 -4
- package/skills/scip-system-compression/SKILL.md +0 -252
- package/skills/scip-system-compression/agents/openai.yaml +0 -4
- package/skills/scip-system-compression/references/compression-atlas.md +0 -116
- package/skills/scip-system-compression/references/compression-patterns.md +0 -87
- package/skills/scip-twin-drift/SKILL.md +0 -109
- package/skills/scip-twin-drift/agents/openai.yaml +0 -4
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scip-claim-audit
|
|
3
|
-
description: Audit output-facing status claims for evidence with scip-query. Use to classify whether an "available", "verified", "safe", "PASS", or "complete" status word is derived from a real check, hedged as a candidate, or merely asserted without being probed.
|
|
4
|
-
metadata:
|
|
5
|
-
commands:
|
|
6
|
-
- template: 'scip-query search <text>'
|
|
7
|
-
when: 'Inventory: locate every status word and the renderer or JSON field that surfaces it.'
|
|
8
|
-
- template: 'scip-query refs <symbol>'
|
|
9
|
-
when: 'Classify: find every producer and consumer of a status-bearing function.'
|
|
10
|
-
- template: 'scip-query code <selector>'
|
|
11
|
-
when: 'Classify: read the producing function to see whether it computes or asserts.'
|
|
12
|
-
- template: 'scip-query trace <symbol>'
|
|
13
|
-
when: 'Classify: definition plus every reference for a status field or constant.'
|
|
14
|
-
- template: 'scip-query capabilities --matrix'
|
|
15
|
-
when: 'Spot-check: a known derived-status surface to calibrate what derived looks like here.'
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
# scip-claim-audit
|
|
19
|
-
|
|
20
|
-
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
21
|
-
## Command and question manual
|
|
22
|
-
|
|
23
|
-
| Command syntax | Question it answers |
|
|
24
|
-
| --- | --- |
|
|
25
|
-
| `scip-query search <text>` | Inventory: locate every status word and the renderer or JSON field that surfaces it. |
|
|
26
|
-
| `scip-query refs <symbol>` | Classify: find every producer and consumer of a status-bearing function. |
|
|
27
|
-
| `scip-query code <selector>` | Classify: read the producing function to see whether it computes or asserts. |
|
|
28
|
-
| `scip-query trace <symbol>` | Classify: definition plus every reference for a status field or constant. |
|
|
29
|
-
| `scip-query capabilities --matrix` | Spot-check: a known derived-status surface to calibrate what derived looks like here. |
|
|
30
|
-
|
|
31
|
-
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.
|
|
32
|
-
<!-- END GENERATED SKILL COMMANDS -->
|
|
33
|
-
|
|
34
|
-
Use this skill to find agent-facing claims that sound verified but are not. A status word is **derived** when its producer computes it from a real probe, scan, or computation (a compiler run, a runtime capability probe, a graph traversal). It is **hedged** when the code or its label already says it is a candidate, heuristic, or unverified. It is **asserted** when the value is a constant, a hardcoded table entry, or a string literal presented with the same confidence as a derived value but backed by nothing the code actually checked at that call site.
|
|
35
|
-
|
|
36
|
-
Asserted status words that are agent-facing and trust-bearing, meaning an agent would route a decision ("use this evidence", "skip this check", "delete this") based on the word, are the highest-severity class this skill exists to find.
|
|
37
|
-
|
|
38
|
-
`$scip-integrity-audit` asks whether checkers can fail. This skill asks whether the words the system prints about itself were ever computed. Run this one over a status surface; run that one over the checkers behind it.
|
|
39
|
-
|
|
40
|
-
## Rules
|
|
41
|
-
|
|
42
|
-
1. Ground every claim in the producing function's source, not its label or variable name alone. A variable named `verified` that is never checked against a real result is still asserted.
|
|
43
|
-
2. Classify status, do not just list it: every status word in scope gets exactly one of derived, hedged, or asserted.
|
|
44
|
-
3. Severity follows the rubric: asserted plus agent-facing plus trust-bearing is high; asserted plus internal-only or low-consequence is low; hedged is not a finding, because the label already discloses uncertainty.
|
|
45
|
-
4. A status that used to be asserted and now calls a real probe is fixed. Say so and move on; do not re-report it.
|
|
46
|
-
5. File findings as a table, not prose. Claim, producer, classification, fix is the deliverable.
|
|
47
|
-
|
|
48
|
-
## Workflow
|
|
49
|
-
|
|
50
|
-
### 1. Inventory the status vocabulary
|
|
51
|
-
|
|
52
|
-
Search the target scope (a file, module, or command family) for user-visible or JSON-facing status words: `available`, `unavailable`, `partial`, `verified`, `safe`, `PASS`, `FAIL`, `complete`, `derived`, `asserted`. For each hit, note the file:line and the renderer or JSON field that surfaces it to an agent or user.
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
scip-query search verified -s <scope>
|
|
56
|
-
scip-query search PASS -s <scope>
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
This step is complete only when every status-bearing string or field in scope is listed with its surface (human output, `--json` field, or both).
|
|
60
|
-
|
|
61
|
-
### 2. Classify each producer
|
|
62
|
-
|
|
63
|
-
For each status word's producing function:
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
scip-query refs <producing-function>
|
|
67
|
-
scip-query code <producing-function>
|
|
68
|
-
scip-query trace <status-field-or-constant>
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
Read the function body. Classify:
|
|
72
|
-
|
|
73
|
-
- **Derived**: the status is computed from a probe, scan, spawn result, file check, or graph query performed at or near that call site.
|
|
74
|
-
- **Hedged**: the label, evidence tier, or surrounding text already marks the value as heuristic, candidate, or unverified.
|
|
75
|
-
- **Asserted**: the value is a literal, a static table lookup, or a branch that returns a fixed status without invoking any check for that specific branch.
|
|
76
|
-
|
|
77
|
-
Use `scip-query capabilities --matrix` as a spot-check: it is a known derived-status surface, useful for calibrating what "derived" looks like in this codebase before judging ambiguous cases.
|
|
78
|
-
|
|
79
|
-
This step is complete only when every producer has one of these three labels with the one line of source evidence that justifies it.
|
|
80
|
-
|
|
81
|
-
### 3. File findings for every asserted status
|
|
82
|
-
|
|
83
|
-
For each **asserted** status, apply the severity rubric and write:
|
|
84
|
-
|
|
85
|
-
```markdown
|
|
86
|
-
Claim: <status word and where it appears>
|
|
87
|
-
Producer: <file:line function name>
|
|
88
|
-
Classification: asserted
|
|
89
|
-
Severity: high | low
|
|
90
|
-
Fix: probe it (name the real check to add), generate it (derive from a registry or config that is itself kept honest), or soften the language (hedge the label to match what is actually known)
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
This step is complete only when every asserted status in scope has a filed finding with a fix direction, and every derived or hedged status is confirmed correct rather than silently asserted behind a computed-looking name.
|
|
94
|
-
|
|
95
|
-
### 4. Report
|
|
96
|
-
|
|
97
|
-
Write the report under `docs/scip-query/` unless the user asked only for a conversational answer.
|
|
98
|
-
|
|
99
|
-
```markdown
|
|
100
|
-
Scope:
|
|
101
|
-
Status words inventoried: N
|
|
102
|
-
Classified: <d> derived / <h> hedged / <a> asserted (must sum to N; a gap is an unfinished audit)
|
|
103
|
-
|
|
104
|
-
Claim table:
|
|
105
|
-
| Claim | Producer | Classification | Fix |
|
|
106
|
-
| --- | --- | --- | --- |
|
|
107
|
-
|
|
108
|
-
Fixed since last audit:
|
|
109
|
-
|
|
110
|
-
- <claim>: now derived via <probe>, no longer a finding.
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
The audit is complete only when every status word in scope is classified and every asserted, trust-bearing claim has a filed finding.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: 'SCIP Claim Audit'
|
|
3
|
-
short_description: 'Classify output-facing status claims as derived, hedged, or asserted'
|
|
4
|
-
default_prompt: 'Use $scip-claim-audit to inventory output-facing status words in the target scope, classify each producer as derived, hedged, or asserted, and file findings for asserted trust-bearing claims.'
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scip-probe-reachability
|
|
3
|
-
description: Prove whether a parser or AST branch is actually reachable by running the real parser on minimal inputs. Use for unreachable or dead node-type or shape branches, wrong node-type strings, tree-sitter grammar mismatches, or any conditional written for an AST or parser output that has never been checked against the real parser.
|
|
4
|
-
metadata:
|
|
5
|
-
commands:
|
|
6
|
-
- template: 'scip-query outline <file> --signatures'
|
|
7
|
-
when: 'Enumerate branches: symbol tree with signatures for the target file.'
|
|
8
|
-
- template: 'scip-query code <selector>'
|
|
9
|
-
when: "Enumerate branches: read each branch condition's exact node-type check."
|
|
10
|
-
- template: 'scip-query trace <symbol>'
|
|
11
|
-
when: "Enumerate branches: confirm the function's callers and entry point."
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# scip-probe-reachability
|
|
15
|
-
|
|
16
|
-
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
17
|
-
## Command and question manual
|
|
18
|
-
|
|
19
|
-
| Command syntax | Question it answers |
|
|
20
|
-
| --- | --- |
|
|
21
|
-
| `scip-query outline <file> --signatures` | Enumerate branches: symbol tree with signatures for the target file. |
|
|
22
|
-
| `scip-query code <selector>` | Enumerate branches: read each branch condition's exact node-type check. |
|
|
23
|
-
| `scip-query trace <symbol>` | Enumerate branches: confirm the function's callers and entry point. |
|
|
24
|
-
|
|
25
|
-
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.
|
|
26
|
-
<!-- END GENERATED SKILL COMMANDS -->
|
|
27
|
-
|
|
28
|
-
Use this skill for code that branches on a parser or AST node's type or shape (`node.type === '...'`, a grammar-specific tag, a regex over token shape) where nobody has verified the real parser ever produces that type or shape. A branch written from documentation, memory, or a similar grammar in another language can be permanently dead: it looks correct, compiles, and is never exercised by a single test, because the input that should reach it never reaches it under the actual parser.
|
|
29
|
-
|
|
30
|
-
## Rules
|
|
31
|
-
|
|
32
|
-
1. Never trust a branch condition by reading it; run the real parser on an input constructed to hit it.
|
|
33
|
-
2. Write scratch probe scripts only under the session scratchpad, never inside the repository. They are throwaway evidence, not product code.
|
|
34
|
-
3. Never create a git worktree and never symlink `node_modules` for this skill's probes. Import the parser module directly (from `src/` via a TypeScript runner, or from the built package) in a standalone script that needs no repo-root install step.
|
|
35
|
-
4. A branch is a finding whether it is truly unreachable (dead code) or reachable but under a different node-type string than the code checks (a silent misclassification, which is worse than dead code because it fails without raising anything).
|
|
36
|
-
5. Completion requires every node-type or shape branch in the target function to have either a reached probe or a filed finding. Partial coverage is not done.
|
|
37
|
-
|
|
38
|
-
## Workflow
|
|
39
|
-
|
|
40
|
-
### 1. Enumerate branch conditions
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
scip-query outline <target-file> --signatures
|
|
44
|
-
scip-query code <target-function>
|
|
45
|
-
scip-query trace <target-function>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
List every conditional that tests a node's `type`, tag name, or shape (an `if` or `else if` chain over `node.type === '...'`, a `switch` on a grammar tag, or a regex matched against node text standing in for a type check). Record the exact string or pattern each branch expects.
|
|
49
|
-
|
|
50
|
-
This step is complete only when every node-type or shape branch in the target function is listed with its file:line and the exact condition text.
|
|
51
|
-
|
|
52
|
-
### 2. Construct a minimal input per branch
|
|
53
|
-
|
|
54
|
-
For each branch, write the smallest source snippet in the target language that should, by the language's grammar, produce a node of that type or shape at that point in the tree. Prefer one snippet per branch; note when a single snippet is expected to exercise more than one branch (siblings in a walk).
|
|
55
|
-
|
|
56
|
-
This step is complete only when every branch has a candidate input snippet.
|
|
57
|
-
|
|
58
|
-
### 3. Run the real parser
|
|
59
|
-
|
|
60
|
-
Write one scratch script under the session scratchpad that imports the actual parser module used by the target code, not a reimplementation and not a mental model of the grammar, and, for each candidate snippet:
|
|
61
|
-
|
|
62
|
-
1. Parses it.
|
|
63
|
-
2. Walks the resulting tree and collects every node type actually produced.
|
|
64
|
-
3. Reports whether the branch's expected type or shape appears anywhere in that set.
|
|
65
|
-
|
|
66
|
-
Run the script (for example `npx vite-node <scratch-script>` from the repo root, or a plain `node` script importing the built package) and record reached or unreached per branch.
|
|
67
|
-
|
|
68
|
-
This step is complete only when every branch from step 1 has a recorded reached or unreached result from an actual parser run, not an inference.
|
|
69
|
-
|
|
70
|
-
### 4. File findings for unreached branches
|
|
71
|
-
|
|
72
|
-
For each unreached branch, determine and record which of these it is:
|
|
73
|
-
|
|
74
|
-
- **Dead branch**: the grammar never produces this node type or shape anywhere reachable from valid source in this language; the branch is unreachable code. Fix: delete it, or replace it with the branch that actually covers the intended case, found by inspecting the node types the parser did produce for the candidate input.
|
|
75
|
-
- **Wrong node-type string**: the intended case is real and common, but the branch checks the wrong string (a rename in the grammar, a typo, or a mismatch borrowed from a different language or version). Fix: correct the string to what step 3 actually observed.
|
|
76
|
-
|
|
77
|
-
This step is complete only when every unreached branch has one of these two labels and a fix direction.
|
|
78
|
-
|
|
79
|
-
### 5. Report
|
|
80
|
-
|
|
81
|
-
```markdown
|
|
82
|
-
Target: <file:function>
|
|
83
|
-
|
|
84
|
-
Branches:
|
|
85
|
-
| Branch condition | Candidate input | Reached? | Finding |
|
|
86
|
-
| --- | --- | --- | --- |
|
|
87
|
-
|
|
88
|
-
Findings:
|
|
89
|
-
|
|
90
|
-
- <branch>: dead branch | wrong node-type string; fix: <direction>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Completion requires every branch from step 1 to appear in the table with a reached or unreached result.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: 'SCIP Probe Reachability'
|
|
3
|
-
short_description: 'Prove parser and AST branches are reachable by running the real parser'
|
|
4
|
-
default_prompt: 'Use $scip-probe-reachability to enumerate the node-type or shape branches in the target parser 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,160 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scip-root-cause
|
|
3
|
-
description: Diagnose the design flaw behind a family of related bugs with scip-query evidence. Use when similar bugs keep recurring, the same subsystem keeps needing patches, or the user lists fixed or observed bugs and asks what is really wrong; produces a falsifiable flaw diagnosis, a latent-instance hunt, and the least invasive remedy that kills the class.
|
|
4
|
-
metadata:
|
|
5
|
-
commands:
|
|
6
|
-
- template: 'scip-query trace <symbol>'
|
|
7
|
-
when: 'Trace one bug mechanism: definition plus every reference of the symbol that broke the invariant.'
|
|
8
|
-
- template: 'scip-query code <selector>'
|
|
9
|
-
when: 'Read the exact body at a fix site or a suspected latent instance.'
|
|
10
|
-
- template: 'scip-query evidence --symbol <symbol> --edge dataflow --direction both --depth <n> --max-edges <n>'
|
|
11
|
-
when: 'Follow where a violated value comes from and where it goes.'
|
|
12
|
-
- template: 'scip-query co-change <file>'
|
|
13
|
-
when: 'Find fix-site partners from git history that the user may have forgotten.'
|
|
14
|
-
- template: 'scip-query system <scope>'
|
|
15
|
-
when: 'Define the owning system: its files, exports, and dependencies.'
|
|
16
|
-
- template: 'scip-query surface <scope>'
|
|
17
|
-
when: 'See what consumers actually rely on from the owning system.'
|
|
18
|
-
- template: 'scip-query similar <symbol> --full'
|
|
19
|
-
when: 'Hunt latent instances: callables that do the same work as a fixed symbol.'
|
|
20
|
-
- template: 'scip-query refs <symbol>'
|
|
21
|
-
when: 'Hunt latent instances: every site that touches the invariant carrier.'
|
|
22
|
-
- template: 'scip-query affected <symbol>'
|
|
23
|
-
when: 'Bound the blast radius before proposing any remedy above rung 1.'
|
|
24
|
-
---
|
|
25
|
-
|
|
26
|
-
# scip-root-cause
|
|
27
|
-
|
|
28
|
-
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
29
|
-
## Command and question manual
|
|
30
|
-
|
|
31
|
-
| Command syntax | Question it answers |
|
|
32
|
-
| --- | --- |
|
|
33
|
-
| `scip-query trace <symbol>` | Trace one bug mechanism: definition plus every reference of the symbol that broke the invariant. |
|
|
34
|
-
| `scip-query code <selector>` | Read the exact body at a fix site or a suspected latent instance. |
|
|
35
|
-
| `scip-query evidence --symbol <symbol> --edge dataflow --direction both --depth <n> --max-edges <n>` | Follow where a violated value comes from and where it goes. |
|
|
36
|
-
| `scip-query co-change <file>` | Find fix-site partners from git history that the user may have forgotten. |
|
|
37
|
-
| `scip-query system <scope>` | Define the owning system: its files, exports, and dependencies. |
|
|
38
|
-
| `scip-query surface <scope>` | See what consumers actually rely on from the owning system. |
|
|
39
|
-
| `scip-query similar <symbol> --full` | Hunt latent instances: callables that do the same work as a fixed symbol. |
|
|
40
|
-
| `scip-query refs <symbol>` | Hunt latent instances: every site that touches the invariant carrier. |
|
|
41
|
-
| `scip-query affected <symbol>` | Bound the blast radius before proposing any remedy above rung 1. |
|
|
42
|
-
|
|
43
|
-
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.
|
|
44
|
-
<!-- END GENERATED SKILL COMMANDS -->
|
|
45
|
-
|
|
46
|
-
Use this skill to move from a family of related bugs to the design flaw that produces them, and to the least invasive remedy that eliminates the class. Ordinary debugging takes one failure to one minimal fix. `$principal-maintainability-review` finds structural smells without bug evidence. This skill starts from the evidence that patching has not worked, because the same kind of bug keeps coming back, and asks what the system's design gets wrong.
|
|
47
|
-
|
|
48
|
-
## Terms
|
|
49
|
-
|
|
50
|
-
A bug family is a set of failures whose mechanisms violate the same invariant. What makes it a family rather than a coincidence is that one stated flaw derives every member, so fixing members one at a time treats symptoms of a shared cause.
|
|
51
|
-
|
|
52
|
-
A design flaw is a mismatch between what a system's design assumes and what its real responsibilities require. What makes it the root cause is that it is the earliest fact from which every family member's mechanism follows, so removing it removes the class.
|
|
53
|
-
|
|
54
|
-
Retrodiction is deriving each already-known bug from the hypothesized flaw. What makes it a test is that a family member the flaw cannot derive either shrinks the family or kills the hypothesis.
|
|
55
|
-
|
|
56
|
-
A latent instance is a not-yet-reported bug the flaw predicts must exist in unfixed code. What makes it decisive is that it is checkable now. Finding one confirms the diagnosis and becomes a fix target. An honest hunt that finds none weakens the diagnosis and must be reported as weakening it.
|
|
57
|
-
|
|
58
|
-
The remedy ladder is the ordered set of interventions from least to most invasive. What makes the order binding is that each rung is only justified when a constructed family member survives the rung below it.
|
|
59
|
-
|
|
60
|
-
## Rules
|
|
61
|
-
|
|
62
|
-
1. Every bug in the family gets a mechanism traced to source, not a symptom description: which invariant broke, where, and what the fix did. Sources: fix commits (`git log`, `git show`) plus `trace`, `code`, and `evidence` dataflow.
|
|
63
|
-
2. The flaw hypothesis must be falsifiable and stated as a design claim: "the design assumes X, but the system's responsibilities include Y." Never a narrative about unlucky bugs.
|
|
64
|
-
3. State at least two rivals and kill them with evidence: unrelated coincidences, caller misuse rather than design, one missed edge case rather than a structural flaw.
|
|
65
|
-
4. The hypothesis must retrodict every family member and predict at least one latent instance, and the latent-instance hunt must be executed with `similar`, `refs` over the invariant's carriers, or a constructed probe. It is never argued.
|
|
66
|
-
5. Choose the lowest remedy rung that kills the whole class, retrodicted and latent members both. Climb a rung only when a constructed family member survives the rung below, and keep that counterexample in the record.
|
|
67
|
-
6. Root-cause stories are the most rationalization-prone artifact in software. Prefer delegating the attack on the diagnosis and the remedy to a fresh subagent given only the family table, system definition, and hypothesis, briefed to win by refuting. Solo fallback: write the rival hypotheses and the latent-instance predictions before reading any more code.
|
|
68
|
-
7. The verdict is derived with counts, and the diagnosis hands off to `$scip-plan` for implementation. This skill does not edit application code.
|
|
69
|
-
|
|
70
|
-
## Workflow
|
|
71
|
-
|
|
72
|
-
### 1. Assemble the bug family
|
|
73
|
-
|
|
74
|
-
For each reported or fixed bug, fill one row:
|
|
75
|
-
|
|
76
|
-
```markdown
|
|
77
|
-
| Bug | Symptom | Mechanism (file:symbol) | Invariant violated | Fix applied | Source |
|
|
78
|
-
| --- | ------- | ----------------------- | ------------------ | ----------- | ------ |
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Evidence: the user's description, fix commits (`git log --follow`, `git show`), `scip-query trace` and `scip-query code` on the mechanism symbols, `scip-query co-change` on fix sites to find members the user forgot.
|
|
82
|
-
|
|
83
|
-
This step is complete only when every row has a source-traced mechanism and a named invariant. A bug whose mechanism cannot be traced is listed as `unconfirmed member`, not silently included.
|
|
84
|
-
|
|
85
|
-
### 2. Define the system
|
|
86
|
-
|
|
87
|
-
Define the system that owns the family: its wider class, then the essential responsibility that explains its other traits in this codebase, with referents from `scip-query system <scope>` and `scip-query surface <scope>`. Then list the design's load-bearing assumptions as the code actually embodies them, not as the README states them, each with a `Source:` citation.
|
|
88
|
-
|
|
89
|
-
This step is complete only when the system's real responsibilities and embodied assumptions are stated with citations.
|
|
90
|
-
|
|
91
|
-
### 3. Hypothesize the flaw and its rivals
|
|
92
|
-
|
|
93
|
-
State the flaw as a falsifiable design claim:
|
|
94
|
-
|
|
95
|
-
```markdown
|
|
96
|
-
Flaw hypothesis: the design assumes <X> (Source: <citation>), but the system's
|
|
97
|
-
responsibilities include <Y> (Source: <citation>); every family member is an
|
|
98
|
-
instance of the X and Y collision.
|
|
99
|
-
|
|
100
|
-
Rivals:
|
|
101
|
-
|
|
102
|
-
- R1. Coincidence: the members have unrelated causes. Killed by: <evidence> | ALIVE
|
|
103
|
-
- R2. Misuse: callers hold the bug, the design is sound. Killed by: <evidence> | ALIVE
|
|
104
|
-
- R3. <next-most-plausible>. Killed by: <evidence> | ALIVE
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
A rival still marked `ALIVE` at the end of the workflow caps the diagnosis at `CANDIDATE`, not `CONFIRMED`.
|
|
108
|
-
|
|
109
|
-
### 4. Retrodict and predict
|
|
110
|
-
|
|
111
|
-
Retrodiction: derive each family-table row from the flaw in one sentence each. A member that cannot be derived is removed from the family (say so) or refutes the hypothesis (start over).
|
|
112
|
-
|
|
113
|
-
Prediction: the flaw implies unfixed instances exist. Name where they must be, then hunt:
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
scip-query similar <fixed-symbol> --full
|
|
117
|
-
scip-query refs <invariant-carrier>
|
|
118
|
-
scip-query evidence --symbol <invariant-carrier> --edge dataflow --direction outgoing --depth 2 --max-edges 80
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
plus a constructed probe when the claim is cheaply executable. Record each prediction with an executed result:
|
|
122
|
-
|
|
123
|
-
```markdown
|
|
124
|
-
- L1. <predicted latent instance> -> FOUND at <file:line> (new fix target) | NOT FOUND after <hunt executed>
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
This step is complete only when every family member is retrodicted and every prediction has an executed hunt result. Zero latent instances found is a reportable weakness of the diagnosis, not a detail to omit.
|
|
128
|
-
|
|
129
|
-
### 5. Choose the lowest rung
|
|
130
|
-
|
|
131
|
-
The remedy ladder, in order:
|
|
132
|
-
|
|
133
|
-
1. **Enforce the invariant at a boundary** with a type, guard, constraint, lint, or trigger, without moving code.
|
|
134
|
-
2. **Consolidate the responsibility into one owner** so the scattered decision gets one named mechanism.
|
|
135
|
-
3. **Redesign the core behind its existing interface** with consumers untouched.
|
|
136
|
-
4. **Redesign the interfaces** as a last resort; consumers migrate.
|
|
137
|
-
|
|
138
|
-
For the chosen rung, run the attack: construct a family member, retrodicted or latent, that survives the rung. If one survives, keep the counterexample in the record and climb one rung. Check blast radius with `scip-query affected` before proposing any rung above 1. For protocol- or lifecycle-shaped flaws whose remedy must hold across interleavings, note the escalation path to a formal model with `scip-query tla`.
|
|
139
|
-
|
|
140
|
-
This step is complete only when the chosen rung has an attack record showing no family member survives it, and every rejected lower rung keeps its surviving counterexample.
|
|
141
|
-
|
|
142
|
-
### 6. Report and hand off
|
|
143
|
-
|
|
144
|
-
```markdown
|
|
145
|
-
## Root-cause diagnosis
|
|
146
|
-
|
|
147
|
-
System: <definition with referents>
|
|
148
|
-
Bug family: <n> members traced, <u> unconfirmed
|
|
149
|
-
Flaw: <the design claim>: CONFIRMED | CANDIDATE (rival <id> alive)
|
|
150
|
-
Rivals: <r> stated, <k> killed with evidence
|
|
151
|
-
Retrodiction: <n>/<n> members derived
|
|
152
|
-
Latent instances: <p> predicted, <f> found (each a fix target), hunts executed
|
|
153
|
-
Remedy: rung <1-4>: <the intervention>; lower rungs rejected by <counterexamples>
|
|
154
|
-
Blast radius: <affected summary>
|
|
155
|
-
Escalation: <none | formal model for <property>>
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
Hand the diagnosis to `$scip-plan`: the flaw and invariants become its definitions and invariants, the family table and hunt results become premises, and the surviving-counterexample record seeds its attack pass.
|
|
159
|
-
|
|
160
|
-
The diagnosis is complete only when the verdict line carries the counts and every count is backed by an entry in the record above it.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: 'SCIP Root Cause'
|
|
3
|
-
short_description: 'Diagnose the design flaw behind a family of recurring bugs'
|
|
4
|
-
default_prompt: 'Use $scip-root-cause to trace this family of related bugs to the design flaw that produces them: retrodict every member, hunt the latent instances the flaw predicts, and propose the least invasive remedy that eliminates the class.'
|
|
@@ -1,252 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: scip-system-compression
|
|
3
|
-
description: Compress systems with scip-query evidence. Use to zoom out, simplify architecture, eliminate layers, consolidate commands, scripts, or helpers, find the deeper role behind unlike-looking code, build a compression atlas before a large cleanup, or execute an ordered simplification without rework.
|
|
4
|
-
metadata:
|
|
5
|
-
commands:
|
|
6
|
-
- template: 'scip-query system <scope>'
|
|
7
|
-
when: 'Map a module or directory: files, exported symbols, dependencies in and out.'
|
|
8
|
-
- template: 'scip-query surface <scope>'
|
|
9
|
-
when: 'See which symbols consumers actually use from the scope.'
|
|
10
|
-
- template: 'scip-query outline <file>'
|
|
11
|
-
when: 'Inventory one file before assigning its units to roles.'
|
|
12
|
-
- template: 'scip-query trace <symbol>'
|
|
13
|
-
when: 'Prove a key symbol: definition plus every reference.'
|
|
14
|
-
- template: 'scip-query call-graph <symbol>'
|
|
15
|
-
when: 'Prove a key symbol: callers and callees along its execution shape.'
|
|
16
|
-
- template: 'scip-query affected <symbol>'
|
|
17
|
-
when: 'Measure blast radius before choosing a compression model.'
|
|
18
|
-
- template: 'scip-query change-surface <file>'
|
|
19
|
-
when: 'Measure exports, consumers, and risk for a file a cluster will touch.'
|
|
20
|
-
- template: 'scip-query similar --cross-file-only'
|
|
21
|
-
when: 'Signal: functions with overlapping callee sets across files.'
|
|
22
|
-
- template: 'scip-query similar-files'
|
|
23
|
-
when: 'Signal: files with overlapping dependency profiles.'
|
|
24
|
-
- template: 'scip-query similar-chains'
|
|
25
|
-
when: 'Signal: parallel end-to-end flows that diverge at a few points.'
|
|
26
|
-
- template: 'scip-query extract-candidates'
|
|
27
|
-
when: 'Signal: large functions with isolated callee clusters.'
|
|
28
|
-
- template: 'scip-query wrapper-candidates'
|
|
29
|
-
when: 'Signal: single-consumer indirection that a compression may absorb.'
|
|
30
|
-
- template: 'scip-query passthrough-candidates'
|
|
31
|
-
when: 'Signal: pure forwarding functions.'
|
|
32
|
-
- template: 'scip-query stale-abstractions'
|
|
33
|
-
when: 'Signal: types and classes with zero or one consumer.'
|
|
34
|
-
- template: 'scip-query drift --architecture'
|
|
35
|
-
when: 'Signal: files deviating from sibling conventions and declared boundary violations.'
|
|
36
|
-
- template: 'scip-query diff-impact'
|
|
37
|
-
when: 'Audit after each implemented cluster: changed symbols and downstream consumers.'
|
|
38
|
-
- template: 'scip-query architecture'
|
|
39
|
-
when: 'Audit after each implemented cluster: declared boundaries still hold.'
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
# SCIP System Compression
|
|
43
|
-
|
|
44
|
-
<!-- BEGIN GENERATED SKILL COMMANDS -->
|
|
45
|
-
## Command and question manual
|
|
46
|
-
|
|
47
|
-
| Command syntax | Question it answers |
|
|
48
|
-
| --- | --- |
|
|
49
|
-
| `scip-query system <scope>` | Map a module or directory: files, exported symbols, dependencies in and out. |
|
|
50
|
-
| `scip-query surface <scope>` | See which symbols consumers actually use from the scope. |
|
|
51
|
-
| `scip-query outline <file>` | Inventory one file before assigning its units to roles. |
|
|
52
|
-
| `scip-query trace <symbol>` | Prove a key symbol: definition plus every reference. |
|
|
53
|
-
| `scip-query call-graph <symbol>` | Prove a key symbol: callers and callees along its execution shape. |
|
|
54
|
-
| `scip-query affected <symbol>` | Measure blast radius before choosing a compression model. |
|
|
55
|
-
| `scip-query change-surface <file>` | Measure exports, consumers, and risk for a file a cluster will touch. |
|
|
56
|
-
| `scip-query similar --cross-file-only` | Signal: functions with overlapping callee sets across files. |
|
|
57
|
-
| `scip-query similar-files` | Signal: files with overlapping dependency profiles. |
|
|
58
|
-
| `scip-query similar-chains` | Signal: parallel end-to-end flows that diverge at a few points. |
|
|
59
|
-
| `scip-query extract-candidates` | Signal: large functions with isolated callee clusters. |
|
|
60
|
-
| `scip-query wrapper-candidates` | Signal: single-consumer indirection that a compression may absorb. |
|
|
61
|
-
| `scip-query passthrough-candidates` | Signal: pure forwarding functions. |
|
|
62
|
-
| `scip-query stale-abstractions` | Signal: types and classes with zero or one consumer. |
|
|
63
|
-
| `scip-query drift --architecture` | Signal: files deviating from sibling conventions and declared boundary violations. |
|
|
64
|
-
| `scip-query diff-impact` | Audit after each implemented cluster: changed symbols and downstream consumers. |
|
|
65
|
-
| `scip-query architecture` | Audit after each implemented cluster: declared boundaries still hold. |
|
|
66
|
-
|
|
67
|
-
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.
|
|
68
|
-
<!-- END GENERATED SKILL COMMANDS -->
|
|
69
|
-
|
|
70
|
-
## Purpose
|
|
71
|
-
|
|
72
|
-
Use this skill to move between concrete scip-query code facts and higher-level architectural ideas. The goal is not to find similar code. The goal is to find many code units that are doing the same kind of work in principle, build a whole-scope map of the compression opportunities before editing, then propose or execute fewer mechanisms that preserve the same behavior.
|
|
73
|
-
|
|
74
|
-
This is not a score-improvement workflow. Do not optimize for health scores, issue counts, or detector counts. Use diagnostic commands only to find evidence. Judge success by whether the code now has fewer, clearer mechanisms that still preserve the required behavior.
|
|
75
|
-
|
|
76
|
-
`$principal-maintainability-review` ranks smells in one scope. This skill owns the atlas: the whole-system inventory, ordering, and execution of a compression that spans several slices.
|
|
77
|
-
|
|
78
|
-
## Core Terms
|
|
79
|
-
|
|
80
|
-
System compression names an architecture investigation over real code units such as files, symbols, command handlers, query modules, helper layers, renderers, and tests. It identifies when several concrete mechanisms are separate expressions of one deeper role and replaces them, conceptually or in code, with fewer mechanisms that still explain and produce the same observed behavior.
|
|
81
|
-
|
|
82
|
-
An abstraction ladder is an ordered set of descriptions of the same codebase facts, starting with files and symbols, rising through workflows and roles, and ending in principles that explain why those workflows exist. It lets the agent change the amount of detail without losing contact with the original code.
|
|
83
|
-
|
|
84
|
-
A role is the job a code unit performs in a workflow, such as translating user input, choosing a policy, building a graph, running an analysis, formatting output, or preserving a public API. The role is identified by the effect the unit has on data, control flow, or users, not by the names or syntax it happens to use.
|
|
85
|
-
|
|
86
|
-
A principle is a general codebase fact that explains many role-level observations at once. "CLI commands parse options, call a pure query, and render rows" is a principle if it predicts the structure of several commands and explains why their concrete handlers look related.
|
|
87
|
-
|
|
88
|
-
A mechanism is the actual code structure that makes behavior happen: functions, classes, tables, registries, scripts, config files, tests, command builders, dispatch maps, SQL fragments, and module boundaries.
|
|
89
|
-
|
|
90
|
-
An execution shape is the recurring control-flow form behind several concrete units, such as "open database, run pure query, render rows." Use shapes to group unlike-looking code by what must happen in what order.
|
|
91
|
-
|
|
92
|
-
A compression atlas is a written work map over the selected scope. It records real files, symbols, roles, opportunities, dispositions, ordering constraints, and validation commands so the agent acts from a whole-system view instead of repeatedly rediscovering local chances to simplify. Load [`references/compression-atlas.md`](references/compression-atlas.md) for the template.
|
|
93
|
-
|
|
94
|
-
An opportunity ledger is the atlas table that assigns each discovered opportunity exactly one disposition, which prevents already-understood work from reappearing as a "new" idea after nearby code changes.
|
|
95
|
-
|
|
96
|
-
A deferred register is the written list of opportunities deliberately left out of the current implementation. Each entry names the opportunity, the verified blocking fact, and the concrete condition that would make it eligible again.
|
|
97
|
-
|
|
98
|
-
A rework loop is repeated editing of the same file, symbol family, or role because an earlier pass handled one visible symptom without accounting for the wider opportunity set and dependency order. The atlas exists to prevent it.
|
|
99
|
-
|
|
100
|
-
## Workflow
|
|
101
|
-
|
|
102
|
-
### 1. Bound the inquiry
|
|
103
|
-
|
|
104
|
-
Identify the target: whole repository, module, command family, feature, or suspected mess. If the scope is vague, start broad and state the assumed scope before running commands.
|
|
105
|
-
|
|
106
|
-
Prefer a question shaped like:
|
|
107
|
-
|
|
108
|
-
```text
|
|
109
|
-
What is this part of the system trying to do, what roles recur across it, and what smaller mechanism could produce the same behavior?
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
Do not start by proposing a refactor. Start by discovering the current system. Do not edit code until the atlas accounts for all obvious subsystem-level opportunities in the chosen scope.
|
|
113
|
-
|
|
114
|
-
### 2. Build a concrete evidence base
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
scip-query system <scope>
|
|
118
|
-
scip-query surface <scope>
|
|
119
|
-
scip-query outline <file>
|
|
120
|
-
scip-query trace <symbol>
|
|
121
|
-
scip-query call-graph <symbol>
|
|
122
|
-
scip-query affected <symbol>
|
|
123
|
-
scip-query change-surface <file>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Compression signals, used as starting points rather than boundaries:
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
scip-query similar --cross-file-only
|
|
130
|
-
scip-query similar-files
|
|
131
|
-
scip-query similar-chains
|
|
132
|
-
scip-query extract-candidates
|
|
133
|
-
scip-query wrapper-candidates
|
|
134
|
-
scip-query passthrough-candidates
|
|
135
|
-
scip-query stale-abstractions
|
|
136
|
-
scip-query drift --architecture
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
If two units have the same role but different code, keep investigating. Use the first pass to decide which subsystems deserve deeper ladders, not to choose the first refactor.
|
|
140
|
-
|
|
141
|
-
### 3. Climb the abstraction ladder
|
|
142
|
-
|
|
143
|
-
For each important subsystem, write a short ladder:
|
|
144
|
-
|
|
145
|
-
```text
|
|
146
|
-
Concrete: files, symbols, commands, tests, data stores
|
|
147
|
-
Workflow: user or caller path through those units
|
|
148
|
-
Roles: what each unit contributes to the workflow
|
|
149
|
-
Principle: the general rule that explains several roles together
|
|
150
|
-
Pressure: why the current mechanisms feel too numerous, indirect, or inconsistent
|
|
151
|
-
```
|
|
152
|
-
|
|
153
|
-
Every role-level or principle-level sentence must be traceable back to files, symbols, call graphs, references, docs, tests, or observed command output.
|
|
154
|
-
|
|
155
|
-
When the target is a command surface, API surface, worker set, or script family, add an execution-shape inventory:
|
|
156
|
-
|
|
157
|
-
```text
|
|
158
|
-
Shape: name the lifecycle in one sentence
|
|
159
|
-
Units: commands, files, or functions that follow it
|
|
160
|
-
Required order: setup -> policy -> core operation -> rendering or effects
|
|
161
|
-
Variant points: inputs, query function, budget, renderer, error behavior
|
|
162
|
-
Non-members: similar-looking units that must stay separate, and why
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
If most units fit a few shapes, the next abstraction should usually encode those shapes rather than only moving code into themed files. Every ladder's pressure becomes a ledger item; a pressure that never becomes a ledger item is only a note.
|
|
166
|
-
|
|
167
|
-
### 4. Find same-in-principle repetition
|
|
168
|
-
|
|
169
|
-
Look for repeated roles across unlike code:
|
|
170
|
-
|
|
171
|
-
- handlers that all parse options, open a resource, call one query, render sections, and close
|
|
172
|
-
- help text, README text, command metadata, and tests that all describe the same surface
|
|
173
|
-
- query modules that each build equivalent structures before applying different filters
|
|
174
|
-
- language- or kind-specific branches that share one dispatch shape
|
|
175
|
-
- several checks that carry separate definitions of the same predicate, such as liveness or reachability
|
|
176
|
-
- scripts that perform separate concrete steps of one lifecycle
|
|
177
|
-
- wrappers, pass-throughs, and adapters that preserve an old surface after the real concept moved
|
|
178
|
-
|
|
179
|
-
Ask: "What are these all instances of?" Then: "What single mechanism would make those instances natural?" Cluster opportunities by root cause, not by surface trait. Prefer clusters such as "one reachability policy" or "metadata renders command docs" over "files in src/queries" or "similar function names." Load [`references/compression-patterns.md`](references/compression-patterns.md) for a pattern catalog and its anti-patterns.
|
|
180
|
-
|
|
181
|
-
### 5. Build the atlas
|
|
182
|
-
|
|
183
|
-
Write the atlas before implementation. Save it under `docs/plans/YYYY-MM-DD-<scope>-compression-atlas.md` unless the user forbids file creation, in which case include it in the response. It must contain: scope map, role inventory, opportunity ledger, deferred register, compression clusters, dependency order, touch map, and validation plan.
|
|
184
|
-
|
|
185
|
-
Dispositions, exactly one per opportunity:
|
|
186
|
-
|
|
187
|
-
- `merge`: combine mechanisms that perform the same role
|
|
188
|
-
- `delete`: remove a mechanism proven unused or replaced
|
|
189
|
-
- `inline`: remove a wrapper, adapter, or single-use abstraction
|
|
190
|
-
- `extract`: isolate a real shared role that multiple consumers need
|
|
191
|
-
- `generate`: derive a surface from metadata instead of maintaining it by hand
|
|
192
|
-
- `enforce`: centralize a policy or invariant so callers cannot drift
|
|
193
|
-
- `supersede`: absorb a local issue into a larger compression cluster
|
|
194
|
-
- `defer`: keep the opportunity visible but out of the current migration, only because of a verified blocker
|
|
195
|
-
- `skip`: reject the opportunity because the compression is false, too costly, or net-negative
|
|
196
|
-
|
|
197
|
-
Use `defer` only for a verified blocker: outside the stated scope, evidence unavailable, depends on an unimplemented earlier cluster, conflicts with unrelated live edits, needs unavailable runtime or generated artifacts, or the user limited this run. Every deferred entry needs its blocking fact and revisit condition. Do not defer merely because a change is large; if it is the right compression, order it and do it.
|
|
198
|
-
|
|
199
|
-
Reject a plan that starts editing before it can answer: What full set of opportunities is this edit part of? Which later opportunities become easier after it? Which earlier opportunities would make it unnecessary? What file-touch conflicts or public surfaces constrain the order?
|
|
200
|
-
|
|
201
|
-
### 6. Generate competing models
|
|
202
|
-
|
|
203
|
-
For any substantial proposal, produce at least two models; for high-leverage refactors, three: conservative (delete or inline local bloat), shape-level (one small mechanism for a repeated role or lifecycle), and radical (replace a scattered surface with metadata, generation, or enforced policy).
|
|
204
|
-
|
|
205
|
-
Evaluate each by: behavior preserved, concept count, blast radius (`affected`, `change-surface`), deletion potential, failure mode if the abstraction is false, migration path, and whether it deletes, generates, or enforces complexity rather than relocating it.
|
|
206
|
-
|
|
207
|
-
Prefer the model that removes a concept or policy duplication. Do not prefer a model merely because it extracts a helper. Reject a model that creates a new thousand-line center unless that center is a temporary migration step and the next compression step is explicit.
|
|
208
|
-
|
|
209
|
-
### 7. Sense-check, then implement in dependency order
|
|
210
|
-
|
|
211
|
-
Turn the selected model into executor-ready clusters, each with thesis, evidence, old mechanisms, new mechanism, ordered steps naming files and symbols, and validation. Before editing, check: every step names existing files or symbols; overlapping clusters have an explicit order; the plan deletes, generates, or enforces instead of adding a larger abstraction; no step edits a file a later enabling cluster would rewrite; public surfaces that must stay stable are named.
|
|
212
|
-
|
|
213
|
-
Read the source for every key symbol in the proposal with `scip-query code`. Implement cluster by cluster. Finish and validate the current cluster before replanning; change course only when a verified fact falsifies the plan. When the right compression is large, do not shrink it into cosmetic local edits.
|
|
214
|
-
|
|
215
|
-
After each implemented cluster, run the repository's own tests plus:
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
scip-query diff-impact
|
|
219
|
-
scip-query architecture
|
|
220
|
-
scip-query system <new-center-or-module>
|
|
221
|
-
scip-query wrapper-candidates
|
|
222
|
-
scip-query passthrough-candidates
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
Then answer: what old mechanisms disappeared, what new mechanisms appeared, and which new file or symbol is now the next pressure point?
|
|
226
|
-
|
|
227
|
-
## Report
|
|
228
|
-
|
|
229
|
-
```text
|
|
230
|
-
Current System Model: one paragraph from concrete evidence.
|
|
231
|
-
Compression Thesis: the deeper principle and the smaller mechanism, in one sentence.
|
|
232
|
-
Evidence: commands, files, and symbols that support the thesis.
|
|
233
|
-
Proposed Shape: what owns the policy, workflow, or data afterward.
|
|
234
|
-
What Disappears: specific scripts, branches, duplicated policies, hand-maintained text, or helper layers.
|
|
235
|
-
Opportunity Ledger: every discovered opportunity with its disposition.
|
|
236
|
-
Deferred Register: every deferral, its verified blocker, and its revisit condition.
|
|
237
|
-
Dependency Order: cluster order and why earlier clusters enable later ones.
|
|
238
|
-
Compression Audit: whether the proposal deletes, generates or enforces, or merely relocates complexity; the largest remaining pressure point.
|
|
239
|
-
Risks: facts that could falsify the compression or make it too expensive.
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
## Guardrails
|
|
243
|
-
|
|
244
|
-
Do not confuse textual duplication with conceptual duplication. Textual duplication is repeated code; conceptual duplication is repeated responsibility. Either can exist without the other.
|
|
245
|
-
|
|
246
|
-
Do not package-deal unrelated concerns: a false grouping that treats different things as one because they share a surface trait while ignoring the facts that distinguish them.
|
|
247
|
-
|
|
248
|
-
Do not invent a "clean architecture" vocabulary unless it identifies actual referents in this codebase. Prefer the project's existing names when they already isolate the right concepts.
|
|
249
|
-
|
|
250
|
-
Do not let detectors decide the answer. They are instruments, not judgment. Use them to find clues; use source reading and graph facts to validate.
|
|
251
|
-
|
|
252
|
-
Do not let the implementation loop become the discovery mechanism. Discovery produces the atlas; implementation follows it.
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: 'SCIP System Compression'
|
|
3
|
-
short_description: 'Map and order conceptual simplifications across a whole subsystem'
|
|
4
|
-
default_prompt: 'Use $scip-system-compression to build a compression atlas for this scope: climb from files and symbols to roles and principles, inventory every simplification opportunity with a disposition, order clusters by dependency, and propose or execute the smaller mechanisms.'
|