@tyroneross/navgator 0.2.2 → 0.9.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 (692) hide show
  1. package/.agents/plugins/marketplace.json +20 -0
  2. package/.claude-plugin/marketplace.json +21 -7
  3. package/.claude-plugin/plugin.json +16 -11
  4. package/.codex-plugin/plugin.json +31 -0
  5. package/.mcp.json +8 -0
  6. package/CLAUDE.md +197 -23
  7. package/LICENSE +202 -21
  8. package/README.md +220 -33
  9. package/agents/architecture-advisor.md +6 -2
  10. package/agents/architecture-investigator.md +163 -0
  11. package/agents/architecture-planner.md +160 -0
  12. package/agents/external-resolver.md +97 -0
  13. package/dist/__tests__/agent-output.test.d.ts +5 -0
  14. package/dist/__tests__/agent-output.test.d.ts.map +1 -0
  15. package/dist/__tests__/agent-output.test.js +233 -0
  16. package/dist/__tests__/agent-output.test.js.map +1 -0
  17. package/dist/__tests__/architecture-insights-stack.test.d.ts +21 -0
  18. package/dist/__tests__/architecture-insights-stack.test.d.ts.map +1 -0
  19. package/dist/__tests__/architecture-insights-stack.test.js +86 -0
  20. package/dist/__tests__/architecture-insights-stack.test.js.map +1 -0
  21. package/dist/__tests__/architecture-insights.test.d.ts +2 -0
  22. package/dist/__tests__/architecture-insights.test.d.ts.map +1 -0
  23. package/dist/__tests__/architecture-insights.test.js +46 -0
  24. package/dist/__tests__/architecture-insights.test.js.map +1 -0
  25. package/dist/__tests__/audit-sampler.test.d.ts +10 -0
  26. package/dist/__tests__/audit-sampler.test.d.ts.map +1 -0
  27. package/dist/__tests__/audit-sampler.test.js +172 -0
  28. package/dist/__tests__/audit-sampler.test.js.map +1 -0
  29. package/dist/__tests__/audit-spc.test.d.ts +5 -0
  30. package/dist/__tests__/audit-spc.test.d.ts.map +1 -0
  31. package/dist/__tests__/audit-spc.test.js +94 -0
  32. package/dist/__tests__/audit-spc.test.js.map +1 -0
  33. package/dist/__tests__/audit-verifiers.test.d.ts +5 -0
  34. package/dist/__tests__/audit-verifiers.test.d.ts.map +1 -0
  35. package/dist/__tests__/audit-verifiers.test.js +248 -0
  36. package/dist/__tests__/audit-verifiers.test.js.map +1 -0
  37. package/dist/__tests__/auto-refresh.test.d.ts +12 -0
  38. package/dist/__tests__/auto-refresh.test.d.ts.map +1 -0
  39. package/dist/__tests__/auto-refresh.test.js +236 -0
  40. package/dist/__tests__/auto-refresh.test.js.map +1 -0
  41. package/dist/__tests__/bare-imports.test.d.ts +8 -0
  42. package/dist/__tests__/bare-imports.test.d.ts.map +1 -0
  43. package/dist/__tests__/bare-imports.test.js +176 -0
  44. package/dist/__tests__/bare-imports.test.js.map +1 -0
  45. package/dist/__tests__/classify.test.d.ts +5 -0
  46. package/dist/__tests__/classify.test.d.ts.map +1 -0
  47. package/dist/__tests__/classify.test.js +158 -0
  48. package/dist/__tests__/classify.test.js.map +1 -0
  49. package/dist/__tests__/cli-commands.test.d.ts +8 -0
  50. package/dist/__tests__/cli-commands.test.d.ts.map +1 -0
  51. package/dist/__tests__/cli-commands.test.js +207 -0
  52. package/dist/__tests__/cli-commands.test.js.map +1 -0
  53. package/dist/__tests__/consolidated-readers.test.d.ts +23 -0
  54. package/dist/__tests__/consolidated-readers.test.d.ts.map +1 -0
  55. package/dist/__tests__/consolidated-readers.test.js +200 -0
  56. package/dist/__tests__/consolidated-readers.test.js.map +1 -0
  57. package/dist/__tests__/coverage.test.d.ts +5 -0
  58. package/dist/__tests__/coverage.test.d.ts.map +1 -0
  59. package/dist/__tests__/coverage.test.js +120 -0
  60. package/dist/__tests__/coverage.test.js.map +1 -0
  61. package/dist/__tests__/deploy-scanner-runtime.test.d.ts +6 -0
  62. package/dist/__tests__/deploy-scanner-runtime.test.d.ts.map +1 -0
  63. package/dist/__tests__/deploy-scanner-runtime.test.js +168 -0
  64. package/dist/__tests__/deploy-scanner-runtime.test.js.map +1 -0
  65. package/dist/__tests__/env-scanner.test.d.ts +2 -0
  66. package/dist/__tests__/env-scanner.test.d.ts.map +1 -0
  67. package/dist/__tests__/env-scanner.test.js +191 -0
  68. package/dist/__tests__/env-scanner.test.js.map +1 -0
  69. package/dist/__tests__/freshness/cli-freshness.test.d.ts +2 -0
  70. package/dist/__tests__/freshness/cli-freshness.test.d.ts.map +1 -0
  71. package/dist/__tests__/freshness/cli-freshness.test.js +26 -0
  72. package/dist/__tests__/freshness/cli-freshness.test.js.map +1 -0
  73. package/dist/__tests__/freshness/dirty-ledger.test.d.ts +2 -0
  74. package/dist/__tests__/freshness/dirty-ledger.test.d.ts.map +1 -0
  75. package/dist/__tests__/freshness/dirty-ledger.test.js +39 -0
  76. package/dist/__tests__/freshness/dirty-ledger.test.js.map +1 -0
  77. package/dist/__tests__/freshness/drainer.test.d.ts +2 -0
  78. package/dist/__tests__/freshness/drainer.test.d.ts.map +1 -0
  79. package/dist/__tests__/freshness/drainer.test.js +103 -0
  80. package/dist/__tests__/freshness/drainer.test.js.map +1 -0
  81. package/dist/__tests__/freshness/paths.test.d.ts +2 -0
  82. package/dist/__tests__/freshness/paths.test.d.ts.map +1 -0
  83. package/dist/__tests__/freshness/paths.test.js +19 -0
  84. package/dist/__tests__/freshness/paths.test.js.map +1 -0
  85. package/dist/__tests__/freshness/scan-lock.test.d.ts +2 -0
  86. package/dist/__tests__/freshness/scan-lock.test.d.ts.map +1 -0
  87. package/dist/__tests__/freshness/scan-lock.test.js +40 -0
  88. package/dist/__tests__/freshness/scan-lock.test.js.map +1 -0
  89. package/dist/__tests__/freshness/stamp.test.d.ts +2 -0
  90. package/dist/__tests__/freshness/stamp.test.d.ts.map +1 -0
  91. package/dist/__tests__/freshness/stamp.test.js +36 -0
  92. package/dist/__tests__/freshness/stamp.test.js.map +1 -0
  93. package/dist/__tests__/gitignore-safety.test.d.ts +2 -0
  94. package/dist/__tests__/gitignore-safety.test.d.ts.map +1 -0
  95. package/dist/__tests__/gitignore-safety.test.js +110 -0
  96. package/dist/__tests__/gitignore-safety.test.js.map +1 -0
  97. package/dist/__tests__/helpers.d.ts +37 -0
  98. package/dist/__tests__/helpers.d.ts.map +1 -0
  99. package/dist/__tests__/helpers.js +134 -0
  100. package/dist/__tests__/helpers.js.map +1 -0
  101. package/dist/__tests__/impact.test.d.ts +5 -0
  102. package/dist/__tests__/impact.test.d.ts.map +1 -0
  103. package/dist/__tests__/impact.test.js +221 -0
  104. package/dist/__tests__/impact.test.js.map +1 -0
  105. package/dist/__tests__/lessons-store.test.d.ts +8 -0
  106. package/dist/__tests__/lessons-store.test.d.ts.map +1 -0
  107. package/dist/__tests__/lessons-store.test.js +232 -0
  108. package/dist/__tests__/lessons-store.test.js.map +1 -0
  109. package/dist/__tests__/llm-dedup.test.d.ts +2 -0
  110. package/dist/__tests__/llm-dedup.test.d.ts.map +1 -0
  111. package/dist/__tests__/llm-dedup.test.js +155 -0
  112. package/dist/__tests__/llm-dedup.test.js.map +1 -0
  113. package/dist/__tests__/mjs-frontend-fetch.test.d.ts +19 -0
  114. package/dist/__tests__/mjs-frontend-fetch.test.d.ts.map +1 -0
  115. package/dist/__tests__/mjs-frontend-fetch.test.js +179 -0
  116. package/dist/__tests__/mjs-frontend-fetch.test.js.map +1 -0
  117. package/dist/__tests__/multi-stack-discovery.test.d.ts +11 -0
  118. package/dist/__tests__/multi-stack-discovery.test.d.ts.map +1 -0
  119. package/dist/__tests__/multi-stack-discovery.test.js +75 -0
  120. package/dist/__tests__/multi-stack-discovery.test.js.map +1 -0
  121. package/dist/__tests__/per-entity-files-gate.test.d.ts +22 -0
  122. package/dist/__tests__/per-entity-files-gate.test.d.ts.map +1 -0
  123. package/dist/__tests__/per-entity-files-gate.test.js +160 -0
  124. package/dist/__tests__/per-entity-files-gate.test.js.map +1 -0
  125. package/dist/__tests__/prisma-calls.test.d.ts +2 -0
  126. package/dist/__tests__/prisma-calls.test.d.ts.map +1 -0
  127. package/dist/__tests__/prisma-calls.test.js +125 -0
  128. package/dist/__tests__/prisma-calls.test.js.map +1 -0
  129. package/dist/__tests__/prisma-parser.test.d.ts +2 -0
  130. package/dist/__tests__/prisma-parser.test.d.ts.map +1 -0
  131. package/dist/__tests__/prisma-parser.test.js +252 -0
  132. package/dist/__tests__/prisma-parser.test.js.map +1 -0
  133. package/dist/__tests__/prompt-detector.test.d.ts +5 -0
  134. package/dist/__tests__/prompt-detector.test.d.ts.map +1 -0
  135. package/dist/__tests__/prompt-detector.test.js +75 -0
  136. package/dist/__tests__/prompt-detector.test.js.map +1 -0
  137. package/dist/__tests__/queue-scanner.test.d.ts +5 -0
  138. package/dist/__tests__/queue-scanner.test.d.ts.map +1 -0
  139. package/dist/__tests__/queue-scanner.test.js +85 -0
  140. package/dist/__tests__/queue-scanner.test.js.map +1 -0
  141. package/dist/__tests__/resolve.test.d.ts +5 -0
  142. package/dist/__tests__/resolve.test.d.ts.map +1 -0
  143. package/dist/__tests__/resolve.test.js +196 -0
  144. package/dist/__tests__/resolve.test.js.map +1 -0
  145. package/dist/__tests__/rules.test.d.ts +2 -0
  146. package/dist/__tests__/rules.test.d.ts.map +1 -0
  147. package/dist/__tests__/rules.test.js +343 -0
  148. package/dist/__tests__/rules.test.js.map +1 -0
  149. package/dist/__tests__/sandbox.test.d.ts +5 -0
  150. package/dist/__tests__/sandbox.test.d.ts.map +1 -0
  151. package/dist/__tests__/sandbox.test.js +189 -0
  152. package/dist/__tests__/sandbox.test.js.map +1 -0
  153. package/dist/__tests__/scanner-audit.test.d.ts +9 -0
  154. package/dist/__tests__/scanner-audit.test.d.ts.map +1 -0
  155. package/dist/__tests__/scanner-audit.test.js +64 -0
  156. package/dist/__tests__/scanner-audit.test.js.map +1 -0
  157. package/dist/__tests__/scanner-characterization.test.d.ts +16 -0
  158. package/dist/__tests__/scanner-characterization.test.d.ts.map +1 -0
  159. package/dist/__tests__/scanner-characterization.test.js +167 -0
  160. package/dist/__tests__/scanner-characterization.test.js.map +1 -0
  161. package/dist/__tests__/scanner-incremental.test.d.ts +13 -0
  162. package/dist/__tests__/scanner-incremental.test.d.ts.map +1 -0
  163. package/dist/__tests__/scanner-incremental.test.js +725 -0
  164. package/dist/__tests__/scanner-incremental.test.js.map +1 -0
  165. package/dist/__tests__/scanner-integration.test.d.ts +7 -0
  166. package/dist/__tests__/scanner-integration.test.d.ts.map +1 -0
  167. package/dist/__tests__/scanner-integration.test.js +211 -0
  168. package/dist/__tests__/scanner-integration.test.js.map +1 -0
  169. package/dist/__tests__/scip-new-catches.test.d.ts +19 -0
  170. package/dist/__tests__/scip-new-catches.test.d.ts.map +1 -0
  171. package/dist/__tests__/scip-new-catches.test.js +90 -0
  172. package/dist/__tests__/scip-new-catches.test.js.map +1 -0
  173. package/dist/__tests__/subgraph.test.d.ts +5 -0
  174. package/dist/__tests__/subgraph.test.d.ts.map +1 -0
  175. package/dist/__tests__/subgraph.test.js +145 -0
  176. package/dist/__tests__/subgraph.test.js.map +1 -0
  177. package/dist/__tests__/trace.test.d.ts +5 -0
  178. package/dist/__tests__/trace.test.d.ts.map +1 -0
  179. package/dist/__tests__/trace.test.js +221 -0
  180. package/dist/__tests__/trace.test.js.map +1 -0
  181. package/dist/agent-output.d.ts +16 -0
  182. package/dist/agent-output.d.ts.map +1 -0
  183. package/dist/agent-output.js +142 -0
  184. package/dist/agent-output.js.map +1 -0
  185. package/dist/architecture-insights.d.ts +17 -0
  186. package/dist/architecture-insights.d.ts.map +1 -0
  187. package/dist/architecture-insights.js +178 -0
  188. package/dist/architecture-insights.js.map +1 -0
  189. package/dist/audit/index.d.ts +69 -0
  190. package/dist/audit/index.d.ts.map +1 -0
  191. package/dist/audit/index.js +255 -0
  192. package/dist/audit/index.js.map +1 -0
  193. package/dist/audit/sampler.d.ts +98 -0
  194. package/dist/audit/sampler.d.ts.map +1 -0
  195. package/dist/audit/sampler.js +298 -0
  196. package/dist/audit/sampler.js.map +1 -0
  197. package/dist/audit/spc.d.ts +62 -0
  198. package/dist/audit/spc.d.ts.map +1 -0
  199. package/dist/audit/spc.js +81 -0
  200. package/dist/audit/spc.js.map +1 -0
  201. package/dist/audit/verifiers.d.ts +81 -0
  202. package/dist/audit/verifiers.d.ts.map +1 -0
  203. package/dist/audit/verifiers.js +366 -0
  204. package/dist/audit/verifiers.js.map +1 -0
  205. package/dist/classify.d.ts +19 -0
  206. package/dist/classify.d.ts.map +1 -0
  207. package/dist/classify.js +124 -0
  208. package/dist/classify.js.map +1 -0
  209. package/dist/cli/commands/connections.d.ts +3 -0
  210. package/dist/cli/commands/connections.d.ts.map +1 -0
  211. package/dist/cli/commands/connections.js +125 -0
  212. package/dist/cli/commands/connections.js.map +1 -0
  213. package/dist/cli/commands/coverage.d.ts +3 -0
  214. package/dist/cli/commands/coverage.d.ts.map +1 -0
  215. package/dist/cli/commands/coverage.js +94 -0
  216. package/dist/cli/commands/coverage.js.map +1 -0
  217. package/dist/cli/commands/dead.d.ts +3 -0
  218. package/dist/cli/commands/dead.d.ts.map +1 -0
  219. package/dist/cli/commands/dead.js +80 -0
  220. package/dist/cli/commands/dead.js.map +1 -0
  221. package/dist/cli/commands/diagram.d.ts +3 -0
  222. package/dist/cli/commands/diagram.d.ts.map +1 -0
  223. package/dist/cli/commands/diagram.js +102 -0
  224. package/dist/cli/commands/diagram.js.map +1 -0
  225. package/dist/cli/commands/find.d.ts +3 -0
  226. package/dist/cli/commands/find.d.ts.map +1 -0
  227. package/dist/cli/commands/find.js +128 -0
  228. package/dist/cli/commands/find.js.map +1 -0
  229. package/dist/cli/commands/freshness.d.ts +20 -0
  230. package/dist/cli/commands/freshness.d.ts.map +1 -0
  231. package/dist/cli/commands/freshness.js +90 -0
  232. package/dist/cli/commands/freshness.js.map +1 -0
  233. package/dist/cli/commands/helpers.d.ts +7 -0
  234. package/dist/cli/commands/helpers.d.ts.map +1 -0
  235. package/dist/cli/commands/helpers.js +30 -0
  236. package/dist/cli/commands/helpers.js.map +1 -0
  237. package/dist/cli/commands/impact.d.ts +3 -0
  238. package/dist/cli/commands/impact.d.ts.map +1 -0
  239. package/dist/cli/commands/impact.js +172 -0
  240. package/dist/cli/commands/impact.js.map +1 -0
  241. package/dist/cli/commands/lessons.d.ts +6 -0
  242. package/dist/cli/commands/lessons.d.ts.map +1 -0
  243. package/dist/cli/commands/lessons.js +279 -0
  244. package/dist/cli/commands/lessons.js.map +1 -0
  245. package/dist/cli/commands/list.d.ts +3 -0
  246. package/dist/cli/commands/list.d.ts.map +1 -0
  247. package/dist/cli/commands/list.js +91 -0
  248. package/dist/cli/commands/list.js.map +1 -0
  249. package/dist/cli/commands/llm-map.d.ts +3 -0
  250. package/dist/cli/commands/llm-map.d.ts.map +1 -0
  251. package/dist/cli/commands/llm-map.js +121 -0
  252. package/dist/cli/commands/llm-map.js.map +1 -0
  253. package/dist/cli/commands/misc.d.ts +17 -0
  254. package/dist/cli/commands/misc.d.ts.map +1 -0
  255. package/dist/cli/commands/misc.js +495 -0
  256. package/dist/cli/commands/misc.js.map +1 -0
  257. package/dist/cli/commands/prompts.d.ts +3 -0
  258. package/dist/cli/commands/prompts.d.ts.map +1 -0
  259. package/dist/cli/commands/prompts.js +74 -0
  260. package/dist/cli/commands/prompts.js.map +1 -0
  261. package/dist/cli/commands/rules.d.ts +3 -0
  262. package/dist/cli/commands/rules.d.ts.map +1 -0
  263. package/dist/cli/commands/rules.js +61 -0
  264. package/dist/cli/commands/rules.js.map +1 -0
  265. package/dist/cli/commands/scan.d.ts +3 -0
  266. package/dist/cli/commands/scan.d.ts.map +1 -0
  267. package/dist/cli/commands/scan.js +177 -0
  268. package/dist/cli/commands/scan.js.map +1 -0
  269. package/dist/cli/commands/schema.d.ts +3 -0
  270. package/dist/cli/commands/schema.d.ts.map +1 -0
  271. package/dist/cli/commands/schema.js +126 -0
  272. package/dist/cli/commands/schema.js.map +1 -0
  273. package/dist/cli/commands/status.d.ts +3 -0
  274. package/dist/cli/commands/status.d.ts.map +1 -0
  275. package/dist/cli/commands/status.js +340 -0
  276. package/dist/cli/commands/status.js.map +1 -0
  277. package/dist/cli/commands/subgraph.d.ts +3 -0
  278. package/dist/cli/commands/subgraph.d.ts.map +1 -0
  279. package/dist/cli/commands/subgraph.js +55 -0
  280. package/dist/cli/commands/subgraph.js.map +1 -0
  281. package/dist/cli/commands/temporal.d.ts +3 -0
  282. package/dist/cli/commands/temporal.d.ts.map +1 -0
  283. package/dist/cli/commands/temporal.js +112 -0
  284. package/dist/cli/commands/temporal.js.map +1 -0
  285. package/dist/cli/commands/trace.d.ts +3 -0
  286. package/dist/cli/commands/trace.d.ts.map +1 -0
  287. package/dist/cli/commands/trace.js +65 -0
  288. package/dist/cli/commands/trace.js.map +1 -0
  289. package/dist/cli/index.js +88 -825
  290. package/dist/cli/index.js.map +1 -1
  291. package/dist/config.d.ts +13 -2
  292. package/dist/config.d.ts.map +1 -1
  293. package/dist/config.js +106 -12
  294. package/dist/config.js.map +1 -1
  295. package/dist/coverage.d.ts +37 -0
  296. package/dist/coverage.d.ts.map +1 -0
  297. package/dist/coverage.js +177 -0
  298. package/dist/coverage.js.map +1 -0
  299. package/dist/diagram.d.ts.map +1 -1
  300. package/dist/diagram.js +41 -0
  301. package/dist/diagram.js.map +1 -1
  302. package/dist/diff.d.ts +57 -0
  303. package/dist/diff.d.ts.map +1 -0
  304. package/dist/diff.js +527 -0
  305. package/dist/diff.js.map +1 -0
  306. package/dist/enrich/cache.d.ts +41 -0
  307. package/dist/enrich/cache.d.ts.map +1 -0
  308. package/dist/enrich/cache.js +97 -0
  309. package/dist/enrich/cache.js.map +1 -0
  310. package/dist/enrich/external-enrichment.types.d.ts +91 -0
  311. package/dist/enrich/external-enrichment.types.d.ts.map +1 -0
  312. package/dist/enrich/external-enrichment.types.js +38 -0
  313. package/dist/enrich/external-enrichment.types.js.map +1 -0
  314. package/dist/enrich/external-resolver.d.ts +95 -0
  315. package/dist/enrich/external-resolver.d.ts.map +1 -0
  316. package/dist/enrich/external-resolver.js +222 -0
  317. package/dist/enrich/external-resolver.js.map +1 -0
  318. package/dist/enrich/fetchers.d.ts +30 -0
  319. package/dist/enrich/fetchers.d.ts.map +1 -0
  320. package/dist/enrich/fetchers.js +89 -0
  321. package/dist/enrich/fetchers.js.map +1 -0
  322. package/dist/file-resolve.d.ts +35 -0
  323. package/dist/file-resolve.d.ts.map +1 -0
  324. package/dist/file-resolve.js +159 -0
  325. package/dist/file-resolve.js.map +1 -0
  326. package/dist/freshness/dirty-ledger.d.ts +7 -0
  327. package/dist/freshness/dirty-ledger.d.ts.map +1 -0
  328. package/dist/freshness/dirty-ledger.js +56 -0
  329. package/dist/freshness/dirty-ledger.js.map +1 -0
  330. package/dist/freshness/drainer.d.ts +38 -0
  331. package/dist/freshness/drainer.d.ts.map +1 -0
  332. package/dist/freshness/drainer.js +88 -0
  333. package/dist/freshness/drainer.js.map +1 -0
  334. package/dist/freshness/paths.d.ts +9 -0
  335. package/dist/freshness/paths.d.ts.map +1 -0
  336. package/dist/freshness/paths.js +24 -0
  337. package/dist/freshness/paths.js.map +1 -0
  338. package/dist/freshness/scan-lock.d.ts +8 -0
  339. package/dist/freshness/scan-lock.d.ts.map +1 -0
  340. package/dist/freshness/scan-lock.js +68 -0
  341. package/dist/freshness/scan-lock.js.map +1 -0
  342. package/dist/freshness/stamp.d.ts +25 -0
  343. package/dist/freshness/stamp.d.ts.map +1 -0
  344. package/dist/freshness/stamp.js +50 -0
  345. package/dist/freshness/stamp.js.map +1 -0
  346. package/dist/git.d.ts +12 -0
  347. package/dist/git.d.ts.map +1 -0
  348. package/dist/git.js +42 -0
  349. package/dist/git.js.map +1 -0
  350. package/dist/gitignore-safety.d.ts +41 -0
  351. package/dist/gitignore-safety.d.ts.map +1 -0
  352. package/dist/gitignore-safety.js +107 -0
  353. package/dist/gitignore-safety.js.map +1 -0
  354. package/dist/impact.d.ts +20 -0
  355. package/dist/impact.d.ts.map +1 -0
  356. package/dist/impact.js +89 -0
  357. package/dist/impact.js.map +1 -0
  358. package/dist/index.d.ts +24 -2
  359. package/dist/index.d.ts.map +1 -1
  360. package/dist/index.js +31 -1
  361. package/dist/index.js.map +1 -1
  362. package/dist/lessons-store.d.ts +93 -0
  363. package/dist/lessons-store.d.ts.map +1 -0
  364. package/dist/lessons-store.js +265 -0
  365. package/dist/lessons-store.js.map +1 -0
  366. package/dist/llm-dedup.d.ts +40 -0
  367. package/dist/llm-dedup.d.ts.map +1 -0
  368. package/dist/llm-dedup.js +373 -0
  369. package/dist/llm-dedup.js.map +1 -0
  370. package/dist/mcp/server.d.ts +9 -0
  371. package/dist/mcp/server.d.ts.map +1 -0
  372. package/dist/mcp/server.js +87 -0
  373. package/dist/mcp/server.js.map +1 -0
  374. package/dist/mcp/tools.d.ts +198 -0
  375. package/dist/mcp/tools.d.ts.map +1 -0
  376. package/dist/mcp/tools.js +744 -0
  377. package/dist/mcp/tools.js.map +1 -0
  378. package/dist/metrics/pagerank-louvain.d.ts +44 -0
  379. package/dist/metrics/pagerank-louvain.d.ts.map +1 -0
  380. package/dist/metrics/pagerank-louvain.js +128 -0
  381. package/dist/metrics/pagerank-louvain.js.map +1 -0
  382. package/dist/parsers/scip-runner.d.ts +63 -0
  383. package/dist/parsers/scip-runner.d.ts.map +1 -0
  384. package/dist/parsers/scip-runner.js +179 -0
  385. package/dist/parsers/scip-runner.js.map +1 -0
  386. package/dist/projects.d.ts +54 -0
  387. package/dist/projects.d.ts.map +1 -0
  388. package/dist/projects.js +153 -0
  389. package/dist/projects.js.map +1 -0
  390. package/dist/resolve.d.ts +22 -0
  391. package/dist/resolve.d.ts.map +1 -0
  392. package/dist/resolve.js +128 -0
  393. package/dist/resolve.js.map +1 -0
  394. package/dist/rules.d.ts +36 -0
  395. package/dist/rules.d.ts.map +1 -0
  396. package/dist/rules.js +484 -0
  397. package/dist/rules.js.map +1 -0
  398. package/dist/sandbox.d.ts +33 -0
  399. package/dist/sandbox.d.ts.map +1 -0
  400. package/dist/sandbox.js +91 -0
  401. package/dist/sandbox.js.map +1 -0
  402. package/dist/scan-lock.d.ts +37 -0
  403. package/dist/scan-lock.d.ts.map +1 -0
  404. package/dist/scan-lock.js +145 -0
  405. package/dist/scan-lock.js.map +1 -0
  406. package/dist/scanner.d.ts +126 -1
  407. package/dist/scanner.d.ts.map +1 -1
  408. package/dist/scanner.js +1711 -235
  409. package/dist/scanner.js.map +1 -1
  410. package/dist/scanners/connections/ast-scanner.d.ts +9 -2
  411. package/dist/scanners/connections/ast-scanner.d.ts.map +1 -1
  412. package/dist/scanners/connections/ast-scanner.js +19 -4
  413. package/dist/scanners/connections/ast-scanner.js.map +1 -1
  414. package/dist/scanners/connections/import-scanner.d.ts +27 -0
  415. package/dist/scanners/connections/import-scanner.d.ts.map +1 -0
  416. package/dist/scanners/connections/import-scanner.js +537 -0
  417. package/dist/scanners/connections/import-scanner.js.map +1 -0
  418. package/dist/scanners/connections/llm-call-tracer.d.ts +1 -1
  419. package/dist/scanners/connections/llm-call-tracer.d.ts.map +1 -1
  420. package/dist/scanners/connections/llm-call-tracer.js +6 -2
  421. package/dist/scanners/connections/llm-call-tracer.js.map +1 -1
  422. package/dist/scanners/connections/prisma-calls.d.ts +11 -0
  423. package/dist/scanners/connections/prisma-calls.d.ts.map +1 -0
  424. package/dist/scanners/connections/prisma-calls.js +237 -0
  425. package/dist/scanners/connections/prisma-calls.js.map +1 -0
  426. package/dist/scanners/connections/service-calls.d.ts +1 -1
  427. package/dist/scanners/connections/service-calls.d.ts.map +1 -1
  428. package/dist/scanners/connections/service-calls.js +35 -3
  429. package/dist/scanners/connections/service-calls.js.map +1 -1
  430. package/dist/scanners/infrastructure/cron-scanner.d.ts +14 -0
  431. package/dist/scanners/infrastructure/cron-scanner.d.ts.map +1 -0
  432. package/dist/scanners/infrastructure/cron-scanner.js +383 -0
  433. package/dist/scanners/infrastructure/cron-scanner.js.map +1 -0
  434. package/dist/scanners/infrastructure/deploy-scanner.d.ts +11 -0
  435. package/dist/scanners/infrastructure/deploy-scanner.d.ts.map +1 -0
  436. package/dist/scanners/infrastructure/deploy-scanner.js +508 -0
  437. package/dist/scanners/infrastructure/deploy-scanner.js.map +1 -0
  438. package/dist/scanners/infrastructure/env-scanner.d.ts +55 -0
  439. package/dist/scanners/infrastructure/env-scanner.d.ts.map +1 -0
  440. package/dist/scanners/infrastructure/env-scanner.js +431 -0
  441. package/dist/scanners/infrastructure/env-scanner.js.map +1 -0
  442. package/dist/scanners/infrastructure/field-usage-analyzer.d.ts +52 -0
  443. package/dist/scanners/infrastructure/field-usage-analyzer.d.ts.map +1 -0
  444. package/dist/scanners/infrastructure/field-usage-analyzer.js +480 -0
  445. package/dist/scanners/infrastructure/field-usage-analyzer.js.map +1 -0
  446. package/dist/scanners/infrastructure/prisma-parser.d.ts +21 -0
  447. package/dist/scanners/infrastructure/prisma-parser.d.ts.map +1 -0
  448. package/dist/scanners/infrastructure/prisma-parser.js +58 -0
  449. package/dist/scanners/infrastructure/prisma-parser.js.map +1 -0
  450. package/dist/scanners/infrastructure/prisma-scanner.d.ts +30 -0
  451. package/dist/scanners/infrastructure/prisma-scanner.d.ts.map +1 -0
  452. package/dist/scanners/infrastructure/prisma-scanner.js +329 -0
  453. package/dist/scanners/infrastructure/prisma-scanner.js.map +1 -0
  454. package/dist/scanners/infrastructure/queue-scanner.d.ts +14 -0
  455. package/dist/scanners/infrastructure/queue-scanner.d.ts.map +1 -0
  456. package/dist/scanners/infrastructure/queue-scanner.js +455 -0
  457. package/dist/scanners/infrastructure/queue-scanner.js.map +1 -0
  458. package/dist/scanners/infrastructure/typespec-validator.d.ts +50 -0
  459. package/dist/scanners/infrastructure/typespec-validator.d.ts.map +1 -0
  460. package/dist/scanners/infrastructure/typespec-validator.js +407 -0
  461. package/dist/scanners/infrastructure/typespec-validator.js.map +1 -0
  462. package/dist/scanners/packages/swift.d.ts +5 -0
  463. package/dist/scanners/packages/swift.d.ts.map +1 -1
  464. package/dist/scanners/packages/swift.js +23 -0
  465. package/dist/scanners/packages/swift.js.map +1 -1
  466. package/dist/scanners/prompts/detector.d.ts +13 -2
  467. package/dist/scanners/prompts/detector.d.ts.map +1 -1
  468. package/dist/scanners/prompts/detector.js +97 -46
  469. package/dist/scanners/prompts/detector.js.map +1 -1
  470. package/dist/scanners/prompts/index.d.ts +1 -1
  471. package/dist/scanners/prompts/index.d.ts.map +1 -1
  472. package/dist/scanners/prompts/index.js +2 -2
  473. package/dist/scanners/prompts/index.js.map +1 -1
  474. package/dist/scanners/swift/code-scanner.d.ts +1 -1
  475. package/dist/scanners/swift/code-scanner.d.ts.map +1 -1
  476. package/dist/scanners/swift/code-scanner.js +216 -2
  477. package/dist/scanners/swift/code-scanner.js.map +1 -1
  478. package/dist/scanners/swift/swiftui-scanner.d.ts +45 -0
  479. package/dist/scanners/swift/swiftui-scanner.d.ts.map +1 -0
  480. package/dist/scanners/swift/swiftui-scanner.js +606 -0
  481. package/dist/scanners/swift/swiftui-scanner.js.map +1 -0
  482. package/dist/scanners/xcode/pbxproj-parser.d.ts +32 -0
  483. package/dist/scanners/xcode/pbxproj-parser.d.ts.map +1 -0
  484. package/dist/scanners/xcode/pbxproj-parser.js +407 -0
  485. package/dist/scanners/xcode/pbxproj-parser.js.map +1 -0
  486. package/dist/scanners/xcode/storyboard-scanner.d.ts +13 -0
  487. package/dist/scanners/xcode/storyboard-scanner.d.ts.map +1 -0
  488. package/dist/scanners/xcode/storyboard-scanner.js +236 -0
  489. package/dist/scanners/xcode/storyboard-scanner.js.map +1 -0
  490. package/dist/storage/markdown-view.d.ts +49 -0
  491. package/dist/storage/markdown-view.d.ts.map +1 -0
  492. package/dist/storage/markdown-view.js +233 -0
  493. package/dist/storage/markdown-view.js.map +1 -0
  494. package/dist/storage.d.ts +225 -9
  495. package/dist/storage.d.ts.map +1 -1
  496. package/dist/storage.js +945 -86
  497. package/dist/storage.js.map +1 -1
  498. package/dist/subgraph.d.ts +30 -0
  499. package/dist/subgraph.d.ts.map +1 -0
  500. package/dist/subgraph.js +106 -0
  501. package/dist/subgraph.js.map +1 -0
  502. package/dist/temporal/git-store.d.ts +65 -0
  503. package/dist/temporal/git-store.d.ts.map +1 -0
  504. package/dist/temporal/git-store.js +166 -0
  505. package/dist/temporal/git-store.js.map +1 -0
  506. package/dist/trace.d.ts +38 -0
  507. package/dist/trace.d.ts.map +1 -0
  508. package/dist/trace.js +292 -0
  509. package/dist/trace.js.map +1 -0
  510. package/dist/types.d.ts +322 -2
  511. package/dist/types.d.ts.map +1 -1
  512. package/dist/types.js +53 -0
  513. package/dist/types.js.map +1 -1
  514. package/hooks/hooks.json +1 -55
  515. package/hooks/mark-dirty.sh +20 -0
  516. package/hooks/post-bash-suggest.sh +30 -0
  517. package/hooks/post-edit-suggest.sh +29 -0
  518. package/hooks/pre-edit-warn.sh +28 -0
  519. package/hooks/session-start.sh +19 -0
  520. package/hooks/stop-suggest.sh +49 -0
  521. package/package.json +30 -11
  522. package/scripts/install-codex-plugin.sh +119 -0
  523. package/scripts/install-plugin.sh +29 -24
  524. package/skills/architecture-export/SKILL.md +79 -0
  525. package/skills/architecture-scan/SKILL.md +64 -0
  526. package/skills/code-review/SKILL.md +368 -0
  527. package/skills/impact-analysis/SKILL.md +80 -0
  528. package/skills/infrastructure-scanning.md +42 -0
  529. package/skills/navgator-setup/SKILL.md +108 -0
  530. package/web/.next/standalone/web/.next/BUILD_ID +1 -1
  531. package/web/.next/standalone/web/.next/app-path-routes-manifest.json +3 -0
  532. package/web/.next/standalone/web/.next/build-manifest.json +2 -2
  533. package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
  534. package/web/.next/standalone/web/.next/required-server-files.json +4 -4
  535. package/web/.next/standalone/web/.next/routes-manifest.json +18 -0
  536. package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
  537. package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
  538. package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  539. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  540. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  541. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  542. package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  543. package/web/.next/standalone/web/.next/server/app/_not-found/page/next-font-manifest.json +2 -2
  544. package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  545. package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
  546. package/web/.next/standalone/web/.next/server/app/_not-found.rsc +3 -3
  547. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
  548. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  549. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
  550. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  551. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  552. package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
  553. package/web/.next/standalone/web/.next/server/app/api/prompts/route.js.nft.json +1 -1
  554. package/web/.next/standalone/web/.next/server/app/api/rules/route/app-paths-manifest.json +3 -0
  555. package/web/.next/standalone/web/.next/server/app/api/rules/route/build-manifest.json +11 -0
  556. package/web/.next/standalone/web/.next/server/app/api/rules/route/server-reference-manifest.json +4 -0
  557. package/web/.next/standalone/web/.next/server/app/api/rules/route.js +6 -0
  558. package/web/.next/standalone/web/.next/server/app/api/rules/route.js.map +5 -0
  559. package/web/.next/standalone/web/.next/server/app/api/rules/route.js.nft.json +1 -0
  560. package/web/.next/standalone/web/.next/server/app/api/rules/route_client-reference-manifest.js +2 -0
  561. package/web/.next/standalone/web/.next/server/app/api/subgraph/route/app-paths-manifest.json +3 -0
  562. package/web/.next/standalone/web/.next/server/app/api/subgraph/route/build-manifest.json +11 -0
  563. package/web/.next/standalone/web/.next/server/app/api/subgraph/route/server-reference-manifest.json +4 -0
  564. package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js +6 -0
  565. package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js.map +5 -0
  566. package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js.nft.json +1 -0
  567. package/web/.next/standalone/web/.next/server/app/api/subgraph/route_client-reference-manifest.js +2 -0
  568. package/web/.next/standalone/web/.next/server/app/api/trace/route/app-paths-manifest.json +3 -0
  569. package/web/.next/standalone/web/.next/server/app/api/trace/route/build-manifest.json +11 -0
  570. package/web/.next/standalone/web/.next/server/app/api/trace/route/server-reference-manifest.json +4 -0
  571. package/web/.next/standalone/web/.next/server/app/api/trace/route.js +6 -0
  572. package/web/.next/standalone/web/.next/server/app/api/trace/route.js.map +5 -0
  573. package/web/.next/standalone/web/.next/server/app/api/trace/route.js.nft.json +1 -0
  574. package/web/.next/standalone/web/.next/server/app/api/trace/route_client-reference-manifest.js +2 -0
  575. package/web/.next/standalone/web/.next/server/app/index.html +1 -1
  576. package/web/.next/standalone/web/.next/server/app/index.rsc +6 -6
  577. package/web/.next/standalone/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  578. package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +6 -6
  579. package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
  580. package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
  581. package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +5 -5
  582. package/web/.next/standalone/web/.next/server/app/page/next-font-manifest.json +2 -2
  583. package/web/.next/standalone/web/.next/server/app/page_client-reference-manifest.js +1 -1
  584. package/web/.next/standalone/web/.next/server/app-paths-manifest.json +3 -0
  585. package/web/.next/standalone/web/.next/server/chunks/2374f_next_dist_esm_build_templates_app-route_0bb4e66a.js +1 -1
  586. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__006b837d._.js +1 -1
  587. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__0426efe8._.js +3 -0
  588. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__2e09fec9._.js +1 -1
  589. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__38d0390f._.js +1 -1
  590. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__594bcf20._.js +1 -1
  591. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__b888fadf._.js +1 -1
  592. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__cd5f36ce._.js +3 -0
  593. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__ee6fc95f._.js +3 -0
  594. package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__fa2ec862._.js +1 -1
  595. package/web/.next/standalone/web/.next/server/chunks/ssr/web_171de0df._.js +9 -4
  596. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_rules_route_actions_3de01bd5.js +3 -0
  597. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_subgraph_route_actions_d8b5a63f.js +3 -0
  598. package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_trace_route_actions_b0703ae2.js +3 -0
  599. package/web/.next/standalone/web/.next/server/next-font-manifest.js +1 -1
  600. package/web/.next/standalone/web/.next/server/next-font-manifest.json +4 -4
  601. package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
  602. package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
  603. package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
  604. package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
  605. package/web/.next/standalone/web/.next/static/chunks/22a09ecf6ba35cfd.js +17 -0
  606. package/web/.next/standalone/web/.next/static/chunks/9857ba86ce4e82d8.css +2 -0
  607. package/web/.next/standalone/web/.next/static/chunks/f899547f99ef4b76.css +1 -0
  608. package/web/.next/standalone/web/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
  609. package/web/.next/standalone/web/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
  610. package/web/.next/standalone/web/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
  611. package/web/.next/standalone/web/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
  612. package/web/.next/standalone/web/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
  613. package/web/.next/standalone/web/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
  614. package/web/.next/standalone/web/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
  615. package/web/.next/standalone/web/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
  616. package/web/.next/standalone/web/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
  617. package/web/.next/standalone/web/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
  618. package/web/.next/standalone/web/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
  619. package/web/.next/standalone/web/app/api/components/route.ts +1 -1
  620. package/web/.next/standalone/web/app/api/connections/route.ts +3 -1
  621. package/web/.next/standalone/web/app/api/graph/route.ts +3 -3
  622. package/web/.next/standalone/web/app/api/projects/route.ts +1 -1
  623. package/web/.next/standalone/web/app/api/prompts/route.ts +2 -2
  624. package/web/.next/standalone/web/app/api/rules/route.ts +213 -0
  625. package/web/.next/standalone/web/app/api/settings/route.ts +2 -2
  626. package/web/.next/standalone/web/app/api/status/route.ts +1 -1
  627. package/web/.next/standalone/web/app/api/subgraph/route.ts +267 -0
  628. package/web/.next/standalone/web/app/api/trace/route.ts +321 -0
  629. package/web/.next/standalone/web/app/page.tsx +9 -1
  630. package/web/.next/standalone/web/components/connections-panel.tsx +23 -6
  631. package/web/.next/standalone/web/components/coverage-panel.tsx +309 -0
  632. package/web/.next/standalone/web/components/rules-panel.tsx +156 -0
  633. package/web/.next/standalone/web/components/sidebar.tsx +8 -0
  634. package/web/.next/standalone/web/components/status-overview.tsx +24 -1
  635. package/web/.next/standalone/web/components/subgraph-panel.tsx +382 -0
  636. package/web/.next/standalone/web/components/trace-panel.tsx +325 -0
  637. package/web/.next/standalone/web/lib/hooks/index.ts +3 -0
  638. package/web/.next/standalone/web/lib/hooks/use-coverage.ts +68 -0
  639. package/web/.next/standalone/web/lib/hooks/use-subgraph.ts +85 -0
  640. package/web/.next/standalone/web/lib/hooks/use-trace.ts +84 -0
  641. package/web/.next/standalone/web/lib/types.ts +108 -0
  642. package/web/.next/standalone/web/package-lock.json +218 -0
  643. package/web/.next/standalone/web/package.json +4 -2
  644. package/web/.next/standalone/web/server.js +1 -1
  645. package/web/.next/static/chunks/22a09ecf6ba35cfd.js +17 -0
  646. package/web/.next/static/chunks/9857ba86ce4e82d8.css +2 -0
  647. package/web/.next/static/chunks/f899547f99ef4b76.css +1 -0
  648. package/web/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
  649. package/web/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
  650. package/web/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
  651. package/web/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
  652. package/web/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
  653. package/web/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
  654. package/web/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
  655. package/web/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
  656. package/web/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
  657. package/web/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
  658. package/web/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
  659. package/skills/check/SKILL.md +0 -64
  660. package/skills/connections/SKILL.md +0 -54
  661. package/skills/diagram/SKILL.md +0 -64
  662. package/skills/export/SKILL.md +0 -49
  663. package/skills/impact/SKILL.md +0 -58
  664. package/skills/install/SKILL.md +0 -94
  665. package/skills/scan/SKILL.md +0 -75
  666. package/skills/status/SKILL.md +0 -37
  667. package/skills/ui/SKILL.md +0 -43
  668. package/skills/update/SKILL.md +0 -43
  669. package/web/.next/standalone/web/.next/static/chunks/8a80e7184ad3a13f.css +0 -2
  670. package/web/.next/standalone/web/.next/static/chunks/c056475f5f4424b6.css +0 -1
  671. package/web/.next/standalone/web/.next/static/chunks/cb3513192b63e480.js +0 -12
  672. package/web/.next/standalone/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  673. package/web/.next/standalone/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  674. package/web/.next/standalone/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  675. package/web/.next/standalone/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  676. package/web/.next/standalone/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  677. package/web/.next/standalone/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  678. package/web/.next/static/chunks/8a80e7184ad3a13f.css +0 -2
  679. package/web/.next/static/chunks/c056475f5f4424b6.css +0 -1
  680. package/web/.next/static/chunks/cb3513192b63e480.js +0 -12
  681. package/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
  682. package/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
  683. package/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
  684. package/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
  685. package/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
  686. package/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
  687. /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_buildManifest.js +0 -0
  688. /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_clientMiddlewareManifest.json +0 -0
  689. /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_ssgManifest.js +0 -0
  690. /package/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_buildManifest.js +0 -0
  691. /package/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_clientMiddlewareManifest.json +0 -0
  692. /package/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_ssgManifest.js +0 -0
@@ -0,0 +1,368 @@
1
+ ---
2
+ name: code-review
3
+ description: Use when user asks to review architecture, check connections, navgator review, is this safe to merge, what did I break, or when scan detects architectural drift. Architectural integrity review of system flow and connections.
4
+ version: 0.4.0
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Architectural Integrity Review
9
+
10
+ Orchestrates NavGator's impact analysis, data flow tracing, rules engine, and lessons tracking into a repeatable architectural review workflow. This skill is an architectural integrity reviewer — not a linter, not a bug hunter.
11
+
12
+ ## What This Skill IS vs. IS NOT
13
+
14
+ **IS:**
15
+ - System flow — how data moves from user input through the system to output
16
+ - Component communication — APIs, data formats, connection patterns between layers
17
+ - API contract validation — interface changes and whether consumers are updated
18
+ - LLM architecture — provider routing, prompt patterns, model selection logic
19
+ - Documentation drift — whether docs reflect what the code actually does
20
+ - Lessons learned — patterns that caused issues, tracked and matched over time
21
+ - Freshness validation — periodic research to avoid stale architectural knowledge
22
+
23
+ **IS NOT:**
24
+ - Code linter or style checker — formatting, naming conventions, indentation
25
+ - Individual function bug hunter — local logic errors, off-by-one mistakes
26
+ - Security vulnerability scanner — use dedicated security tools for that
27
+ - Test coverage auditor — use `navgator coverage` for that
28
+ - TypeScript type error detector — the compiler handles that
29
+ - Performance optimizer — not the scope of architectural review
30
+
31
+ ## Scope Resolution
32
+
33
+ Determine what to review before starting:
34
+
35
+ | Invocation | Scope |
36
+ |------------|-------|
37
+ | Default (no flags) | `git diff origin/main..HEAD` — changed files since branch diverged |
38
+ | `--all` | Full architecture review across all components |
39
+ | `<component>` | Focused review on one component and its direct connections |
40
+ | `--validate` | Run Phase 5 freshness validation regardless of age |
41
+ | `learn "..."` | Record a manual lesson, skip full review |
42
+
43
+ When scope is ambiguous, default to `git diff origin/main..HEAD`. If the branch has no divergence from main, ask the user what they want to review.
44
+
45
+ ## Prerequisites
46
+
47
+ Before starting any phase:
48
+
49
+ 1. Check if `.navgator/architecture/index.json` exists. If not, stop and tell the user to run `/navgator:scan` first.
50
+ 2. Check the `generated_at` timestamp in `index.json`. If >24 hours old, warn: "Architecture data is N hours old — consider running `/navgator:scan` first for accurate results."
51
+ 3. Load `.navgator/architecture/file_map.json` for file-to-component resolution.
52
+ 4. Load `.navgator/architecture/graph.json` for connection traversal.
53
+ 5. Check for `.navgator/lessons/lessons.json`. If missing, create it:
54
+ ```json
55
+ { "schema_version": "1.0.0", "lessons": [] }
56
+ ```
57
+
58
+ Do not proceed without architecture data. Proceeding on stale data is worse than pausing.
59
+
60
+ ---
61
+
62
+ ## Phase 1 — Structural Changes
63
+
64
+ **Goal:** Identify which components and layers were touched.
65
+
66
+ 1. Run `git diff [scope] --stat` to get the list of changed files.
67
+ 2. For each changed file, look it up in `file_map.json` to resolve to its parent component ID.
68
+ 3. Look up that component ID in `index.json` to get its type and layer.
69
+ 4. Classify each change:
70
+ - **New component** — file belongs to a component not previously in the graph
71
+ - **Modified connection** — file is a connection point (API route, service interface, adapter)
72
+ - **Config change** — environment config, deploy config, package.json
73
+ - **Documentation** — README, CLAUDE.md, skill files, comments only
74
+ 5. Identify which layers were touched: frontend, backend, database, infra, external.
75
+ 6. Flag any change that crosses more than one layer as **cross-layer** — these carry higher risk because they affect integration boundaries.
76
+ 7. Note any new files that do not resolve to any component in `file_map.json` — these may be untracked additions.
77
+
78
+ Output:
79
+ ```
80
+ ═══ PHASE 1: STRUCTURAL CHANGES ═══
81
+ N components touched across N layers
82
+ Cross-layer: [ComponentA (frontend→backend), ComponentB (backend→database)]
83
+ New components: [any new, unconnected components — needs scan to track]
84
+ Layers: frontend(N) | backend(N) | database(N) | infra(N)
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Phase 2 — Connection & Flow Integrity
90
+
91
+ **Goal:** Verify that component connections are valid and data flows are intact.
92
+
93
+ For each component identified in Phase 1:
94
+
95
+ 1. Call `navgator impact` MCP tool with the component name to get its blast radius (incoming and outgoing connections, severity).
96
+ 2. Call `navgator trace` MCP tool (direction: "both") to follow data flow forward and backward through the architecture.
97
+ 3. Call `navgator connections` MCP tool (direction: "both") to inspect the specific connection map.
98
+
99
+ Check for these architectural issues. For each finding, record: severity, file:line, what is wrong, and why it matters architecturally.
100
+
101
+ | Issue | Severity | Detection |
102
+ |-------|----------|-----------|
103
+ | Orphaned component | Important | New component with 0 incoming AND 0 outgoing connections |
104
+ | Broken reference | Critical | Connection points to a component not in `graph.json` |
105
+ | Layer violation | Critical | Frontend connects directly to database, bypassing backend |
106
+ | High fan-out | Important | Component has >8 outgoing dependencies — fragility indicator |
107
+ | Import cycle | Critical | Component A → B → A (circular dependency) |
108
+ | API contract mismatch | Critical | Component interface changed but connected consumers not updated |
109
+ | Self-referencing connection | Important | Component listed as its own dependency in graph output |
110
+
111
+ For each changed component, construct the data flow trace showing the full chain from user input to response. Example format:
112
+ ```
113
+ User → next/pages → /api/users → prisma.user.findMany → PostgreSQL → JSON response
114
+ ```
115
+
116
+ Output:
117
+ ```
118
+ ═══ PHASE 2: CONNECTION INTEGRITY ═══
119
+ Rules: N violations (N critical, N important, N minor)
120
+
121
+ [CRITICAL] Layer violation: ComponentA (frontend) → ComponentB (database)
122
+ File: src/pages/users.tsx:45
123
+ Why: Frontend bypasses API layer, creating tight coupling to DB schema.
124
+ Any schema change now requires frontend updates.
125
+
126
+ [IMPORTANT] Orphaned component: NewService
127
+ File: src/services/new-service.ts
128
+ Why: Component has no connections — either integration is incomplete
129
+ or this is dead code.
130
+
131
+ Data flow for changed components:
132
+ ComponentA: User → next/pages → /api/users → prisma.user.findMany → PostgreSQL → JSON response
133
+ ComponentB: Worker → BullMQ → process() → db.write() → PostgreSQL
134
+ ```
135
+
136
+ If no violations: report "No connection integrity issues found" — do not omit the section.
137
+
138
+ ---
139
+
140
+ ## Phase 2.5 — LLM Purpose Classification
141
+
142
+ **Goal:** Classify what each LLM call does in the architecture — not just which provider is called, but WHY.
143
+
144
+ 1. Run `navgator llm-map --classify` to get uncategorized LLM use cases with their file paths and downstream connections.
145
+ 2. For each uncategorized use case:
146
+ - Read the primary file listed
147
+ - Look at: the function name, what the LLM response is used for, what services/databases/queues it feeds into
148
+ - Classify the purpose: summarization, extraction, search/ranking, generation, embedding, classification, translation, agent/tool-use, validation, analysis, synthesis, etc.
149
+ - Note what part of the system it affects: search results, UI charts, database writes, queue processing, API responses
150
+ 3. Record classifications as lessons in `.navgator/lessons/lessons.json` with category `'llm-architecture'`
151
+ 4. If patterns repeat (e.g., all files in `lib/search/` use LLMs for search ranking), create a `.navgator/features.yaml` entry
152
+
153
+ This classification enables answering: "which LLM call affects my search ranking?" and "if Groq goes down, what breaks?"
154
+
155
+ Output:
156
+ ```
157
+ ═══ PHASE 2.5: LLM PURPOSE MAP ═══
158
+ 35 use cases, 25 categorized, 10 need classification
159
+
160
+ SEARCH (3): groq-reranker.ts, intelligent-query-engine.ts, search-enhancement-queue.ts
161
+ SYNTHESIS (4): pyramid-llm-synthesizer.ts, chart-spec-generator.ts, ...
162
+ EXTRACTION (2): entity-extraction-service.ts, relationship-extraction-service.ts
163
+ UNCATEGORIZED (10): [read these files to classify]
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Phase 3 — Documentation Drift
169
+
170
+ **Goal:** Verify that docs reflect what the code actually does.
171
+
172
+ 1. Read `README.md`. For each CLI command or flag in the implementation, check that it appears in the README CLI Reference section. Run `node dist/cli/index.js --help` (or the equivalent for this project) and compare against what README documents.
173
+ 2. Read `CLAUDE.md`. Verify the command table is complete — all `/navgator:*` commands that exist in the implementation should be listed.
174
+ 3. List all directories under `skills/`. For each capability NavGator has, verify a skill file exists.
175
+ 4. Read `plugin.json` (or equivalent config). Verify all referenced directories and entry points exist on disk.
176
+ 5. For each new or modified capability identified in Phase 1, check whether it appears in:
177
+ - README (user-facing docs)
178
+ - CLAUDE.md (agent-facing docs)
179
+ - A skill file (agent discoverability)
180
+
181
+ An agent-invisible feature is one that exists in code but does not appear in any agent-readable file (CLAUDE.md or skill files). These are the highest-priority documentation gaps — they silently degrade agent capability.
182
+
183
+ Output:
184
+ ```
185
+ ═══ PHASE 3: DOCUMENTATION DRIFT ═══
186
+ Undocumented: [capabilities not in README, CLAUDE.md, or skills/]
187
+ Stale: [docs referencing behavior that no longer matches implementation]
188
+ Agent-invisible: [features an agent would not discover from available context]
189
+
190
+ [AGENT-INVISIBLE] --validate flag added to code-review but not in CLAUDE.md command table
191
+ [STALE] README references `navgator check` but command was renamed to `/navgator:check`
192
+ [UNDOCUMENTED] navgator coverage --typespec — no skill file, not in CLAUDE.md
193
+ ```
194
+
195
+ If no drift: report "Documentation matches implementation" — do not omit the section.
196
+
197
+ ---
198
+
199
+ ## Phase 4 — Lessons Check
200
+
201
+ **Goal:** Match current findings against known patterns, and record new ones.
202
+
203
+ ### Matching Known Lessons
204
+
205
+ 1. Read `.navgator/lessons/lessons.json`.
206
+ 2. For each lesson in the file, check whether any changed file, component, or finding from Phases 1–3 matches the lesson's `signature` patterns (regex or string match against file paths, code patterns, or component names).
207
+ 3. If a match is found, flag it with recurrence context. Do not silently skip matches.
208
+
209
+ ### Recording New Lessons
210
+
211
+ After Phase 3 completes, for each NEW finding (not already in lessons.json), create a lesson entry and append it to lessons.json:
212
+
213
+ ```json
214
+ {
215
+ "id": "<deterministic hash — sha256 of category+pattern, truncated to 8 chars>",
216
+ "category": "<layer-violation | orphaned-component | api-contract | doc-drift | import-cycle | triplicated-logic | other>",
217
+ "pattern": "<human-readable description of the pattern>",
218
+ "signature": ["<regex or code fragment that would match recurrence>"],
219
+ "severity": "<critical | important | minor>",
220
+ "context": {
221
+ "first_seen": "<ISO 8601 date>",
222
+ "last_seen": "<ISO 8601 date>",
223
+ "occurrences": 1,
224
+ "files_affected": ["<file paths where this was found>"],
225
+ "resolution": "<how to fix this — specific, not generic>"
226
+ },
227
+ "example": {
228
+ "bad": "<code or pattern that causes the issue>",
229
+ "good": "<correct pattern>",
230
+ "why": "<architectural reasoning — why this matters at the system level>"
231
+ },
232
+ "validation": {
233
+ "last_validated": "<ISO 8601 date>",
234
+ "source": "agent",
235
+ "status": "unvalidated"
236
+ }
237
+ }
238
+ ```
239
+
240
+ If a lesson already exists for this pattern (matched by `id` or `signature`), update `last_seen`, increment `occurrences`, and merge `files_affected` — do not create a duplicate.
241
+
242
+ Write updated lessons.json back to `.navgator/lessons/lessons.json`.
243
+
244
+ Output:
245
+ ```
246
+ ═══ PHASE 4: LESSONS ═══
247
+ Matched: N known patterns
248
+ [MATCH] "Triplicated parser logic across scanners" (seen 3 times, last: 2026-03-15)
249
+ Files: src/scanners/js.ts, src/scanners/ts.ts, src/scanners/py.ts
250
+ Resolution: Extract shared utility — see src/parsers/shared-parser.ts
251
+
252
+ New lessons recorded: N
253
+ [NEW] "Self-referencing connection in graph output" → recorded (id: a3f9b21c)
254
+ [NEW] "CLI flag undocumented in agent context" → recorded (id: 7d4e8f01)
255
+ ```
256
+
257
+ ---
258
+
259
+ ## Phase 5 — Freshness Validation
260
+
261
+ **Goal:** Ensure lessons referencing external APIs or libraries still reflect current best practice.
262
+
263
+ Only run Phase 5 when one of these conditions is true:
264
+ - User passed `--validate` flag
265
+ - A lesson references an external API, library, or version-specific behavior
266
+ - More than 30 days have passed since `validation.last_validated` on any matched lesson
267
+
268
+ For each lesson that needs validation:
269
+ 1. Use WebSearch to look up the referenced API, library, or pattern.
270
+ 2. Verify it is still the current recommended approach.
271
+ 3. Update the lesson entry:
272
+ - `validation.last_validated` → today's ISO date
273
+ - `validation.status` → `"current"` or `"stale"`
274
+ - `validation.source` → `"web-search"`
275
+ 4. If stale, add a `validation.note` field explaining what changed.
276
+
277
+ Write the updated lessons.json back.
278
+
279
+ Output:
280
+ ```
281
+ ═══ PHASE 5: FRESHNESS ═══
282
+ Validated: N lessons confirmed current
283
+ Stale: N lessons need update
284
+ Skipped: N (not due for validation)
285
+
286
+ [CURRENT] "BullMQ Worker API" — confirmed current as of BullMQ v5 docs
287
+ [STALE] "Next.js API routes pattern" — App Router is now preferred, Pages Router deprecated in v16
288
+ Update: Detection signature should flag Pages Router /api/ usage
289
+ ```
290
+
291
+ If Phase 5 was not triggered: report "Freshness validation skipped (use --validate to force)" — do not omit the section.
292
+
293
+ ---
294
+
295
+ ## Manual Lesson Entry
296
+
297
+ When the user runs a review with `learn "..."`:
298
+
299
+ 1. Parse the lesson text from the quoted argument.
300
+ 2. Infer category from content. If ambiguous, ask: "What category fits best? (layer-violation / orphaned-component / api-contract / doc-drift / import-cycle / triplicated-logic / other)"
301
+ 3. Create a lesson entry with:
302
+ - `source: "manual"`
303
+ - `status: "unvalidated"`
304
+ - `occurrences: 1`
305
+ - `first_seen` and `last_seen` set to today
306
+ 4. Write to `.navgator/lessons/lessons.json`.
307
+ 5. Confirm: "Lesson recorded (id: XXXXXXXX). Run `/navgator:review --validate` to verify it against current best practice."
308
+
309
+ Do not run the full 5-phase review for manual lesson entry — just record and confirm.
310
+
311
+ ---
312
+
313
+ ## What to Ignore
314
+
315
+ This skill explicitly does NOT review:
316
+
317
+ - **Individual function logic** — off-by-one errors, business rule correctness, algorithm bugs. Use a debugger.
318
+ - **Code style and formatting** — indentation, naming conventions, blank lines. Use a linter.
319
+ - **Test coverage** — missing tests, untested branches. Use `navgator coverage`.
320
+ - **Performance** — slow queries, rendering bottlenecks, memory usage. Use profiling tools.
321
+ - **Security vulnerabilities** — SQL injection, XSS, auth bypasses. Use dedicated security tools.
322
+ - **TypeScript type errors** — the compiler catches those before review.
323
+ - **Spelling and grammar** — in comments or docs. Not the scope here.
324
+
325
+ If a finding falls into one of the above categories, note it briefly and redirect: "This looks like a linter issue — outside architectural review scope." Then move on.
326
+
327
+ ---
328
+
329
+ ## Examples
330
+
331
+ These are real architectural findings this skill is designed to surface:
332
+
333
+ **Example 1 — Triplicated logic (pattern: shared utility violated)**
334
+ ```
335
+ [IMPORTANT] Phase 2: Prisma result parser duplicated across 3 scanners
336
+ Files: src/scanners/js-scanner.ts:88, src/scanners/ts-scanner.ts:112, src/scanners/py-scanner.ts:67
337
+ Why: Three components implement identical result normalization logic independently.
338
+ Any fix to the parsing behavior must be applied in three places — high maintenance risk.
339
+ This also signals that the scanner abstraction boundary is leaking implementation.
340
+ Resolution: Extract shared utility at src/parsers/prisma-result-parser.ts,
341
+ import from all three scanners.
342
+ ```
343
+
344
+ **Example 2 — Self-referencing connection (pattern: component communication contract broken)**
345
+ ```
346
+ [IMPORTANT] Phase 2: graph.json shows NavGatorCore → NavGatorCore (self-reference)
347
+ File: .navgator/architecture/graph.json (generated output)
348
+ Why: A component listed as its own dependency indicates the connection detection
349
+ logic matched internal calls as external connections. The graph output contract
350
+ is broken — consumers relying on this graph for impact analysis will see
351
+ inflated blast radius and incorrect dependency chains.
352
+ Resolution: Add self-reference filter in graph builder before writing graph.json.
353
+ ```
354
+
355
+ **Example 3 — Agent-invisible capability (pattern: doc drift)**
356
+ ```
357
+ [AGENT-INVISIBLE] Phase 3: navgator coverage --typespec added to CLI but absent from CLAUDE.md
358
+ File: src/cli/index.ts:203 (flag defined), CLAUDE.md (missing)
359
+ Why: Claude Code reads CLAUDE.md to discover available commands. A capability not
360
+ listed there will never be suggested or invoked by an agent, regardless of
361
+ how useful it is. The feature exists but is unreachable in agent-driven workflows.
362
+ Resolution: Add `navgator coverage --typespec` row to CLAUDE.md command table
363
+ with a one-line description of what it validates.
364
+ ```
365
+
366
+ ---
367
+
368
+ *navgator — architecture tracker*
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: impact-analysis
3
+ description: Use when user asks what breaks if I change X, impact of changing, what depends on, trace data flow, show connections, dependency graph, upstream/downstream, or safe to modify before refactoring.
4
+ version: 0.4.0
5
+ user-invocable: false
6
+ ---
7
+
8
+ # Impact Analysis & Connections
9
+
10
+ Analyze what's affected by changes and map component connections using NavGator MCP tools. This skill covers impact analysis, connection viewing, and dataflow tracing.
11
+
12
+ ## When to Activate
13
+
14
+ - User asks what's affected by changing a component or file
15
+ - User wants to see dependencies before refactoring
16
+ - User asks about upstream/downstream connections
17
+ - Before major changes to shared components
18
+ - User wants to trace how data flows through the system
19
+
20
+ ## Impact Analysis
21
+
22
+ Use the `navgator impact` MCP tool with the component name to analyze blast radius.
23
+
24
+ **Input:** Component name (e.g., "express", "prisma", "/api/users")
25
+
26
+ **Returns:**
27
+ - Component's name, type, and layer
28
+ - **Incoming connections**: Components/files that USE this component (may need changes)
29
+ - **Outgoing connections**: Components this one depends on
30
+ - Severity assessment (critical/high/medium/low based on dependent count)
31
+ - Specific file paths and line numbers for each connection
32
+
33
+ ### File-Based Impact
34
+
35
+ If the user provides a file path instead of a component name:
36
+ 1. The tool resolves the file to its parent component automatically via file map lookup
37
+ 2. If no component found, suggest running a scan to refresh architecture data
38
+
39
+ ## Connection Mapping
40
+
41
+ Use the `navgator connections` MCP tool to show all connections for a component.
42
+
43
+ **Input:** Component name (required), direction (optional: "in", "out", or "both")
44
+
45
+ **Returns:**
46
+ - All incoming connections (what connects TO this component)
47
+ - All outgoing connections (what this component connects TO)
48
+ - File paths and line numbers for each connection
49
+
50
+ ## Dataflow Tracing
51
+
52
+ Use the `navgator trace` MCP tool to follow data flow through the architecture.
53
+
54
+ **Input:** Component name (required), direction (optional: "forward", "backward", or "both")
55
+
56
+ **Returns:**
57
+ - Data flow path through components
58
+ - Layer crossings (e.g., frontend → backend → database)
59
+ - Dependency chains with depth
60
+
61
+ ## Decision Tree
62
+
63
+ | User Intent | MCP Tool | Notes |
64
+ |-------------|----------|-------|
65
+ | "What breaks if I change X?" | `navgator impact` | Full blast radius |
66
+ | "Show connections for X" | `navgator connections` | All connections |
67
+ | "What depends on X?" | `navgator connections` (direction: "in") | Incoming only |
68
+ | "What does X use?" | `navgator connections` (direction: "out") | Outgoing only |
69
+ | "Trace data flow from X" | `navgator trace` | Forward/backward/both |
70
+ | "Is it safe to modify X?" | `navgator impact` | Check severity |
71
+
72
+ ## After Analysis
73
+
74
+ Present results clearly:
75
+ 1. Severity level and summary
76
+ 2. Direct dependents (most important to review)
77
+ 3. Transitive dependents (may be affected)
78
+ 4. Recommendation: which files to review before making changes
79
+
80
+ *navgator — architecture tracker*
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: infrastructure-scanning
3
+ description: Detect and analyze infrastructure components — Prisma models, env vars, queues, crons, deploy configs, field usage, and type validation
4
+ ---
5
+
6
+ # Infrastructure Scanning
7
+
8
+ NavGator detects infrastructure components beyond packages and services.
9
+
10
+ ## Quick Commands
11
+
12
+ | Command | What it does |
13
+ |---------|-------------|
14
+ | `navgator scan` | Detect all infrastructure (Prisma, env vars, queues, crons, deploy) |
15
+ | `navgator scan --field-usage` | Analyze which Prisma model fields are actually used in code |
16
+ | `navgator scan --typespec` | Compare Prisma model types against TypeScript interfaces |
17
+ | `navgator coverage --fields` | Standalone field usage report |
18
+ | `navgator coverage --typespec` | Standalone type validation report |
19
+ | `navgator status` | Shows INFRASTRUCTURE and RUNTIME TOPOLOGY sections with counts |
20
+
21
+ ## What Gets Detected
22
+
23
+ **Prisma** — Models, fields, relations, indexes, table mappings. Field usage analysis identifies unused, read-only, and write-only fields across the codebase.
24
+
25
+ **Environment Variables** — From `.env` files and `process.env` references. Categorized as database, auth, api-key, service, infra, or app-config.
26
+
27
+ **Queues** — BullMQ/Bull queue definitions with producer/consumer topology and concurrency settings.
28
+
29
+ **Cron Jobs** — From vercel.json, railway.json, and node-cron patterns with human-readable schedule descriptions.
30
+
31
+ **Deploy Configs** — Vercel, Railway, Heroku, Procfile, and nixpacks configurations with service definitions.
32
+
33
+ **TypeSpec Validation** — Compares Prisma model field types against TypeScript interface definitions, flagging mismatches (e.g., `DateTime` vs `string` instead of `Date`).
34
+
35
+ **Runtime Topology** — Annotates components with runtime identity extracted from code and config:
36
+ - Database engine, host, and port from `DATABASE_URL` and Prisma `datasource` blocks
37
+ - Redis endpoints from BullMQ queue configs and env vars
38
+ - Queue-to-Redis backing store mappings with producer/consumer relationships
39
+ - Deploy service names from Railway, Vercel, Heroku (Procfile), and Nixpacks configs
40
+ - Cron handler linkage — scheduled jobs mapped to their handler functions and platform
41
+
42
+ Run `navgator status` to see the RUNTIME TOPOLOGY section. Enables backward tracing: "which code produces to queue X?" or "what database engine does this schema connect to?"
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: navgator-setup
3
+ description: Use when user asks to install navgator, update navgator, set up navgator, launch the dashboard, or run navgator ui maintenance.
4
+ version: 0.4.0
5
+ user-invocable: true
6
+ argument-hint: [install|update|ui]
7
+ ---
8
+
9
+ # NavGator Setup & Maintenance
10
+
11
+ Install the plugin, update to latest version, or launch the web dashboard. These operations use CLI commands (npm/shell operations that aren't MCP tools).
12
+
13
+ ## Install Plugin
14
+
15
+ Install NavGator explicitly for Claude Code or Codex.
16
+
17
+ ### Steps
18
+
19
+ 1. **Check if npm package is installed globally:**
20
+ ```bash
21
+ npm ls -g @tyroneross/navgator 2>/dev/null | head -3
22
+ ```
23
+
24
+ 2. **Install globally if needed:**
25
+ ```bash
26
+ npm install -g @tyroneross/navgator
27
+ ```
28
+
29
+ 3. **Install the Claude surface:**
30
+
31
+ Global (all projects):
32
+ ```bash
33
+ mkdir -p ~/.claude/plugins
34
+ ln -sfn "$(npm root -g)/@tyroneross/navgator" ~/.claude/plugins/navgator
35
+ ```
36
+
37
+ Project only:
38
+ ```bash
39
+ mkdir -p .claude/plugins
40
+ ln -sfn "$(npm root -g)/@tyroneross/navgator" .claude/plugins/navgator
41
+ ```
42
+
43
+ 4. **Verify:** Check that `plugin.json` is accessible at the symlink target.
44
+
45
+ 5. Restart Claude Code for changes to take effect.
46
+
47
+ ### Codex
48
+
49
+ Use the Codex installer from the repo root:
50
+
51
+ ```bash
52
+ # user-wide install
53
+ bash scripts/install-codex-plugin.sh --user
54
+
55
+ # repo-local workspace metadata only
56
+ bash scripts/install-codex-plugin.sh --workspace
57
+ ```
58
+
59
+ Codex uses:
60
+ - `.codex-plugin/plugin.json`
61
+ - `.agents/plugins/marketplace.json`
62
+
63
+ ## Update
64
+
65
+ 1. Check current vs latest version:
66
+ ```bash
67
+ npx @tyroneross/navgator --version
68
+ npm view @tyroneross/navgator version
69
+ ```
70
+
71
+ 2. If update available:
72
+ ```bash
73
+ npm install -g @tyroneross/navgator@latest
74
+ ```
75
+
76
+ 3. Clear npx cache so subsequent calls use the new version:
77
+ ```bash
78
+ NPX_CACHE_DIR=$(npm config get cache)/_npx
79
+ find "$NPX_CACHE_DIR" -path "*/@tyroneross/navgator" -type d 2>/dev/null | head -1 | xargs -I{} dirname "$(dirname "{}")" | xargs rm -rf 2>/dev/null || true
80
+ npx @tyroneross/navgator@latest --version
81
+ ```
82
+
83
+ ## Web Dashboard
84
+
85
+ Launch the visual architecture explorer:
86
+
87
+ ```bash
88
+ npx @tyroneross/navgator ui --port 3002
89
+ ```
90
+
91
+ Dashboard at `http://localhost:3002` shows:
92
+ - Architecture overview with component counts
93
+ - Interactive connection graph
94
+ - Impact analysis interface
95
+ - LLM/prompt tracking
96
+ - Project switcher
97
+
98
+ ## Uninstall
99
+
100
+ ```bash
101
+ # Global
102
+ rm -f ~/.claude/plugins/navgator
103
+
104
+ # Project
105
+ rm -f .claude/plugins/navgator
106
+ ```
107
+
108
+ *navgator — architecture tracker*
@@ -1 +1 @@
1
- P-ZMQO7_Wnj487ks3guqa
1
+ qZVrJ4kmwXfw4Ikgj1oXR
@@ -6,8 +6,11 @@
6
6
  "/api/graph/route": "/api/graph",
7
7
  "/api/projects/route": "/api/projects",
8
8
  "/api/prompts/route": "/api/prompts",
9
+ "/api/rules/route": "/api/rules",
9
10
  "/api/scan/route": "/api/scan",
10
11
  "/api/settings/route": "/api/settings",
11
12
  "/api/status/route": "/api/status",
13
+ "/api/subgraph/route": "/api/subgraph",
14
+ "/api/trace/route": "/api/trace",
12
15
  "/page": "/"
13
16
  }
@@ -7,8 +7,8 @@
7
7
  "static/chunks/a6dad97d9634a72d.js"
8
8
  ],
9
9
  "lowPriorityFiles": [
10
- "static/P-ZMQO7_Wnj487ks3guqa/_ssgManifest.js",
11
- "static/P-ZMQO7_Wnj487ks3guqa/_buildManifest.js"
10
+ "static/qZVrJ4kmwXfw4Ikgj1oXR/_ssgManifest.js",
11
+ "static/qZVrJ4kmwXfw4Ikgj1oXR/_buildManifest.js"
12
12
  ],
13
13
  "rootMainFiles": [
14
14
  "static/chunks/c57fee8cce8d7cb9.js",
@@ -81,8 +81,8 @@
81
81
  "dynamicRoutes": {},
82
82
  "notFoundRoutes": [],
83
83
  "preview": {
84
- "previewModeId": "a433874c75a2b3ab8ccd6f1febcdfe05",
85
- "previewModeSigningKey": "f5fd597d7b7f2446c5fb6d3916187408b893c981fd5b5569a07439994beb6272",
86
- "previewModeEncryptionKey": "99057596bc665a9bd1d347c43e948dafaef7d366501c274e8bc1adc6149f428c"
84
+ "previewModeId": "a9a59dfc06ed006ae72785c4b7f72ef2",
85
+ "previewModeSigningKey": "18ae1744b120e8fc7bdd6f8c01cb67397d0bdaf95809de2ca2b698a01e643bba",
86
+ "previewModeEncryptionKey": "49503e30a61f3107c5b1369b5749bc8352e1781f376a93c7ecb97981e4da3a61"
87
87
  }
88
88
  }
@@ -100,7 +100,7 @@
100
100
  "transform": "lodash/{{member}}"
101
101
  }
102
102
  },
103
- "outputFileTracingRoot": "/Users/tyroneross/Desktop/git-folder/NavGator",
103
+ "outputFileTracingRoot": "/home/runner/work/NavGator/NavGator",
104
104
  "cacheComponents": false,
105
105
  "cacheLife": {
106
106
  "default": {
@@ -158,7 +158,7 @@
158
158
  "proxyPrefetch": "flexible",
159
159
  "optimisticClientCache": true,
160
160
  "manualClientBasePath": false,
161
- "cpus": 15,
161
+ "cpus": 3,
162
162
  "memoryBasedWorkersCount": false,
163
163
  "imgOptConcurrency": null,
164
164
  "imgOptTimeoutInSeconds": 7,
@@ -290,11 +290,11 @@
290
290
  "bundlePagesRouterDependencies": false,
291
291
  "configFileName": "next.config.mjs",
292
292
  "turbopack": {
293
- "root": "/Users/tyroneross/Desktop/git-folder/NavGator"
293
+ "root": "/home/runner/work/NavGator/NavGator"
294
294
  },
295
295
  "distDirRoot": ".next"
296
296
  },
297
- "appDir": "/Users/tyroneross/Desktop/git-folder/NavGator/web",
297
+ "appDir": "/home/runner/work/NavGator/NavGator/web",
298
298
  "relativeAppDir": "web",
299
299
  "files": [
300
300
  ".next/routes-manifest.json",