@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.
- package/.agents/plugins/marketplace.json +20 -0
- package/.claude-plugin/marketplace.json +21 -7
- package/.claude-plugin/plugin.json +16 -11
- package/.codex-plugin/plugin.json +31 -0
- package/.mcp.json +8 -0
- package/CLAUDE.md +197 -23
- package/LICENSE +202 -21
- package/README.md +220 -33
- package/agents/architecture-advisor.md +6 -2
- package/agents/architecture-investigator.md +163 -0
- package/agents/architecture-planner.md +160 -0
- package/agents/external-resolver.md +97 -0
- package/dist/__tests__/agent-output.test.d.ts +5 -0
- package/dist/__tests__/agent-output.test.d.ts.map +1 -0
- package/dist/__tests__/agent-output.test.js +233 -0
- package/dist/__tests__/agent-output.test.js.map +1 -0
- package/dist/__tests__/architecture-insights-stack.test.d.ts +21 -0
- package/dist/__tests__/architecture-insights-stack.test.d.ts.map +1 -0
- package/dist/__tests__/architecture-insights-stack.test.js +86 -0
- package/dist/__tests__/architecture-insights-stack.test.js.map +1 -0
- package/dist/__tests__/architecture-insights.test.d.ts +2 -0
- package/dist/__tests__/architecture-insights.test.d.ts.map +1 -0
- package/dist/__tests__/architecture-insights.test.js +46 -0
- package/dist/__tests__/architecture-insights.test.js.map +1 -0
- package/dist/__tests__/audit-sampler.test.d.ts +10 -0
- package/dist/__tests__/audit-sampler.test.d.ts.map +1 -0
- package/dist/__tests__/audit-sampler.test.js +172 -0
- package/dist/__tests__/audit-sampler.test.js.map +1 -0
- package/dist/__tests__/audit-spc.test.d.ts +5 -0
- package/dist/__tests__/audit-spc.test.d.ts.map +1 -0
- package/dist/__tests__/audit-spc.test.js +94 -0
- package/dist/__tests__/audit-spc.test.js.map +1 -0
- package/dist/__tests__/audit-verifiers.test.d.ts +5 -0
- package/dist/__tests__/audit-verifiers.test.d.ts.map +1 -0
- package/dist/__tests__/audit-verifiers.test.js +248 -0
- package/dist/__tests__/audit-verifiers.test.js.map +1 -0
- package/dist/__tests__/auto-refresh.test.d.ts +12 -0
- package/dist/__tests__/auto-refresh.test.d.ts.map +1 -0
- package/dist/__tests__/auto-refresh.test.js +236 -0
- package/dist/__tests__/auto-refresh.test.js.map +1 -0
- package/dist/__tests__/bare-imports.test.d.ts +8 -0
- package/dist/__tests__/bare-imports.test.d.ts.map +1 -0
- package/dist/__tests__/bare-imports.test.js +176 -0
- package/dist/__tests__/bare-imports.test.js.map +1 -0
- package/dist/__tests__/classify.test.d.ts +5 -0
- package/dist/__tests__/classify.test.d.ts.map +1 -0
- package/dist/__tests__/classify.test.js +158 -0
- package/dist/__tests__/classify.test.js.map +1 -0
- package/dist/__tests__/cli-commands.test.d.ts +8 -0
- package/dist/__tests__/cli-commands.test.d.ts.map +1 -0
- package/dist/__tests__/cli-commands.test.js +207 -0
- package/dist/__tests__/cli-commands.test.js.map +1 -0
- package/dist/__tests__/consolidated-readers.test.d.ts +23 -0
- package/dist/__tests__/consolidated-readers.test.d.ts.map +1 -0
- package/dist/__tests__/consolidated-readers.test.js +200 -0
- package/dist/__tests__/consolidated-readers.test.js.map +1 -0
- package/dist/__tests__/coverage.test.d.ts +5 -0
- package/dist/__tests__/coverage.test.d.ts.map +1 -0
- package/dist/__tests__/coverage.test.js +120 -0
- package/dist/__tests__/coverage.test.js.map +1 -0
- package/dist/__tests__/deploy-scanner-runtime.test.d.ts +6 -0
- package/dist/__tests__/deploy-scanner-runtime.test.d.ts.map +1 -0
- package/dist/__tests__/deploy-scanner-runtime.test.js +168 -0
- package/dist/__tests__/deploy-scanner-runtime.test.js.map +1 -0
- package/dist/__tests__/env-scanner.test.d.ts +2 -0
- package/dist/__tests__/env-scanner.test.d.ts.map +1 -0
- package/dist/__tests__/env-scanner.test.js +191 -0
- package/dist/__tests__/env-scanner.test.js.map +1 -0
- package/dist/__tests__/freshness/cli-freshness.test.d.ts +2 -0
- package/dist/__tests__/freshness/cli-freshness.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/cli-freshness.test.js +26 -0
- package/dist/__tests__/freshness/cli-freshness.test.js.map +1 -0
- package/dist/__tests__/freshness/dirty-ledger.test.d.ts +2 -0
- package/dist/__tests__/freshness/dirty-ledger.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/dirty-ledger.test.js +39 -0
- package/dist/__tests__/freshness/dirty-ledger.test.js.map +1 -0
- package/dist/__tests__/freshness/drainer.test.d.ts +2 -0
- package/dist/__tests__/freshness/drainer.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/drainer.test.js +103 -0
- package/dist/__tests__/freshness/drainer.test.js.map +1 -0
- package/dist/__tests__/freshness/paths.test.d.ts +2 -0
- package/dist/__tests__/freshness/paths.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/paths.test.js +19 -0
- package/dist/__tests__/freshness/paths.test.js.map +1 -0
- package/dist/__tests__/freshness/scan-lock.test.d.ts +2 -0
- package/dist/__tests__/freshness/scan-lock.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/scan-lock.test.js +40 -0
- package/dist/__tests__/freshness/scan-lock.test.js.map +1 -0
- package/dist/__tests__/freshness/stamp.test.d.ts +2 -0
- package/dist/__tests__/freshness/stamp.test.d.ts.map +1 -0
- package/dist/__tests__/freshness/stamp.test.js +36 -0
- package/dist/__tests__/freshness/stamp.test.js.map +1 -0
- package/dist/__tests__/gitignore-safety.test.d.ts +2 -0
- package/dist/__tests__/gitignore-safety.test.d.ts.map +1 -0
- package/dist/__tests__/gitignore-safety.test.js +110 -0
- package/dist/__tests__/gitignore-safety.test.js.map +1 -0
- package/dist/__tests__/helpers.d.ts +37 -0
- package/dist/__tests__/helpers.d.ts.map +1 -0
- package/dist/__tests__/helpers.js +134 -0
- package/dist/__tests__/helpers.js.map +1 -0
- package/dist/__tests__/impact.test.d.ts +5 -0
- package/dist/__tests__/impact.test.d.ts.map +1 -0
- package/dist/__tests__/impact.test.js +221 -0
- package/dist/__tests__/impact.test.js.map +1 -0
- package/dist/__tests__/lessons-store.test.d.ts +8 -0
- package/dist/__tests__/lessons-store.test.d.ts.map +1 -0
- package/dist/__tests__/lessons-store.test.js +232 -0
- package/dist/__tests__/lessons-store.test.js.map +1 -0
- package/dist/__tests__/llm-dedup.test.d.ts +2 -0
- package/dist/__tests__/llm-dedup.test.d.ts.map +1 -0
- package/dist/__tests__/llm-dedup.test.js +155 -0
- package/dist/__tests__/llm-dedup.test.js.map +1 -0
- package/dist/__tests__/mjs-frontend-fetch.test.d.ts +19 -0
- package/dist/__tests__/mjs-frontend-fetch.test.d.ts.map +1 -0
- package/dist/__tests__/mjs-frontend-fetch.test.js +179 -0
- package/dist/__tests__/mjs-frontend-fetch.test.js.map +1 -0
- package/dist/__tests__/multi-stack-discovery.test.d.ts +11 -0
- package/dist/__tests__/multi-stack-discovery.test.d.ts.map +1 -0
- package/dist/__tests__/multi-stack-discovery.test.js +75 -0
- package/dist/__tests__/multi-stack-discovery.test.js.map +1 -0
- package/dist/__tests__/per-entity-files-gate.test.d.ts +22 -0
- package/dist/__tests__/per-entity-files-gate.test.d.ts.map +1 -0
- package/dist/__tests__/per-entity-files-gate.test.js +160 -0
- package/dist/__tests__/per-entity-files-gate.test.js.map +1 -0
- package/dist/__tests__/prisma-calls.test.d.ts +2 -0
- package/dist/__tests__/prisma-calls.test.d.ts.map +1 -0
- package/dist/__tests__/prisma-calls.test.js +125 -0
- package/dist/__tests__/prisma-calls.test.js.map +1 -0
- package/dist/__tests__/prisma-parser.test.d.ts +2 -0
- package/dist/__tests__/prisma-parser.test.d.ts.map +1 -0
- package/dist/__tests__/prisma-parser.test.js +252 -0
- package/dist/__tests__/prisma-parser.test.js.map +1 -0
- package/dist/__tests__/prompt-detector.test.d.ts +5 -0
- package/dist/__tests__/prompt-detector.test.d.ts.map +1 -0
- package/dist/__tests__/prompt-detector.test.js +75 -0
- package/dist/__tests__/prompt-detector.test.js.map +1 -0
- package/dist/__tests__/queue-scanner.test.d.ts +5 -0
- package/dist/__tests__/queue-scanner.test.d.ts.map +1 -0
- package/dist/__tests__/queue-scanner.test.js +85 -0
- package/dist/__tests__/queue-scanner.test.js.map +1 -0
- package/dist/__tests__/resolve.test.d.ts +5 -0
- package/dist/__tests__/resolve.test.d.ts.map +1 -0
- package/dist/__tests__/resolve.test.js +196 -0
- package/dist/__tests__/resolve.test.js.map +1 -0
- package/dist/__tests__/rules.test.d.ts +2 -0
- package/dist/__tests__/rules.test.d.ts.map +1 -0
- package/dist/__tests__/rules.test.js +343 -0
- package/dist/__tests__/rules.test.js.map +1 -0
- package/dist/__tests__/sandbox.test.d.ts +5 -0
- package/dist/__tests__/sandbox.test.d.ts.map +1 -0
- package/dist/__tests__/sandbox.test.js +189 -0
- package/dist/__tests__/sandbox.test.js.map +1 -0
- package/dist/__tests__/scanner-audit.test.d.ts +9 -0
- package/dist/__tests__/scanner-audit.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-audit.test.js +64 -0
- package/dist/__tests__/scanner-audit.test.js.map +1 -0
- package/dist/__tests__/scanner-characterization.test.d.ts +16 -0
- package/dist/__tests__/scanner-characterization.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-characterization.test.js +167 -0
- package/dist/__tests__/scanner-characterization.test.js.map +1 -0
- package/dist/__tests__/scanner-incremental.test.d.ts +13 -0
- package/dist/__tests__/scanner-incremental.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-incremental.test.js +725 -0
- package/dist/__tests__/scanner-incremental.test.js.map +1 -0
- package/dist/__tests__/scanner-integration.test.d.ts +7 -0
- package/dist/__tests__/scanner-integration.test.d.ts.map +1 -0
- package/dist/__tests__/scanner-integration.test.js +211 -0
- package/dist/__tests__/scanner-integration.test.js.map +1 -0
- package/dist/__tests__/scip-new-catches.test.d.ts +19 -0
- package/dist/__tests__/scip-new-catches.test.d.ts.map +1 -0
- package/dist/__tests__/scip-new-catches.test.js +90 -0
- package/dist/__tests__/scip-new-catches.test.js.map +1 -0
- package/dist/__tests__/subgraph.test.d.ts +5 -0
- package/dist/__tests__/subgraph.test.d.ts.map +1 -0
- package/dist/__tests__/subgraph.test.js +145 -0
- package/dist/__tests__/subgraph.test.js.map +1 -0
- package/dist/__tests__/trace.test.d.ts +5 -0
- package/dist/__tests__/trace.test.d.ts.map +1 -0
- package/dist/__tests__/trace.test.js +221 -0
- package/dist/__tests__/trace.test.js.map +1 -0
- package/dist/agent-output.d.ts +16 -0
- package/dist/agent-output.d.ts.map +1 -0
- package/dist/agent-output.js +142 -0
- package/dist/agent-output.js.map +1 -0
- package/dist/architecture-insights.d.ts +17 -0
- package/dist/architecture-insights.d.ts.map +1 -0
- package/dist/architecture-insights.js +178 -0
- package/dist/architecture-insights.js.map +1 -0
- package/dist/audit/index.d.ts +69 -0
- package/dist/audit/index.d.ts.map +1 -0
- package/dist/audit/index.js +255 -0
- package/dist/audit/index.js.map +1 -0
- package/dist/audit/sampler.d.ts +98 -0
- package/dist/audit/sampler.d.ts.map +1 -0
- package/dist/audit/sampler.js +298 -0
- package/dist/audit/sampler.js.map +1 -0
- package/dist/audit/spc.d.ts +62 -0
- package/dist/audit/spc.d.ts.map +1 -0
- package/dist/audit/spc.js +81 -0
- package/dist/audit/spc.js.map +1 -0
- package/dist/audit/verifiers.d.ts +81 -0
- package/dist/audit/verifiers.d.ts.map +1 -0
- package/dist/audit/verifiers.js +366 -0
- package/dist/audit/verifiers.js.map +1 -0
- package/dist/classify.d.ts +19 -0
- package/dist/classify.d.ts.map +1 -0
- package/dist/classify.js +124 -0
- package/dist/classify.js.map +1 -0
- package/dist/cli/commands/connections.d.ts +3 -0
- package/dist/cli/commands/connections.d.ts.map +1 -0
- package/dist/cli/commands/connections.js +125 -0
- package/dist/cli/commands/connections.js.map +1 -0
- package/dist/cli/commands/coverage.d.ts +3 -0
- package/dist/cli/commands/coverage.d.ts.map +1 -0
- package/dist/cli/commands/coverage.js +94 -0
- package/dist/cli/commands/coverage.js.map +1 -0
- package/dist/cli/commands/dead.d.ts +3 -0
- package/dist/cli/commands/dead.d.ts.map +1 -0
- package/dist/cli/commands/dead.js +80 -0
- package/dist/cli/commands/dead.js.map +1 -0
- package/dist/cli/commands/diagram.d.ts +3 -0
- package/dist/cli/commands/diagram.d.ts.map +1 -0
- package/dist/cli/commands/diagram.js +102 -0
- package/dist/cli/commands/diagram.js.map +1 -0
- package/dist/cli/commands/find.d.ts +3 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +128 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/freshness.d.ts +20 -0
- package/dist/cli/commands/freshness.d.ts.map +1 -0
- package/dist/cli/commands/freshness.js +90 -0
- package/dist/cli/commands/freshness.js.map +1 -0
- package/dist/cli/commands/helpers.d.ts +7 -0
- package/dist/cli/commands/helpers.d.ts.map +1 -0
- package/dist/cli/commands/helpers.js +30 -0
- package/dist/cli/commands/helpers.js.map +1 -0
- package/dist/cli/commands/impact.d.ts +3 -0
- package/dist/cli/commands/impact.d.ts.map +1 -0
- package/dist/cli/commands/impact.js +172 -0
- package/dist/cli/commands/impact.js.map +1 -0
- package/dist/cli/commands/lessons.d.ts +6 -0
- package/dist/cli/commands/lessons.d.ts.map +1 -0
- package/dist/cli/commands/lessons.js +279 -0
- package/dist/cli/commands/lessons.js.map +1 -0
- package/dist/cli/commands/list.d.ts +3 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +91 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/llm-map.d.ts +3 -0
- package/dist/cli/commands/llm-map.d.ts.map +1 -0
- package/dist/cli/commands/llm-map.js +121 -0
- package/dist/cli/commands/llm-map.js.map +1 -0
- package/dist/cli/commands/misc.d.ts +17 -0
- package/dist/cli/commands/misc.d.ts.map +1 -0
- package/dist/cli/commands/misc.js +495 -0
- package/dist/cli/commands/misc.js.map +1 -0
- package/dist/cli/commands/prompts.d.ts +3 -0
- package/dist/cli/commands/prompts.d.ts.map +1 -0
- package/dist/cli/commands/prompts.js +74 -0
- package/dist/cli/commands/prompts.js.map +1 -0
- package/dist/cli/commands/rules.d.ts +3 -0
- package/dist/cli/commands/rules.d.ts.map +1 -0
- package/dist/cli/commands/rules.js +61 -0
- package/dist/cli/commands/rules.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +3 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +177 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/schema.d.ts +3 -0
- package/dist/cli/commands/schema.d.ts.map +1 -0
- package/dist/cli/commands/schema.js +126 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +340 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/subgraph.d.ts +3 -0
- package/dist/cli/commands/subgraph.d.ts.map +1 -0
- package/dist/cli/commands/subgraph.js +55 -0
- package/dist/cli/commands/subgraph.js.map +1 -0
- package/dist/cli/commands/temporal.d.ts +3 -0
- package/dist/cli/commands/temporal.d.ts.map +1 -0
- package/dist/cli/commands/temporal.js +112 -0
- package/dist/cli/commands/temporal.js.map +1 -0
- package/dist/cli/commands/trace.d.ts +3 -0
- package/dist/cli/commands/trace.d.ts.map +1 -0
- package/dist/cli/commands/trace.js +65 -0
- package/dist/cli/commands/trace.js.map +1 -0
- package/dist/cli/index.js +88 -825
- package/dist/cli/index.js.map +1 -1
- package/dist/config.d.ts +13 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +106 -12
- package/dist/config.js.map +1 -1
- package/dist/coverage.d.ts +37 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +177 -0
- package/dist/coverage.js.map +1 -0
- package/dist/diagram.d.ts.map +1 -1
- package/dist/diagram.js +41 -0
- package/dist/diagram.js.map +1 -1
- package/dist/diff.d.ts +57 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +527 -0
- package/dist/diff.js.map +1 -0
- package/dist/enrich/cache.d.ts +41 -0
- package/dist/enrich/cache.d.ts.map +1 -0
- package/dist/enrich/cache.js +97 -0
- package/dist/enrich/cache.js.map +1 -0
- package/dist/enrich/external-enrichment.types.d.ts +91 -0
- package/dist/enrich/external-enrichment.types.d.ts.map +1 -0
- package/dist/enrich/external-enrichment.types.js +38 -0
- package/dist/enrich/external-enrichment.types.js.map +1 -0
- package/dist/enrich/external-resolver.d.ts +95 -0
- package/dist/enrich/external-resolver.d.ts.map +1 -0
- package/dist/enrich/external-resolver.js +222 -0
- package/dist/enrich/external-resolver.js.map +1 -0
- package/dist/enrich/fetchers.d.ts +30 -0
- package/dist/enrich/fetchers.d.ts.map +1 -0
- package/dist/enrich/fetchers.js +89 -0
- package/dist/enrich/fetchers.js.map +1 -0
- package/dist/file-resolve.d.ts +35 -0
- package/dist/file-resolve.d.ts.map +1 -0
- package/dist/file-resolve.js +159 -0
- package/dist/file-resolve.js.map +1 -0
- package/dist/freshness/dirty-ledger.d.ts +7 -0
- package/dist/freshness/dirty-ledger.d.ts.map +1 -0
- package/dist/freshness/dirty-ledger.js +56 -0
- package/dist/freshness/dirty-ledger.js.map +1 -0
- package/dist/freshness/drainer.d.ts +38 -0
- package/dist/freshness/drainer.d.ts.map +1 -0
- package/dist/freshness/drainer.js +88 -0
- package/dist/freshness/drainer.js.map +1 -0
- package/dist/freshness/paths.d.ts +9 -0
- package/dist/freshness/paths.d.ts.map +1 -0
- package/dist/freshness/paths.js +24 -0
- package/dist/freshness/paths.js.map +1 -0
- package/dist/freshness/scan-lock.d.ts +8 -0
- package/dist/freshness/scan-lock.d.ts.map +1 -0
- package/dist/freshness/scan-lock.js +68 -0
- package/dist/freshness/scan-lock.js.map +1 -0
- package/dist/freshness/stamp.d.ts +25 -0
- package/dist/freshness/stamp.d.ts.map +1 -0
- package/dist/freshness/stamp.js +50 -0
- package/dist/freshness/stamp.js.map +1 -0
- package/dist/git.d.ts +12 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +42 -0
- package/dist/git.js.map +1 -0
- package/dist/gitignore-safety.d.ts +41 -0
- package/dist/gitignore-safety.d.ts.map +1 -0
- package/dist/gitignore-safety.js +107 -0
- package/dist/gitignore-safety.js.map +1 -0
- package/dist/impact.d.ts +20 -0
- package/dist/impact.d.ts.map +1 -0
- package/dist/impact.js +89 -0
- package/dist/impact.js.map +1 -0
- package/dist/index.d.ts +24 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -1
- package/dist/index.js.map +1 -1
- package/dist/lessons-store.d.ts +93 -0
- package/dist/lessons-store.d.ts.map +1 -0
- package/dist/lessons-store.js +265 -0
- package/dist/lessons-store.js.map +1 -0
- package/dist/llm-dedup.d.ts +40 -0
- package/dist/llm-dedup.d.ts.map +1 -0
- package/dist/llm-dedup.js +373 -0
- package/dist/llm-dedup.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +87 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +198 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +744 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/metrics/pagerank-louvain.d.ts +44 -0
- package/dist/metrics/pagerank-louvain.d.ts.map +1 -0
- package/dist/metrics/pagerank-louvain.js +128 -0
- package/dist/metrics/pagerank-louvain.js.map +1 -0
- package/dist/parsers/scip-runner.d.ts +63 -0
- package/dist/parsers/scip-runner.d.ts.map +1 -0
- package/dist/parsers/scip-runner.js +179 -0
- package/dist/parsers/scip-runner.js.map +1 -0
- package/dist/projects.d.ts +54 -0
- package/dist/projects.d.ts.map +1 -0
- package/dist/projects.js +153 -0
- package/dist/projects.js.map +1 -0
- package/dist/resolve.d.ts +22 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +128 -0
- package/dist/resolve.js.map +1 -0
- package/dist/rules.d.ts +36 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +484 -0
- package/dist/rules.js.map +1 -0
- package/dist/sandbox.d.ts +33 -0
- package/dist/sandbox.d.ts.map +1 -0
- package/dist/sandbox.js +91 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/scan-lock.d.ts +37 -0
- package/dist/scan-lock.d.ts.map +1 -0
- package/dist/scan-lock.js +145 -0
- package/dist/scan-lock.js.map +1 -0
- package/dist/scanner.d.ts +126 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +1711 -235
- package/dist/scanner.js.map +1 -1
- package/dist/scanners/connections/ast-scanner.d.ts +9 -2
- package/dist/scanners/connections/ast-scanner.d.ts.map +1 -1
- package/dist/scanners/connections/ast-scanner.js +19 -4
- package/dist/scanners/connections/ast-scanner.js.map +1 -1
- package/dist/scanners/connections/import-scanner.d.ts +27 -0
- package/dist/scanners/connections/import-scanner.d.ts.map +1 -0
- package/dist/scanners/connections/import-scanner.js +537 -0
- package/dist/scanners/connections/import-scanner.js.map +1 -0
- package/dist/scanners/connections/llm-call-tracer.d.ts +1 -1
- package/dist/scanners/connections/llm-call-tracer.d.ts.map +1 -1
- package/dist/scanners/connections/llm-call-tracer.js +6 -2
- package/dist/scanners/connections/llm-call-tracer.js.map +1 -1
- package/dist/scanners/connections/prisma-calls.d.ts +11 -0
- package/dist/scanners/connections/prisma-calls.d.ts.map +1 -0
- package/dist/scanners/connections/prisma-calls.js +237 -0
- package/dist/scanners/connections/prisma-calls.js.map +1 -0
- package/dist/scanners/connections/service-calls.d.ts +1 -1
- package/dist/scanners/connections/service-calls.d.ts.map +1 -1
- package/dist/scanners/connections/service-calls.js +35 -3
- package/dist/scanners/connections/service-calls.js.map +1 -1
- package/dist/scanners/infrastructure/cron-scanner.d.ts +14 -0
- package/dist/scanners/infrastructure/cron-scanner.d.ts.map +1 -0
- package/dist/scanners/infrastructure/cron-scanner.js +383 -0
- package/dist/scanners/infrastructure/cron-scanner.js.map +1 -0
- package/dist/scanners/infrastructure/deploy-scanner.d.ts +11 -0
- package/dist/scanners/infrastructure/deploy-scanner.d.ts.map +1 -0
- package/dist/scanners/infrastructure/deploy-scanner.js +508 -0
- package/dist/scanners/infrastructure/deploy-scanner.js.map +1 -0
- package/dist/scanners/infrastructure/env-scanner.d.ts +55 -0
- package/dist/scanners/infrastructure/env-scanner.d.ts.map +1 -0
- package/dist/scanners/infrastructure/env-scanner.js +431 -0
- package/dist/scanners/infrastructure/env-scanner.js.map +1 -0
- package/dist/scanners/infrastructure/field-usage-analyzer.d.ts +52 -0
- package/dist/scanners/infrastructure/field-usage-analyzer.d.ts.map +1 -0
- package/dist/scanners/infrastructure/field-usage-analyzer.js +480 -0
- package/dist/scanners/infrastructure/field-usage-analyzer.js.map +1 -0
- package/dist/scanners/infrastructure/prisma-parser.d.ts +21 -0
- package/dist/scanners/infrastructure/prisma-parser.d.ts.map +1 -0
- package/dist/scanners/infrastructure/prisma-parser.js +58 -0
- package/dist/scanners/infrastructure/prisma-parser.js.map +1 -0
- package/dist/scanners/infrastructure/prisma-scanner.d.ts +30 -0
- package/dist/scanners/infrastructure/prisma-scanner.d.ts.map +1 -0
- package/dist/scanners/infrastructure/prisma-scanner.js +329 -0
- package/dist/scanners/infrastructure/prisma-scanner.js.map +1 -0
- package/dist/scanners/infrastructure/queue-scanner.d.ts +14 -0
- package/dist/scanners/infrastructure/queue-scanner.d.ts.map +1 -0
- package/dist/scanners/infrastructure/queue-scanner.js +455 -0
- package/dist/scanners/infrastructure/queue-scanner.js.map +1 -0
- package/dist/scanners/infrastructure/typespec-validator.d.ts +50 -0
- package/dist/scanners/infrastructure/typespec-validator.d.ts.map +1 -0
- package/dist/scanners/infrastructure/typespec-validator.js +407 -0
- package/dist/scanners/infrastructure/typespec-validator.js.map +1 -0
- package/dist/scanners/packages/swift.d.ts +5 -0
- package/dist/scanners/packages/swift.d.ts.map +1 -1
- package/dist/scanners/packages/swift.js +23 -0
- package/dist/scanners/packages/swift.js.map +1 -1
- package/dist/scanners/prompts/detector.d.ts +13 -2
- package/dist/scanners/prompts/detector.d.ts.map +1 -1
- package/dist/scanners/prompts/detector.js +97 -46
- package/dist/scanners/prompts/detector.js.map +1 -1
- package/dist/scanners/prompts/index.d.ts +1 -1
- package/dist/scanners/prompts/index.d.ts.map +1 -1
- package/dist/scanners/prompts/index.js +2 -2
- package/dist/scanners/prompts/index.js.map +1 -1
- package/dist/scanners/swift/code-scanner.d.ts +1 -1
- package/dist/scanners/swift/code-scanner.d.ts.map +1 -1
- package/dist/scanners/swift/code-scanner.js +216 -2
- package/dist/scanners/swift/code-scanner.js.map +1 -1
- package/dist/scanners/swift/swiftui-scanner.d.ts +45 -0
- package/dist/scanners/swift/swiftui-scanner.d.ts.map +1 -0
- package/dist/scanners/swift/swiftui-scanner.js +606 -0
- package/dist/scanners/swift/swiftui-scanner.js.map +1 -0
- package/dist/scanners/xcode/pbxproj-parser.d.ts +32 -0
- package/dist/scanners/xcode/pbxproj-parser.d.ts.map +1 -0
- package/dist/scanners/xcode/pbxproj-parser.js +407 -0
- package/dist/scanners/xcode/pbxproj-parser.js.map +1 -0
- package/dist/scanners/xcode/storyboard-scanner.d.ts +13 -0
- package/dist/scanners/xcode/storyboard-scanner.d.ts.map +1 -0
- package/dist/scanners/xcode/storyboard-scanner.js +236 -0
- package/dist/scanners/xcode/storyboard-scanner.js.map +1 -0
- package/dist/storage/markdown-view.d.ts +49 -0
- package/dist/storage/markdown-view.d.ts.map +1 -0
- package/dist/storage/markdown-view.js +233 -0
- package/dist/storage/markdown-view.js.map +1 -0
- package/dist/storage.d.ts +225 -9
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +945 -86
- package/dist/storage.js.map +1 -1
- package/dist/subgraph.d.ts +30 -0
- package/dist/subgraph.d.ts.map +1 -0
- package/dist/subgraph.js +106 -0
- package/dist/subgraph.js.map +1 -0
- package/dist/temporal/git-store.d.ts +65 -0
- package/dist/temporal/git-store.d.ts.map +1 -0
- package/dist/temporal/git-store.js +166 -0
- package/dist/temporal/git-store.js.map +1 -0
- package/dist/trace.d.ts +38 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +292 -0
- package/dist/trace.js.map +1 -0
- package/dist/types.d.ts +322 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +53 -0
- package/dist/types.js.map +1 -1
- package/hooks/hooks.json +1 -55
- package/hooks/mark-dirty.sh +20 -0
- package/hooks/post-bash-suggest.sh +30 -0
- package/hooks/post-edit-suggest.sh +29 -0
- package/hooks/pre-edit-warn.sh +28 -0
- package/hooks/session-start.sh +19 -0
- package/hooks/stop-suggest.sh +49 -0
- package/package.json +30 -11
- package/scripts/install-codex-plugin.sh +119 -0
- package/scripts/install-plugin.sh +29 -24
- package/skills/architecture-export/SKILL.md +79 -0
- package/skills/architecture-scan/SKILL.md +64 -0
- package/skills/code-review/SKILL.md +368 -0
- package/skills/impact-analysis/SKILL.md +80 -0
- package/skills/infrastructure-scanning.md +42 -0
- package/skills/navgator-setup/SKILL.md +108 -0
- package/web/.next/standalone/web/.next/BUILD_ID +1 -1
- package/web/.next/standalone/web/.next/app-path-routes-manifest.json +3 -0
- package/web/.next/standalone/web/.next/build-manifest.json +2 -2
- package/web/.next/standalone/web/.next/prerender-manifest.json +3 -3
- package/web/.next/standalone/web/.next/required-server-files.json +4 -4
- package/web/.next/standalone/web/.next/routes-manifest.json +18 -0
- package/web/.next/standalone/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/standalone/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found/page/next-font-manifest.json +2 -2
- package/web/.next/standalone/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.html +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_full.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/_not-found.segments/_tree.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/api/prompts/route.js.nft.json +1 -1
- package/web/.next/standalone/web/.next/server/app/api/rules/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route/build-manifest.json +11 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route.js +6 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route.js.map +5 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route.js.nft.json +1 -0
- package/web/.next/standalone/web/.next/server/app/api/rules/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route/build-manifest.json +11 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js +6 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js.map +5 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route.js.nft.json +1 -0
- package/web/.next/standalone/web/.next/server/app/api/subgraph/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route/build-manifest.json +11 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route/server-reference-manifest.json +4 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route.js +6 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route.js.map +5 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route.js.nft.json +1 -0
- package/web/.next/standalone/web/.next/server/app/api/trace/route_client-reference-manifest.js +2 -0
- package/web/.next/standalone/web/.next/server/app/index.html +1 -1
- package/web/.next/standalone/web/.next/server/app/index.rsc +6 -6
- package/web/.next/standalone/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/web/.next/standalone/web/.next/server/app/index.segments/_full.segment.rsc +6 -6
- package/web/.next/standalone/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/web/.next/standalone/web/.next/server/app/index.segments/_index.segment.rsc +3 -3
- package/web/.next/standalone/web/.next/server/app/index.segments/_tree.segment.rsc +5 -5
- package/web/.next/standalone/web/.next/server/app/page/next-font-manifest.json +2 -2
- package/web/.next/standalone/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/app-paths-manifest.json +3 -0
- package/web/.next/standalone/web/.next/server/chunks/2374f_next_dist_esm_build_templates_app-route_0bb4e66a.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__006b837d._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__0426efe8._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__2e09fec9._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__38d0390f._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__594bcf20._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__b888fadf._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__cd5f36ce._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__ee6fc95f._.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/[root-of-the-server]__fa2ec862._.js +1 -1
- package/web/.next/standalone/web/.next/server/chunks/ssr/web_171de0df._.js +9 -4
- package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_rules_route_actions_3de01bd5.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_subgraph_route_actions_d8b5a63f.js +3 -0
- package/web/.next/standalone/web/.next/server/chunks/web__next-internal_server_app_api_trace_route_actions_b0703ae2.js +3 -0
- package/web/.next/standalone/web/.next/server/next-font-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/next-font-manifest.json +4 -4
- package/web/.next/standalone/web/.next/server/pages/404.html +1 -1
- package/web/.next/standalone/web/.next/server/pages/500.html +2 -2
- package/web/.next/standalone/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/standalone/web/.next/server/server-reference-manifest.json +1 -1
- package/web/.next/standalone/web/.next/static/chunks/22a09ecf6ba35cfd.js +17 -0
- package/web/.next/standalone/web/.next/static/chunks/9857ba86ce4e82d8.css +2 -0
- package/web/.next/standalone/web/.next/static/chunks/f899547f99ef4b76.css +1 -0
- package/web/.next/standalone/web/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
- package/web/.next/standalone/web/app/api/components/route.ts +1 -1
- package/web/.next/standalone/web/app/api/connections/route.ts +3 -1
- package/web/.next/standalone/web/app/api/graph/route.ts +3 -3
- package/web/.next/standalone/web/app/api/projects/route.ts +1 -1
- package/web/.next/standalone/web/app/api/prompts/route.ts +2 -2
- package/web/.next/standalone/web/app/api/rules/route.ts +213 -0
- package/web/.next/standalone/web/app/api/settings/route.ts +2 -2
- package/web/.next/standalone/web/app/api/status/route.ts +1 -1
- package/web/.next/standalone/web/app/api/subgraph/route.ts +267 -0
- package/web/.next/standalone/web/app/api/trace/route.ts +321 -0
- package/web/.next/standalone/web/app/page.tsx +9 -1
- package/web/.next/standalone/web/components/connections-panel.tsx +23 -6
- package/web/.next/standalone/web/components/coverage-panel.tsx +309 -0
- package/web/.next/standalone/web/components/rules-panel.tsx +156 -0
- package/web/.next/standalone/web/components/sidebar.tsx +8 -0
- package/web/.next/standalone/web/components/status-overview.tsx +24 -1
- package/web/.next/standalone/web/components/subgraph-panel.tsx +382 -0
- package/web/.next/standalone/web/components/trace-panel.tsx +325 -0
- package/web/.next/standalone/web/lib/hooks/index.ts +3 -0
- package/web/.next/standalone/web/lib/hooks/use-coverage.ts +68 -0
- package/web/.next/standalone/web/lib/hooks/use-subgraph.ts +85 -0
- package/web/.next/standalone/web/lib/hooks/use-trace.ts +84 -0
- package/web/.next/standalone/web/lib/types.ts +108 -0
- package/web/.next/standalone/web/package-lock.json +218 -0
- package/web/.next/standalone/web/package.json +4 -2
- package/web/.next/standalone/web/server.js +1 -1
- package/web/.next/static/chunks/22a09ecf6ba35cfd.js +17 -0
- package/web/.next/static/chunks/9857ba86ce4e82d8.css +2 -0
- package/web/.next/static/chunks/f899547f99ef4b76.css +1 -0
- package/web/.next/static/media/4fa387ec64143e14-s.c36e1862.woff2 +0 -0
- package/web/.next/static/media/53b9e256198e5412-s.853d50a3.woff2 +0 -0
- package/web/.next/static/media/5ce348bf30bf5439-s.ebceb24d.woff2 +0 -0
- package/web/.next/static/media/6306c77e7c8268e4-s.ff4a2084.woff2 +0 -0
- package/web/.next/static/media/7178b3e590c64307-s.55554cd0.woff2 +0 -0
- package/web/.next/static/media/797e433ab948586e-s.p.479bea2b.woff2 +0 -0
- package/web/.next/static/media/7d817b4c03b0c5f1-s.f377b9c4.woff2 +0 -0
- package/web/.next/static/media/8a480f0b521d4e75-s.ea323500.woff2 +0 -0
- package/web/.next/static/media/bbc41e54d2fcbd21-s.d1207556.woff2 +0 -0
- package/web/.next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2 +0 -0
- package/web/.next/static/media/fef07dbb0973bf53-s.518e079e.woff2 +0 -0
- package/skills/check/SKILL.md +0 -64
- package/skills/connections/SKILL.md +0 -54
- package/skills/diagram/SKILL.md +0 -64
- package/skills/export/SKILL.md +0 -49
- package/skills/impact/SKILL.md +0 -58
- package/skills/install/SKILL.md +0 -94
- package/skills/scan/SKILL.md +0 -75
- package/skills/status/SKILL.md +0 -37
- package/skills/ui/SKILL.md +0 -43
- package/skills/update/SKILL.md +0 -43
- package/web/.next/standalone/web/.next/static/chunks/8a80e7184ad3a13f.css +0 -2
- package/web/.next/standalone/web/.next/static/chunks/c056475f5f4424b6.css +0 -1
- package/web/.next/standalone/web/.next/static/chunks/cb3513192b63e480.js +0 -12
- package/web/.next/standalone/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/web/.next/standalone/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- package/web/.next/static/chunks/8a80e7184ad3a13f.css +0 -2
- package/web/.next/static/chunks/c056475f5f4424b6.css +0 -1
- package/web/.next/static/chunks/cb3513192b63e480.js +0 -12
- package/web/.next/static/media/4fa387ec64143e14-s.c1fdd6c2.woff2 +0 -0
- package/web/.next/static/media/7178b3e590c64307-s.b97b3418.woff2 +0 -0
- package/web/.next/static/media/797e433ab948586e-s.p.dbea232f.woff2 +0 -0
- package/web/.next/static/media/8a480f0b521d4e75-s.8e0177b5.woff2 +0 -0
- package/web/.next/static/media/bbc41e54d2fcbd21-s.799d8ef8.woff2 +0 -0
- package/web/.next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2 +0 -0
- /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_buildManifest.js +0 -0
- /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/standalone/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_ssgManifest.js +0 -0
- /package/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_buildManifest.js +0 -0
- /package/web/.next/static/{P-ZMQO7_Wnj487ks3guqa → qZVrJ4kmwXfw4Ikgj1oXR}/_clientMiddlewareManifest.json +0 -0
- /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
|
-
|
|
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/
|
|
11
|
-
"static/
|
|
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": "
|
|
85
|
-
"previewModeSigningKey": "
|
|
86
|
-
"previewModeEncryptionKey": "
|
|
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": "/
|
|
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":
|
|
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": "/
|
|
293
|
+
"root": "/home/runner/work/NavGator/NavGator"
|
|
294
294
|
},
|
|
295
295
|
"distDirRoot": ".next"
|
|
296
296
|
},
|
|
297
|
-
"appDir": "/
|
|
297
|
+
"appDir": "/home/runner/work/NavGator/NavGator/web",
|
|
298
298
|
"relativeAppDir": "web",
|
|
299
299
|
"files": [
|
|
300
300
|
".next/routes-manifest.json",
|