octocode-cli 1.2.6 → 1.2.8
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/LICENSE +21 -63
- package/README.md +85 -142
- package/out/octocode-cli.js +7063 -6934
- package/package.json +8 -6
- package/skills/README.md +97 -120
- package/skills/octocode-code-engineer/.claude/settings.local.json +18 -0
- package/skills/octocode-code-engineer/.octocode/rfc/RFC-code-engineer-weakness-fixes.md +255 -0
- package/skills/octocode-code-engineer/.plan/VALIDATED_PLAN.md +223 -0
- package/skills/octocode-code-engineer/README.md +178 -0
- package/skills/octocode-code-engineer/SKILL.md +418 -0
- package/skills/octocode-code-engineer/coverage/architecture.ts.html +7828 -0
- package/skills/octocode-code-engineer/coverage/ast-helpers.ts.html +211 -0
- package/skills/octocode-code-engineer/coverage/ast-search.ts.html +1795 -0
- package/skills/octocode-code-engineer/coverage/base.css +224 -0
- package/skills/octocode-code-engineer/coverage/block-navigation.js +87 -0
- package/skills/octocode-code-engineer/coverage/cache.ts.html +376 -0
- package/skills/octocode-code-engineer/coverage/cli.ts.html +982 -0
- package/skills/octocode-code-engineer/coverage/clover.xml +3217 -0
- package/skills/octocode-code-engineer/coverage/collect-effects.ts.html +664 -0
- package/skills/octocode-code-engineer/coverage/collect-input-sources.ts.html +577 -0
- package/skills/octocode-code-engineer/coverage/collect-performance.ts.html +331 -0
- package/skills/octocode-code-engineer/coverage/collect-prototype-pollution.ts.html +421 -0
- package/skills/octocode-code-engineer/coverage/collect-security.ts.html +604 -0
- package/skills/octocode-code-engineer/coverage/collect-test-profile.ts.html +589 -0
- package/skills/octocode-code-engineer/coverage/coverage-final.json +30 -0
- package/skills/octocode-code-engineer/coverage/dependencies.ts.html +997 -0
- package/skills/octocode-code-engineer/coverage/dependency-summary.ts.html +688 -0
- package/skills/octocode-code-engineer/coverage/discovery.ts.html +322 -0
- package/skills/octocode-code-engineer/coverage/favicon.png +0 -0
- package/skills/octocode-code-engineer/coverage/graph-analytics.ts.html +1510 -0
- package/skills/octocode-code-engineer/coverage/index.html +536 -0
- package/skills/octocode-code-engineer/coverage/index.ts.html +826 -0
- package/skills/octocode-code-engineer/coverage/metrics.ts.html +553 -0
- package/skills/octocode-code-engineer/coverage/pipeline.ts.html +2044 -0
- package/skills/octocode-code-engineer/coverage/prettify.css +1 -0
- package/skills/octocode-code-engineer/coverage/prettify.js +2 -0
- package/skills/octocode-code-engineer/coverage/report-analysis.ts.html +1570 -0
- package/skills/octocode-code-engineer/coverage/report-writer.ts.html +1102 -0
- package/skills/octocode-code-engineer/coverage/security-detectors.ts.html +1747 -0
- package/skills/octocode-code-engineer/coverage/semantic-detectors.ts.html +2152 -0
- package/skills/octocode-code-engineer/coverage/semantic.ts.html +1897 -0
- package/skills/octocode-code-engineer/coverage/sort-arrow-sprite.png +0 -0
- package/skills/octocode-code-engineer/coverage/sorter.js +210 -0
- package/skills/octocode-code-engineer/coverage/summary-md.ts.html +1222 -0
- package/skills/octocode-code-engineer/coverage/test-quality-detectors.ts.html +1039 -0
- package/skills/octocode-code-engineer/coverage/tree-sitter-analyzer.ts.html +955 -0
- package/skills/octocode-code-engineer/coverage/ts-analyzer.ts.html +1213 -0
- package/skills/octocode-code-engineer/coverage/types.ts.html +2473 -0
- package/skills/octocode-code-engineer/coverage/utils.ts.html +820 -0
- package/skills/octocode-code-engineer/eslint.config.mjs +54 -0
- package/skills/octocode-code-engineer/minify-scripts.mjs +32 -0
- package/skills/octocode-code-engineer/package.json +54 -0
- package/skills/octocode-code-engineer/references/agent-ast-reading-rfc.md +95 -0
- package/skills/octocode-code-engineer/references/architecture-techniques.md +121 -0
- package/skills/octocode-code-engineer/references/ast-search.md +210 -0
- package/skills/octocode-code-engineer/references/ast-tree-search.md +151 -0
- package/skills/octocode-code-engineer/references/cli-reference.md +167 -0
- package/skills/octocode-code-engineer/references/concepts.md +107 -0
- package/skills/octocode-code-engineer/references/finding-categories.md +128 -0
- package/skills/octocode-code-engineer/references/improvement-roadmap.md +304 -0
- package/skills/octocode-code-engineer/references/output-files.md +144 -0
- package/skills/octocode-code-engineer/references/playbooks.md +204 -0
- package/skills/octocode-code-engineer/references/present-results.md +136 -0
- package/skills/octocode-code-engineer/references/tool-workflows.md +566 -0
- package/skills/octocode-code-engineer/references/validate-investigate.md +225 -0
- package/skills/octocode-code-engineer/scripts/analysis/dependencies.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/dependency-summary.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/discovery.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/graph-analytics.js +1 -0
- package/skills/octocode-code-engineer/scripts/analysis/semantic.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/helpers.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/metrics.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/search.js +2 -0
- package/skills/octocode-code-engineer/scripts/ast/tree-search.js +2 -0
- package/skills/octocode-code-engineer/scripts/ast/tree-sitter.js +1 -0
- package/skills/octocode-code-engineer/scripts/ast/ts-analyzer.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/chains.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/effects.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/input-sources.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/performance.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/prototype-pollution.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/security.js +1 -0
- package/skills/octocode-code-engineer/scripts/collectors/test-profile.js +1 -0
- package/skills/octocode-code-engineer/scripts/common/is-direct-run.js +1 -0
- package/skills/octocode-code-engineer/scripts/common/utils.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/code-quality.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/cohesion.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/coupling.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/cycle.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/dead-code.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/import-style.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/security.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/semantic.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/shared.js +1 -0
- package/skills/octocode-code-engineer/scripts/detectors/test-quality.js +1 -0
- package/skills/octocode-code-engineer/scripts/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/cache.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/cli.js +1 -0
- package/skills/octocode-code-engineer/scripts/pipeline/main.js +2 -0
- package/skills/octocode-code-engineer/scripts/reporting/analysis.js +1 -0
- package/skills/octocode-code-engineer/scripts/reporting/summary-md.js +1 -0
- package/skills/octocode-code-engineer/scripts/reporting/writer.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/constants.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/index.js +1 -0
- package/skills/octocode-code-engineer/scripts/types/interfaces.js +1 -0
- package/skills/octocode-code-engineer/src/analysis/dependencies.test.ts +545 -0
- package/skills/octocode-code-engineer/src/analysis/dependencies.ts +406 -0
- package/skills/octocode-code-engineer/src/analysis/dependency-summary.test.ts +566 -0
- package/skills/octocode-code-engineer/src/analysis/dependency-summary.ts +257 -0
- package/skills/octocode-code-engineer/src/analysis/discovery.test.ts +420 -0
- package/skills/octocode-code-engineer/src/analysis/discovery.ts +87 -0
- package/skills/octocode-code-engineer/src/analysis/graph-analytics.test.ts +449 -0
- package/skills/octocode-code-engineer/src/analysis/graph-analytics.ts +534 -0
- package/skills/octocode-code-engineer/src/analysis/semantic.test.ts +1533 -0
- package/skills/octocode-code-engineer/src/analysis/semantic.ts +830 -0
- package/skills/octocode-code-engineer/src/ast/helpers.test.ts +185 -0
- package/skills/octocode-code-engineer/src/ast/helpers.ts +62 -0
- package/skills/octocode-code-engineer/src/ast/metrics.test.ts +304 -0
- package/skills/octocode-code-engineer/src/ast/metrics.ts +204 -0
- package/skills/octocode-code-engineer/src/ast/search.test.ts +647 -0
- package/skills/octocode-code-engineer/src/ast/search.ts +648 -0
- package/skills/octocode-code-engineer/src/ast/tree-search.test.ts +199 -0
- package/skills/octocode-code-engineer/src/ast/tree-search.ts +392 -0
- package/skills/octocode-code-engineer/src/ast/tree-sitter.test.ts +407 -0
- package/skills/octocode-code-engineer/src/ast/tree-sitter.ts +402 -0
- package/skills/octocode-code-engineer/src/ast/ts-analyzer.test.ts +1864 -0
- package/skills/octocode-code-engineer/src/ast/ts-analyzer.ts +509 -0
- package/skills/octocode-code-engineer/src/collectors/chains.ts +74 -0
- package/skills/octocode-code-engineer/src/collectors/effects.test.ts +490 -0
- package/skills/octocode-code-engineer/src/collectors/effects.ts +332 -0
- package/skills/octocode-code-engineer/src/collectors/input-sources.test.ts +144 -0
- package/skills/octocode-code-engineer/src/collectors/input-sources.ts +196 -0
- package/skills/octocode-code-engineer/src/collectors/performance.test.ts +82 -0
- package/skills/octocode-code-engineer/src/collectors/performance.ts +141 -0
- package/skills/octocode-code-engineer/src/collectors/prototype-pollution.test.ts +55 -0
- package/skills/octocode-code-engineer/src/collectors/prototype-pollution.ts +162 -0
- package/skills/octocode-code-engineer/src/collectors/security.test.ts +124 -0
- package/skills/octocode-code-engineer/src/collectors/security.ts +309 -0
- package/skills/octocode-code-engineer/src/collectors/test-profile.test.ts +97 -0
- package/skills/octocode-code-engineer/src/collectors/test-profile.ts +269 -0
- package/skills/octocode-code-engineer/src/common/is-direct-run.test.ts +32 -0
- package/skills/octocode-code-engineer/src/common/is-direct-run.ts +13 -0
- package/skills/octocode-code-engineer/src/common/utils.test.ts +463 -0
- package/skills/octocode-code-engineer/src/common/utils.ts +304 -0
- package/skills/octocode-code-engineer/src/detectors/code-quality.ts +966 -0
- package/skills/octocode-code-engineer/src/detectors/cohesion.ts +539 -0
- package/skills/octocode-code-engineer/src/detectors/coupling.ts +323 -0
- package/skills/octocode-code-engineer/src/detectors/cycle.ts +349 -0
- package/skills/octocode-code-engineer/src/detectors/dead-code.ts +320 -0
- package/skills/octocode-code-engineer/src/detectors/import-style.ts +376 -0
- package/skills/octocode-code-engineer/src/detectors/index.test.ts +3061 -0
- package/skills/octocode-code-engineer/src/detectors/index.ts +88 -0
- package/skills/octocode-code-engineer/src/detectors/security.test.ts +882 -0
- package/skills/octocode-code-engineer/src/detectors/security.ts +821 -0
- package/skills/octocode-code-engineer/src/detectors/semantic.ts +758 -0
- package/skills/octocode-code-engineer/src/detectors/shared.ts +49 -0
- package/skills/octocode-code-engineer/src/detectors/test-quality.test.ts +388 -0
- package/skills/octocode-code-engineer/src/detectors/test-quality.ts +367 -0
- package/skills/octocode-code-engineer/src/index.test.ts +4425 -0
- package/skills/octocode-code-engineer/src/index.ts +403 -0
- package/skills/octocode-code-engineer/src/pipeline/cache.test.ts +199 -0
- package/skills/octocode-code-engineer/src/pipeline/cache.ts +130 -0
- package/skills/octocode-code-engineer/src/pipeline/cli.test.ts +493 -0
- package/skills/octocode-code-engineer/src/pipeline/cli.ts +344 -0
- package/skills/octocode-code-engineer/src/pipeline/main.test.ts +174 -0
- package/skills/octocode-code-engineer/src/pipeline/main.ts +1074 -0
- package/skills/octocode-code-engineer/src/pipeline.test.ts +84 -0
- package/skills/octocode-code-engineer/src/reporting/analysis.test.ts +782 -0
- package/skills/octocode-code-engineer/src/reporting/analysis.ts +688 -0
- package/skills/octocode-code-engineer/src/reporting/output-contract.test.ts +463 -0
- package/skills/octocode-code-engineer/src/reporting/summary-md.test.ts +421 -0
- package/skills/octocode-code-engineer/src/reporting/summary-md.ts +714 -0
- package/skills/octocode-code-engineer/src/reporting/writer.ts +430 -0
- package/skills/octocode-code-engineer/src/sanity.test.ts +47 -0
- package/skills/octocode-code-engineer/src/types/constants.ts +248 -0
- package/skills/octocode-code-engineer/src/types/index.ts +80 -0
- package/skills/octocode-code-engineer/src/types/interfaces.ts +682 -0
- package/skills/octocode-code-engineer/tsconfig.json +17 -0
- package/skills/octocode-code-engineer/vitest.config.ts +8 -0
- package/skills/octocode-documentation-writer/README.md +113 -0
- package/skills/octocode-documentation-writer/SKILL.md +886 -0
- package/skills/octocode-documentation-writer/references/agent-discovery-analysis.md +453 -0
- package/skills/octocode-documentation-writer/references/agent-documentation-writer.md +255 -0
- package/skills/octocode-documentation-writer/references/agent-engineer-questions.md +247 -0
- package/skills/octocode-documentation-writer/references/agent-orchestrator.md +370 -0
- package/skills/octocode-documentation-writer/references/agent-qa-validator.md +227 -0
- package/skills/octocode-documentation-writer/references/agent-researcher.md +250 -0
- package/skills/octocode-documentation-writer/schemas/analysis-schema.json +886 -0
- package/skills/octocode-documentation-writer/schemas/discovery-tasks.json +96 -0
- package/skills/octocode-documentation-writer/schemas/documentation-structure.json +373 -0
- package/skills/octocode-documentation-writer/schemas/partial-discovery-schema.json +102 -0
- package/skills/octocode-documentation-writer/schemas/partial-research-schema.json +98 -0
- package/skills/octocode-documentation-writer/schemas/qa-results-schema.json +113 -0
- package/skills/octocode-documentation-writer/schemas/questions-schema.json +228 -0
- package/skills/octocode-documentation-writer/schemas/research-schema.json +104 -0
- package/skills/octocode-documentation-writer/schemas/state-schema.json +222 -0
- package/skills/octocode-documentation-writer/schemas/work-assignments-schema.json +74 -0
- package/skills/octocode-plan/SKILL.md +122 -116
- package/skills/octocode-prompt-optimizer/SKILL.md +617 -0
- package/skills/octocode-pull-request-reviewer/README.md +249 -0
- package/skills/octocode-pull-request-reviewer/SKILL.md +479 -0
- package/skills/octocode-pull-request-reviewer/references/dependency-check.md +74 -0
- package/skills/octocode-pull-request-reviewer/references/domain-reviewers.md +24 -0
- package/skills/octocode-pull-request-reviewer/references/execution-lifecycle.md +441 -0
- package/skills/octocode-pull-request-reviewer/references/flow-analysis-protocol.md +64 -0
- package/skills/octocode-pull-request-reviewer/references/output-template.md +174 -0
- package/skills/octocode-pull-request-reviewer/references/parallel-agent-protocol.md +182 -0
- package/skills/octocode-pull-request-reviewer/references/review-guidelines.md +26 -0
- package/skills/octocode-pull-request-reviewer/references/verification-checklist.md +40 -0
- package/skills/octocode-research/.claude/settings.local.json +46 -0
- package/skills/octocode-research/.octocode/plan/code-review-fixes/plan.md +312 -0
- package/skills/octocode-research/.octocode/plan/code-review-fixes/research.md +212 -0
- package/skills/octocode-research/.octocode/plans/NODE_SERVER_START_PLAN.md +755 -0
- package/skills/octocode-research/.octocode/research/code-review/research.md +371 -0
- package/skills/octocode-research/.octocode/review/IMPROVEMENTS.md +391 -0
- package/skills/octocode-research/.octocode/review/REVIEW_PLAN.md +289 -0
- package/skills/octocode-research/.octocode/review/REVIEW_REPORT.md +356 -0
- package/skills/octocode-research/AGENTS.md +349 -0
- package/skills/octocode-research/README.md +494 -0
- package/skills/octocode-research/SKILL.md +652 -274
- package/skills/octocode-research/docs/API_REFERENCE.md +562 -0
- package/skills/octocode-research/docs/ARCHITECTURE.md +554 -0
- package/skills/octocode-research/docs/FLOWS.md +577 -0
- package/skills/octocode-research/docs/OVERVIEW.md +564 -0
- package/skills/octocode-research/docs/SERVER_FLOWS.md +631 -0
- package/skills/octocode-research/ecosystem.config.cjs +88 -0
- package/skills/octocode-research/eslint.config.mjs +27 -0
- package/skills/octocode-research/package.json +84 -0
- package/skills/octocode-research/references/GUARDRAILS.md +40 -0
- package/skills/octocode-research/references/PARALLEL_AGENT_PROTOCOL.md +178 -0
- package/skills/octocode-research/references/roast-prompt.md +149 -0
- package/skills/octocode-research/scripts/server-init.d.ts +2 -0
- package/skills/octocode-research/scripts/server-init.js +2 -0
- package/skills/octocode-research/scripts/server.d.ts +8 -0
- package/skills/octocode-research/scripts/server.js +445 -0
- package/skills/octocode-research/src/__tests__/integration/circuitBreaker.test.ts +205 -0
- package/skills/octocode-research/src/__tests__/integration/routes.test.ts +374 -0
- package/skills/octocode-research/src/__tests__/unit/circuitBreaker.test.ts +245 -0
- package/skills/octocode-research/src/__tests__/unit/errorHandler.test.ts +183 -0
- package/skills/octocode-research/src/__tests__/unit/httpPreprocess.test.ts +157 -0
- package/skills/octocode-research/src/__tests__/unit/logger.test.ts +143 -0
- package/skills/octocode-research/src/__tests__/unit/queryParser.test.ts +130 -0
- package/skills/octocode-research/src/__tests__/unit/responseBuilder.test.ts +469 -0
- package/skills/octocode-research/src/__tests__/unit/retry.test.ts +205 -0
- package/skills/octocode-research/src/index.ts +186 -0
- package/skills/octocode-research/src/mcpCache.ts +49 -0
- package/skills/octocode-research/src/middleware/errorHandler.ts +65 -0
- package/skills/octocode-research/src/middleware/logger.ts +61 -0
- package/skills/octocode-research/src/middleware/queryParser.ts +115 -0
- package/skills/octocode-research/src/middleware/readiness.ts +17 -0
- package/skills/octocode-research/src/routes/github.ts +197 -0
- package/skills/octocode-research/src/routes/local.ts +175 -0
- package/skills/octocode-research/src/routes/lsp.ts +177 -0
- package/skills/octocode-research/src/routes/package.ts +127 -0
- package/skills/octocode-research/src/routes/prompts.ts +138 -0
- package/skills/octocode-research/src/routes/tools.ts +677 -0
- package/skills/octocode-research/src/server-init.ts +363 -0
- package/skills/octocode-research/src/server.ts +285 -0
- package/skills/octocode-research/src/types/errorGuards.ts +151 -0
- package/skills/octocode-research/src/types/express.d.ts +76 -0
- package/skills/octocode-research/src/types/guards.ts +98 -0
- package/skills/octocode-research/src/types/mcp.ts +119 -0
- package/skills/octocode-research/src/types/responses.ts +199 -0
- package/skills/octocode-research/src/types/toolTypes.ts +33 -0
- package/skills/octocode-research/src/utils/asyncTimeout.ts +116 -0
- package/skills/octocode-research/src/utils/circuitBreaker.ts +492 -0
- package/skills/octocode-research/src/utils/colors.ts +53 -0
- package/skills/octocode-research/src/utils/errorQueue.ts +71 -0
- package/skills/octocode-research/src/utils/logEmoji.ts +103 -0
- package/skills/octocode-research/src/utils/logger.ts +413 -0
- package/skills/octocode-research/src/utils/resilience.ts +169 -0
- package/skills/octocode-research/src/utils/responseBuilder.ts +495 -0
- package/skills/octocode-research/src/utils/responseFactory.ts +100 -0
- package/skills/octocode-research/src/utils/responseParser.ts +272 -0
- package/skills/octocode-research/src/utils/retry.ts +280 -0
- package/skills/octocode-research/src/utils/routeFactory.ts +117 -0
- package/skills/octocode-research/src/utils/url.ts +20 -0
- package/skills/octocode-research/src/validation/httpPreprocess.ts +155 -0
- package/skills/octocode-research/src/validation/index.ts +2 -0
- package/skills/octocode-research/src/validation/schemas.ts +578 -0
- package/skills/octocode-research/src/validation/toolCallSchema.ts +132 -0
- package/skills/octocode-research/tsconfig.json +21 -0
- package/skills/octocode-research/tsdown.config.ts +42 -0
- package/skills/octocode-research/vitest.config.ts +20 -0
- package/skills/octocode-researcher/SKILL.md +461 -0
- package/skills/octocode-researcher/references/fallbacks.md +120 -0
- package/skills/{octocode-local-search → octocode-researcher}/references/tool-reference.md +132 -49
- package/skills/{octocode-local-search → octocode-researcher}/references/workflow-patterns.md +204 -4
- package/skills/octocode-rfc-generator/SKILL.md +223 -0
- package/skills/octocode-rfc-generator/references/rfc-template.md +193 -0
- package/skills/octocode-roast/SKILL.md +63 -21
- package/skills/octocode-implement/SKILL.md +0 -293
- package/skills/octocode-implement/references/execution-phases.md +0 -317
- package/skills/octocode-implement/references/tool-reference.md +0 -403
- package/skills/octocode-implement/references/workflow-patterns.md +0 -385
- package/skills/octocode-local-search/SKILL.md +0 -449
- package/skills/octocode-pr-review/SKILL.md +0 -391
- package/skills/octocode-pr-review/references/domain-reviewers.md +0 -105
- package/skills/octocode-pr-review/references/execution-lifecycle.md +0 -116
- package/skills/octocode-pr-review/references/research-flows.md +0 -75
- package/skills/octocode-research/references/tool-reference.md +0 -304
- package/skills/octocode-research/references/workflow-patterns.md +0 -325
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
# Improvement Roadmap
|
|
2
|
+
|
|
3
|
+
Research-backed upgrade plan for the weakest parts of the skill: security analysis, test-quality analysis, semantic analysis, output/reporting, and test-suite quality.
|
|
4
|
+
|
|
5
|
+
For validation policy, see the Principles section in [SKILL.md](../SKILL.md) and [validate & investigate](./validate-investigate.md).
|
|
6
|
+
|
|
7
|
+
**Status legend**: Done, Partial, Planned
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Security Analysis
|
|
12
|
+
|
|
13
|
+
### Current weakness
|
|
14
|
+
|
|
15
|
+
The current security layer is strong on breadth but still depends heavily on single-file heuristics. That creates false positives for patterns that look dangerous but are not proven dangerous in context.
|
|
16
|
+
|
|
17
|
+
### Target architecture
|
|
18
|
+
|
|
19
|
+
Move from isolated pattern detection to a lightweight taint model:
|
|
20
|
+
|
|
21
|
+
`sources -> propagators -> sanitizers -> sinks -> evidence trace`
|
|
22
|
+
|
|
23
|
+
Keep cheap AST rules for obvious cases:
|
|
24
|
+
- `eval`
|
|
25
|
+
- `new Function`
|
|
26
|
+
- direct `innerHTML`
|
|
27
|
+
- hardcoded secrets
|
|
28
|
+
|
|
29
|
+
Upgrade the noisier rules to dataflow-backed analysis:
|
|
30
|
+
- `prototype-pollution-risk`
|
|
31
|
+
- `sql-injection-risk`
|
|
32
|
+
- `unsafe-html`
|
|
33
|
+
- `unvalidated-input-sink`
|
|
34
|
+
- `input-passthrough-risk`
|
|
35
|
+
|
|
36
|
+
### Concrete upgrades
|
|
37
|
+
|
|
38
|
+
- Add sink-specific rule models for SQL, HTML, command execution, file writes, path joins, and object merge/write sites.
|
|
39
|
+
- Add sanitizer catalogs for common validation and encoding patterns.
|
|
40
|
+
- Add confidence scoring per rule: `high`, `medium`, `low`.
|
|
41
|
+
- Add finding evidence: source parameter, propagation steps, sink call, sanitizer status.
|
|
42
|
+
- Suppress structural false positives where the dynamic key is synthesized locally and never user-controlled.
|
|
43
|
+
|
|
44
|
+
### P0 work
|
|
45
|
+
|
|
46
|
+
- Split current security detectors into `pattern` rules and `flow` rules. *(Partial — detectors use evidence/confidence/ruleId)*
|
|
47
|
+
- Add fixture tests for true positive and false positive pairs. *(Partial — test file exists)*
|
|
48
|
+
- Add `confidence` and `evidence` fields to security findings. *(Done — `toSecurityFinding` in security.ts)*
|
|
49
|
+
|
|
50
|
+
### P1 work
|
|
51
|
+
|
|
52
|
+
- Build intra-procedural taint tracking inside a function body. *(Planned)*
|
|
53
|
+
- Add reusable source/sink/sanitizer definitions. *(Planned)*
|
|
54
|
+
- Add validation playbooks for each security category using Octocode local tools. *(Partial — playbooks.md covers some)*
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 2. Test-Quality Analysis
|
|
59
|
+
|
|
60
|
+
### Current weakness
|
|
61
|
+
|
|
62
|
+
The current test-quality pass mostly counts assertions, mocks, and setup hooks. That is helpful, but still shallow for real flakiness and false-confidence detection.
|
|
63
|
+
|
|
64
|
+
### Target architecture
|
|
65
|
+
|
|
66
|
+
Extend test analysis from simple counters to behavior-aware checks:
|
|
67
|
+
|
|
68
|
+
- assertion presence
|
|
69
|
+
- assertion reachability on all paths
|
|
70
|
+
- cleanup and restore behavior
|
|
71
|
+
- deterministic execution
|
|
72
|
+
- framework misuse
|
|
73
|
+
|
|
74
|
+
### Concrete upgrades
|
|
75
|
+
|
|
76
|
+
- Detect async tests that neither `await` nor return a promise.
|
|
77
|
+
- Detect `test.only`, `describe.only`, `skip`, and `todo`.
|
|
78
|
+
- Detect fake timers without restore and mock/spy state not reset or restored.
|
|
79
|
+
- Detect time, randomness, environment, and global-state coupling.
|
|
80
|
+
- Detect snapshot-only tests and interaction-only tests with no outcome assertions.
|
|
81
|
+
- Detect cleanup that exists on one path but not all paths.
|
|
82
|
+
|
|
83
|
+
### P0 work
|
|
84
|
+
|
|
85
|
+
- Add dedicated detector tests for test-quality rules. *(Done — test-quality.test.ts)*
|
|
86
|
+
- Add rules for focused tests, fake timers without restore, and missing mock restoration. *(Done — all 8 categories implemented)*
|
|
87
|
+
- Add a richer `testProfile` summary for timers, mocks, async patterns, and cleanup hooks. *(Done — TestProfile in interfaces.ts)*
|
|
88
|
+
|
|
89
|
+
### P1 work
|
|
90
|
+
|
|
91
|
+
- Add code-path-aware assertion and cleanup checks. *(Planned)*
|
|
92
|
+
- Add framework-specific adapters for Vitest/Jest style APIs. *(Planned)*
|
|
93
|
+
- Add flaky-test tags and recommended remediation steps. *(Planned)*
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 3. Semantic Analysis
|
|
98
|
+
|
|
99
|
+
### Current weakness
|
|
100
|
+
|
|
101
|
+
Semantic analysis is valuable, but it currently rebuilds a fresh TypeScript language service and uses a constant script version. That limits scale and wastes work on repeated scans.
|
|
102
|
+
|
|
103
|
+
### Target architecture
|
|
104
|
+
|
|
105
|
+
Adopt a persistent project-backed semantic engine:
|
|
106
|
+
|
|
107
|
+
- cache by `tsconfig`
|
|
108
|
+
- track file versions
|
|
109
|
+
- reuse TypeScript project state across scans
|
|
110
|
+
- support project references cleanly
|
|
111
|
+
|
|
112
|
+
### Concrete upgrades
|
|
113
|
+
|
|
114
|
+
- Replace ad hoc `LanguageService` creation with a project-service wrapper.
|
|
115
|
+
- Separate semantic fact collection from detector execution.
|
|
116
|
+
- Cache export references, inheritance chains, implementation maps, and symbol relationships.
|
|
117
|
+
- Expose semantic facts to detectors through a stable query surface instead of repeated tree walks.
|
|
118
|
+
|
|
119
|
+
### P0 work
|
|
120
|
+
|
|
121
|
+
- Introduce a semantic cache keyed by root + tsconfig + file versions. *(Planned)*
|
|
122
|
+
- Stop hardcoding script version `"1"`. *(Planned)*
|
|
123
|
+
- Benchmark semantic scan cost before and after caching. *(Planned)*
|
|
124
|
+
|
|
125
|
+
### P1 work
|
|
126
|
+
|
|
127
|
+
- Move to a Project Service style lifecycle. *(Planned)*
|
|
128
|
+
- Support project references and monorepo workspaces. *(Planned)*
|
|
129
|
+
- Share semantic state between multiple detectors in a single run. *(Partial — `runSemanticDetectors` shares ctx)*
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## 4. Output & Reporting
|
|
134
|
+
|
|
135
|
+
### Current weakness
|
|
136
|
+
|
|
137
|
+
The output is rich, but report generation is currently brittle and the output contract is not explicit enough to protect downstream tooling.
|
|
138
|
+
|
|
139
|
+
### Target architecture
|
|
140
|
+
|
|
141
|
+
Treat findings and reports as a versioned API:
|
|
142
|
+
|
|
143
|
+
- one normalized internal result model
|
|
144
|
+
- multiple emitters from that model
|
|
145
|
+
- stable schema version
|
|
146
|
+
- stable rule IDs
|
|
147
|
+
- optional SARIF output
|
|
148
|
+
|
|
149
|
+
### Concrete upgrades
|
|
150
|
+
|
|
151
|
+
- Normalize `summary.json`, `findings.json`, and Markdown generation around one canonical result object.
|
|
152
|
+
- Add `schemaVersion`, `confidence`, `evidence`, and `ruleId`.
|
|
153
|
+
- Add SARIF emission with stable fingerprints.
|
|
154
|
+
- Add diff/baseline mode so teams can adopt the tool incrementally.
|
|
155
|
+
- Add contract tests for output shapes and golden tests for Markdown rendering.
|
|
156
|
+
|
|
157
|
+
### P0 work
|
|
158
|
+
|
|
159
|
+
- Fix the report regression first. *(Done)*
|
|
160
|
+
- Add dedicated golden tests for `summary.md`, `summary.json`, and `findings.json`. *(Done — output-contract.test.ts)*
|
|
161
|
+
- Add contract assertions around required keys and nullable fields. *(Done — schemaVersion, REPORT_SCHEMA_VERSION)*
|
|
162
|
+
|
|
163
|
+
### P1 work
|
|
164
|
+
|
|
165
|
+
- Add SARIF emitter. *(Planned)*
|
|
166
|
+
- Add baseline and diff output modes. *(Planned)*
|
|
167
|
+
- Add category-level and confidence-level summary slices. *(Planned)*
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 5. Test-Suite Quality
|
|
172
|
+
|
|
173
|
+
### Current weakness
|
|
174
|
+
|
|
175
|
+
The suite is large, but the failing report tests show that critical output paths can still regress together. Some important detector modules do not have focused test files.
|
|
176
|
+
|
|
177
|
+
### Target architecture
|
|
178
|
+
|
|
179
|
+
Use layered testing:
|
|
180
|
+
|
|
181
|
+
- focused detector unit tests
|
|
182
|
+
- integration tests for orchestration
|
|
183
|
+
- golden tests for reports
|
|
184
|
+
- property-based tests for AST invariants
|
|
185
|
+
- mutation testing for critical rules
|
|
186
|
+
|
|
187
|
+
### Concrete upgrades
|
|
188
|
+
|
|
189
|
+
- Add dedicated tests for `security-detectors`, `test-quality-detectors`, and `tree-sitter-analyzer`.
|
|
190
|
+
- Add property-based tests for AST search and report invariants.
|
|
191
|
+
- Add mutation testing for high-risk detectors and output generation.
|
|
192
|
+
- Add smoke tests that run the scanner against its own source and assert key categories.
|
|
193
|
+
|
|
194
|
+
### P0 work
|
|
195
|
+
|
|
196
|
+
- Restore a green Vitest run. *(Done)*
|
|
197
|
+
- Add missing focused test files. *(Partial — 34 test files, some detector modules still untested)*
|
|
198
|
+
- Lock down report and findings schema expectations. *(Done — output-contract.test.ts)*
|
|
199
|
+
|
|
200
|
+
### P1 work
|
|
201
|
+
|
|
202
|
+
- Add property-based tests with `fast-check`. *(Planned)*
|
|
203
|
+
- Add mutation testing with Stryker for critical modules. *(Planned)*
|
|
204
|
+
- Add self-scan fixture snapshots for detector stability. *(Planned)*
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## 6. Architecture Analysis Depth
|
|
209
|
+
|
|
210
|
+
### Current weakness
|
|
211
|
+
|
|
212
|
+
The current architecture layer is strongest at file-level import analysis and architecture heuristics, but it still underuses graph science and AST/dataflow techniques that would make boundary and coupling defects more explainable.
|
|
213
|
+
|
|
214
|
+
### Target architecture
|
|
215
|
+
|
|
216
|
+
Treat architecture analysis as a hybrid of graph evidence and structural evidence:
|
|
217
|
+
|
|
218
|
+
- graph evidence for dependency shape, chokepoints, layering, and subsystem boundaries
|
|
219
|
+
- AST/semantic evidence for code roles, boundary leaks, side effects, and repeated orchestration
|
|
220
|
+
|
|
221
|
+
### Graph technique upgrades
|
|
222
|
+
|
|
223
|
+
- Add SCC condensation graphs so large file-level cycles collapse into interpretable cycle clusters.
|
|
224
|
+
- Add folder/package graphs to surface subsystem-level cycles and cross-boundary chatter.
|
|
225
|
+
- Add articulation-point and bridge-edge detection to identify brittle chokepoints.
|
|
226
|
+
- Add broker or betweenness-centrality scoring to find modules that mediate too many paths.
|
|
227
|
+
- Add change-coupling overlays from git history to catch architecture defects the import graph misses.
|
|
228
|
+
|
|
229
|
+
### AST and semantic technique upgrades
|
|
230
|
+
|
|
231
|
+
- Add relational or composite AST rules for architecture motifs, not just single-node patterns.
|
|
232
|
+
- Add symbol-level usage graphs so cohesion and feature-envy checks work below the file level.
|
|
233
|
+
- Add CFG/dataflow checks for boundary leaks, initialization order, and validation-before-sink behavior.
|
|
234
|
+
- Add import-time effect tracing to classify module-scope I/O, registration, and global mutation.
|
|
235
|
+
- Add boundary-role detection so controllers, services, domain modules, and infrastructure code can be checked semantically instead of only by path names.
|
|
236
|
+
|
|
237
|
+
### P0 work
|
|
238
|
+
|
|
239
|
+
- Expand the docs and playbooks so agents interpret architecture findings through graph and AST lenses together. *(Done — tool-workflows.md, playbooks.md)*
|
|
240
|
+
- Surface existing hub-node and hotspot signals more explicitly in result reading guidance. *(Done — hotFiles in summary.md)*
|
|
241
|
+
- Add fixture-based tests for graph-hotspot interpretation and architecture-summary rendering. *(Partial)*
|
|
242
|
+
|
|
243
|
+
### P1 work
|
|
244
|
+
|
|
245
|
+
- Implement SCC condensation and package-level dependency views. *(Partial — SCC clusters implemented in graph-analytics.ts)*
|
|
246
|
+
- Add broker centrality and articulation-point scoring to hotspot analysis. *(Done — broker-module, bridge-module in graph-analytics.ts)*
|
|
247
|
+
- Add relational AST rules for boundary leaks, split-brain modules, and import-time orchestration. *(Partial — import-side-effect-risk implemented)*
|
|
248
|
+
|
|
249
|
+
### P2 work
|
|
250
|
+
|
|
251
|
+
- Add lightweight local dataflow for architecture rules.
|
|
252
|
+
- Combine graph scores with AST evidence into a single architecture-confidence model.
|
|
253
|
+
- Add change-coupling overlays and folder/community clustering for subsystem discovery.
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## Delivery Phases
|
|
258
|
+
|
|
259
|
+
### Phase 0: Stabilize
|
|
260
|
+
|
|
261
|
+
- Fix output/reporting regressions.
|
|
262
|
+
- Make Vitest green.
|
|
263
|
+
- Add missing focused tests.
|
|
264
|
+
- Enforce Octocode local-tool validation in the skill docs and playbooks.
|
|
265
|
+
- Tighten architecture reading guidance around graph and AST signals.
|
|
266
|
+
|
|
267
|
+
### Phase 1: Improve Precision
|
|
268
|
+
|
|
269
|
+
- Add security taint modeling inside a function body.
|
|
270
|
+
- Add richer test-quality rules for cleanup, timers, mocks, and async behavior.
|
|
271
|
+
- Add confidence and evidence fields to findings.
|
|
272
|
+
|
|
273
|
+
### Phase 2: Improve Scale
|
|
274
|
+
|
|
275
|
+
- Add persistent semantic state and project-backed analysis.
|
|
276
|
+
- Add semantic fact caching.
|
|
277
|
+
- Add baseline/diff mode and SARIF output.
|
|
278
|
+
|
|
279
|
+
### Phase 3: Deepen Coverage
|
|
280
|
+
|
|
281
|
+
- Add optional interprocedural summaries.
|
|
282
|
+
- Add property-based and mutation testing.
|
|
283
|
+
- Externalize more AST-only rules into rule packs.
|
|
284
|
+
- Add deeper graph and subsystem analysis for architecture defects.
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Research Basis
|
|
289
|
+
|
|
290
|
+
- TypeScript Compiler API wiki: https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API
|
|
291
|
+
- typescript-eslint Project Service docs: https://typescript-eslint.io/packages/project-service/generated/
|
|
292
|
+
- typescript-eslint Project Service blog: https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/website/blog/2025-05-29-project-service.mdx
|
|
293
|
+
- Semgrep taint analysis overview: https://github.com/semgrep/semgrep-docs/blob/main/docs/writing-rules/data-flow/taint-mode/overview.md
|
|
294
|
+
- ast-grep relational rules: https://github.com/ast-grep/ast-grep.github.io/blob/main/website/guide/rule-config/relational-rule.md
|
|
295
|
+
- ESLint code path analysis: https://eslint.org/docs/latest/extend/code-path-analysis
|
|
296
|
+
- Tree-sitter predicates and directives: https://tree-sitter.github.io/tree-sitter/using-parsers/queries/3-predicates-and-directives.html
|
|
297
|
+
- dependency-cruiser rules reference: https://github.com/sverweij/dependency-cruiser/blob/main/doc/rules-reference.md
|
|
298
|
+
- CodeQL data flow analysis: https://github.com/github/codeql/blob/main/docs/codeql/writing-codeql-queries/about-data-flow-analysis.rst
|
|
299
|
+
- CodeQL JS/TS data flow guide: https://github.com/github/codeql/blob/main/docs/codeql/codeql-language-guides/analyzing-data-flow-in-javascript-and-typescript.rst
|
|
300
|
+
- Vitest coverage reporters: https://github.com/vitest-dev/vitest/blob/main/docs/config/coverage.md
|
|
301
|
+
- Vitest timers guide: https://vitest.dev/guide/mocking/timers
|
|
302
|
+
- Stryker JS usage: https://github.com/stryker-mutator/stryker-js/blob/master/docs/usage.md
|
|
303
|
+
- fast-check getting started: https://fast-check.dev/docs/introduction/getting-started/
|
|
304
|
+
- GitHub SARIF fingerprints: https://docs.github.com/en/code-security/reference/code-scanning/sarif-files/sarif-support-for-code-scanning
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Output Files
|
|
2
|
+
|
|
3
|
+
Each scan writes to `.octocode/scan/<timestamp>/`:
|
|
4
|
+
|
|
5
|
+
| File | Contents | When to Read |
|
|
6
|
+
|------|----------|-------------|
|
|
7
|
+
| `summary.md` | Health scores, tags, severity, per-pillar counts, top recs, change risk hotspots | **Always first** |
|
|
8
|
+
| `summary.json` | Machine-readable scan metadata, `agentOutput`, `analysisSummary`, `investigationPrompts`, `parseErrors[]` | Programmatic access |
|
|
9
|
+
| `architecture.json` | Dep graph, arch findings, `hotFiles[]`, `graphSignals[]`, chokepoints, optional advanced graph overlays | Cycles, coupling, SDP, D metric, test gaps, side-effect risk |
|
|
10
|
+
| `code-quality.json` | Up to 28 quality findings, severity/category breakdowns | Duplicates, complexity, perf |
|
|
11
|
+
| `dead-code.json` | Up to 10 hygiene findings, severity/category breakdowns | Dead code cleanup |
|
|
12
|
+
| `file-inventory.json` | Per-file: functions, flows, metrics, `issueIds[]` | Deep-diving a specific file |
|
|
13
|
+
| `findings.json` | ALL findings sorted by severity with `ruleId`, `analysisLens`, `confidence`, `impact`, `correlatedSignals[]`, `recommendedValidation`, and optional `flowTrace[]` | Complete sorted list |
|
|
14
|
+
| `ast-trees.txt` | `Kind[startLine:endLine]` per file (on by default, disable with `--no-tree`) | Structural overview |
|
|
15
|
+
| `graph.md` | Mermaid dependency graph (only with `--graph`) | Visual architecture |
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## JSON Key Reference
|
|
20
|
+
|
|
21
|
+
### `summary.json`
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
schemaVersion, generatedAt, repoRoot, options, parser,
|
|
25
|
+
summary { totalPackages, totalFiles, totalNodes, totalFunctions, totalFlows, totalDependencyFiles, byPackage },
|
|
26
|
+
agentOutput { totalFindings, highPriority, mediumPriority, lowPriority,
|
|
27
|
+
topRecommendations[] { id, file, severity, category, title, reason, suggestedFix },
|
|
28
|
+
filesWithIssues[] { file, issueCount, issueIds } },
|
|
29
|
+
analysisSummary { graphSignals[], astSignals[], strongestGraphSignal, strongestAstSignal, combinedSignals[], recommendedValidation },
|
|
30
|
+
strongestGraphSignal, strongestAstSignal, combinedSignals[], recommendedValidation, investigationPrompts[],
|
|
31
|
+
parseErrors[] { file, message },
|
|
32
|
+
outputFiles { summary, architecture, codeQuality, deadCode, fileInventory, findings, ... }
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use `summary.json` to drive the first decision:
|
|
36
|
+
|
|
37
|
+
- Use `agentOutput.topRecommendations[]` and `filesWithIssues[]` to decide where to drill in first
|
|
38
|
+
- Use `summary.md` or `architecture.json` for graph-specific detail such as `cycles`, `criticalPaths`, and hotspots
|
|
39
|
+
- If top recommendations are mostly complexity, duplication, or side-effect findings, switch to AST-first investigation
|
|
40
|
+
- If graph-heavy recommendations and AST-heavy recommendations appear together, plan a combined investigation before proposing refactors
|
|
41
|
+
|
|
42
|
+
### `findings.json`
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
generatedAt,
|
|
46
|
+
optimizationFindings[] { id, ruleId, severity, category, analysisLens, confidence,
|
|
47
|
+
file, lineStart, lineEnd, title, reason,
|
|
48
|
+
files[], suggestedFix { strategy, steps[] }, impact, tags[],
|
|
49
|
+
correlatedSignals[], recommendedValidation, flowTrace[], lspHints[] },
|
|
50
|
+
totalFindings
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Filter: `jq '.optimizationFindings[] | select(.tags | contains(["coupling"]))' findings.json`
|
|
54
|
+
|
|
55
|
+
Use `findings.json` to correlate categories:
|
|
56
|
+
|
|
57
|
+
- `feature-envy` + `low-cohesion` = likely boundary error
|
|
58
|
+
- `layer-violation` + `feature-envy` = likely dependency leak
|
|
59
|
+
- `import-side-effect-risk` + hotspot tags = likely startup risk
|
|
60
|
+
- `dependency-critical-path` + complexity tags = likely change chokepoint
|
|
61
|
+
|
|
62
|
+
### `architecture.json`
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
schemaVersion, generatedAt,
|
|
66
|
+
dependencyGraph { totalModules, totalEdges, criticalModules[], cycles[], criticalPaths[], ... },
|
|
67
|
+
dependencyFindings[], findings[], findingsCount,
|
|
68
|
+
severityBreakdown { critical, high, medium, low },
|
|
69
|
+
categoryBreakdown { "dependency-cycle": N, ... },
|
|
70
|
+
hotFiles[] { file, riskScore, fanIn, fanOut, complexityScore, exportCount, inCycle, onCriticalPath },
|
|
71
|
+
graphSignals[], chokepoints[], criticalHubCandidates[],
|
|
72
|
+
sccClusters[] (with `--graph-advanced`), packageGraphSummary (with `--graph-advanced`), packageHotspots[] (with `--graph-advanced`)
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Use `architecture.json` as the graph lens:
|
|
76
|
+
|
|
77
|
+
- `criticalModules[]` = hub nodes already surfaced by the dependency summary
|
|
78
|
+
- `cycles[]` = immediate structural loops
|
|
79
|
+
- `criticalPaths[]` = long change propagation chains
|
|
80
|
+
- `hotFiles[]` = current approximation of graph chokepoints
|
|
81
|
+
- `graphSignals[]` = already-interpreted graph narratives for triage
|
|
82
|
+
- `chokepoints[]` = broker and articulation-style structural pressure points
|
|
83
|
+
- `categoryBreakdown` = whether the repo’s architecture risk is mostly cycles, layering, cohesion, or side effects
|
|
84
|
+
|
|
85
|
+
Good investigation prompts:
|
|
86
|
+
|
|
87
|
+
- "Do critical hub modules also appear in hotFiles or critical paths?"
|
|
88
|
+
- "Which files are both hot and on a critical path?"
|
|
89
|
+
- "Which layer violations cluster around the same folder?"
|
|
90
|
+
- "Do side-effectful modules also have high fan-in?"
|
|
91
|
+
|
|
92
|
+
### `code-quality.json`
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
generatedAt, duplicateFlows { duplicateFunctions[], redundantFlows[] },
|
|
96
|
+
optimizationOpportunities[] { type, message, file, lineStart, lineEnd, details },
|
|
97
|
+
findings[], findingsCount, severityBreakdown, categoryBreakdown
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### `dead-code.json`
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
generatedAt, findings[], findingsCount, severityBreakdown, categoryBreakdown
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### `file-inventory.json`
|
|
107
|
+
|
|
108
|
+
```
|
|
109
|
+
generatedAt, fileCount,
|
|
110
|
+
fileInventory[] { package, file, parseEngine, nodeCount, kindCounts,
|
|
111
|
+
functions[] { name, lineStart, lineEnd, complexity, cognitiveComplexity, ... },
|
|
112
|
+
flows[], dependencyProfile { internalDependencies[], externalDependencies[],
|
|
113
|
+
declaredExports[], importedSymbols[], reExports[] },
|
|
114
|
+
emptyCatches[], switchesWithoutDefault[], anyCount, magicNumbers[],
|
|
115
|
+
topLevelEffects[], effectProfile, symbolUsageSummary, boundaryRoleHints[], cfgFlags,
|
|
116
|
+
prototypePollutionSites[], issueIds[] }
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Use `file-inventory.json` as the AST lens:
|
|
120
|
+
|
|
121
|
+
- `functions[]` = shape and complexity of orchestration
|
|
122
|
+
- `flows[]` = repeated control structures
|
|
123
|
+
- `dependencyProfile` = exported/imported symbol detail for cohesion and feature-envy follow-up
|
|
124
|
+
- `topLevelEffects[]` = hidden initialization / import-time work
|
|
125
|
+
- `effectProfile` = summarized import-time risk
|
|
126
|
+
- `symbolUsageSummary` = compact symbol/import/export shape for boundary follow-up
|
|
127
|
+
- `boundaryRoleHints[]` = lightweight role inference for the file
|
|
128
|
+
- `cfgFlags` = lightweight flow clues for validation, cleanup, exit behavior, and async boundaries (with `--flow`)
|
|
129
|
+
|
|
130
|
+
If `architecture.json` names a hotspot, use `file-inventory.json` to explain why that hotspot is structurally hard to change.
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Reading `ast-trees.txt`
|
|
135
|
+
|
|
136
|
+
For format, navigation commands, and usage guide, see [ast-tree-search.md](./ast-tree-search.md).
|
|
137
|
+
|
|
138
|
+
On by default (`--emit-tree`). Suppress with `--no-tree`. Tree depth: `--tree-depth N` (default: 4).
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Legacy Single-File Mode (`--out path/to/file.json`)
|
|
143
|
+
|
|
144
|
+
Keys: `summary`, `fileInventory[]`, `duplicateFlows`, `dependencyGraph`, `dependencyFindings[]`, `optimizationFindings[]`, `agentOutput`, `parseErrors[]`.
|