@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,543 @@
1
+ #!/usr/bin/env bash
2
+ # aTool - lib/install-kiro.sh
3
+ # Kiro IDE installation (skills -> consolidated steering Markdown with YAML front matter)
4
+
5
+ set -euo pipefail
6
+
7
+ # These functions are sourced by the parent script, not run directly.
8
+ # common.sh must already be loaded.
9
+
10
+ # ── Category Mapping ──────────────────────────────────────────────────────
11
+
12
+ # Convert a single SKILL.md to Kiro steering Markdown format (legacy / project-level helper)
13
+ # Args: SKILL_DIR, OUTPUT_FILE
14
+ skill_to_steering_yaml() {
15
+ local skill_dir="$1"
16
+ local output_file="$2"
17
+ local skill_name
18
+ skill_name=$(basename "$skill_dir")
19
+
20
+ local skill_md="$skill_dir/SKILL.md"
21
+ if [[ ! -f "$skill_md" ]]; then
22
+ return 1
23
+ fi
24
+
25
+ # Extract description from first heading
26
+ local description
27
+ description=$(head -5 "$skill_md" | grep -i '^#' | head -1 | sed 's/^#*\s*//' || echo "$skill_name skill")
28
+
29
+ # Write Markdown front matter
30
+ cat > "$output_file" <<MDFRONT
31
+ ---
32
+ inclusion: auto
33
+ name: atool-${skill_name}
34
+ description: "${description}"
35
+ ---
36
+
37
+ MDFRONT
38
+
39
+ # Append skill content directly (no indentation)
40
+ cat "$skill_md" >> "$output_file"
41
+ }
42
+
43
+ # ── Skill Categorization ────────────────────────────────────────────────────
44
+
45
+ # Map a skill name to its consolidated steering category
46
+ # Args: SKILL_NAME
47
+ # Outputs: category name (e.g., "core-workflow", "analysis"), empty to skip
48
+ get_kiro_steering_category() {
49
+ local skill_name="$1"
50
+ case "$skill_name" in
51
+ # Core workflow skills — always in context
52
+ atool-init|brainstorming|clarify-before-build|writing-plans|executing-plans|smart-dispatch|finishing-a-development-branch)
53
+ echo "core-workflow" ;;
54
+ # project-analyze is too large (~88KB) to consolidate — separate file
55
+ project-analyze)
56
+ echo "project-analyze" ;;
57
+ # project-query depends on project-analyze output — merged into project-analyze steering
58
+ project-query)
59
+ echo "project-analyze" ;;
60
+ # Code review is detail-heavy (8 dimensions) — separate file, manual activation
61
+ code-review)
62
+ echo "code-review" ;;
63
+ # Analysis skills — merged into core-workflow for efficiency
64
+ find-skills)
65
+ echo "core-workflow" ;;
66
+ # Verification handled by superpowers version — skip duplicate
67
+ verification-before-completion)
68
+ echo "" ;;
69
+ # Conventions handled by project-level template (kiro-steering.{stack}.md)
70
+ *-conventions)
71
+ echo "" ;;
72
+ # Office
73
+ pdf|docx|pptx|xlsx)
74
+ echo "office" ;;
75
+ # Architecture / design / docs
76
+ software-architecture|ai-project-architecture|ui-ux-pro|requirements-writer|doc-coauthoring|doc-standards-enforcer)
77
+ echo "design" ;;
78
+ # Testing
79
+ webapp-testing)
80
+ echo "testing" ;;
81
+ # Catch-all
82
+ *)
83
+ echo "misc" ;;
84
+ esac
85
+ }
86
+
87
+ # Map superpowers skill names to categories
88
+ # Args: SKILL_NAME
89
+ # Outputs: category name
90
+ get_superpowers_kiro_category() {
91
+ local skill_name="$1"
92
+ case "$skill_name" in
93
+ # Essential — always needed
94
+ using-superpowers|brainstorming|verification-before-completion)
95
+ echo "core-workflow" ;;
96
+ # Quality — only during implementation/debugging
97
+ test-driven-development|systematic-debugging)
98
+ echo "quality" ;;
99
+ # Advanced — manual activation
100
+ dispatching-parallel-agents|subagent-driven-development|using-git-worktrees|requesting-code-review|receiving-code-review|writing-skills|executing-plans|writing-plans|finishing-a-development-branch)
101
+ echo "superpowers-advanced" ;;
102
+ # Default to core-workflow for unknown superpowers skills
103
+ *)
104
+ echo "core-workflow" ;;
105
+ esac
106
+ }
107
+
108
+ # ── Content Extraction ─────────────────────────────────────────────────────
109
+
110
+ # Extract condensed instructions from a SKILL.md
111
+ # Trims long code blocks (>8 lines) while preserving structure
112
+ # Args: SKILL_MD_PATH
113
+ # Outputs: condensed content to stdout
114
+ extract_condensed_skill() {
115
+ local skill_md="$1"
116
+ awk '
117
+ BEGIN { fm = 0 }
118
+ /^---$/ { fm++; next }
119
+ fm < 2 { next }
120
+ /^```/ {
121
+ in_code++
122
+ if (in_code % 2 == 1) { code_lines = 0; print; next }
123
+ }
124
+ in_code % 2 == 1 {
125
+ code_lines++
126
+ if (code_lines <= 8) print
127
+ else if (code_lines == 9) print " # ... (condensed)"
128
+ next
129
+ }
130
+ { print }
131
+ ' "$skill_md"
132
+ }
133
+
134
+ # Extract ultra-condensed instructions for always-in-context steering
135
+ # Strips all code blocks, keeps headers + first 3 lines per section
136
+ # Args: SKILL_MD_PATH
137
+ # Outputs: ultra-condensed content to stdout
138
+ extract_ultra_condensed_skill() {
139
+ local skill_md="$1"
140
+ awk '
141
+ BEGIN { section_lines = 0; fm = 0 }
142
+ /^---$/ { fm++; next }
143
+ fm < 2 { next }
144
+ /^```/ { in_code++; next }
145
+ in_code % 2 == 1 { next }
146
+ /^#+ / { print ""; print; section_lines = 0; next }
147
+ section_lines < 3 && NF > 0 { print; section_lines++; next }
148
+ NF == 0 { next }
149
+ ' "$skill_md"
150
+ }
151
+
152
+ # ── Inclusion Mode Helper ──────────────────────────────────────────────────
153
+
154
+ # Get the Kiro inclusion mode for a steering category
155
+ # Args: CATEGORY
156
+ # Outputs: inclusion mode (always, auto, fileMatch, manual)
157
+ _kiro_inclusion_for_category() {
158
+ local category="$1"
159
+ case "$category" in
160
+ # Always in context — essential for every conversation
161
+ core-workflow)
162
+ echo "always" ;;
163
+ # Quality skills — auto-load for test/debug files
164
+ quality)
165
+ echo "fileMatch" ;;
166
+ # Loaded on demand — too large or specialized for always
167
+ project-analyze|superpowers-advanced|misc|code-review|design|office|analysis)
168
+ echo "manual" ;;
169
+ # File type matching
170
+ testing)
171
+ echo "fileMatch" ;;
172
+ # Default
173
+ *)
174
+ echo "manual" ;;
175
+ esac
176
+ }
177
+
178
+ # ── Consolidated Steering Generator ───────────────────────────────────────
179
+
180
+ # Generate consolidated Kiro steering files from skills
181
+ # Groups skills by category, generates one Markdown file per category
182
+ # Args: STAGING_DIR, SKILLS_DIRS..., CATEGORY_FUNC
183
+ generate_consolidated_steering() {
184
+ local staging_dir="$1"
185
+ local category_func="$2"
186
+ shift 2
187
+ local skills_dirs=("$@")
188
+
189
+ ensure_dir "$staging_dir"
190
+
191
+ local tmpdir
192
+ tmpdir=$(mktemp -d)
193
+
194
+ # Collect category names
195
+ # Pre-define known categories in desired order
196
+ local categories=(core-workflow quality project-analyze office design testing misc superpowers-advanced)
197
+
198
+ # Initialize category content files
199
+ for cat in "${categories[@]}"; do
200
+ : > "$tmpdir/${cat}.txt"
201
+ done
202
+
203
+ # Group skills into categories
204
+ for skills_base in "${skills_dirs[@]}"; do
205
+ [[ ! -d "$skills_base" ]] && continue
206
+ for skill_dir in "$skills_base"/*/; do
207
+ [[ ! -d "$skill_dir" ]] && continue
208
+ local skill_name
209
+ skill_name=$(basename "$skill_dir")
210
+ [[ "$skill_name" == "_superpowers" ]] && continue
211
+ [[ -L "$skill_dir" ]] && continue
212
+
213
+ local skill_md="$skill_dir/SKILL.md"
214
+ [[ ! -f "$skill_md" ]] && continue
215
+
216
+ local category
217
+ category=$("$category_func" "$skill_name")
218
+
219
+ # Skip skills with no category (e.g., conventions handled by template)
220
+ [[ -z "$category" ]] && continue
221
+
222
+ # Determine condensation level based on inclusion mode
223
+ local inclusion
224
+ inclusion=$(_kiro_inclusion_for_category "$category")
225
+ local extract_func="extract_condensed_skill"
226
+ if [[ "$inclusion" == "always" ]]; then
227
+ extract_func="extract_ultra_condensed_skill"
228
+ fi
229
+
230
+ # Append content to category file using appropriate condensation
231
+ {
232
+ echo ""
233
+ echo "## Skill: $skill_name"
234
+ echo ""
235
+ $extract_func "$skill_md"
236
+ } >> "$tmpdir/${category}.txt"
237
+ done
238
+ done
239
+
240
+ # Generate one Markdown steering file per non-empty category
241
+ for cat in "${categories[@]}"; do
242
+ local cat_file="$tmpdir/${cat}.txt"
243
+ [[ ! -s "$cat_file" ]] && continue
244
+
245
+ local md_file="$staging_dir/atool-${cat}.md"
246
+
247
+ # Get inclusion mode for this category
248
+ local inclusion
249
+ inclusion=$(_kiro_inclusion_for_category "$cat")
250
+
251
+ # Determine extra front matter fields
252
+ local extra_front_matter=""
253
+ case "$cat" in
254
+ testing)
255
+ extra_front_matter=$'\n'"fileMatchPattern:"$'\n'" - \"*.test.*\""$'\n'" - \"*.spec.*\""
256
+ ;;
257
+ esac
258
+
259
+ # Write Markdown front matter
260
+ cat > "$md_file" <<MDFRONT
261
+ ---
262
+ inclusion: ${inclusion}${extra_front_matter}
263
+ name: atool-${cat}
264
+ description: "aTool ${cat} skills (consolidated)"
265
+ ---
266
+
267
+ MDFRONT
268
+
269
+ # For manual inclusion files, add a brief index of contained skills
270
+ if [[ "$inclusion" == "manual" ]]; then
271
+ echo "Enable this steering file in Kiro's steering panel to access these skills." >> "$md_file"
272
+ echo "" >> "$md_file"
273
+ fi
274
+
275
+ # Append content directly (no indentation)
276
+ cat "$cat_file" >> "$md_file"
277
+
278
+ log_info "Generated consolidated steering: atool-${cat}.md (${inclusion})"
279
+ done
280
+
281
+ # Cleanup temp directory
282
+ rm -rf "$tmpdir"
283
+ }
284
+
285
+ # ── Hook-Equivalent Steering ──────────────────────────────────────────────
286
+
287
+ # Generate session-context steering (replaces session-start hook)
288
+ # Args: STAGING_DIR, ATOOL_ROOT
289
+ generate_kiro_session_context() {
290
+ local staging_dir="$1"
291
+ local atool_root="$2"
292
+ local md_file="$staging_dir/atool-session-context.md"
293
+
294
+ local version="${ATOOL_VERSION:-unknown}"
295
+
296
+ # Scan installed skills (static snapshot)
297
+ local skills_catalog
298
+ skills_catalog=$(scan_skills_catalog "$HOME/.claude/skills" 2>/dev/null || echo "Skills not yet installed - run ./install.sh first")
299
+
300
+ # Write Markdown front matter
301
+ cat > "$md_file" <<MDFRONT
302
+ ---
303
+ inclusion: always
304
+ name: atool-session-context
305
+ description: "aTool session context: version, skill catalog, clarify rules, doc sync"
306
+ ---
307
+
308
+ MDFRONT
309
+
310
+ # Append version info
311
+ echo "You have aTool v${version} active." >> "$md_file"
312
+ echo "" >> "$md_file"
313
+
314
+ # Append skill catalog (no indentation)
315
+ cat >> "$md_file" <<< "$skills_catalog"
316
+
317
+ # Append doc-sync rules (clarify rules are in core-workflow's clarify-before-build skill — no duplicate)
318
+ cat >> "$md_file" <<'RULES'
319
+
320
+ ## Document Sync (HARD RULE)
321
+
322
+ Every time you modify a source file (.ts/.tsx/.js/.jsx/.vue/.svelte/.rs/.py/.go/.java/.kt/.swift/.dart/.ets/.sh):
323
+ 1. Check if README.md, COMPONENT.md, UI_STYLE.md, or docs/ need updating
324
+ 2. If docs are stale (source files newer than docs), update them BEFORE claiming task is done
325
+ 3. If docs are stale, the task is NOT complete — this is a gate, not a suggestion
326
+
327
+ ## On-Demand Skills
328
+
329
+ Additional skills available as steering files — enable in Kiro's steering panel (.kiro/steering/):
330
+ atool-code-review, atool-project-analyze, atool-design, atool-office, atool-superpowers-advanced, atool-misc
331
+ RULES
332
+
333
+ log_info "Generated hook-equivalent: atool-session-context.md"
334
+ }
335
+
336
+ # Generate sub-agent fallback instructions for Kiro
337
+ # Args: STAGING_DIR
338
+ generate_kiro_agent_fallback() {
339
+ local staging_dir="$1"
340
+ local md_file="$staging_dir/atool-agent-fallback.md"
341
+
342
+ cat > "$md_file" <<'MDCONTENT'
343
+ ---
344
+ inclusion: always
345
+ name: atool-agent-fallback
346
+ description: "Sequential analysis mode and agent coordination fallback for Kiro"
347
+ ---
348
+
349
+ ## Sequential Analysis Mode
350
+
351
+ Kiro does not support parallel sub-agents. When performing deep analysis:
352
+
353
+ 1. Analyze modules sequentially (one at a time)
354
+ 2. After completing each module, briefly summarize findings before moving to next
355
+ 3. For large projects (>200 files), suggest breaking analysis into multiple sessions
356
+
357
+ ## When to Use Sequential Mode
358
+
359
+ - When user asks to "analyze project" / "分析项目" / "deep analysis"
360
+ - When running project-analyze at L2/L3 depth
361
+ - When code review covers multiple modules
362
+
363
+ ## Code Review Adaptation
364
+
365
+ When `/code-review` is invoked in Kiro:
366
+ 1. Do NOT dispatch parallel sub-agents — analyze files sequentially in the main agent
367
+ 2. Execute only Critical-level checks (hardcoded credentials, SQL injection, empty catch, unreachable code, complexity >15, function length >120, layer violations, deprecated critical APIs)
368
+ 3. Output findings as inline Markdown feedback — do NOT generate CODE_REVIEW.md or summary.json
369
+ 4. If `.atool-docs/knowledge-graph.json` exists, use it for coupling analysis; otherwise skip dimension 7
370
+
371
+ ## Progress Reporting
372
+
373
+ After each module analysis, report:
374
+ - Module name and purpose
375
+ - Key findings
376
+ - Issues discovered
377
+ - Next module to analyze
378
+
379
+ ## Workflow Skills Adaptation
380
+
381
+ Skills that normally use parallel agents (smart-dispatch, subagent-driven-development) should:
382
+ - Execute tasks sequentially in a single agent
383
+ - Report progress after each task
384
+ - Ask user if they want to continue with remaining tasks
385
+ MDCONTENT
386
+
387
+ log_info "Generated hook-equivalent: atool-agent-fallback.md"
388
+ }
389
+
390
+ # ── Legacy File Cleanup ────────────────────────────────────────────────────
391
+
392
+ # Remove old per-skill steering files from staging
393
+ # Args: STAGING_DIR
394
+ cleanup_legacy_kiro_steering() {
395
+ local steering_dir="$1"
396
+ local legacy_count=0
397
+
398
+ # Clean up old .yaml steering files (pre-format-fix)
399
+ for f in "$steering_dir"/atool-*.yaml "$steering_dir"/superpowers-*.yaml; do
400
+ [[ ! -f "$f" ]] && continue
401
+ rm -f "$f"
402
+ legacy_count=$((legacy_count + 1))
403
+ done
404
+
405
+ # Clean up legacy per-skill .md files (keep consolidated + hook-equivalent)
406
+ for f in "$steering_dir"/atool-*.md "$steering_dir"/superpowers-*.md; do
407
+ [[ ! -f "$f" ]] && continue
408
+ local basename
409
+ basename=$(basename "$f")
410
+ # Keep consolidated files and hook-equivalent files
411
+ case "$basename" in
412
+ atool-core-workflow.md|atool-quality.md|atool-project-analyze.md|\
413
+ atool-office.md|atool-design.md|atool-testing.md|atool-misc.md|\
414
+ atool-code-review.md|atool-superpowers-advanced.md|\
415
+ atool-session-context.md|atool-agent-fallback.md)
416
+ continue ;;
417
+ *)
418
+ rm -f "$f"
419
+ legacy_count=$((legacy_count + 1))
420
+ ;;
421
+ esac
422
+ done
423
+
424
+ if [[ "$legacy_count" -gt 0 ]]; then
425
+ log_info "Cleaned up $legacy_count legacy per-skill steering files"
426
+ fi
427
+ }
428
+
429
+ # Clean up project-level .kiro/steering/ from old per-skill files
430
+ # Args: PROJECT_STEERING_DIR
431
+ cleanup_project_kiro_steering() {
432
+ local steering_dir="$1"
433
+ [[ ! -d "$steering_dir" ]] && return 0
434
+
435
+ local legacy_count=0
436
+ for f in "$steering_dir"/atool-*.md "$steering_dir"/superpowers-*.md; do
437
+ [[ ! -f "$f" ]] && continue
438
+ local basename
439
+ basename=$(basename "$f")
440
+ case "$basename" in
441
+ # Keep valid consolidated + hook-equivalent + conventions (template)
442
+ atool-core-workflow.md|atool-quality.md|atool-project-analyze.md|\
443
+ atool-conventions.md|\
444
+ atool-code-review.md|\
445
+ atool-office.md|atool-design.md|atool-testing.md|atool-misc.md|\
446
+ atool-superpowers-advanced.md|\
447
+ atool-session-context.md|atool-agent-fallback.md)
448
+ continue ;;
449
+ *)
450
+ rm -f "$f"
451
+ legacy_count=$((legacy_count + 1))
452
+ ;;
453
+ esac
454
+ done
455
+
456
+ if [[ "$legacy_count" -gt 0 ]]; then
457
+ log_info "Cleaned up $legacy_count legacy steering files from project"
458
+ fi
459
+
460
+ # Also clean up legacy .yaml files from pre-format-fix versions
461
+ for f in "$steering_dir"/atool-*.yaml "$steering_dir"/superpowers-*.yaml; do
462
+ [[ ! -f "$f" ]] && continue
463
+ rm -f "$f"
464
+ legacy_count=$((legacy_count + 1))
465
+ done
466
+ }
467
+
468
+ # ── Main Install ───────────────────────────────────────────────────────────
469
+
470
+ install_kiro() {
471
+ log_step "Installing to Kiro..."
472
+
473
+ # Check if Kiro is installed
474
+ if ! command -v kiro &>/dev/null; then
475
+ local _kiro_dir
476
+ _kiro_dir=$(get_kiro_config_dir 2>/dev/null)
477
+ if [[ ! -d "$_kiro_dir" ]]; then
478
+ log_warn "Kiro not found in PATH and config directory does not exist"
479
+ log_info "Install Kiro first: https://kiro.dev"
480
+ if ! confirm "Continue anyway?" "N"; then
481
+ return 0
482
+ fi
483
+ fi
484
+ fi
485
+
486
+ local atool_root="${ATOOL_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
487
+ local atool_skills_dir="$atool_root/skills"
488
+ local sp_dir=""
489
+
490
+ # Kiro loads steering from PROJECT-LEVEL .kiro/steering/
491
+ # Global install generates steering to a staging area
492
+ local kiro_config_dir
493
+ kiro_config_dir=$(get_kiro_config_dir)
494
+ local staging_dir="$kiro_config_dir/steering/.atool-staging"
495
+
496
+ # 0. Clean up legacy per-skill steering files
497
+ cleanup_legacy_kiro_steering "$staging_dir"
498
+
499
+ # 1. Generate consolidated aTool steering
500
+ log_step "Generating consolidated aTool Kiro steering (staging)..."
501
+ if [[ -d "$atool_skills_dir" ]]; then
502
+ generate_consolidated_steering "$staging_dir" "get_kiro_steering_category" "$atool_skills_dir"
503
+ fi
504
+
505
+ # 2. Generate consolidated Superpowers steering
506
+ log_step "Generating consolidated Superpowers Kiro steering (staging)..."
507
+ local sp_submodule="$atool_root/skills/_superpowers"
508
+
509
+ if [[ -d "$sp_submodule/skills" ]]; then
510
+ sp_dir="$sp_submodule"
511
+ log_info "Using local Superpowers submodule"
512
+ else
513
+ log_warn "Superpowers submodule not found, downloading..."
514
+ sp_dir="$HOME/.atool/cache/superpowers"
515
+ download_superpowers "$sp_dir"
516
+ fi
517
+
518
+ if [[ -d "$sp_dir/skills" ]]; then
519
+ generate_consolidated_steering "$staging_dir" "get_superpowers_kiro_category" "$sp_dir/skills"
520
+ else
521
+ log_warn "Superpowers not available - skipping Superpowers steering"
522
+ fi
523
+
524
+ # 3. Generate hook-equivalent steering (session context + agent fallback)
525
+ log_step "Generating Kiro hook-equivalent steering..."
526
+ generate_kiro_session_context "$staging_dir" "$atool_root"
527
+ generate_kiro_agent_fallback "$staging_dir"
528
+
529
+ # 4. Install MCP servers (global, works for Kiro)
530
+ install_mcp "kiro"
531
+
532
+ log_success "Kiro installation complete!"
533
+ echo ""
534
+ log_info "Installed:"
535
+ log_info " Steering (staging): $staging_dir/"
536
+ log_info " - Consolidated: ~9 categorized .md files (was 43 per-skill files)"
537
+ log_info " - Hook-equivalent: session context + agent fallback"
538
+ log_info " MCP: $(get_kiro_config_dir)/settings/mcp.json"
539
+ echo ""
540
+ log_warn "IMPORTANT: Kiro loads steering from PROJECT-LEVEL .kiro/steering/"
541
+ log_warn "Run './install.sh --project /path/to/project' to copy steering to a project."
542
+ log_warn "Existing files are updated via checksum comparison (no --force needed)."
543
+ }
@@ -0,0 +1,99 @@
1
+ #!/usr/bin/env bash
2
+ # aTool - lib/install-mcp.sh
3
+ # MCP configuration installation with JSON merge
4
+
5
+ set -euo pipefail
6
+
7
+ # These functions are sourced by the parent script, not run directly.
8
+ # common.sh must already be loaded.
9
+
10
+ # Install MCP servers to IDE configuration
11
+ # Args: IDE_TYPE (claude|cursor|kiro)
12
+ install_mcp() {
13
+ local ide_type="$1"
14
+ local atool_root="${ATOOL_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)}"
15
+
16
+ check_jq
17
+
18
+ local config_file=""
19
+ local mcp_key=""
20
+
21
+ case "$ide_type" in
22
+ claude)
23
+ config_file="$(get_claude_config_dir)/settings.json"
24
+ mcp_key=".mcpServers"
25
+ ;;
26
+ cursor)
27
+ config_file="$(get_cursor_config_dir)/mcp.json"
28
+ mcp_key=".mcpServers"
29
+ ;;
30
+ kiro)
31
+ config_file="$(get_kiro_config_dir)/settings/mcp.json"
32
+ mcp_key=".mcpServers"
33
+ ;;
34
+ *)
35
+ log_error "Unknown IDE type for MCP: $ide_type"
36
+ return 1
37
+ ;;
38
+ esac
39
+
40
+ local recommended="$atool_root/mcp/recommended.json"
41
+
42
+ if [[ ! -f "$recommended" ]]; then
43
+ log_error "MCP recommended config not found: $recommended"
44
+ return 1
45
+ fi
46
+
47
+ log_step "Installing MCP servers for $ide_type..."
48
+
49
+ # Ensure config directory exists
50
+ ensure_dir "$(dirname "$config_file")"
51
+
52
+ # Work on a temp copy to avoid corrupting the source file
53
+ local working_recommended
54
+ working_recommended=$(mktemp)
55
+ cp "$recommended" "$working_recommended"
56
+
57
+ if [[ -f "$config_file" ]]; then
58
+ # Merge: check for existing servers with same name
59
+ local existing_servers
60
+ existing_servers=$(jq -r '(.mcpServers // {}) | keys[]' "$config_file" 2>/dev/null || echo "")
61
+
62
+ local new_servers
63
+ new_servers=$(jq -r '(.mcpServers // {}) | keys[]' "$working_recommended" 2>/dev/null || echo "")
64
+
65
+ for server in $new_servers; do
66
+ if echo "$existing_servers" | grep -qx "$server"; then
67
+ if [[ "${ATOOL_FORCE:-0}" == "1" ]]; then
68
+ log_warn "MCP server '$server' exists - overwriting (--force)"
69
+ else
70
+ log_info "MCP server '$server' already configured - skipping (use --force to overwrite)"
71
+ # Remove from working copy to avoid merging
72
+ local tmp
73
+ tmp=$(mktemp)
74
+ jq "del(.mcpServers.\"$server\")" "$working_recommended" > "$tmp"
75
+ mv "$tmp" "$working_recommended"
76
+ fi
77
+ fi
78
+ done
79
+
80
+ # Merge
81
+ backup_file "$config_file"
82
+ local merged
83
+ merged=$(json_merge "$config_file" "$working_recommended")
84
+
85
+ if ! is_dry_run; then
86
+ echo "$merged" | jq '.' > "$config_file"
87
+ log_success "MCP config merged into $config_file"
88
+ else
89
+ log_info "[DRY-RUN] Would merge MCP config into $config_file"
90
+ fi
91
+ else
92
+ # No existing config, just copy
93
+ run_cmd cp "$working_recommended" "$config_file"
94
+ log_success "MCP config installed to $config_file"
95
+ fi
96
+
97
+ # Clean up temp file
98
+ rm -f "$working_recommended"
99
+ }