@dtt_siye/atool 1.1.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/LICENSE +21 -0
- package/README.md +235 -0
- package/VERSION +1 -0
- package/agents/code-reviewer.md +29 -0
- package/bin/atool.js +235 -0
- package/bin/postinstall.js +23 -0
- package/hooks/doc-sync-reminder +155 -0
- package/hooks/hooks-cursor.json +37 -0
- package/hooks/hooks.json +37 -0
- package/hooks/prompt-guard +135 -0
- package/hooks/session-start +286 -0
- package/install.sh +603 -0
- package/lib/analyze-source.sh +1265 -0
- package/lib/common.sh +1041 -0
- package/lib/compute-importance.sh +598 -0
- package/lib/detect-stack.sh +354 -0
- package/lib/generate-visualization.sh +266 -0
- package/lib/install-claude.sh +43 -0
- package/lib/install-cursor.sh +281 -0
- package/lib/install-hooks.sh +285 -0
- package/lib/install-kiro.sh +543 -0
- package/lib/install-mcp.sh +99 -0
- package/lib/install-skills.sh +129 -0
- package/lib/knowledge-graph.sh +1014 -0
- package/lib/multi-dimensional-analysis.sh +413 -0
- package/lib/pre-scan.sh +1045 -0
- package/lib/project-init.sh +552 -0
- package/lib/visualization-template.html +545 -0
- package/mcp/recommended.json +24 -0
- package/package.json +39 -0
- package/skills/_superpowers/.claude-plugin/marketplace.json +20 -0
- package/skills/_superpowers/.claude-plugin/plugin.json +20 -0
- package/skills/_superpowers/.codex/INSTALL.md +67 -0
- package/skills/_superpowers/.cursor-plugin/plugin.json +25 -0
- package/skills/_superpowers/.gitattributes +18 -0
- package/skills/_superpowers/.github/FUNDING.yml +3 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
- package/skills/_superpowers/.github/PULL_REQUEST_TEMPLATE.md +87 -0
- package/skills/_superpowers/.opencode/INSTALL.md +83 -0
- package/skills/_superpowers/.opencode/plugins/superpowers.js +107 -0
- package/skills/_superpowers/CHANGELOG.md +13 -0
- package/skills/_superpowers/CODE_OF_CONDUCT.md +128 -0
- package/skills/_superpowers/GEMINI.md +2 -0
- package/skills/_superpowers/LICENSE +21 -0
- package/skills/_superpowers/README.md +187 -0
- package/skills/_superpowers/RELEASE-NOTES.md +1083 -0
- package/skills/_superpowers/agents/code-reviewer.md +48 -0
- package/skills/_superpowers/commands/brainstorm.md +5 -0
- package/skills/_superpowers/commands/execute-plan.md +5 -0
- package/skills/_superpowers/commands/write-plan.md +5 -0
- package/skills/_superpowers/docs/README.codex.md +126 -0
- package/skills/_superpowers/docs/README.opencode.md +130 -0
- package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-design.md +294 -0
- package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
- package/skills/_superpowers/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
- package/skills/_superpowers/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-03-23-codex-app-compatibility.md +564 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md +244 -0
- package/skills/_superpowers/docs/testing.md +303 -0
- package/skills/_superpowers/docs/windows/polyglot-hooks.md +212 -0
- package/skills/_superpowers/gemini-extension.json +6 -0
- package/skills/_superpowers/hooks/hooks-cursor.json +10 -0
- package/skills/_superpowers/hooks/hooks.json +16 -0
- package/skills/_superpowers/hooks/run-hook.cmd +46 -0
- package/skills/_superpowers/hooks/session-start +57 -0
- package/skills/_superpowers/package.json +6 -0
- package/skills/_superpowers/skills/brainstorming/SKILL.md +164 -0
- package/skills/_superpowers/skills/brainstorming/scripts/frame-template.html +214 -0
- package/skills/_superpowers/skills/brainstorming/scripts/helper.js +88 -0
- package/skills/_superpowers/skills/brainstorming/scripts/server.cjs +354 -0
- package/skills/_superpowers/skills/brainstorming/scripts/start-server.sh +148 -0
- package/skills/_superpowers/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/skills/_superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/_superpowers/skills/brainstorming/visual-companion.md +287 -0
- package/skills/_superpowers/skills/dispatching-parallel-agents/SKILL.md +182 -0
- package/skills/_superpowers/skills/executing-plans/SKILL.md +70 -0
- package/skills/_superpowers/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/_superpowers/skills/receiving-code-review/SKILL.md +213 -0
- package/skills/_superpowers/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/_superpowers/skills/requesting-code-review/code-reviewer.md +146 -0
- package/skills/_superpowers/skills/subagent-driven-development/SKILL.md +277 -0
- package/skills/_superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/_superpowers/skills/subagent-driven-development/implementer-prompt.md +113 -0
- package/skills/_superpowers/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/_superpowers/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/_superpowers/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/_superpowers/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/_superpowers/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/_superpowers/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/_superpowers/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/_superpowers/skills/test-driven-development/SKILL.md +371 -0
- package/skills/_superpowers/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/_superpowers/skills/using-git-worktrees/SKILL.md +218 -0
- package/skills/_superpowers/skills/using-superpowers/SKILL.md +115 -0
- package/skills/_superpowers/skills/using-superpowers/references/codex-tools.md +100 -0
- package/skills/_superpowers/skills/using-superpowers/references/gemini-tools.md +33 -0
- package/skills/_superpowers/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/_superpowers/skills/writing-plans/SKILL.md +152 -0
- package/skills/_superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/_superpowers/skills/writing-skills/SKILL.md +655 -0
- package/skills/_superpowers/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/_superpowers/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/_superpowers/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/_superpowers/skills/writing-skills/persuasion-principles.md +187 -0
- package/skills/_superpowers/skills/writing-skills/render-graphs.js +168 -0
- package/skills/_superpowers/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/_superpowers/tests/brainstorm-server/package-lock.json +36 -0
- package/skills/_superpowers/tests/brainstorm-server/package.json +10 -0
- package/skills/_superpowers/tests/brainstorm-server/server.test.js +427 -0
- package/skills/_superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
- package/skills/_superpowers/tests/brainstorm-server/ws-protocol.test.js +392 -0
- package/skills/_superpowers/tests/claude-code/README.md +158 -0
- package/skills/_superpowers/tests/claude-code/analyze-token-usage.py +168 -0
- package/skills/_superpowers/tests/claude-code/run-skill-tests.sh +187 -0
- package/skills/_superpowers/tests/claude-code/test-document-review-system.sh +177 -0
- package/skills/_superpowers/tests/claude-code/test-helpers.sh +202 -0
- package/skills/_superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +314 -0
- package/skills/_superpowers/tests/claude-code/test-subagent-driven-development.sh +165 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-all.sh +70 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-test.sh +136 -0
- package/skills/_superpowers/tests/opencode/run-tests.sh +163 -0
- package/skills/_superpowers/tests/opencode/setup.sh +73 -0
- package/skills/_superpowers/tests/opencode/test-plugin-loading.sh +72 -0
- package/skills/_superpowers/tests/opencode/test-priority.sh +198 -0
- package/skills/_superpowers/tests/opencode/test-tools.sh +104 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/executing-plans.txt +1 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/writing-plans.txt +10 -0
- package/skills/_superpowers/tests/skill-triggering/run-all.sh +60 -0
- package/skills/_superpowers/tests/skill-triggering/run-test.sh +88 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/design.md +81 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
- package/skills/_superpowers/tests/subagent-driven-dev/run-test.sh +106 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/scaffold.sh +46 -0
- package/skills/ai-project-architecture/SKILL.md +632 -0
- package/skills/ai-project-architecture/reference/structure-rules.md +406 -0
- package/skills/ai-project-architecture/templates/compliance-report.md +300 -0
- package/skills/ai-project-architecture/templates/migration-plan.md +433 -0
- package/skills/ai-project-architecture/templates/verification-checklist.md +408 -0
- package/skills/android-conventions/SKILL.md +125 -0
- package/skills/atool-init/SKILL.md +141 -0
- package/skills/clarify-before-build/SKILL.md +107 -0
- package/skills/code-review/SKILL.md +406 -0
- package/skills/code-review/rules/architecture.md +285 -0
- package/skills/code-review/rules/coupling-cohesion.md +309 -0
- package/skills/code-review/rules/dead-code.md +115 -0
- package/skills/code-review/rules/deprecation-debt.md +279 -0
- package/skills/code-review/rules/duplication.md +104 -0
- package/skills/code-review/rules/error-security.md +143 -0
- package/skills/code-review/rules/maintainability.md +203 -0
- package/skills/code-review/rules/quality.md +158 -0
- package/skills/devops-conventions/SKILL.md +205 -0
- package/skills/doc-coauthoring/SKILL.md +392 -0
- package/skills/doc-standards-enforcer/SKILL.md +290 -0
- package/skills/doc-standards-enforcer/examples/valid-document-example.md +67 -0
- package/skills/doc-standards-enforcer/references/101-standards-summary.md +318 -0
- package/skills/doc-standards-enforcer/scripts/check_references.py +175 -0
- package/skills/doc-standards-enforcer/scripts/fix_common_issues.py +303 -0
- package/skills/doc-standards-enforcer/scripts/validate_doc_standards.py +332 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +200 -0
- package/skills/docx/docx-js.md +350 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/docx/ooxml.md +610 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/document.py +1276 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/utilities.py +374 -0
- package/skills/flutter-conventions/SKILL.md +70 -0
- package/skills/go-conventions/SKILL.md +230 -0
- package/skills/harmony-conventions/SKILL.md +156 -0
- package/skills/java-conventions/SKILL.md +277 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +297 -0
- package/skills/pdf/forms.md +205 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +487 -0
- package/skills/pptx/html2pptx.md +625 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/pptx/ooxml.md +427 -0
- package/skills/pptx/scripts/html2pptx.js +979 -0
- package/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/pptx/scripts/replace.py +385 -0
- package/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/project-analyze/SKILL.md +270 -0
- package/skills/project-analyze/phases/phase0-discovery.md +278 -0
- package/skills/project-analyze/phases/phase0.5-prescan.md +139 -0
- package/skills/project-analyze/phases/phase1-inventory.md +94 -0
- package/skills/project-analyze/phases/phase2-deep-analysis.md +249 -0
- package/skills/project-analyze/phases/phase2a-l4-analysis.md +94 -0
- package/skills/project-analyze/phases/phase2b-l5-analysis.md +97 -0
- package/skills/project-analyze/phases/phase3-knowledge-graph.md +120 -0
- package/skills/project-analyze/phases/phase3a-multi-dimensional.md +61 -0
- package/skills/project-analyze/phases/phase4-code-quality.md +81 -0
- package/skills/project-analyze/phases/phase5-synthesis.md +284 -0
- package/skills/project-analyze/phases/phase6-validation.md +179 -0
- package/skills/project-analyze/prompts/code-review-agent.md +122 -0
- package/skills/project-analyze/prompts/deep-analysis-agent.md +107 -0
- package/skills/project-analyze/prompts/inventory-agent.md +67 -0
- package/skills/project-analyze/prompts/l4-analysis-agent.md +98 -0
- package/skills/project-analyze/rules/android.md +282 -0
- package/skills/project-analyze/rules/devops.md +443 -0
- package/skills/project-analyze/rules/generic.md +243 -0
- package/skills/project-analyze/rules/go.md +289 -0
- package/skills/project-analyze/rules/harmony.md +257 -0
- package/skills/project-analyze/rules/java.md +507 -0
- package/skills/project-analyze/rules/mobile-flutter.md +315 -0
- package/skills/project-analyze/rules/mobile-react-native.md +283 -0
- package/skills/project-analyze/rules/mobile-swift.md +323 -0
- package/skills/project-analyze/rules/python.md +317 -0
- package/skills/project-analyze/rules/rust-tauri.md +243 -0
- package/skills/project-analyze/rules/rust.md +296 -0
- package/skills/project-analyze/rules/web-nextjs.md +364 -0
- package/skills/project-analyze/rules/web-react.md +298 -0
- package/skills/project-analyze/rules/web-vue.md +378 -0
- package/skills/project-analyze/rules/web.md +390 -0
- package/skills/project-query/SKILL.md +224 -0
- package/skills/project-query/rules/query-templates.md +212 -0
- package/skills/python-conventions/SKILL.md +169 -0
- package/skills/react-native-conventions/SKILL.md +73 -0
- package/skills/requirements-writer/README.md +153 -0
- package/skills/requirements-writer/SKILL.md +341 -0
- package/skills/requirements-writer/examples/prd-outline-example.md +217 -0
- package/skills/requirements-writer/templates/module-prd-template.md +362 -0
- package/skills/requirements-writer/templates/prd-outline-template.md +185 -0
- package/skills/requirements-writer/templates/user-story-template.md +1125 -0
- package/skills/rust-conventions/SKILL.md +361 -0
- package/skills/smart-dispatch/SKILL.md +296 -0
- package/skills/smart-dispatch/implementer-prompt.md +146 -0
- package/skills/smart-dispatch/reviewer-prompt.md +199 -0
- package/skills/software-architecture/SKILL.md +278 -0
- package/skills/swift-conventions/SKILL.md +72 -0
- package/skills/ui-ux-pro/SKILL.md +140 -0
- package/skills/verification-before-completion/SKILL.md +119 -0
- package/skills/web-conventions/SKILL.md +259 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +97 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/writing-plans/SKILL.md +144 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/skills/xlsx/recalc.py +178 -0
- package/templates/CLAUDE.md.android +57 -0
- package/templates/CLAUDE.md.devops +50 -0
- package/templates/CLAUDE.md.generic +34 -0
- package/templates/CLAUDE.md.go +67 -0
- package/templates/CLAUDE.md.harmony +54 -0
- package/templates/CLAUDE.md.java +56 -0
- package/templates/CLAUDE.md.mobile-flutter +38 -0
- package/templates/CLAUDE.md.mobile-react-native +37 -0
- package/templates/CLAUDE.md.mobile-swift +40 -0
- package/templates/CLAUDE.md.python +65 -0
- package/templates/CLAUDE.md.rust +68 -0
- package/templates/CLAUDE.md.rust-tauri +120 -0
- package/templates/CLAUDE.md.web +63 -0
- package/templates/COMPONENT.md.android +58 -0
- package/templates/COMPONENT.md.devops +54 -0
- package/templates/COMPONENT.md.generic +35 -0
- package/templates/COMPONENT.md.go +59 -0
- package/templates/COMPONENT.md.harmony +63 -0
- package/templates/COMPONENT.md.java +69 -0
- package/templates/COMPONENT.md.mobile-flutter +56 -0
- package/templates/COMPONENT.md.mobile-react-native +55 -0
- package/templates/COMPONENT.md.mobile-swift +56 -0
- package/templates/COMPONENT.md.python +67 -0
- package/templates/COMPONENT.md.rust +57 -0
- package/templates/COMPONENT.md.rust-tauri +66 -0
- package/templates/COMPONENT.md.web +39 -0
- package/templates/README.md.android +71 -0
- package/templates/README.md.devops +68 -0
- package/templates/README.md.generic +39 -0
- package/templates/README.md.go +70 -0
- package/templates/README.md.harmony +72 -0
- package/templates/README.md.java +73 -0
- package/templates/README.md.mobile-flutter +69 -0
- package/templates/README.md.mobile-react-native +65 -0
- package/templates/README.md.mobile-swift +69 -0
- package/templates/README.md.monorepo +59 -0
- package/templates/README.md.python +66 -0
- package/templates/README.md.rust +69 -0
- package/templates/README.md.rust-tauri +149 -0
- package/templates/README.md.web +94 -0
- package/templates/UI_STYLE.md.android +74 -0
- package/templates/UI_STYLE.md.devops +50 -0
- package/templates/UI_STYLE.md.generic +31 -0
- package/templates/UI_STYLE.md.go +49 -0
- package/templates/UI_STYLE.md.harmony +71 -0
- package/templates/UI_STYLE.md.java +61 -0
- package/templates/UI_STYLE.md.mobile-flutter +70 -0
- package/templates/UI_STYLE.md.mobile-react-native +71 -0
- package/templates/UI_STYLE.md.mobile-swift +71 -0
- package/templates/UI_STYLE.md.python +58 -0
- package/templates/UI_STYLE.md.rust +52 -0
- package/templates/UI_STYLE.md.rust-tauri +102 -0
- package/templates/UI_STYLE.md.web +92 -0
- package/templates/cursor-rules.android.mdc +33 -0
- package/templates/cursor-rules.devops.mdc +32 -0
- package/templates/cursor-rules.generic.mdc +25 -0
- package/templates/cursor-rules.go.mdc +34 -0
- package/templates/cursor-rules.harmony.mdc +30 -0
- package/templates/cursor-rules.java.mdc +30 -0
- package/templates/cursor-rules.mobile-flutter.mdc +42 -0
- package/templates/cursor-rules.mobile-react-native.mdc +43 -0
- package/templates/cursor-rules.mobile-swift.mdc +42 -0
- package/templates/cursor-rules.python.mdc +33 -0
- package/templates/cursor-rules.rust-tauri.mdc +67 -0
- package/templates/cursor-rules.rust.mdc +30 -0
- package/templates/cursor-rules.web.mdc +30 -0
- package/templates/kiro-steering.android.md +39 -0
- package/templates/kiro-steering.devops.md +32 -0
- package/templates/kiro-steering.generic.md +28 -0
- package/templates/kiro-steering.go.md +41 -0
- package/templates/kiro-steering.harmony.md +36 -0
- package/templates/kiro-steering.java.md +37 -0
- package/templates/kiro-steering.mobile-flutter.md +73 -0
- package/templates/kiro-steering.mobile-react-native.md +71 -0
- package/templates/kiro-steering.mobile-swift.md +62 -0
- package/templates/kiro-steering.python.md +34 -0
- package/templates/kiro-steering.rust-tauri.md +50 -0
- package/templates/kiro-steering.rust.md +36 -0
- package/templates/kiro-steering.web.md +41 -0
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-analyze
|
|
3
|
+
description: "Deep project analysis v5.0 — 7-phase pipeline with five-dimensional analysis framework, 14 node types, 24 edge types, 5-level granularity zooming, interactive visualization (Cytoscape.js), and query system. 5 depth levels (L1-L5): Discovery → Pre-Scan → Inventory → Deep Analysis → Knowledge Graph → Multi-Dimensional Analysis → Code Quality → Document Synthesis → Validation. Checkpoint/resume, incremental docs, large-module decomposition. Zero-KT standard, Chinese output. 触发:分析项目/生成文档/analyze project/generate docs/project analysis"
|
|
4
|
+
version: 5.0.0
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Project Analyzer v5.0
|
|
8
|
+
|
|
9
|
+
11 阶段流水线深度分析项目,通过知识图谱驱动生成完整文档。支持 16 种技术栈,5 级分析深度(L1-L5),断点续传,超大模块自动拆分。
|
|
10
|
+
|
|
11
|
+
## 核心原则:Zero-KT(零知识传递)
|
|
12
|
+
|
|
13
|
+
所有文档满足「Zero-KT」标准:**新人仅凭文档即可独立完成任务,无需向任何人提问**:
|
|
14
|
+
1. **理解项目**:为什么架构是这样设计的,每个模块为什么存在
|
|
15
|
+
2. **添加功能**:知道在哪个文件、哪个层、按照什么模式添加
|
|
16
|
+
3. **修复缺陷**:知道错误可能在哪个模块、如何调试、如何验证
|
|
17
|
+
4. **理解业务**:知道核心业务术语、业务规则、数据含义
|
|
18
|
+
|
|
19
|
+
**三人测试**:文档必须通过——(1) 新入职开发者能理解 (2) 不看源码能操作 (3) 遇到问题有排查指引。**所有 sub-agent prompt 必须包含此原则作为质量评判标准。**
|
|
20
|
+
|
|
21
|
+
## 触发条件
|
|
22
|
+
|
|
23
|
+
- 用户说「分析项目」「生成文档」「项目分析」「文档生成」「分析代码」「帮我分析这个项目」
|
|
24
|
+
- 用户说 "analyze project", "analyze codebase", "generate docs", "project analysis", "understand this codebase"
|
|
25
|
+
- 老项目接入 aTool 需要建立文档基线
|
|
26
|
+
|
|
27
|
+
## 全局输出语言约束(硬性)
|
|
28
|
+
|
|
29
|
+
所有文档**必须中文**(README.md、COMPONENT.md、UI_STYLE.md、CODE_REVIEW.md、docs/、MODULE-DOC.md、ASCII 图标注)。
|
|
30
|
+
**例外(保持英文)**:代码块、文件路径、技术标识符(变量/函数/类名)、API 路径、包名、Git 分支名。
|
|
31
|
+
**每个 sub-agent prompt 的第一条指令即为此约束,不可遗漏。**
|
|
32
|
+
|
|
33
|
+
## 分析深度等级
|
|
34
|
+
|
|
35
|
+
| 等级 | 说明 | 适合场景 |
|
|
36
|
+
|------|------|----------|
|
|
37
|
+
| L1 | 结构扫描:目录树 + 依赖表 + 技术栈识别 | 快速概览、>500 文件项目 |
|
|
38
|
+
| L2 | 架构分析:L1 + 架构图 + 数据流 + 模块文档 + docs/ + 代码质量(**默认**) | 大多数场景 |
|
|
39
|
+
| L3 | 深度实现:L2 + 核心函数签名 + 接口定义 + 关键实现细节 + 代码示例 + 设计决策记录 | 关键模块、交接文档 |
|
|
40
|
+
| L4 | 函数级分析:L3 + 逐函数调用链追踪 + 性能热点识别 + 安全审计点 + 数据流路径 | 质量审查、性能优化 |
|
|
41
|
+
| L5 | 跨模块行为推断:L4 + 时序图 + 状态机 + 异常路径追踪 + 数据血缘 | 架构重构、完整技术文档 |
|
|
42
|
+
|
|
43
|
+
**选择规则**:用户未指定 → 默认 L2;<50 文件 → 建议提升到 L3;L3/L4/L5 对所有项目规模可用(通过多批次执行)。**L1 特殊**:Phase 0.5 完全替代 Phase 1(0 AI agents,纯 bash 提取)。
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Pipeline Controller
|
|
48
|
+
|
|
49
|
+
### Execution Flow
|
|
50
|
+
|
|
51
|
+
1. **Detect IDE** → set execution_mode (parallel/sequential/compressed)
|
|
52
|
+
2. **Read `analysis-state.json`** (if exists) → determine resume point (see `phases/phase0-discovery.md` 0.5a)
|
|
53
|
+
3. **Execute Phase 0**: Read `phases/phase0-discovery.md` → detect stack, evaluate scale, compute importance, get user confirmation → write `analysis-state.json`
|
|
54
|
+
4. **Execute Phase 0.5 (Pre-Scan)**: Run `source lib/pre-scan.sh && pre_scan_project "$PROJECT_ROOT" "$PRESCAN_DIR"` → pure bash structural extraction → output `.atool-docs/pre-scan/{module-slug}.json` + `manifest.json` → write checkpoint `phase0_5_prescan = "completed"`
|
|
55
|
+
5. Based on Phase 0 + Phase 0.5 pre-scan data → set depth, scale, module list
|
|
56
|
+
6. **For each phase in pipeline order**:
|
|
57
|
+
- Check preconditions in `analysis-state.json`
|
|
58
|
+
- If not completed:
|
|
59
|
+
- **Read `phases/phase{N}-{name}.md`** for detailed instructions
|
|
60
|
+
- Execute phase → write checkpoint to `analysis-state.json`
|
|
61
|
+
6. **Phase 6**: Read `phases/phase6-validation.md` → validate all outputs → write summary
|
|
62
|
+
|
|
63
|
+
### Pipeline Order
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Phase 0 → phases/phase0-discovery.md (always)
|
|
67
|
+
Phase 0.5→ phases/phase0.5-prescan.md (always, pure bash, no AI)
|
|
68
|
+
Phase 1 → phases/phase1-inventory.md (always; L1 depth: skip, use Phase 0.5 data)
|
|
69
|
+
Phase 2 → phases/phase2-deep-analysis.md (skip if Kiro)
|
|
70
|
+
Phase 2a → phases/phase2a-l4-analysis.md (only if depth >= L4, skip if Kiro)
|
|
71
|
+
Phase 2b → phases/phase2b-l5-analysis.md (only if depth >= L5, skip if Kiro)
|
|
72
|
+
Phase 3 → phases/phase3-knowledge-graph.md (always, main agent only)
|
|
73
|
+
Phase 3a → phases/phase3a-multi-dimensional.md (always, Kiro: structure only)
|
|
74
|
+
Phase 4 → phases/phase4-code-quality.md (skip if Kiro)
|
|
75
|
+
Phase 5 → phases/phase5-synthesis.md (always)
|
|
76
|
+
Phase 6 → phases/phase6-validation.md (always)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### IMPORTANT RULE
|
|
80
|
+
|
|
81
|
+
**Before executing ANY phase, you MUST read the corresponding phase file from `phases/phase{N}-{name}.md`. Do not execute from memory. Each phase file contains critical details not duplicated here.**
|
|
82
|
+
|
|
83
|
+
### Phase 0.5: Pre-Scan (纯 Bash,无 AI)
|
|
84
|
+
|
|
85
|
+
**目标**:使用 grep/awk/jq 秒级提取所有语法元数据,消除 AI 重复读取。
|
|
86
|
+
|
|
87
|
+
**执行**:
|
|
88
|
+
1. 读取 `analysis-state.json` 获取模块列表和技术栈
|
|
89
|
+
2. 执行 `source lib/pre-scan.sh && pre_scan_project "$PROJECT_ROOT" "$PRESCAN_DIR"`
|
|
90
|
+
3. 输出 `.atool-docs/pre-scan/{module-slug}.json` + `manifest.json`
|
|
91
|
+
4. 写入检查点 `phase0_5_prescan = "completed"`
|
|
92
|
+
|
|
93
|
+
**支持语言**:Python, Java/Kotlin, TypeScript/JavaScript/Vue/Svelte, Go, Rust, 通用 fallback
|
|
94
|
+
|
|
95
|
+
**性能目标**:152 文件/10 模块 < 10 秒(vs AI Phase 1 的 2-4 分钟)
|
|
96
|
+
|
|
97
|
+
**增量扫描**:比对文件 MD5 hash,仅重新扫描变更文件。
|
|
98
|
+
|
|
99
|
+
**降级**:pre-scan 失败时,Phase 1 自动回退到全量 AI 提取(v5.0 行为)。
|
|
100
|
+
|
|
101
|
+
详细指令:`phases/phase0.5-prescan.md`
|
|
102
|
+
|
|
103
|
+
### Sub-Agent Prompts
|
|
104
|
+
|
|
105
|
+
When dispatching sub-agents for phases 1, 2, 2a, 4:
|
|
106
|
+
- Read the prompt template from `prompts/{name}-agent.md`
|
|
107
|
+
- Fill in module-specific variables (module name, inventory data, rules content, etc.)
|
|
108
|
+
- Dispatch with the filled prompt
|
|
109
|
+
|
|
110
|
+
| Phase | Prompt Template | Variables to Fill |
|
|
111
|
+
|-------|----------------|-------------------|
|
|
112
|
+
| Phase 1 | `prompts/inventory-agent.md` | file_list, module-slug |
|
|
113
|
+
| Phase 2 | `prompts/deep-analysis-agent.md` | module_name, inventory_json_content, rules_content, stack, project_name, module_list, depth_specific_instructions |
|
|
114
|
+
| Phase 2a | `prompts/l4-analysis-agent.md` | module_name, analysis_json_content, inventory_json_content, file_list |
|
|
115
|
+
| Phase 4 | `prompts/code-review-agent.md` | module_name, inventory_json, relevant_graph_subtree, multi_dimensional_context, file_list |
|
|
116
|
+
|
|
117
|
+
### Batch Dispatch Rule (Hard Limit)
|
|
118
|
+
|
|
119
|
+
**Maximum 5 concurrent sub-agents at all times.** When modules > 5, dispatch in batches of 5 by importance descending order. Wait for all agents in current batch to complete before dispatching next batch.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Cross-IDE Adaptation
|
|
124
|
+
|
|
125
|
+
### IDE Detection
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
if "Agent" tool available (sub-agent dispatch):
|
|
129
|
+
IDE = "claude" → full parallel mode
|
|
130
|
+
elif Cursor environment detected (CURSOR_* env vars):
|
|
131
|
+
IDE = "cursor" → sequential mode
|
|
132
|
+
elif Kiro environment detected:
|
|
133
|
+
IDE = "kiro" → compressed mode
|
|
134
|
+
else:
|
|
135
|
+
IDE = "claude" → default full parallel
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Phase Availability Matrix
|
|
139
|
+
|
|
140
|
+
| Phase | Claude | Cursor | Kiro | Notes |
|
|
141
|
+
|-------|--------|--------|------|-------|
|
|
142
|
+
| Phase 0 | full | full | full | All IDEs |
|
|
143
|
+
| Phase 0.5 | full (bash) | full (bash) | full (bash) | Pure shell, no AI |
|
|
144
|
+
| Phase 1 | parallel | sequential | compressed (file counts only) | |
|
|
145
|
+
| Phase 2 | parallel | sequential | **skip** | Kiro uses inventory directly |
|
|
146
|
+
| Phase 2a | parallel | sequential | **skip** | L4 function-level |
|
|
147
|
+
| Phase 2b | parallel+aggregate | sequential | **skip** | L5 cross-module |
|
|
148
|
+
| Phase 3 | main agent | main agent | main agent | No sub-agents |
|
|
149
|
+
| Phase 3a | 5 dimensions | 5 dimensions | structure only | v5.0 |
|
|
150
|
+
| Phase 4 | parallel | sequential | **skip** | |
|
|
151
|
+
| Phase 5 | full | full | L1 quality from inventory | |
|
|
152
|
+
| Phase 6 | full | full | full | All IDEs |
|
|
153
|
+
|
|
154
|
+
### Kiro Compressed Mode
|
|
155
|
+
Phase 0.5: full pre-scan (bash, same as all IDEs). Phase 1: file counts + import/export counts only (no signatures). Phase 5: L1 quality docs from pre-scan inventory. No CODE_REVIEW.md.
|
|
156
|
+
|
|
157
|
+
### Cursor Sequential Mode
|
|
158
|
+
Modules processed in importance order, one at a time. Progress line per module. Phase 3 and 6 execute normally.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## State Management & Checkpoint/Resume
|
|
163
|
+
|
|
164
|
+
### Checkpoint Write Timing
|
|
165
|
+
After each sub-agent completes a module analysis, immediately write checkpoint to `analysis-state.json`:
|
|
166
|
+
```
|
|
167
|
+
state.modules[module_slug].{phase}_status = "completed"
|
|
168
|
+
state.modules[module_slug].{phase}_completed_at = now()
|
|
169
|
+
state.checkpoint = { last_completed_phase, last_completed_module, next_pending_module, batch_index, total_batches, timestamp }
|
|
170
|
+
write analysis-state.json
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Resume Flow
|
|
174
|
+
1. Read `.atool-docs/analysis-state.json`
|
|
175
|
+
2. If no state file → full analysis
|
|
176
|
+
3. If `phase0_5_prescan != "completed"` → execute Phase 0.5
|
|
177
|
+
4. Detect stale modules (file hash mismatch) → mark for re-analysis
|
|
178
|
+
5. Determine resume point from checkpoint
|
|
179
|
+
6. Execute pending phases, skip completed, rerun stale
|
|
180
|
+
7. Update final state
|
|
181
|
+
|
|
182
|
+
Detailed resume logic: see `phases/phase0-discovery.md` section 0.5a.
|
|
183
|
+
|
|
184
|
+
### Incremental Document Recovery
|
|
185
|
+
When resuming Phase 5, incrementally update already-generated documents using `<!-- aTool-module-start:{slug} -->` markers. Only regenerate changed modules.
|
|
186
|
+
|
|
187
|
+
---
|
|
188
|
+
|
|
189
|
+
## Output File Summary
|
|
190
|
+
|
|
191
|
+
### Final Deliverables (project directory)
|
|
192
|
+
|
|
193
|
+
| File | Condition |
|
|
194
|
+
|------|-----------|
|
|
195
|
+
| `README.md` | always |
|
|
196
|
+
| `COMPONENT.md` | always |
|
|
197
|
+
| `CODE_REVIEW.md` | L2/L3/L4/L5 |
|
|
198
|
+
| `UI_STYLE.md` | UI projects only |
|
|
199
|
+
| `CLAUDE.md` | append project rules |
|
|
200
|
+
| `.cursor/rules/atool-conventions.mdc` | always |
|
|
201
|
+
| `.kiro/steering/atool-conventions.md` | always |
|
|
202
|
+
| `docs/` (~15 files) | L2/L3/L4/L5 |
|
|
203
|
+
|
|
204
|
+
### Intermediate Artifacts (.atool-docs/)
|
|
205
|
+
|
|
206
|
+
| File | Phase |
|
|
207
|
+
|------|-------|
|
|
208
|
+
| `analysis-state.json` | Phase 0 |
|
|
209
|
+
| `pre-scan/{module-slug}.json` | Phase 0.5 |
|
|
210
|
+
| `pre-scan/manifest.json` | Phase 0.5 |
|
|
211
|
+
| `inventory/{module-slug}.json` | Phase 1 |
|
|
212
|
+
| `modules/{module-slug}/MODULE-DOC.md` | Phase 2 |
|
|
213
|
+
| `modules/{module-slug}/analysis.json` | Phase 2 |
|
|
214
|
+
| `modules/{module-slug}/references.json` | Phase 2 |
|
|
215
|
+
| `modules/{module-slug}/l4-analysis.json` | Phase 2a (L4+) |
|
|
216
|
+
| `modules/{module-slug}/l5-analysis.json` | Phase 2b (L5) |
|
|
217
|
+
| `cross-module-behavior.json` | Phase 2b (L5) |
|
|
218
|
+
| `knowledge-graph.json` | Phase 3 |
|
|
219
|
+
| `multi-dimensional-analysis.json` | Phase 3a |
|
|
220
|
+
| `query-index.json` | Phase 3a |
|
|
221
|
+
| `visualization/index.html` | Phase 3a |
|
|
222
|
+
| `code-review/{module-slug}.json` | Phase 4 |
|
|
223
|
+
|
|
224
|
+
### Multi-Project Extra Outputs
|
|
225
|
+
|
|
226
|
+
| File | Description |
|
|
227
|
+
|------|-------------|
|
|
228
|
+
| `.atool-docs/discovery.json` | Project discovery record |
|
|
229
|
+
| `.atool-docs/summaries/{name}/summary.md` | Sub-project summary |
|
|
230
|
+
| `.atool-docs/cross-project-analysis.md` | Cross-project relations |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Error Handling
|
|
235
|
+
|
|
236
|
+
- Analysis state file corrupted → warn user, offer fresh start or manual recovery
|
|
237
|
+
- Pre-scan failure → graceful degradation: skip Phase 0.5, Phase 1 falls back to full AI extraction (v5.0 behavior)
|
|
238
|
+
- Sub-agent fails mid-analysis → mark module as "failed" in state, continue with next module, report in Phase 6
|
|
239
|
+
- Source file read error → skip file, mark in inventory as "unreadable", continue
|
|
240
|
+
- Disk space insufficient → warn immediately, offer partial save
|
|
241
|
+
- Resume with changed state version → auto-migrate v3.0/v4.0 → v5.0 (add missing fields with defaults)
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Important Notes
|
|
246
|
+
|
|
247
|
+
- Always check `.atool-docs/` before starting; offer incremental update if exists
|
|
248
|
+
- Never overwrite user-edited content — only fill sections marked as auto-generated
|
|
249
|
+
- Projects >500 files: warn about potential long runtime
|
|
250
|
+
- Output summary report upon completion (modules, files, deliverables)
|
|
251
|
+
- Each module document must be immediately readable (Zero-KT standard)
|
|
252
|
+
- Existing CLAUDE.md: only append project rules section
|
|
253
|
+
- docs/: only update aTool-numbered files (101, 201-801), never modify user-created docs
|
|
254
|
+
- All inferred content marked `[推断]`
|
|
255
|
+
- UI wireframes: UI projects only (web/mobile)
|
|
256
|
+
- **Never fabricate**: only record what is visible in code
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Skill Collaboration
|
|
261
|
+
|
|
262
|
+
| Collaborating Skill | Trigger Condition | Interaction |
|
|
263
|
+
|---------------------|-------------------|-------------|
|
|
264
|
+
| code-review | Phase 4 eight-dimension review | References rules/ files |
|
|
265
|
+
| software-architecture | Phase 3a structural layer violation rate >30% | Suggest running |
|
|
266
|
+
| {stack}-conventions | Phase 2 deep analysis | Load stack-level conventions |
|
|
267
|
+
| doc-standards-enforcer | Phase 5 document generation | Validate frontmatter format |
|
|
268
|
+
| smart-dispatch | LARGE/XLARGE projects | Batch parallel by module |
|
|
269
|
+
| project-query | Need to query analysis results | User manually invokes /project-query |
|
|
270
|
+
| clarify-before-build | Before Phase 0 user confirmation | Requirement clarification (auto-injected) |
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Phase 0: Discovery & Planning
|
|
2
|
+
|
|
3
|
+
**目标**:检测技术栈、评估规模、制定策略、获得用户确认。
|
|
4
|
+
|
|
5
|
+
## 前置条件
|
|
6
|
+
|
|
7
|
+
- 无前置阶段(首个阶段)
|
|
8
|
+
- 如存在 `.atool-docs/analysis-state.json`,先执行 Resume 检测(见 0.5a)
|
|
9
|
+
|
|
10
|
+
## 详细步骤
|
|
11
|
+
|
|
12
|
+
### 0.1 技术栈检测
|
|
13
|
+
|
|
14
|
+
复用 `lib/detect-stack.sh` 逻辑:
|
|
15
|
+
|
|
16
|
+
1. 检查信号文件(package.json, pom.xml, Cargo.toml, go.mod 等)
|
|
17
|
+
2. 确定具体技术栈(如 `java-spring`, `web-react`, `mobile-swift`)
|
|
18
|
+
3. Monorepo:检查各子目录信号文件,按栈分组
|
|
19
|
+
|
|
20
|
+
### 0.2 规模评估与策略选择
|
|
21
|
+
|
|
22
|
+
统计源文件数(排除 node_modules, build, .git, vendor, target, dist),按规模选择策略:
|
|
23
|
+
|
|
24
|
+
| 规模 | 文件数 | 建议深度 | 覆盖率 | 最大 Agent | 多批次 | 说明 |
|
|
25
|
+
|------|--------|---------|--------|-----------|--------|------|
|
|
26
|
+
| TINY | 1-50 | L3 | 100% | 5 | 否 | 小项目全量深度分析 |
|
|
27
|
+
| SMALL | 51-200 | L2 | 100% | 5 | L3+ 自动分批 | 中小项目,L3+ 按模块分批 |
|
|
28
|
+
| MEDIUM | 201-500 | L2 | 100% | 5 | L3+ 自动分批 | 中型项目,每批 5 模块 |
|
|
29
|
+
| LARGE | 501-1500 | L2 | Top 80% | 5 | L3+ 自动分批 | 非核心模块 L2,核心 L3+ |
|
|
30
|
+
| XLARGE | 1501-5000 | L2 | Top 50% | 5 | L3+ 始终分批 | 核心 L3+,重要 L2,其余 L1 |
|
|
31
|
+
| MEGA | 5001+ | L2 | 用户选择 | 5 | Wave 策略 | 多波策略,Wave 深度递增 |
|
|
32
|
+
|
|
33
|
+
**深度覆盖规则**:建议深度为推荐值,用户可在 Phase 0.6 覆盖为任意深度。LARGE/XLARGE 的覆盖率仅影响 L4/L5 深度的模块范围,所有模块至少 L2。
|
|
34
|
+
|
|
35
|
+
### 0.2a 批量派发规则(硬性限制)
|
|
36
|
+
|
|
37
|
+
**无论项目规模如何,同时运行的 sub-agent 上限为 5 个。** 这是防止 LLM 并发限制和 API 限流的硬性要求。
|
|
38
|
+
|
|
39
|
+
当模块数量超过 5 时,按以下规则分批派发:
|
|
40
|
+
1. 将所有模块按 importance 评分**降序排列**(高重要性模块优先)
|
|
41
|
+
2. 派发第一批 5 个 agent(Top 5 重要性模块)
|
|
42
|
+
3. **等待当前批次所有 agent 完成**后再派发下一批
|
|
43
|
+
4. 重复直到所有模块分析完毕
|
|
44
|
+
|
|
45
|
+
此规则适用于 Phase 1(Inventory)、Phase 2(Deep Analysis)和 Phase 4(Code Quality)。
|
|
46
|
+
|
|
47
|
+
### 0.3 重要性评分 (v5.0: 8 因子)
|
|
48
|
+
|
|
49
|
+
调用 `lib/compute-importance.sh` 计算模块重要性,v5.0 新增 3 个因子:
|
|
50
|
+
|
|
51
|
+
| 因子 | 权重 | 说明 |
|
|
52
|
+
|------|------|------|
|
|
53
|
+
| centrality | 0.20 | 有多少模块 import 此模块 |
|
|
54
|
+
| size | 0.15 | log(file_count+1)/log(max+1) |
|
|
55
|
+
| entry_point | 0.15 | 包含 router/main/controller 文件 |
|
|
56
|
+
| business_critical | 0.15 | 路径包含业务关键词 |
|
|
57
|
+
| recency | 0.10 | 近 30 天 git 提交活跃度 |
|
|
58
|
+
| **layer_core** | **0.10** | **是否在 service/domain 核心业务层** |
|
|
59
|
+
| **api_surface** | **0.10** | **暴露的 API 端点数量** |
|
|
60
|
+
| **data_ownership** | **0.05** | **拥有的数据实体数量** |
|
|
61
|
+
|
|
62
|
+
总分 0.0-1.0,分三档:deep(>=0.6), catalog(>=0.3), skip(<0.3)。
|
|
63
|
+
|
|
64
|
+
模块按 importance 降序排列,LARGE/XLARGE 取 Top N。
|
|
65
|
+
|
|
66
|
+
#### 0.3a 架构层检测 (v5.0 NEW)
|
|
67
|
+
|
|
68
|
+
调用 `lib/knowledge-graph.sh` 的 `detect_architectural_layers()` 进行启发式层检测。
|
|
69
|
+
|
|
70
|
+
检测 8 种架构层:
|
|
71
|
+
| 层类型 | 匹配模式 |
|
|
72
|
+
|--------|---------|
|
|
73
|
+
| presentation | controller, api, route, view, page, screen, handler, endpoint |
|
|
74
|
+
| service | service, usecase, application, facade, manager, logic |
|
|
75
|
+
| repository | repository, dao, mapper, gateway, persistence, store |
|
|
76
|
+
| domain | domain, model, entity, aggregate, valueobject |
|
|
77
|
+
| infrastructure | config, util, helper, common, shared, infra, middleware |
|
|
78
|
+
| ui | component, widget, layout, template |
|
|
79
|
+
| test | test, spec, mock, fixture, __tests__ |
|
|
80
|
+
| data | schema, migration, seed, database |
|
|
81
|
+
|
|
82
|
+
检测结果写入 `analysis-state.json` 的 `layers.detected` 和 `layers.assignments`。
|
|
83
|
+
Phase 2 中 sub-agent 会验证和修正这些分配。
|
|
84
|
+
|
|
85
|
+
### 0.4 MEGA Wave 策略
|
|
86
|
+
|
|
87
|
+
5001+ 文件项目使用分波分析:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
Wave 1 (L1 Quick Scan): 所有模块 → 产出 inventory.json(轻量)
|
|
91
|
+
Wave 2 (L2 Deep): 用户从 Wave 1 结果中选择核心模块(≤20)→ 深度分析
|
|
92
|
+
Wave 3 (L2 Selective): 根据知识图谱发现的关键依赖模块(≤15)→ 补充分析
|
|
93
|
+
Wave 4 (L3/L4/L5 Focused): 用户指定的特定模块(≤5)→ 最深度分析(可选 L3/L4/L5)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
每波结束后向用户展示发现摘要,由用户决定是否继续下一波。
|
|
97
|
+
|
|
98
|
+
### 0.5 初始化状态文件
|
|
99
|
+
|
|
100
|
+
写入 `.atool-docs/analysis-state.json`(v5.0 schema):
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"version": "5.0",
|
|
105
|
+
"pipeline": "6-phase",
|
|
106
|
+
"status": "planning",
|
|
107
|
+
"created_at": "2024-01-01T00:00:00Z",
|
|
108
|
+
"updated_at": "2024-01-01T00:00:00Z",
|
|
109
|
+
"stack": "web-react",
|
|
110
|
+
"template": "web",
|
|
111
|
+
"depth": "L4",
|
|
112
|
+
"scale": "MEDIUM",
|
|
113
|
+
"total_files": 342,
|
|
114
|
+
"total_modules": 28,
|
|
115
|
+
"ide": "claude",
|
|
116
|
+
"checkpoint": {
|
|
117
|
+
"last_completed_phase": "phase2",
|
|
118
|
+
"last_completed_module": "user-management",
|
|
119
|
+
"next_pending_module": "order-management",
|
|
120
|
+
"batch_index": 2,
|
|
121
|
+
"total_batches": 6,
|
|
122
|
+
"timestamp": "2024-01-01T00:05:00Z"
|
|
123
|
+
},
|
|
124
|
+
"phases": {
|
|
125
|
+
"phase0_discovery": { "status": "completed", "at": "..." },
|
|
126
|
+
"phase0_5_prescan": "pending",
|
|
127
|
+
"phase1_inventory": { "status": "pending" },
|
|
128
|
+
"phase2_deep_analysis": { "status": "pending" },
|
|
129
|
+
"phase2a_l4_analysis": { "status": "pending" },
|
|
130
|
+
"phase2b_l5_analysis": { "status": "pending" },
|
|
131
|
+
"phase3_knowledge_graph": { "status": "pending" },
|
|
132
|
+
"phase3a_multi_dimensional": { "status": "pending" },
|
|
133
|
+
"phase4_code_quality": { "status": "pending" },
|
|
134
|
+
"phase5_synthesis": { "status": "pending" },
|
|
135
|
+
"phase6_validation": { "status": "pending" }
|
|
136
|
+
},
|
|
137
|
+
"layers": {
|
|
138
|
+
"detected": ["presentation", "service", "repository", "domain", "infrastructure"],
|
|
139
|
+
"assignments": {
|
|
140
|
+
"user-management": "presentation",
|
|
141
|
+
"auth-service": "service",
|
|
142
|
+
"user-repository": "repository"
|
|
143
|
+
},
|
|
144
|
+
"method": "heuristic"
|
|
145
|
+
},
|
|
146
|
+
"multi_dimensional": {
|
|
147
|
+
"structural": { "status": "pending" },
|
|
148
|
+
"behavioral": { "status": "pending" },
|
|
149
|
+
"data": { "status": "pending" },
|
|
150
|
+
"quality": { "status": "pending" },
|
|
151
|
+
"semantic": { "status": "pending" }
|
|
152
|
+
},
|
|
153
|
+
"modules": {
|
|
154
|
+
"user-management": {
|
|
155
|
+
"path": "src/views/user/",
|
|
156
|
+
"importance": 0.87,
|
|
157
|
+
"file_count": 15,
|
|
158
|
+
"file_hashes": { "src/views/user/UserList.vue": "abc123" },
|
|
159
|
+
"phase1_status": "pending",
|
|
160
|
+
"phase2_status": "pending",
|
|
161
|
+
"phase2a_status": "pending",
|
|
162
|
+
"phase2b_status": "pending",
|
|
163
|
+
"phase4_status": "pending",
|
|
164
|
+
"phase5_docs_generated": false,
|
|
165
|
+
"depth_override": null
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"batches": {
|
|
169
|
+
"phase2": {
|
|
170
|
+
"total_batches": 6,
|
|
171
|
+
"current_batch": 0,
|
|
172
|
+
"batch_plan": [
|
|
173
|
+
{ "batch": 1, "modules": ["auth", "user-management", "dashboard", "api-core", "store"], "status": "pending" }
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"depth_plan": {
|
|
178
|
+
"requested_depth": "L4",
|
|
179
|
+
"module_depth_overrides": {},
|
|
180
|
+
"estimated_batches": { "phase2": 6, "phase2a": 6, "phase2b": 4 }
|
|
181
|
+
},
|
|
182
|
+
"strategy": {
|
|
183
|
+
"max_agents": 5,
|
|
184
|
+
"coverage": "100%",
|
|
185
|
+
"sampling": "none"
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**向后兼容**:读取 v3.0/v4.0 文件时,`phase3a_multi_dimensional` 默认 "pending",`layers` 和 `multi_dimensional` 默认空,`checkpoint` 默认 null,`depth` 保持原值。
|
|
191
|
+
|
|
192
|
+
### 0.5a Resume 检测(Phase 0 前置)
|
|
193
|
+
|
|
194
|
+
执行 Phase 0 之前,检查是否存在可恢复的分析:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
state_file = .atool-docs/analysis-state.json
|
|
198
|
+
|
|
199
|
+
if not exists(state_file):
|
|
200
|
+
→ 全新分析,执行 Phase 0
|
|
201
|
+
|
|
202
|
+
state = read(state_file)
|
|
203
|
+
|
|
204
|
+
if state.status == "completed":
|
|
205
|
+
→ 展示「检测到已完成的分析(技术栈、深度、日期)」
|
|
206
|
+
→ 选项: [r=重新分析 / i=增量更新 / n=跳过]
|
|
207
|
+
|
|
208
|
+
else (中断的分析):
|
|
209
|
+
checkpoint = state.checkpoint
|
|
210
|
+
completed_phases = [p for p in state.phases if status == "completed"]
|
|
211
|
+
completed_modules = count modules with phase2_status == "completed"
|
|
212
|
+
stale_modules = modules where file_hashes mismatch
|
|
213
|
+
|
|
214
|
+
→ 展示:
|
|
215
|
+
技术栈: {stack}
|
|
216
|
+
深度: {depth}
|
|
217
|
+
已完成阶段: {completed_phases}
|
|
218
|
+
已完成模块: {completed_modules}/{total_modules}
|
|
219
|
+
文件变更模块: {stale_modules}(需重新分析)
|
|
220
|
+
断点: Phase {checkpoint.last_completed_phase}, 模块 {checkpoint.last_completed_module}
|
|
221
|
+
→ 选项:
|
|
222
|
+
[c] 从断点恢复(推荐)
|
|
223
|
+
[r] 全部重新分析
|
|
224
|
+
[d] 删除分析数据并退出
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 0.6 用户确认(必须)
|
|
228
|
+
|
|
229
|
+
向用户展示分析计划并获得确认:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
📋 分析计划
|
|
233
|
+
技术栈: web-react (React 18 + TypeScript)
|
|
234
|
+
项目规模: MEDIUM (342 文件, 28 模块)
|
|
235
|
+
|
|
236
|
+
推荐深度: L2 (架构分析)
|
|
237
|
+
可用深度:
|
|
238
|
+
L1 结构扫描 ~5分钟 ~10K tokens
|
|
239
|
+
L2 架构分析(推荐) ~15分钟 ~50K tokens
|
|
240
|
+
L3 深度实现 ~30分钟 ~100K tokens [分6批]
|
|
241
|
+
L4 函数级分析 ~60分钟 ~200K tokens [分6批]
|
|
242
|
+
L5 跨模块行为推断 ~90分钟 ~350K tokens [分6+4批]
|
|
243
|
+
|
|
244
|
+
策略: 全量深度分析, 最多 5 并行 Agent(按 importance 分批)
|
|
245
|
+
预估产出: README.md + COMPONENT.md + CODE_REVIEW.md + docs/ 知识库(~15 文件) + IDE 规则
|
|
246
|
+
|
|
247
|
+
请确认: [回车=推荐深度] / [L1-L5] / [m=混合模块深度] / [n=取消]
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
#### 0.6a 混合深度配置
|
|
251
|
+
|
|
252
|
+
如果用户选择 `m`,进入交互式模块深度配置:
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
模块深度配置(共 28 模块):
|
|
256
|
+
默认深度: L2
|
|
257
|
+
|
|
258
|
+
Top 10 模块(按 importance):
|
|
259
|
+
1. auth (0.95) → L2
|
|
260
|
+
2. user-management (0.87) → L2
|
|
261
|
+
3. api-core (0.82) → L2
|
|
262
|
+
...
|
|
263
|
+
|
|
264
|
+
输入模块编号和深度(如 "1 L4, 2 L5")或直接回车确认全部使用默认深度:
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
混合深度写入 `depth_plan.module_depth_overrides` 字段。
|
|
268
|
+
|
|
269
|
+
## 输出
|
|
270
|
+
|
|
271
|
+
- `.atool-docs/analysis-state.json` — 初始化的完整状态文件
|
|
272
|
+
- 控制台展示分析计划并获得用户确认
|
|
273
|
+
|
|
274
|
+
> **注意**:Phase 0 完成后,自动进入 Phase 0.5 Pre-Scan(纯 bash 执行,无 AI 介入)
|
|
275
|
+
|
|
276
|
+
## IDE 适配
|
|
277
|
+
|
|
278
|
+
所有 IDE 均执行 Phase 0(无差异)。
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Phase 0.5: Pre-Scan
|
|
2
|
+
|
|
3
|
+
**目标**:快速结构化元数据提取 — 使用 grep/awk/jq 扫描源码,无需 AI 介入。
|
|
4
|
+
|
|
5
|
+
## 前置条件
|
|
6
|
+
|
|
7
|
+
- Phase 0 已完成(`analysis-state.json` 包含模块列表和技术栈)
|
|
8
|
+
|
|
9
|
+
## 详细步骤
|
|
10
|
+
|
|
11
|
+
### 0.5.1 执行方式
|
|
12
|
+
|
|
13
|
+
纯 bash 执行,不涉及 AI agent:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
source lib/pre-scan.sh
|
|
17
|
+
pre_scan_project "$PROJECT_ROOT" "$OUTPUT_DIR"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
- `OUTPUT_DIR` 默认为 `.atool-docs/pre-scan/`
|
|
21
|
+
- 内部调用 `detect_stack()` 确定主语言,仅调用相关语言提取器
|
|
22
|
+
- 支持的语言:Python, Java/Kotlin, TypeScript/JavaScript/Vue/Svelte, Go, Rust, 通用 fallback
|
|
23
|
+
|
|
24
|
+
### 0.5.2 语言提取器
|
|
25
|
+
|
|
26
|
+
每种语言提取器基于 grep+awk 提取以下结构信息:
|
|
27
|
+
|
|
28
|
+
| 字段 | 提取方式 | 说明 |
|
|
29
|
+
|------|----------|------|
|
|
30
|
+
| imports | `grep -E '^(from \|import )'` | 含 from/import 源、本地/外部标记 |
|
|
31
|
+
| exports | 从 classes + functions 推导 | 非方法函数 + 公开类 |
|
|
32
|
+
| classes | `grep -E '^class '` | 含继承关系 |
|
|
33
|
+
| functions | `grep -E '^def '` | 含参数签名、是否为方法 |
|
|
34
|
+
| decorators | `grep -E '^@'` | 含路由装饰器标记 |
|
|
35
|
+
| api_endpoints | 路由模式匹配 | HTTP 方法 + 路径 |
|
|
36
|
+
| data_models | 基类模式匹配 | ORM/Pydantic/Schema 类型 |
|
|
37
|
+
|
|
38
|
+
### 0.5.3 增量检测
|
|
39
|
+
|
|
40
|
+
- 每次扫描记录文件 MD5 hash
|
|
41
|
+
- 再次扫描时比对 hash,仅重新扫描变更文件
|
|
42
|
+
- 模块级:如果所有文件 hash 未变,跳过整个模块
|
|
43
|
+
|
|
44
|
+
### 0.5.4 输出格式
|
|
45
|
+
|
|
46
|
+
**模块级** (`.atool-docs/pre-scan/{module-slug}.json`):
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"module": "auth",
|
|
51
|
+
"scan_metadata": { "scan_timestamp": "...", "extraction_method": "grep+awk+jq" },
|
|
52
|
+
"files": [
|
|
53
|
+
{
|
|
54
|
+
"path": "auth/service.py",
|
|
55
|
+
"hash": "md5",
|
|
56
|
+
"lines": 245,
|
|
57
|
+
"language": "python",
|
|
58
|
+
"imports": [{"from": "fastapi", "import": "Depends", "line": 3, "is_local": false}],
|
|
59
|
+
"exports": [{"name": "AuthService", "type": "class", "line": 15}],
|
|
60
|
+
"classes": [{"name": "AuthService", "bases": ["BaseService"], "line": 15}],
|
|
61
|
+
"functions": [{"name": "authenticate_user", "params": "username,password", "line": 88, "is_method": false}],
|
|
62
|
+
"decorators": [{"name": "router.post(/auth/login)", "line": 87, "is_route": true}],
|
|
63
|
+
"api_endpoints": [{"method": "POST", "path": "/auth/login", "line": 87}],
|
|
64
|
+
"data_models": [],
|
|
65
|
+
"extraction_confidence": "high"
|
|
66
|
+
}
|
|
67
|
+
],
|
|
68
|
+
"module_summary": {
|
|
69
|
+
"total_files": 5,
|
|
70
|
+
"total_imports": 23,
|
|
71
|
+
"total_exports": 8,
|
|
72
|
+
"total_classes": 3,
|
|
73
|
+
"total_functions": 12,
|
|
74
|
+
"total_api_endpoints": 4,
|
|
75
|
+
"total_data_models": 1,
|
|
76
|
+
"external_deps": [{"package": "fastapi", "count": 5}]
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**项目级** (`.atool-docs/pre-scan/manifest.json`):
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"version": "1.0",
|
|
86
|
+
"generated_at": "2026-01-01T00:00:00Z",
|
|
87
|
+
"total_modules": 10,
|
|
88
|
+
"scan_duration_seconds": 5,
|
|
89
|
+
"modules": [{"total_files": 37, "total_classes": 23, ...}]
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 0.5.5 错误处理
|
|
94
|
+
|
|
95
|
+
- 单文件提取失败时跳过(不影响其他文件)
|
|
96
|
+
- 模块目录不存在时标记 warning 并跳过
|
|
97
|
+
- `extraction_confidence: "low"` 标记通用提取器的结果(AI agent 需验证)
|
|
98
|
+
- 整体失败时优雅降级:Phase 1 回退到全量 AI 提取
|
|
99
|
+
|
|
100
|
+
## 性能目标
|
|
101
|
+
|
|
102
|
+
| 项目规模 | 目标时间 | 对比 Phase 1 AI |
|
|
103
|
+
|----------|----------|----------------|
|
|
104
|
+
| 50 文件 | <2 秒 | ~30 秒 |
|
|
105
|
+
| 150 文件 | <5 秒 | ~2-4 分钟 |
|
|
106
|
+
| 500 文件 | <15 秒 | ~10+ 分钟 |
|
|
107
|
+
|
|
108
|
+
## IDE 适配
|
|
109
|
+
|
|
110
|
+
| IDE | 执行方式 |
|
|
111
|
+
|-----|----------|
|
|
112
|
+
| Claude | 纯 bash 执行 |
|
|
113
|
+
| Cursor | 纯 bash 执行 |
|
|
114
|
+
| Kiro | 纯 bash 执行 |
|
|
115
|
+
|
|
116
|
+
所有 IDE 行为完全一致 — 纯 shell 命令,不涉及 AI。
|
|
117
|
+
|
|
118
|
+
## 检查点
|
|
119
|
+
|
|
120
|
+
写入 `analysis-state.json`:
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"phases": {
|
|
124
|
+
"phase0_5_prescan": "completed"
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
恢复时检查:如果 `phase0_5_prescan != "completed"`,重新执行。
|
|
130
|
+
|
|
131
|
+
## 与后续阶段的协作
|
|
132
|
+
|
|
133
|
+
| 后续阶段 | 使用方式 |
|
|
134
|
+
|----------|----------|
|
|
135
|
+
| Phase 1 Inventory | 接收 pre-scan JSON,验证 confidence:low 文件,添加语义注释 |
|
|
136
|
+
| Phase 2 Deep Analysis | 接收 pre-scan 摘要,跳过结构提取,专注深度分析 |
|
|
137
|
+
| Phase 2a L4 Analysis | 使用函数行范围定向读取,使用 caller/callee 关系 |
|
|
138
|
+
| Phase 4 Code Review | 使用 pre-computed 基线指标(长函数、嵌套深度等) |
|
|
139
|
+
| L1 深度 | Phase 0.5 完全替代 Phase 1(0 AI agent) |
|