@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.
Files changed (463) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +235 -0
  3. package/VERSION +1 -0
  4. package/agents/code-reviewer.md +29 -0
  5. package/bin/atool.js +235 -0
  6. package/bin/postinstall.js +23 -0
  7. package/hooks/doc-sync-reminder +155 -0
  8. package/hooks/hooks-cursor.json +37 -0
  9. package/hooks/hooks.json +37 -0
  10. package/hooks/prompt-guard +135 -0
  11. package/hooks/session-start +286 -0
  12. package/install.sh +603 -0
  13. package/lib/analyze-source.sh +1265 -0
  14. package/lib/common.sh +1041 -0
  15. package/lib/compute-importance.sh +598 -0
  16. package/lib/detect-stack.sh +354 -0
  17. package/lib/generate-visualization.sh +266 -0
  18. package/lib/install-claude.sh +43 -0
  19. package/lib/install-cursor.sh +281 -0
  20. package/lib/install-hooks.sh +285 -0
  21. package/lib/install-kiro.sh +543 -0
  22. package/lib/install-mcp.sh +99 -0
  23. package/lib/install-skills.sh +129 -0
  24. package/lib/knowledge-graph.sh +1014 -0
  25. package/lib/multi-dimensional-analysis.sh +413 -0
  26. package/lib/pre-scan.sh +1045 -0
  27. package/lib/project-init.sh +552 -0
  28. package/lib/visualization-template.html +545 -0
  29. package/mcp/recommended.json +24 -0
  30. package/package.json +39 -0
  31. package/skills/_superpowers/.claude-plugin/marketplace.json +20 -0
  32. package/skills/_superpowers/.claude-plugin/plugin.json +20 -0
  33. package/skills/_superpowers/.codex/INSTALL.md +67 -0
  34. package/skills/_superpowers/.cursor-plugin/plugin.json +25 -0
  35. package/skills/_superpowers/.gitattributes +18 -0
  36. package/skills/_superpowers/.github/FUNDING.yml +3 -0
  37. package/skills/_superpowers/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
  38. package/skills/_superpowers/.github/ISSUE_TEMPLATE/config.yml +5 -0
  39. package/skills/_superpowers/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
  40. package/skills/_superpowers/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
  41. package/skills/_superpowers/.github/PULL_REQUEST_TEMPLATE.md +87 -0
  42. package/skills/_superpowers/.opencode/INSTALL.md +83 -0
  43. package/skills/_superpowers/.opencode/plugins/superpowers.js +107 -0
  44. package/skills/_superpowers/CHANGELOG.md +13 -0
  45. package/skills/_superpowers/CODE_OF_CONDUCT.md +128 -0
  46. package/skills/_superpowers/GEMINI.md +2 -0
  47. package/skills/_superpowers/LICENSE +21 -0
  48. package/skills/_superpowers/README.md +187 -0
  49. package/skills/_superpowers/RELEASE-NOTES.md +1083 -0
  50. package/skills/_superpowers/agents/code-reviewer.md +48 -0
  51. package/skills/_superpowers/commands/brainstorm.md +5 -0
  52. package/skills/_superpowers/commands/execute-plan.md +5 -0
  53. package/skills/_superpowers/commands/write-plan.md +5 -0
  54. package/skills/_superpowers/docs/README.codex.md +126 -0
  55. package/skills/_superpowers/docs/README.opencode.md +130 -0
  56. package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-design.md +294 -0
  57. package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
  58. package/skills/_superpowers/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
  59. package/skills/_superpowers/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
  60. package/skills/_superpowers/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
  61. package/skills/_superpowers/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
  62. package/skills/_superpowers/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
  63. package/skills/_superpowers/docs/superpowers/plans/2026-03-23-codex-app-compatibility.md +564 -0
  64. package/skills/_superpowers/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
  65. package/skills/_superpowers/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
  66. package/skills/_superpowers/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
  67. package/skills/_superpowers/docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md +244 -0
  68. package/skills/_superpowers/docs/testing.md +303 -0
  69. package/skills/_superpowers/docs/windows/polyglot-hooks.md +212 -0
  70. package/skills/_superpowers/gemini-extension.json +6 -0
  71. package/skills/_superpowers/hooks/hooks-cursor.json +10 -0
  72. package/skills/_superpowers/hooks/hooks.json +16 -0
  73. package/skills/_superpowers/hooks/run-hook.cmd +46 -0
  74. package/skills/_superpowers/hooks/session-start +57 -0
  75. package/skills/_superpowers/package.json +6 -0
  76. package/skills/_superpowers/skills/brainstorming/SKILL.md +164 -0
  77. package/skills/_superpowers/skills/brainstorming/scripts/frame-template.html +214 -0
  78. package/skills/_superpowers/skills/brainstorming/scripts/helper.js +88 -0
  79. package/skills/_superpowers/skills/brainstorming/scripts/server.cjs +354 -0
  80. package/skills/_superpowers/skills/brainstorming/scripts/start-server.sh +148 -0
  81. package/skills/_superpowers/skills/brainstorming/scripts/stop-server.sh +56 -0
  82. package/skills/_superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  83. package/skills/_superpowers/skills/brainstorming/visual-companion.md +287 -0
  84. package/skills/_superpowers/skills/dispatching-parallel-agents/SKILL.md +182 -0
  85. package/skills/_superpowers/skills/executing-plans/SKILL.md +70 -0
  86. package/skills/_superpowers/skills/finishing-a-development-branch/SKILL.md +200 -0
  87. package/skills/_superpowers/skills/receiving-code-review/SKILL.md +213 -0
  88. package/skills/_superpowers/skills/requesting-code-review/SKILL.md +105 -0
  89. package/skills/_superpowers/skills/requesting-code-review/code-reviewer.md +146 -0
  90. package/skills/_superpowers/skills/subagent-driven-development/SKILL.md +277 -0
  91. package/skills/_superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  92. package/skills/_superpowers/skills/subagent-driven-development/implementer-prompt.md +113 -0
  93. package/skills/_superpowers/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  94. package/skills/_superpowers/skills/systematic-debugging/CREATION-LOG.md +119 -0
  95. package/skills/_superpowers/skills/systematic-debugging/SKILL.md +296 -0
  96. package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  97. package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting.md +115 -0
  98. package/skills/_superpowers/skills/systematic-debugging/defense-in-depth.md +122 -0
  99. package/skills/_superpowers/skills/systematic-debugging/find-polluter.sh +63 -0
  100. package/skills/_superpowers/skills/systematic-debugging/root-cause-tracing.md +169 -0
  101. package/skills/_superpowers/skills/systematic-debugging/test-academic.md +14 -0
  102. package/skills/_superpowers/skills/systematic-debugging/test-pressure-1.md +58 -0
  103. package/skills/_superpowers/skills/systematic-debugging/test-pressure-2.md +68 -0
  104. package/skills/_superpowers/skills/systematic-debugging/test-pressure-3.md +69 -0
  105. package/skills/_superpowers/skills/test-driven-development/SKILL.md +371 -0
  106. package/skills/_superpowers/skills/test-driven-development/testing-anti-patterns.md +299 -0
  107. package/skills/_superpowers/skills/using-git-worktrees/SKILL.md +218 -0
  108. package/skills/_superpowers/skills/using-superpowers/SKILL.md +115 -0
  109. package/skills/_superpowers/skills/using-superpowers/references/codex-tools.md +100 -0
  110. package/skills/_superpowers/skills/using-superpowers/references/gemini-tools.md +33 -0
  111. package/skills/_superpowers/skills/verification-before-completion/SKILL.md +139 -0
  112. package/skills/_superpowers/skills/writing-plans/SKILL.md +152 -0
  113. package/skills/_superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
  114. package/skills/_superpowers/skills/writing-skills/SKILL.md +655 -0
  115. package/skills/_superpowers/skills/writing-skills/anthropic-best-practices.md +1150 -0
  116. package/skills/_superpowers/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  117. package/skills/_superpowers/skills/writing-skills/graphviz-conventions.dot +172 -0
  118. package/skills/_superpowers/skills/writing-skills/persuasion-principles.md +187 -0
  119. package/skills/_superpowers/skills/writing-skills/render-graphs.js +168 -0
  120. package/skills/_superpowers/skills/writing-skills/testing-skills-with-subagents.md +384 -0
  121. package/skills/_superpowers/tests/brainstorm-server/package-lock.json +36 -0
  122. package/skills/_superpowers/tests/brainstorm-server/package.json +10 -0
  123. package/skills/_superpowers/tests/brainstorm-server/server.test.js +427 -0
  124. package/skills/_superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
  125. package/skills/_superpowers/tests/brainstorm-server/ws-protocol.test.js +392 -0
  126. package/skills/_superpowers/tests/claude-code/README.md +158 -0
  127. package/skills/_superpowers/tests/claude-code/analyze-token-usage.py +168 -0
  128. package/skills/_superpowers/tests/claude-code/run-skill-tests.sh +187 -0
  129. package/skills/_superpowers/tests/claude-code/test-document-review-system.sh +177 -0
  130. package/skills/_superpowers/tests/claude-code/test-helpers.sh +202 -0
  131. package/skills/_superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +314 -0
  132. package/skills/_superpowers/tests/claude-code/test-subagent-driven-development.sh +165 -0
  133. package/skills/_superpowers/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
  134. package/skills/_superpowers/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
  135. package/skills/_superpowers/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
  136. package/skills/_superpowers/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
  137. package/skills/_superpowers/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
  138. package/skills/_superpowers/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
  139. package/skills/_superpowers/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
  140. package/skills/_superpowers/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
  141. package/skills/_superpowers/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
  142. package/skills/_superpowers/tests/explicit-skill-requests/run-all.sh +70 -0
  143. package/skills/_superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
  144. package/skills/_superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
  145. package/skills/_superpowers/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
  146. package/skills/_superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
  147. package/skills/_superpowers/tests/explicit-skill-requests/run-test.sh +136 -0
  148. package/skills/_superpowers/tests/opencode/run-tests.sh +163 -0
  149. package/skills/_superpowers/tests/opencode/setup.sh +73 -0
  150. package/skills/_superpowers/tests/opencode/test-plugin-loading.sh +72 -0
  151. package/skills/_superpowers/tests/opencode/test-priority.sh +198 -0
  152. package/skills/_superpowers/tests/opencode/test-tools.sh +104 -0
  153. package/skills/_superpowers/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
  154. package/skills/_superpowers/tests/skill-triggering/prompts/executing-plans.txt +1 -0
  155. package/skills/_superpowers/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
  156. package/skills/_superpowers/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
  157. package/skills/_superpowers/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
  158. package/skills/_superpowers/tests/skill-triggering/prompts/writing-plans.txt +10 -0
  159. package/skills/_superpowers/tests/skill-triggering/run-all.sh +60 -0
  160. package/skills/_superpowers/tests/skill-triggering/run-test.sh +88 -0
  161. package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/design.md +81 -0
  162. package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
  163. package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
  164. package/skills/_superpowers/tests/subagent-driven-dev/run-test.sh +106 -0
  165. package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
  166. package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
  167. package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/scaffold.sh +46 -0
  168. package/skills/ai-project-architecture/SKILL.md +632 -0
  169. package/skills/ai-project-architecture/reference/structure-rules.md +406 -0
  170. package/skills/ai-project-architecture/templates/compliance-report.md +300 -0
  171. package/skills/ai-project-architecture/templates/migration-plan.md +433 -0
  172. package/skills/ai-project-architecture/templates/verification-checklist.md +408 -0
  173. package/skills/android-conventions/SKILL.md +125 -0
  174. package/skills/atool-init/SKILL.md +141 -0
  175. package/skills/clarify-before-build/SKILL.md +107 -0
  176. package/skills/code-review/SKILL.md +406 -0
  177. package/skills/code-review/rules/architecture.md +285 -0
  178. package/skills/code-review/rules/coupling-cohesion.md +309 -0
  179. package/skills/code-review/rules/dead-code.md +115 -0
  180. package/skills/code-review/rules/deprecation-debt.md +279 -0
  181. package/skills/code-review/rules/duplication.md +104 -0
  182. package/skills/code-review/rules/error-security.md +143 -0
  183. package/skills/code-review/rules/maintainability.md +203 -0
  184. package/skills/code-review/rules/quality.md +158 -0
  185. package/skills/devops-conventions/SKILL.md +205 -0
  186. package/skills/doc-coauthoring/SKILL.md +392 -0
  187. package/skills/doc-standards-enforcer/SKILL.md +290 -0
  188. package/skills/doc-standards-enforcer/examples/valid-document-example.md +67 -0
  189. package/skills/doc-standards-enforcer/references/101-standards-summary.md +318 -0
  190. package/skills/doc-standards-enforcer/scripts/check_references.py +175 -0
  191. package/skills/doc-standards-enforcer/scripts/fix_common_issues.py +303 -0
  192. package/skills/doc-standards-enforcer/scripts/validate_doc_standards.py +332 -0
  193. package/skills/docx/LICENSE.txt +30 -0
  194. package/skills/docx/SKILL.md +200 -0
  195. package/skills/docx/docx-js.md +350 -0
  196. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  197. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  198. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  199. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  200. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  201. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  202. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  203. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  204. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  205. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  206. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  207. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  208. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  209. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  210. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  211. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  212. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  213. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  214. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  215. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  216. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  217. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  218. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  219. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  220. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  221. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  222. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  223. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  224. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  225. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  226. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  227. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  228. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  229. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  230. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  231. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  232. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  233. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  234. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  235. package/skills/docx/ooxml/scripts/pack.py +159 -0
  236. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  237. package/skills/docx/ooxml/scripts/validate.py +69 -0
  238. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  239. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  240. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  241. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  242. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  243. package/skills/docx/ooxml.md +610 -0
  244. package/skills/docx/scripts/__init__.py +1 -0
  245. package/skills/docx/scripts/document.py +1276 -0
  246. package/skills/docx/scripts/templates/comments.xml +3 -0
  247. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  248. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  249. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  250. package/skills/docx/scripts/templates/people.xml +3 -0
  251. package/skills/docx/scripts/utilities.py +374 -0
  252. package/skills/flutter-conventions/SKILL.md +70 -0
  253. package/skills/go-conventions/SKILL.md +230 -0
  254. package/skills/harmony-conventions/SKILL.md +156 -0
  255. package/skills/java-conventions/SKILL.md +277 -0
  256. package/skills/pdf/LICENSE.txt +30 -0
  257. package/skills/pdf/SKILL.md +297 -0
  258. package/skills/pdf/forms.md +205 -0
  259. package/skills/pdf/reference.md +612 -0
  260. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  261. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  262. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  263. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  264. package/skills/pdf/scripts/create_validation_image.py +41 -0
  265. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  266. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  267. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  268. package/skills/pptx/LICENSE.txt +30 -0
  269. package/skills/pptx/SKILL.md +487 -0
  270. package/skills/pptx/html2pptx.md +625 -0
  271. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  272. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  273. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  274. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  275. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  276. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  277. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  278. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  279. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  280. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  281. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  282. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  283. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  284. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  285. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  286. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  287. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  288. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  289. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  290. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  291. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  292. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  293. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  294. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  295. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  296. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  297. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  298. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  299. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  300. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  301. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  302. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  303. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  304. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  305. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  306. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  307. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  308. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  309. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  310. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  311. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  312. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  313. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  314. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  315. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  316. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  317. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  318. package/skills/pptx/ooxml.md +427 -0
  319. package/skills/pptx/scripts/html2pptx.js +979 -0
  320. package/skills/pptx/scripts/inventory.py +1020 -0
  321. package/skills/pptx/scripts/rearrange.py +231 -0
  322. package/skills/pptx/scripts/replace.py +385 -0
  323. package/skills/pptx/scripts/thumbnail.py +450 -0
  324. package/skills/project-analyze/SKILL.md +270 -0
  325. package/skills/project-analyze/phases/phase0-discovery.md +278 -0
  326. package/skills/project-analyze/phases/phase0.5-prescan.md +139 -0
  327. package/skills/project-analyze/phases/phase1-inventory.md +94 -0
  328. package/skills/project-analyze/phases/phase2-deep-analysis.md +249 -0
  329. package/skills/project-analyze/phases/phase2a-l4-analysis.md +94 -0
  330. package/skills/project-analyze/phases/phase2b-l5-analysis.md +97 -0
  331. package/skills/project-analyze/phases/phase3-knowledge-graph.md +120 -0
  332. package/skills/project-analyze/phases/phase3a-multi-dimensional.md +61 -0
  333. package/skills/project-analyze/phases/phase4-code-quality.md +81 -0
  334. package/skills/project-analyze/phases/phase5-synthesis.md +284 -0
  335. package/skills/project-analyze/phases/phase6-validation.md +179 -0
  336. package/skills/project-analyze/prompts/code-review-agent.md +122 -0
  337. package/skills/project-analyze/prompts/deep-analysis-agent.md +107 -0
  338. package/skills/project-analyze/prompts/inventory-agent.md +67 -0
  339. package/skills/project-analyze/prompts/l4-analysis-agent.md +98 -0
  340. package/skills/project-analyze/rules/android.md +282 -0
  341. package/skills/project-analyze/rules/devops.md +443 -0
  342. package/skills/project-analyze/rules/generic.md +243 -0
  343. package/skills/project-analyze/rules/go.md +289 -0
  344. package/skills/project-analyze/rules/harmony.md +257 -0
  345. package/skills/project-analyze/rules/java.md +507 -0
  346. package/skills/project-analyze/rules/mobile-flutter.md +315 -0
  347. package/skills/project-analyze/rules/mobile-react-native.md +283 -0
  348. package/skills/project-analyze/rules/mobile-swift.md +323 -0
  349. package/skills/project-analyze/rules/python.md +317 -0
  350. package/skills/project-analyze/rules/rust-tauri.md +243 -0
  351. package/skills/project-analyze/rules/rust.md +296 -0
  352. package/skills/project-analyze/rules/web-nextjs.md +364 -0
  353. package/skills/project-analyze/rules/web-react.md +298 -0
  354. package/skills/project-analyze/rules/web-vue.md +378 -0
  355. package/skills/project-analyze/rules/web.md +390 -0
  356. package/skills/project-query/SKILL.md +224 -0
  357. package/skills/project-query/rules/query-templates.md +212 -0
  358. package/skills/python-conventions/SKILL.md +169 -0
  359. package/skills/react-native-conventions/SKILL.md +73 -0
  360. package/skills/requirements-writer/README.md +153 -0
  361. package/skills/requirements-writer/SKILL.md +341 -0
  362. package/skills/requirements-writer/examples/prd-outline-example.md +217 -0
  363. package/skills/requirements-writer/templates/module-prd-template.md +362 -0
  364. package/skills/requirements-writer/templates/prd-outline-template.md +185 -0
  365. package/skills/requirements-writer/templates/user-story-template.md +1125 -0
  366. package/skills/rust-conventions/SKILL.md +361 -0
  367. package/skills/smart-dispatch/SKILL.md +296 -0
  368. package/skills/smart-dispatch/implementer-prompt.md +146 -0
  369. package/skills/smart-dispatch/reviewer-prompt.md +199 -0
  370. package/skills/software-architecture/SKILL.md +278 -0
  371. package/skills/swift-conventions/SKILL.md +72 -0
  372. package/skills/ui-ux-pro/SKILL.md +140 -0
  373. package/skills/verification-before-completion/SKILL.md +119 -0
  374. package/skills/web-conventions/SKILL.md +259 -0
  375. package/skills/webapp-testing/LICENSE.txt +202 -0
  376. package/skills/webapp-testing/SKILL.md +97 -0
  377. package/skills/webapp-testing/examples/console_logging.py +35 -0
  378. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  379. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  380. package/skills/webapp-testing/scripts/with_server.py +106 -0
  381. package/skills/writing-plans/SKILL.md +144 -0
  382. package/skills/xlsx/LICENSE.txt +30 -0
  383. package/skills/xlsx/SKILL.md +292 -0
  384. package/skills/xlsx/recalc.py +178 -0
  385. package/templates/CLAUDE.md.android +57 -0
  386. package/templates/CLAUDE.md.devops +50 -0
  387. package/templates/CLAUDE.md.generic +34 -0
  388. package/templates/CLAUDE.md.go +67 -0
  389. package/templates/CLAUDE.md.harmony +54 -0
  390. package/templates/CLAUDE.md.java +56 -0
  391. package/templates/CLAUDE.md.mobile-flutter +38 -0
  392. package/templates/CLAUDE.md.mobile-react-native +37 -0
  393. package/templates/CLAUDE.md.mobile-swift +40 -0
  394. package/templates/CLAUDE.md.python +65 -0
  395. package/templates/CLAUDE.md.rust +68 -0
  396. package/templates/CLAUDE.md.rust-tauri +120 -0
  397. package/templates/CLAUDE.md.web +63 -0
  398. package/templates/COMPONENT.md.android +58 -0
  399. package/templates/COMPONENT.md.devops +54 -0
  400. package/templates/COMPONENT.md.generic +35 -0
  401. package/templates/COMPONENT.md.go +59 -0
  402. package/templates/COMPONENT.md.harmony +63 -0
  403. package/templates/COMPONENT.md.java +69 -0
  404. package/templates/COMPONENT.md.mobile-flutter +56 -0
  405. package/templates/COMPONENT.md.mobile-react-native +55 -0
  406. package/templates/COMPONENT.md.mobile-swift +56 -0
  407. package/templates/COMPONENT.md.python +67 -0
  408. package/templates/COMPONENT.md.rust +57 -0
  409. package/templates/COMPONENT.md.rust-tauri +66 -0
  410. package/templates/COMPONENT.md.web +39 -0
  411. package/templates/README.md.android +71 -0
  412. package/templates/README.md.devops +68 -0
  413. package/templates/README.md.generic +39 -0
  414. package/templates/README.md.go +70 -0
  415. package/templates/README.md.harmony +72 -0
  416. package/templates/README.md.java +73 -0
  417. package/templates/README.md.mobile-flutter +69 -0
  418. package/templates/README.md.mobile-react-native +65 -0
  419. package/templates/README.md.mobile-swift +69 -0
  420. package/templates/README.md.monorepo +59 -0
  421. package/templates/README.md.python +66 -0
  422. package/templates/README.md.rust +69 -0
  423. package/templates/README.md.rust-tauri +149 -0
  424. package/templates/README.md.web +94 -0
  425. package/templates/UI_STYLE.md.android +74 -0
  426. package/templates/UI_STYLE.md.devops +50 -0
  427. package/templates/UI_STYLE.md.generic +31 -0
  428. package/templates/UI_STYLE.md.go +49 -0
  429. package/templates/UI_STYLE.md.harmony +71 -0
  430. package/templates/UI_STYLE.md.java +61 -0
  431. package/templates/UI_STYLE.md.mobile-flutter +70 -0
  432. package/templates/UI_STYLE.md.mobile-react-native +71 -0
  433. package/templates/UI_STYLE.md.mobile-swift +71 -0
  434. package/templates/UI_STYLE.md.python +58 -0
  435. package/templates/UI_STYLE.md.rust +52 -0
  436. package/templates/UI_STYLE.md.rust-tauri +102 -0
  437. package/templates/UI_STYLE.md.web +92 -0
  438. package/templates/cursor-rules.android.mdc +33 -0
  439. package/templates/cursor-rules.devops.mdc +32 -0
  440. package/templates/cursor-rules.generic.mdc +25 -0
  441. package/templates/cursor-rules.go.mdc +34 -0
  442. package/templates/cursor-rules.harmony.mdc +30 -0
  443. package/templates/cursor-rules.java.mdc +30 -0
  444. package/templates/cursor-rules.mobile-flutter.mdc +42 -0
  445. package/templates/cursor-rules.mobile-react-native.mdc +43 -0
  446. package/templates/cursor-rules.mobile-swift.mdc +42 -0
  447. package/templates/cursor-rules.python.mdc +33 -0
  448. package/templates/cursor-rules.rust-tauri.mdc +67 -0
  449. package/templates/cursor-rules.rust.mdc +30 -0
  450. package/templates/cursor-rules.web.mdc +30 -0
  451. package/templates/kiro-steering.android.md +39 -0
  452. package/templates/kiro-steering.devops.md +32 -0
  453. package/templates/kiro-steering.generic.md +28 -0
  454. package/templates/kiro-steering.go.md +41 -0
  455. package/templates/kiro-steering.harmony.md +36 -0
  456. package/templates/kiro-steering.java.md +37 -0
  457. package/templates/kiro-steering.mobile-flutter.md +73 -0
  458. package/templates/kiro-steering.mobile-react-native.md +71 -0
  459. package/templates/kiro-steering.mobile-swift.md +62 -0
  460. package/templates/kiro-steering.python.md +34 -0
  461. package/templates/kiro-steering.rust-tauri.md +50 -0
  462. package/templates/kiro-steering.rust.md +36 -0
  463. package/templates/kiro-steering.web.md +41 -0
@@ -0,0 +1,285 @@
1
+ # 架构合规检测规则(第 5 维度)
2
+
3
+ 本维度评估代码的架构合规性:分层是否正确、依赖方向是否合理、领域模型是否合规、微服务边界是否清晰。
4
+
5
+ ## 前置依赖
6
+
7
+ 本维度需要以下数据:
8
+ 1. 源码文件 — 分层、DDD、微服务、包结构检测
9
+ 2. `knowledge-graph.json` — Phase 3 生成的全局知识图谱(可选,用于耦合分析)
10
+ 3. `multi-dimensional-analysis.json`(可选,project-analyze v5.0 Phase 3a 输出)
11
+
12
+ > **深度架构评审:** 如本维度发现重度违反(评分 < 40),建议运行 `/software-architecture` skill 进行系统级架构评审。
13
+ > **栈级规范:** 分层规则应与对应 `{stack}-conventions` skill 的分层定义保持一致(如 `java-conventions` 的 Controller/Service/Repository 分层、`web-conventions` 的组件分层)。
14
+
15
+ ## 1. 分层违反检测
16
+
17
+ ### 1.1 Java/Spring 分层规则
18
+
19
+ 扫描所有源文件的 import 语句,检查层间依赖是否合规:
20
+
21
+ | 层 | 允许依赖 | 禁止依赖 |
22
+ |----|----------|----------|
23
+ | Controller (`*Controller.java`) | Service, DTO, VO, RequestBody, PathVariable | Repository, Entity, Mapper, Dao |
24
+ | Service (`*Service.java`, `*ServiceImpl.java`) | Repository, Entity, DTO, VO, 其他 Service | Controller |
25
+ | Repository (`*Repository.java`, `*Mapper.java`, `*Dao.java`) | Entity, Model | Service, Controller |
26
+ | Entity / Model (`*Entity.java`, `*DO.java`) | 无(纯数据类) | Service, Repository, Controller |
27
+ | DTO / VO (`*DTO.java`, `*VO.java`, `*Request.java`) | 无(纯数据类) | Service, Repository |
28
+ | Config (`*Config.java`, `*Configuration.java`) | Service, Repository(通过注入) | — |
29
+ | Common / Utils | 无 | 业务模块的 Service/Repository |
30
+
31
+ ### 1.2 检测方法
32
+
33
+ 逐文件扫描 import 语句:
34
+
35
+ ```
36
+ # 检查 Controller 是否直接引用 Repository/DAO
37
+ grep -E '^import.*\.(Mapper|Repository|Dao|MapperImpl)' *Controller.java
38
+
39
+ # 检查 Entity 是否引用 Service
40
+ grep -E '^import.*\.(Service|ServiceImpl)' *Entity.java *DO.java
41
+
42
+ # 检查 Service 是否引用 Controller
43
+ grep -E '^import.*\.Controller' *Service.java *ServiceImpl.java
44
+ ```
45
+
46
+ ### 1.3 严重度定义
47
+
48
+ | 严重度 | 条件 | 示例 |
49
+ |--------|------|------|
50
+ | Critical | Controller 直接操作数据库层 | `UserController` import `UserMapper` |
51
+ | Warning | 跨层不合理的依赖 | `Entity` 包含业务逻辑方法 |
52
+ | Info | 建议改进的分层模式 | Service 层缺少 DTO 转换,直接返回 Entity |
53
+
54
+ ### 1.4 白名单(排除误报)
55
+
56
+ 以下场景属于合理的跨层访问,不计为违规:
57
+ - `@ControllerAdvice` + `@ExceptionHandler` — 全局异常处理可访问 Service
58
+ - `@Configuration` 类 — 通过 `@Bean` 注入任意组件
59
+ - `*SecurityConfig.java` — 安全配置可注入 `UserDetailsService` 等
60
+ - `*Actuator*.java`, `*HealthCheck*.java` — 监控端点
61
+ - Test 类(`src/test/` 下的文件)— 测试可访问任意层
62
+ - `*Application.java`(启动类)— 可包含 `@Bean` 定义
63
+
64
+ ## 2. DDD 合规检测
65
+
66
+ **适用条件**:项目使用 DDD 相关包结构(`domain/`、`application/`、`infrastructure/`、`interfaces/`)或 pom.xml 包含 DDD 框架依赖(如 Axon、lagom)。
67
+
68
+ ### 2.1 检测项
69
+
70
+ | 检测项 | 严重度 | 判定标准 |
71
+ |--------|--------|----------|
72
+ | 聚合根无专属 Repository | Critical | Entity 类无对应的 Repository/Mapper 接口 |
73
+ | 领域服务依赖基础设施层 | Critical | `domain/service/` 下的类 import `infrastructure/` 下的类 |
74
+ | 值对象包含 ID 字段 | Warning | 值对象类(如 Address、Money)有 `@Id` 或 `id` 字段 |
75
+ | 领域事件未在聚合内发布 | Warning | 领域事件类存在但无发布代码 |
76
+ | 应用服务包含业务逻辑 | Warning | `application/service/` 下的类包含 if/for 等业务判断 |
77
+ | 限界上下文边界泄露 | Critical | 一个 bounded context 的领域模型被另一个直接引用 |
78
+ | 聚合边界过大 | Info | 单个聚合根包含 >10 个实体或 >20 个方法 |
79
+
80
+ ### 2.2 聚合根识别
81
+
82
+ 扫描以下特征识别聚合根:
83
+ - `@AggregateRoot` 注解(Axon)
84
+ - `@Entity` 注解 + 有独立的 Repository
85
+ - 类名包含 `Aggregate` 后缀
86
+ - 包含领域事件发布方法(`apply()`, `registerEvent()`)
87
+
88
+ ### 2.3 值对象识别
89
+
90
+ 扫描以下特征识别值对象:
91
+ - 无 `@Id` 注解
92
+ - 所有字段为 final(Java)/ val(Kotlin)
93
+ - 实现 `equals()` 和 `hashCode()` 基于所有字段
94
+ - 无独立 Repository
95
+
96
+ ## 3. 微服务适应性检测
97
+
98
+ **适用条件**:项目包含 Spring Cloud、Dubbo、gRPC 等微服务框架依赖,或 pom.xml 的 `<modules>` 包含 3+ 个独立服务模块。
99
+
100
+ ### 3.1 检测项
101
+
102
+ | 检测项 | 严重度 | 判定标准 |
103
+ |--------|--------|----------|
104
+ | 共享数据库 | Critical | 多个服务模块的 application.yml 指向同一数据库 URL |
105
+ | 跨服务直接数据访问 | Critical | 服务 A 的 Mapper/Repository 直接查询服务 B 的表 |
106
+ | 共享业务逻辑库 | Warning | common 模块包含非工具类的业务逻辑(如 `*Service.java`) |
107
+ | 同步链式调用过深 | Warning | Feign/HTTP 调用链 >3 层(A→B→C→D) |
108
+ | 服务无法独立部署 | Critical | 模块间存在编译期依赖(非 API 依赖),无法独立打包 |
109
+ | API 网关仅做路由 | Info | Gateway 模块无聚合、限流、认证等能力 |
110
+ | 缺少服务发现 | Info | 微服务项目无 Nacos/Eureka/Consul 配置 |
111
+ | 缺少熔断/限流 | Info | 无 Sentinel/Resilience4j/Hystrix 配置 |
112
+
113
+ ### 3.2 共享数据库检测方法
114
+
115
+ ```
116
+ # 提取所有模块的数据库 URL
117
+ grep -r 'spring.datasource.url' */src/main/resources/*.yml
118
+ # 或
119
+ grep -r 'jdbc:' */src/main/resources/*.yml
120
+
121
+ # 如果多个模块指向同一 host:port/database → 共享数据库
122
+ ```
123
+
124
+ ### 3.3 跨服务直接数据访问检测
125
+
126
+ ```
127
+ # 检查 ark-modules/ 下的 Mapper XML 是否包含其他服务领域表
128
+ # 如 lead 服务中有 dealer 相关的 SQL
129
+
130
+ # 检查 import 语句是否引用其他模块的 Entity
131
+ grep -r 'import com.ftms.scrm.dealer.entity' ark-modules/ark-lead/
132
+ ```
133
+
134
+ ### 3.4 Feign 调用链深度检测
135
+
136
+ 扫描所有 `@FeignClient` 接口及其实现,构建调用图:
137
+ - 深度 1-2:正常
138
+ - 深度 3:Warning(建议引入异步解耦)
139
+ - 深度 4+:Critical(强耦合,应重构)
140
+
141
+ ## 4. 包结构分析
142
+
143
+ ### 4.1 组织模式识别
144
+
145
+ | 模式 | 特征 | 评估 |
146
+ |------|------|------|
147
+ | 按层分包 | `controller/`, `service/`, `dao/` 各一个包 | 传统模式,模块边界不清晰 |
148
+ | 按功能分包 | `user/`, `order/`, `product/` 各含完整分层 | DDD 友好,模块边界清晰 |
149
+ | 混合模式 | 顶层按功能,内层按分层 | 推荐模式 |
150
+
151
+ ### 4.2 健康度检测
152
+
153
+ | 检测项 | 严重度 | 阈值 |
154
+ |--------|--------|------|
155
+ | 大泥球 | Warning | 单个包内 >50 个 .java 文件 |
156
+ | 循环依赖 | Critical | 包 A import 包 B,包 B 也 import 包 A |
157
+ | 包层次过深 | Info | 包路径 >6 层(如 `com.a.b.c.d.e.f.Class`) |
158
+ | 空包 | Info | 存在无 .java 文件的包目录 |
159
+ | 命名不规范 | Info | 包名含大写字母、下划线、特殊字符 |
160
+
161
+ ## 5. 依赖方向验证
162
+
163
+ ### 5.1 规则
164
+
165
+ - 上层依赖下层:Controller → Service → Repository → Entity
166
+ - 不允许反向依赖
167
+ - 公共模块(common, utils, core)不应依赖业务模块
168
+ - API 模块(仅含接口和 DTO)不应依赖实现模块
169
+
170
+ ### 5.2 检测方法
171
+
172
+ 从所有 pom.xml 的 `<dependencies>` 提取模块间依赖,构建有向图:
173
+ - 检查是否存在环(循环依赖)
174
+ - 检查 common 模块是否依赖业务模块
175
+ - 检查 API 模块是否依赖实现模块
176
+
177
+ ### 5.3 输出
178
+
179
+ ```
180
+ 模块依赖方向图:
181
+ ┌─────────┐ ┌──────────┐ ┌───────────┐
182
+ │ ark-bff │────→│ark-modules│────→│ark-common │
183
+ └─────────┘ └──────────┘ └───────────┘
184
+ │ │
185
+ ↓ ↓
186
+ ┌─────────┐ ┌──────────┐
187
+ │ark-gateway│ │ ark-api │
188
+ └─────────┘ └──────────┘
189
+
190
+ 违反项:
191
+ - ❌ ark-common 依赖 ark-modules (common 不应依赖业务模块)
192
+ ```
193
+
194
+ ## 评分算法
195
+
196
+ ```
197
+ # 分数计算(0-100,越高越差)
198
+ architecture_score = min(weighted_issues / normalization * 100, 100)
199
+
200
+ # 权重
201
+ Critical: 20 points each
202
+ Warning: 8 points each
203
+ Info: 2 points each
204
+
205
+ # 标准化因子
206
+ normalization = max(total_modules, 1) * 10
207
+
208
+ # 示例
209
+ # 5 个模块的项目:
210
+ # 2 Critical + 3 Warning + 5 Info = 2*20 + 3*8 + 5*2 = 74
211
+ # normalization = 5 * 10 = 50
212
+ # score = min(74 / 50 * 100, 100) = 100 → 封顶 100
213
+ ```
214
+
215
+ ## 报告格式
216
+
217
+ ### 分层违反
218
+
219
+ | Severity | File | Layer | Violation | Suggestion |
220
+ |----------|------|-------|-----------|------------|
221
+ | Critical | UserController.java | Controller | import UserMapper | 通过 UserService 间接访问 |
222
+ | Warning | OrderEntity.java | Entity | 包含 calculatePrice() 业务方法 | 移至 OrderDomainService |
223
+
224
+ ### 微服务适应性
225
+
226
+ | 检测项 | 状态 | 详情 | 建议 |
227
+ |--------|------|------|------|
228
+ | 独立数据库 | ❌ | 3 个服务共享同一 MySQL 实例 | 按服务边界拆分数据库 |
229
+ | 同步耦合 | ⚠️ | Feign 调用链最深 3 层 | 引入 MQ 异步解耦 |
230
+ | 共享业务库 | ❌ | ark-common 含 LeadService | 提取为独立微服务或保留为纯工具库 |
231
+
232
+ ### 包结构
233
+
234
+ | 检测项 | 状态 | 详情 |
235
+ |--------|------|------|
236
+ | 组织模式 | ⚠️ | 按层分包,建议迁移为按功能分包 |
237
+ | 大泥球 | ✅ | 最大包含 23 个类 |
238
+ | 循环依赖 | ✅ | 未检测到 |
239
+
240
+ ### 重构建议
241
+
242
+ 对每个 Critical/Warning 问题,提供具体重构方案:
243
+
244
+ 1. **重构名称**
245
+ - 当前状态:问题描述
246
+ - 目标状态:期望结果
247
+ - 影响范围:涉及文件列表
248
+ - 步骤:
249
+ 1. 具体操作步骤 1
250
+ 2. 具体操作步骤 2
251
+ 3. 具体操作步骤 3
252
+ - 预计工作量:S(<1天)/ M(1-3天)/ L(>3天)
253
+
254
+ ## 6. 知识图谱驱动的耦合分析(v3.0 新增)
255
+
256
+ **适用条件**:Phase 3 生成的 `knowledge-graph.json` 存在。
257
+
258
+ 当知识图谱可用时,从图谱中提取耦合数据辅助架构合规分析:
259
+
260
+ - **模块依赖边** → `depends_on` 类型的边用于分层违反检测
261
+ - **循环依赖** → 知识图谱中的 `circular_dependencies` 用于严重度评估
262
+ - **耦合度指标** → `metrics.avg_coupling` 和 `metrics.max_coupling_module` 用于定位问题模块
263
+
264
+ **集成方式:**
265
+ ```
266
+ # 优先使用知识图谱数据
267
+ if knowledge_graph exists:
268
+ module_coupling = graph.metrics.per_module(module_slug)
269
+ module_cycles = graph.metrics.circular_dependencies
270
+ else:
271
+ # 回退到 import 扫描方式(当前逻辑)
272
+ module_coupling = scan_imports(module_files)
273
+ ```
274
+
275
+ ### 6.2 多维分析层违反数据(v5.0 增强)
276
+
277
+ 当 `multi-dimensional-analysis.json` 存在时(project-analyze v5.0 Phase 3a 输出),架构合规分析可利用以下预计算数据:
278
+
279
+ - `structural.layer_violation_ratio` — 层违反率(0-1,越低越好)
280
+ - `structural.total_cross_layer_edges` — 跨层依赖总数
281
+ - `structural.god_modules` — 上帝模块数量
282
+ - `structural.unstable_cores` — 不稳定核心模块列表
283
+ - `structural.layer_distribution` — 各层节点分布
284
+
285
+ **使用方式**:如果 `.atool-docs/multi-dimensional-analysis.json` 存在,优先使用其 `structural` 维度数据进行架构层分析,提供更精确的层违反检测。配合 `knowledge-graph.json` 的 `layers.detected` 字段确定层分配。
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: coupling-cohesion
3
+ dimension: coupling-cohesion
4
+ weight: 0.10
5
+ ---
6
+
7
+ > **栈级规范:** 模块边界和依赖管理约定参考对应 `{stack}-conventions` skill。重度耦合问题建议运行 `/software-architecture` skill 评审。
8
+
9
+ # 耦合与内聚分析规则(知识图谱驱动)
10
+
11
+ 本维度基于知识图谱的模块依赖关系,计算耦合度、内聚度和稳定性指标。需要 Phase 3 生成的 `knowledge-graph.json` 作为输入。
12
+
13
+ ## 前置依赖
14
+
15
+ 本维度需要以下数据:
16
+ 1. `knowledge-graph.json` — Phase 3 生成的全局知识图谱
17
+ 2. 模块级 inventory 数据 — Phase 1 生成的 `{module-slug}.json`
18
+ 3. `knowledge-graph.json v5.0`(可选,提供预计算 CK Metrics)
19
+
20
+ 如果知识图谱不存在,本维度跳过并标记为 "skipped (no graph data)"。
21
+
22
+ ## 1. 耦合度分析
23
+
24
+ ### 1.1 Afferent Coupling (Ca) — 被依赖度
25
+
26
+ 模块被其他模块依赖(import/调用)的数量:
27
+
28
+ ```
29
+ Ca(M) = count(unique modules that depend on M)
30
+
31
+ # 从 knowledge-graph.json 计算
32
+ Ca(M) = count(edges where target == "mod:{M}" and type == "depends_on")
33
+ ```
34
+
35
+ **评估:**
36
+ - Ca 高 → 模块是基础设施/核心库,修改需谨慎(影响面大)
37
+ - Ca = 0 → 模块是孤立的,可能是不使用的代码或入口模块
38
+
39
+ ### 1.2 Efferent Coupling (Ce) — 依赖度
40
+
41
+ 模块依赖(import/调用)其他模块的数量:
42
+
43
+ ```
44
+ Ce(M) = count(unique modules that M depends on)
45
+
46
+ # 从 knowledge-graph.json 计算
47
+ Ce(M) = count(edges where source == "mod:{M}" and type == "depends_on")
48
+ ```
49
+
50
+ **评估:**
51
+ - Ce 高 → 模块是"枢纽",依赖过多外部模块,难以独立测试和复用
52
+ - Ce = 0 → 模块是完全独立的
53
+
54
+ ### 1.3 Instability (I) — 不稳定性
55
+
56
+ ```
57
+ I(M) = Ce(M) / (Ce(M) + Ca(M))
58
+
59
+ # 特殊情况
60
+ 如果 Ce(M) + Ca(M) == 0: I(M) = 0.5 (无依赖信息)
61
+ ```
62
+
63
+ **评估:**
64
+ - I 接近 1 → 模块是不稳定的(大量外部依赖,被少量模块使用)
65
+ - I 接近 0 → 模块是稳定的(被大量模块依赖,自身依赖少)
66
+ - **主序列(Main Sequence)**: 理想情况下 I 和 Abstractness (A) 应满足 A + I = 1
67
+
68
+ ### 1.4 Abstractness (A) — 抽象度(OO 项目适用)
69
+
70
+ ```
71
+ A(M) = abstract_classes(M) / total_classes(M)
72
+
73
+ # 抽象类识别
74
+ abstract_classes: 含 abstract 关键字的类、interface、protocol、trait
75
+ total_classes: 所有类/接口/协议/特征的总和
76
+ ```
77
+
78
+ **主序列距离:**
79
+ ```
80
+ D(M) = |A(M) + I(M) - 1|
81
+
82
+ D 接近 0 → 模块在主序列上(良好平衡)
83
+ D 接近 1 → 模块远离主序列(设计问题)
84
+ ```
85
+
86
+ ### 1.5 耦合健康度评估
87
+
88
+ | 指标 | 严重度 | 阈值 |
89
+ |------|--------|------|
90
+ | 过高出度 (Ce) | Critical | Ce > 15(过度依赖,高度耦合) |
91
+ | 过高出度 (Ce) | Warning | Ce > 10 |
92
+ | 零出入度 (Ca=Ce=0) | Warning | 孤立模块(可能的死代码或缺失关联) |
93
+ | 主序列距离 | Warning | D > 0.7(抽象/稳定失衡) |
94
+ | 主序列距离 | Info | D > 0.5 |
95
+
96
+ ## 2. 内聚度分析
97
+
98
+ ### 2.1 模块内聚度(基于知识图谱)
99
+
100
+ 从知识图谱中的函数级和组件级节点计算:
101
+
102
+ ```
103
+ # 模块内函数/组件间的内部连接
104
+ internal_edges(M) = count(edges where source ∈ M and target ∈ M)
105
+
106
+ # 模块对外连接
107
+ external_edges(M) = count(edges where (source ∈ M and target ∉ M) or (source ∉ M and target ∈ M))
108
+
109
+ # 内聚比
110
+ cohesion_ratio(M) = internal_edges(M) / max(internal_edges(M) + external_edges(M), 1)
111
+ ```
112
+
113
+ **评估:**
114
+ - cohesion_ratio > 0.7 → 高内聚(良好)
115
+ - cohesion_ratio 0.3-0.7 → 中等内聚
116
+ - cohesion_ratio < 0.3 → 低内聚(模块职责不明确)
117
+
118
+ ### 2.2 Lack of Cohesion in Methods (LCOM) — 类级内聚度
119
+
120
+ **适用条件**:OO 语言项目(Java, Kotlin, C#, Swift, Dart)。
121
+
122
+ ```
123
+ # LCOM4 方法(推荐)
124
+ # 两个方法如果在类的同一实例变量上操作,则它们是相连的
125
+ # LCOM4 = 方法图中连通分量的数量
126
+
127
+ LCOM4 = count(connected_components in method_access_graph)
128
+
129
+ # 评估
130
+ LCOM4 = 1 → 完美内聚(所有方法共享数据)
131
+ LCOM4 = 2-3 → 可接受(可能需要拆分)
132
+ LCOM4 > 3 → 低内聚(建议拆分类)
133
+ ```
134
+
135
+ ### 2.3 内聚健康度评估
136
+
137
+ | 指标 | 严重度 | 阈值 |
138
+ |------|--------|------|
139
+ | LCOM4 > 5 | Critical | 类职责过多,强烈建议拆分 |
140
+ | LCOM4 > 3 | Warning | 类可能有多个职责 |
141
+ | cohesion_ratio < 0.2 | Critical | 模块严重缺乏内聚 |
142
+ | cohesion_ratio < 0.3 | Warning | 模块内聚不足 |
143
+
144
+ ## 3. 循环依赖检测
145
+
146
+ ### 3.1 检测方法
147
+
148
+ 从 knowledge-graph.json 的 `edges` 中提取模块级 `depends_on` 边,构建有向图,使用 DFS 检测环:
149
+
150
+ ```
151
+ # 检测所有强连通分量(SCC)
152
+ # SCC 大小 > 1 的即为循环依赖
153
+
154
+ 循环依赖链示例:
155
+ Module A → Module B → Module C → Module A
156
+ ```
157
+
158
+ ### 3.2 严重度
159
+
160
+ | 循环类型 | 严重度 | 说明 |
161
+ |----------|--------|------|
162
+ | 直接循环 (A→B→A) | Critical | 最严重的耦合问题 |
163
+ | 间接循环 (A→B→C→A) | Critical | 三方及以上循环 |
164
+ | 自引用 (A→A) | Warning | 模块内部循环依赖 |
165
+ | 长链循环 (>4 个模块) | Info | 循环路径长,可能间接影响 |
166
+
167
+ ### 3.3 循环依赖影响分析
168
+
169
+ 对每个检测到的循环,分析:
170
+ 1. **影响范围** — 循环涉及的模块及其 Ca 值(被依赖的模块在循环中更危险)
171
+ 2. **破坏方式** — 建议引入接口/事件/中介者来打破循环
172
+ 3. **风险等级** — 高 Ca 模块在循环中 = 高风险
173
+
174
+ ## 4. CK Metrics(Chidamber-Kemerer,OO 项目适用)
175
+
176
+ **适用条件**:OO 语言项目(Java, Kotlin, C#, Swift, Dart, Python with classes)。
177
+
178
+ ### 4.1 指标定义
179
+
180
+ | 指标 | 全称 | 含义 | 检测方法 |
181
+ |------|------|------|----------|
182
+ | WMC | Weighted Methods per Class | 类中方法的复杂度之和 | 统计类中每个方法的 CC 值求和 |
183
+ | DIT | Depth of Inheritance Tree | 继承树深度 | 统计 extends/implements 链长度 |
184
+ | NOC | Number of Children | 直接子类数量 | 统计 extends/继承该类的子类 |
185
+ | CBO | Coupling Between Objects | 耦合对象数 | 统计类中引用的其他类数量(非基础类型) |
186
+ | RFC | Response for a Class | 类的响应集大小 | 统计类的方法 + 被方法调用的外部方法数 |
187
+ | LCOM | Lack of Cohesion in Methods | 方法内聚度缺失 | 见 2.2 LCOM4 |
188
+
189
+ ### 4.2 阈值
190
+
191
+ | 指标 | Critical | Warning | Info |
192
+ |------|----------|---------|------|
193
+ | WMC | >100 | >50 | >30 |
194
+ | DIT | >6 | >4 | >3 |
195
+ | NOC | >20 | >10 | >5 |
196
+ | CBO | >20 | >10 | >5 |
197
+ | RFC | >100 | >50 | >30 |
198
+ | LCOM | >5 | >3 | >2 |
199
+
200
+ ### 4.1 知识图谱 v5.0 CK 度量数据(增强)
201
+
202
+ 当 `knowledge-graph.json` 由 project-analyze v5.0 生成时,CK Metrics 已由 `lib/knowledge-graph.sh` 的 `compute_ck_metrics()` 预计算并嵌入节点 metrics 中:
203
+
204
+ - `metrics.WMC` — Weighted Methods per Class
205
+ - `metrics.DIT` — Depth of Inheritance Tree
206
+ - `metrics.NOC` — Number of Children
207
+ - `metrics.CBO` — Coupling Between Objects
208
+ - `metrics.RFC` — Response For Class
209
+ - `metrics.LCOM` — Lack of Cohesion in Methods
210
+
211
+ **使用方式**:如果 `.atool-docs/knowledge-graph.json` 存在且 `version >= "5.0"`,直接从节点 metrics 读取 CK 值,无需手动计算。同时 `multi-dimensional-analysis.json` 的 `quality.coupling_index` 提供了复合耦合指数 CI(M) 的预计算结果。
212
+
213
+ ## 5. Dependency Structure Matrix (DSM)
214
+
215
+ ### 5.1 矩阵生成
216
+
217
+ 从知识图谱生成模块依赖矩阵:
218
+
219
+ ```
220
+ ┌─────┬──────┬──────┬──────┬──────┐
221
+ │ mod │ auth │ user │ order│ util │
222
+ ├─────┼──────┼──────┼──────┼──────┤
223
+ auth │ - │ - │ 1 │ 0 │ 2 │
224
+ user │ 0 │ 2 │ - │ 1 │ 3 │
225
+ order │ 0 │ 1 │ 2 │ - │ 1 │
226
+ util │ 0 │ 0 │ 0 │ 0 │ - │
227
+ └─────┴──────┴──────┴──────┴──────┘
228
+
229
+ 行 = 依赖方(source)
230
+ 列 = 被依赖方(target)
231
+ 值 = 依赖的符号数量
232
+ ```
233
+
234
+ ### 5.2 DSM 分析
235
+
236
+ - **对角线附近集中** → 模块化良好
237
+ - **右上三角非零** → 可能存在反向依赖(与分层方向相反)
238
+ - **整行/整列密集** → 过度耦合的模块
239
+
240
+ ## 评分算法
241
+
242
+ ```
243
+ coupling_score = 0
244
+
245
+ # 耦合问题
246
+ for each module with Ce > 15: coupling_score += 20 # Critical
247
+ for each module with Ce > 10: coupling_score += 8 # Warning
248
+ for each isolated module: coupling_score += 8 # Warning
249
+
250
+ # 循环依赖
251
+ for each direct cycle: coupling_score += 20 # Critical
252
+ for each indirect cycle: coupling_score += 20 # Critical
253
+ for each self-reference: coupling_score += 8 # Warning
254
+
255
+ # 内聚问题
256
+ for each module with cohesion_ratio < 0.2: coupling_score += 20 # Critical
257
+ for each module with cohesion_ratio < 0.3: coupling_score += 8 # Warning
258
+
259
+ # CK metrics (OO only)
260
+ for each class with WMC > 100: coupling_score += 15
261
+ for each class with CBO > 20: coupling_score += 15
262
+ for each class with DIT > 6: coupling_score += 10
263
+
264
+ # 主序列距离惩罚
265
+ for each module with D > 0.7: coupling_score += 8
266
+ for each module with D > 0.5: coupling_score += 2
267
+
268
+ # 标准化
269
+ normalized = min(coupling_score / max(total_modules * 5, 1), 100)
270
+ ```
271
+
272
+ ## 报告章节模板
273
+
274
+ ```markdown
275
+ ### 耦合与内聚 (Score: {score}/100)
276
+
277
+ **平均耦合度:** Ca={avg_ca}, Ce={avg_ce}
278
+ **平均内聚比:** {avg_cohesion}
279
+ **循环依赖:** {cycle_count} 个
280
+ **主序列平均距离:** {avg_distance}
281
+
282
+ #### 模块耦合矩阵
283
+
284
+ {DSM matrix}
285
+
286
+ #### 循环依赖
287
+
288
+ | 循环路径 | 涉及模块数 | 影响范围 | 破坏建议 |
289
+ |----------|-----------|---------|---------|
290
+ | auth → user → auth | 2 | 高(auth Ca=12) | 引入 AuthInterface |
291
+
292
+ #### 高耦合模块
293
+
294
+ | 模块 | Ce | Ca | I | D | 建议 |
295
+ |------|-----|-----|---|---|------|
296
+ | order | 15 | 3 | 0.83 | 0.72 | 拆分为 order-core 和 order-integration |
297
+
298
+ #### 低内聚模块
299
+
300
+ | 模块 | cohesion_ratio | internal_edges | external_edges | 建议 |
301
+ |------|---------------|----------------|----------------|------|
302
+ | utils | 0.15 | 3 | 17 | 按职责拆分为多个子模块 |
303
+
304
+ #### CK Metrics 告警(OO 项目)
305
+
306
+ | 类 | WMC | DIT | CBO | RFC | LCOM | 问题 |
307
+ |----|-----|-----|-----|-----|------|------|
308
+ | OrderService | 87 | 2 | 18 | 95 | 4 | CBO 过高,建议拆分 |
309
+ ```