@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
package/install.sh ADDED
@@ -0,0 +1,603 @@
1
+ #!/usr/bin/env bash
2
+ # aTool - AI Developer Toolkit
3
+ # Main entry point - one command to configure all AI IDEs
4
+ set -euo pipefail
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7
+ ATOOL_ROOT="$SCRIPT_DIR"
8
+
9
+ # Load common library
10
+ # shellcheck source=lib/common.sh
11
+ source "$ATOOL_ROOT/lib/common.sh"
12
+
13
+ # ── Defaults ────────────────────────────────────────────────────────────────
14
+ ATOOL_YES="${ATOOL_YES:-0}"
15
+ ATOOL_DRY_RUN="${ATOOL_DRY_RUN:-0}"
16
+ ATOOL_FORCE="${ATOOL_FORCE:-0}"
17
+ INSTALL_TARGETS=()
18
+ PROJECT_PATH=""
19
+ ANALYZE_PROJECT=""
20
+
21
+ # ── Usage ───────────────────────────────────────────────────────────────────
22
+ usage() {
23
+ cat <<EOF
24
+ ${BOLD}aTool${NC} - AI Developer Toolkit v${ATOOL_VERSION}
25
+
26
+ ${BOLD}Usage:${NC}
27
+ ./install.sh [OPTIONS]
28
+
29
+ ${BOLD}Options:${NC}
30
+ --all Install to all detected IDEs (default)
31
+ --claude Install to Claude Code CLI only
32
+ --cursor Install to Cursor only
33
+ --kiro Install to Kiro only
34
+ --project PATH Initialize a project (detect stack + generate templates)
35
+ --analyze PATH Prepare a project for deep analysis (project-analyze skill)
36
+ --uninstall Remove all aTool configurations
37
+ --dry-run Preview mode - no changes made
38
+ --force Overwrite existing configs (default: merge + backup)
39
+ --update Update aTool to latest version
40
+ --check-updates Check for skill updates without installing
41
+ --yes Skip confirmation prompts
42
+ --version Show version
43
+ --help Show this help
44
+
45
+ ${BOLD}Examples:${NC}
46
+ ./install.sh # Install to all detected IDEs
47
+ ./install.sh --claude --yes # Install to Claude Code, no prompts
48
+ ./install.sh --project ./my-app # Initialize a project
49
+ ./install.sh --analyze ./my-app # Prepare for deep analysis
50
+ ./install.sh --dry-run --all # Preview what would be installed
51
+
52
+ EOF
53
+ }
54
+
55
+ # ── Argument Parsing ────────────────────────────────────────────────────────
56
+ parse_args() {
57
+ if [[ $# -eq 0 ]]; then
58
+ INSTALL_TARGETS=("all")
59
+ fi
60
+
61
+ while [[ $# -gt 0 ]]; do
62
+ case "$1" in
63
+ --all)
64
+ INSTALL_TARGETS=("all")
65
+ shift
66
+ ;;
67
+ --claude)
68
+ INSTALL_TARGETS+=("claude")
69
+ shift
70
+ ;;
71
+ --cursor)
72
+ INSTALL_TARGETS+=("cursor")
73
+ shift
74
+ ;;
75
+ --kiro)
76
+ INSTALL_TARGETS+=("kiro")
77
+ shift
78
+ ;;
79
+ --project)
80
+ PROJECT_PATH="$2"
81
+ shift 2
82
+ ;;
83
+ --analyze)
84
+ ANALYZE_PROJECT="$2"
85
+ shift 2
86
+ ;;
87
+ --uninstall)
88
+ do_uninstall
89
+ exit 0
90
+ ;;
91
+ --dry-run)
92
+ ATOOL_DRY_RUN=1
93
+ export ATOOL_DRY_RUN
94
+ shift
95
+ ;;
96
+ --force)
97
+ ATOOL_FORCE=1
98
+ export ATOOL_FORCE
99
+ shift
100
+ ;;
101
+ --update)
102
+ do_update
103
+ exit 0
104
+ ;;
105
+ --check-updates)
106
+ do_check_updates
107
+ exit 0
108
+ ;;
109
+ --yes)
110
+ ATOOL_YES=1
111
+ export ATOOL_YES
112
+ shift
113
+ ;;
114
+ --version|-v)
115
+ show_version
116
+ exit 0
117
+ ;;
118
+ --help|-h)
119
+ usage
120
+ exit 0
121
+ ;;
122
+ *)
123
+ log_error "Unknown option: $1"
124
+ usage
125
+ exit 1
126
+ ;;
127
+ esac
128
+ done
129
+ }
130
+
131
+ # ── Uninstall ──────────────────────────────────────────────────────────────
132
+
133
+ # Helper: Remove aTool MCP entries from an IDE config file (with backup)
134
+ # Args: CONFIG_FILE
135
+ _remove_mcp_entries() {
136
+ local config_file="$1"
137
+ if [[ ! -f "$config_file" ]]; then
138
+ return 0
139
+ fi
140
+
141
+ local mcp_names
142
+ mcp_names=$(jq -r '(.mcpServers // {}) | keys[]' "$config_file" 2>/dev/null || echo "")
143
+ if [[ -z "$mcp_names" ]]; then
144
+ return 0
145
+ fi
146
+
147
+ # Read aTool recommended MCP names
148
+ local recommended="$ATOOL_ROOT/mcp/recommended.json"
149
+ if [[ ! -f "$recommended" ]]; then
150
+ return 0
151
+ fi
152
+ local atool_mcps
153
+ atool_mcps=$(jq -r '.mcpServers | keys[]' "$recommended" 2>/dev/null || echo "")
154
+
155
+ local removed=0
156
+ local cleaned
157
+ cleaned=$(cat "$config_file")
158
+
159
+ for mcp_name in $atool_mcps; do
160
+ # Check if this MCP exists in the config
161
+ if echo "$mcp_names" | grep -qx "$mcp_name"; then
162
+ cleaned=$(echo "$cleaned" | jq "del(.mcpServers.\"$mcp_name\")")
163
+ removed=$((removed + 1))
164
+ fi
165
+ done
166
+
167
+ if [[ "$removed" -gt 0 ]]; then
168
+ backup_file "$config_file"
169
+ echo "$cleaned" | jq '.' > "$config_file"
170
+ log_info "Removed $removed aTool MCP entries from $config_file"
171
+ fi
172
+ }
173
+
174
+ do_uninstall() {
175
+ show_banner
176
+ log_step "Uninstalling aTool..."
177
+
178
+ if ! confirm "Remove all aTool configurations?" "N"; then
179
+ log_info "Uninstall cancelled."
180
+ exit 0
181
+ fi
182
+
183
+ local claude_config_dir
184
+ claude_config_dir=$(get_claude_config_dir)
185
+
186
+ # ── 1. Skills (dynamic discovery via .atool-skill-version markers) ──
187
+ local claude_skills_dir="$claude_config_dir/skills"
188
+ local skills_removed=0
189
+ if [[ -d "$claude_skills_dir" ]]; then
190
+ while IFS= read -r -d '' marker; do
191
+ local skill_dir
192
+ skill_dir=$(dirname "$marker")
193
+ local skill_name
194
+ skill_name=$(basename "$skill_dir")
195
+ run_cmd rm -rf "$skill_dir"
196
+ log_info "Removed skill: $skill_name"
197
+ skills_removed=$((skills_removed + 1))
198
+ done < <(find "$claude_skills_dir" -maxdepth 2 -name ".atool-skill-version" -print0 2>/dev/null)
199
+ fi
200
+ # Backward compatibility: clean up old skills without markers
201
+ local legacy_skills=("mobile-conventions")
202
+ for legacy in "${legacy_skills[@]}"; do
203
+ if [[ -d "$claude_skills_dir/$legacy" ]]; then
204
+ run_cmd rm -rf "$claude_skills_dir/$legacy"
205
+ log_info "Removed legacy skill: $legacy"
206
+ skills_removed=$((skills_removed + 1))
207
+ fi
208
+ done
209
+ log_info "Skills removed: $skills_removed"
210
+
211
+ # ── 2. Claude hooks (scripts + settings.json entries) ──
212
+ local claude_hooks_dir="$claude_config_dir/hooks"
213
+ local hook_scripts=("atool-session-start" "atool-prompt-guard" "atool-doc-sync-reminder")
214
+ for hook_script in "${hook_scripts[@]}"; do
215
+ if [[ -f "$claude_hooks_dir/$hook_script" ]]; then
216
+ run_cmd rm "$claude_hooks_dir/$hook_script"
217
+ log_info "Removed hook: $claude_hooks_dir/$hook_script"
218
+ fi
219
+ done
220
+
221
+ # Remove ALL aTool hook entries from settings.json (SessionStart, UserPromptSubmit, PostToolUse)
222
+ local claude_settings="$claude_config_dir/settings.json"
223
+ if [[ -f "$claude_settings" ]]; then
224
+ local cleaned="$claude_settings"
225
+ local changed=false
226
+
227
+ # SessionStart
228
+ local has_ss
229
+ has_ss=$(jq -r '.hooks.SessionStart[]?.hooks[]?.command // empty' "$claude_settings" 2>/dev/null | grep -c "atool-session-start" || echo "0")
230
+ if [[ "$has_ss" -gt 0 ]]; then
231
+ cleaned=$(echo "$cleaned" | jq 'del(.hooks.SessionStart[]?.hooks[]? | select(.command | test("atool-session-start")))')
232
+ changed=true
233
+ fi
234
+
235
+ # UserPromptSubmit
236
+ local has_ups
237
+ has_ups=$(jq -r '.hooks.UserPromptSubmit[]?.hooks[]?.command // empty' "$claude_settings" 2>/dev/null | grep -c "atool-prompt-guard" || echo "0")
238
+ if [[ "$has_ups" -gt 0 ]]; then
239
+ cleaned=$(echo "$cleaned" | jq 'del(.hooks.UserPromptSubmit[]?.hooks[]? | select(.command | test("atool-prompt-guard")))')
240
+ changed=true
241
+ fi
242
+
243
+ # PostToolUse
244
+ local has_ptu
245
+ has_ptu=$(jq -r '.hooks.PostToolUse[]?.hooks[]?.command // empty' "$claude_settings" 2>/dev/null | grep -c "atool-doc-sync-reminder" || echo "0")
246
+ if [[ "$has_ptu" -gt 0 ]]; then
247
+ cleaned=$(echo "$cleaned" | jq 'del(.hooks.PostToolUse[]?.hooks[]? | select(.command | test("atool-doc-sync-reminder")))')
248
+ changed=true
249
+ fi
250
+
251
+ if [[ "$changed" == true ]]; then
252
+ backup_file "$claude_settings"
253
+ echo "$cleaned" | jq '.' > "$claude_settings"
254
+ log_info "Removed aTool hook entries from settings.json"
255
+ fi
256
+ fi
257
+
258
+ # ── 3. Claude MCP servers ──
259
+ _remove_mcp_entries "$claude_settings"
260
+
261
+ # ── 4. Claude lib files ──
262
+ local claude_lib_dir="$claude_config_dir/lib"
263
+ local lib_files=("common.sh" "detect-stack.sh")
264
+ for lib_file in "${lib_files[@]}"; do
265
+ if [[ -f "$claude_lib_dir/$lib_file" ]]; then
266
+ run_cmd rm "$claude_lib_dir/$lib_file"
267
+ log_info "Removed: $claude_lib_dir/$lib_file"
268
+ fi
269
+ done
270
+
271
+ # ── 5. Cursor ──
272
+ local cursor_config_dir
273
+ cursor_config_dir=$(get_cursor_config_dir)
274
+ if [[ -d "$cursor_config_dir/rules" ]]; then
275
+ run_cmd rm -f "$cursor_config_dir/rules/atool-"*.mdc 2>/dev/null || true
276
+ log_info "Removed Cursor atool-*.mdc rules"
277
+ fi
278
+ if [[ -d "$cursor_config_dir/rules/.atool-staging" ]]; then
279
+ run_cmd rm -rf "$cursor_config_dir/rules/.atool-staging"
280
+ log_info "Removed Cursor staging dir"
281
+ fi
282
+ local cursor_hooks_dir="$cursor_config_dir/hooks"
283
+ for hook_script in "${hook_scripts[@]}"; do
284
+ if [[ -f "$cursor_hooks_dir/$hook_script" ]]; then
285
+ run_cmd rm "$cursor_hooks_dir/$hook_script"
286
+ log_info "Removed Cursor hook: $hook_script"
287
+ fi
288
+ done
289
+ _remove_mcp_entries "$cursor_config_dir/mcp.json"
290
+
291
+ # ── 6. Kiro ──
292
+ local kiro_config_dir
293
+ kiro_config_dir=$(get_kiro_config_dir)
294
+ if [[ -d "$kiro_config_dir/steering" ]]; then
295
+ run_cmd rm -f "$kiro_config_dir/steering/atool-"*.md 2>/dev/null || true
296
+ log_info "Removed Kiro atool-*.md steering files"
297
+ fi
298
+ if [[ -d "$kiro_config_dir/steering/.atool-staging" ]]; then
299
+ run_cmd rm -rf "$kiro_config_dir/steering/.atool-staging"
300
+ log_info "Removed Kiro staging dir"
301
+ fi
302
+ _remove_mcp_entries "$kiro_config_dir/settings/mcp.json"
303
+
304
+ # ── 7. Cache ──
305
+ if [[ -d "$HOME/.atool/cache" ]]; then
306
+ run_cmd rm -rf "$HOME/.atool/cache"
307
+ log_info "Removed: ~/.atool/cache"
308
+ fi
309
+
310
+ log_success "aTool uninstalled successfully."
311
+ log_info "Note: Superpowers skills (if installed) are preserved."
312
+ log_info "Note: jq binary and PATH entry (if installed) are preserved."
313
+ }
314
+
315
+ # ── Update ──────────────────────────────────────────────────────────────────
316
+ do_update() {
317
+ show_banner
318
+ log_step "Updating aTool..."
319
+
320
+ if [[ ! -d "$ATOOL_ROOT/.git" ]]; then
321
+ log_warn "Not a git repository. Download the latest release manually."
322
+ exit 1
323
+ fi
324
+
325
+ local old_version="${ATOOL_VERSION:-unknown}"
326
+
327
+ run_cmd git -C "$ATOOL_ROOT" pull --ff-only
328
+
329
+ # Update submodules
330
+ if [[ -f "$ATOOL_ROOT/.gitmodules" ]]; then
331
+ run_cmd git -C "$ATOOL_ROOT" submodule update --remote
332
+ log_info "Submodules updated"
333
+ fi
334
+
335
+ # Clear Superpowers cache to force re-download (fallback path)
336
+ if [[ -d "$HOME/.atool/cache/superpowers" ]]; then
337
+ run_cmd rm -rf "$HOME/.atool/cache/superpowers"
338
+ log_info "Superpowers cache cleared - will use submodule on next install"
339
+ fi
340
+
341
+ # Re-read version after pull
342
+ ATOOL_VERSION="$(cat "$ATOOL_ROOT/VERSION" 2>/dev/null || echo "unknown")"
343
+ export ATOOL_VERSION
344
+
345
+ # Re-run install to all detected IDEs (incremental — only changed components update)
346
+ log_step "Reapplying updates to all IDEs..."
347
+ echo ""
348
+
349
+ # Re-source ALL lib modules (may have changed in update)
350
+ # shellcheck source=lib/common.sh
351
+ source "$ATOOL_ROOT/lib/common.sh"
352
+ # shellcheck source=lib/install-skills.sh
353
+ source "$ATOOL_ROOT/lib/install-skills.sh"
354
+ # shellcheck source=lib/install-hooks.sh
355
+ source "$ATOOL_ROOT/lib/install-hooks.sh"
356
+ # shellcheck source=lib/install-mcp.sh
357
+ source "$ATOOL_ROOT/lib/install-mcp.sh"
358
+
359
+ local detected
360
+ detected=($(detect_ides))
361
+
362
+ if [[ ${#detected[@]} -eq 0 ]]; then
363
+ log_warn "No supported IDEs detected."
364
+ log_info "Run './install.sh --all' manually after installing an IDE."
365
+ return 0
366
+ fi
367
+
368
+ log_info "Detected IDEs: ${detected[*]}"
369
+ echo ""
370
+
371
+ for ide in "${detected[@]}"; do
372
+ install_to_ide "$ide"
373
+ echo ""
374
+ done
375
+
376
+ echo ""
377
+ log_success "Update complete: v${old_version} → v${ATOOL_VERSION}"
378
+ echo ""
379
+ log_info "Next steps:"
380
+ log_info " 1. Restart your IDE to load updated rules"
381
+ log_info " 2. Run './install.sh --project /path/to/project' to update project templates"
382
+ }
383
+
384
+ # ── Check Updates ──────────────────────────────────────────────────────────
385
+ do_check_updates() {
386
+ show_banner
387
+ log_step "Checking for skill updates..."
388
+ echo ""
389
+
390
+ local atool_root="${ATOOL_ROOT:-$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)}"
391
+ local claude_skills="$HOME/.claude/skills"
392
+ local atool_skills="$atool_root/skills"
393
+ local update_count=0
394
+
395
+ # Check aTool skills
396
+ if [[ -d "$atool_skills" ]]; then
397
+ for skill_dir in "$atool_skills"/*/; do
398
+ [[ ! -d "$skill_dir" ]] && continue
399
+ local skill_name
400
+ skill_name=$(basename "$skill_dir")
401
+ [[ "$skill_name" == "_superpowers" ]] && continue
402
+ [[ -L "$skill_dir" ]] && continue
403
+
404
+ local skill_md="$skill_dir/SKILL.md"
405
+ [[ ! -f "$skill_md" ]] && continue
406
+
407
+ local target_skill="$claude_skills/$skill_name"
408
+ local source_ver installed_ver
409
+ source_ver=$(get_atool_skill_version "$skill_dir")
410
+ installed_ver=$(get_installed_skill_version "$target_skill")
411
+
412
+ if [[ "$installed_ver" == "none" ]]; then
413
+ log_info " [NEW] $skill_name ($source_ver)"
414
+ update_count=$((update_count + 1))
415
+ elif [[ "$installed_ver" != "$source_ver" ]]; then
416
+ log_info " [UPDATE] $skill_name ($installed_ver -> $source_ver)"
417
+ update_count=$((update_count + 1))
418
+ fi
419
+ done
420
+ fi
421
+
422
+ # Check Superpowers
423
+ local sp_submodule="$atool_root/skills/_superpowers"
424
+ local sp_installed="$claude_skills"
425
+ if [[ -d "$sp_submodule/skills" ]]; then
426
+ local sp_ver
427
+ sp_ver=$(get_superpowers_version "$sp_submodule")
428
+ local sp_installed_ver="none"
429
+ # Check if any superpowers skill is installed
430
+ for sp_skill_dir in "$sp_submodule/skills"/*/; do
431
+ [[ ! -d "$sp_skill_dir" ]] && continue
432
+ local sp_skill_name
433
+ sp_skill_name=$(basename "$sp_skill_dir")
434
+ local target_sp="$sp_installed/$sp_skill_name"
435
+ local target_ver
436
+ target_ver=$(get_installed_skill_version "$target_sp")
437
+ local src_ver
438
+ src_ver=$(get_superpowers_skill_version "$sp_skill_dir")
439
+ if [[ "$target_ver" == "none" ]]; then
440
+ log_info " [NEW] superpowers:$sp_skill_name"
441
+ update_count=$((update_count + 1))
442
+ elif [[ "$target_ver" != "$src_ver" ]]; then
443
+ log_info " [UPDATE] superpowers:$sp_skill_name"
444
+ update_count=$((update_count + 1))
445
+ fi
446
+ done
447
+ fi
448
+
449
+ echo ""
450
+ if [[ "$update_count" -eq 0 ]]; then
451
+ log_success "All skills are up to date!"
452
+ else
453
+ log_info "$update_count update(s) available. Run './install.sh --claude' to apply."
454
+ fi
455
+ }
456
+
457
+ # ── Project Init ────────────────────────────────────────────────────────────
458
+ do_project_init() {
459
+ local project_path="$1"
460
+
461
+ if [[ ! -d "$project_path" ]]; then
462
+ log_error "Project path does not exist: $project_path"
463
+ exit 1
464
+ fi
465
+
466
+ # shellcheck source=lib/project-init.sh
467
+ source "$ATOOL_ROOT/lib/project-init.sh"
468
+ project_init "$project_path"
469
+ }
470
+
471
+ # ── IDE Installation ────────────────────────────────────────────────────────
472
+
473
+ # Source all install modules (they depend on common.sh which is already loaded)
474
+ # shellcheck source=lib/install-skills.sh
475
+ source "$ATOOL_ROOT/lib/install-skills.sh"
476
+ # shellcheck source=lib/install-hooks.sh
477
+ source "$ATOOL_ROOT/lib/install-hooks.sh"
478
+ # shellcheck source=lib/install-mcp.sh
479
+ source "$ATOOL_ROOT/lib/install-mcp.sh"
480
+
481
+ install_to_ide() {
482
+ local ide="$1"
483
+
484
+ case "$ide" in
485
+ claude)
486
+ # shellcheck source=lib/install-claude.sh
487
+ source "$ATOOL_ROOT/lib/install-claude.sh"
488
+ install_claude
489
+ ;;
490
+ cursor)
491
+ # shellcheck source=lib/install-cursor.sh
492
+ source "$ATOOL_ROOT/lib/install-cursor.sh"
493
+ install_cursor
494
+ ;;
495
+ kiro)
496
+ # shellcheck source=lib/install-kiro.sh
497
+ source "$ATOOL_ROOT/lib/install-kiro.sh"
498
+ install_kiro
499
+ ;;
500
+ *)
501
+ log_error "Unknown IDE: $ide"
502
+ ;;
503
+ esac
504
+ }
505
+
506
+ # ── Analyze Init ──────────────────────────────────────────────────────────
507
+ do_analyze_init() {
508
+ local project_path="$1"
509
+
510
+ if [[ ! -d "$project_path" ]]; then
511
+ log_error "Project path does not exist: $project_path"
512
+ exit 1
513
+ fi
514
+
515
+ local project_dir
516
+ project_dir="$(cd "$project_path" && pwd)"
517
+
518
+ log_step "Preparing project for deep analysis: $project_dir"
519
+
520
+ # Create .atool-docs directory structure
521
+ ensure_dir "$project_dir/.atool-docs/modules"
522
+
523
+ # Initialize analysis state if not exists
524
+ if [[ ! -f "$project_dir/.atool-docs/analysis-state.json" ]]; then
525
+ if ! is_dry_run; then
526
+ cat > "$project_dir/.atool-docs/analysis-state.json" <<STATE
527
+ {
528
+ "version": "1.0",
529
+ "analyzed_at": null,
530
+ "stack": null,
531
+ "files": {}
532
+ }
533
+ STATE
534
+ fi
535
+ log_success "Created: .atool-docs/analysis-state.json"
536
+ else
537
+ log_info "Analysis state already exists — incremental analysis will be used"
538
+ fi
539
+
540
+ echo ""
541
+ log_success "Analysis directory ready: .atool-docs/"
542
+ log_info "Deep analysis will be performed by project-analyze skill in your IDE"
543
+ log_info "Trigger with: /project-analyze (Claude Code)"
544
+ }
545
+
546
+ # ── Main ────────────────────────────────────────────────────────────────────
547
+ main() {
548
+ parse_args "$@"
549
+
550
+ show_banner
551
+
552
+ # Project mode
553
+ if [[ -n "$PROJECT_PATH" ]]; then
554
+ do_project_init "$PROJECT_PATH"
555
+ return 0
556
+ fi
557
+
558
+ # Analyze mode
559
+ if [[ -n "$ANALYZE_PROJECT" ]]; then
560
+ do_analyze_init "$ANALYZE_PROJECT"
561
+ return 0
562
+ fi
563
+
564
+ # Install mode
565
+ local targets=("${INSTALL_TARGETS[@]}")
566
+
567
+ # Default to "all" if no target specified
568
+ if [[ ${#targets[@]} -eq 0 ]]; then
569
+ targets=("all")
570
+ fi
571
+
572
+ if [[ " ${targets[*]} " == *" all "* ]]; then
573
+ # Detect and install to all available IDEs
574
+ local detected
575
+ detected=($(detect_ides))
576
+
577
+ if [[ ${#detected[@]} -eq 0 ]]; then
578
+ log_warn "No supported IDEs detected."
579
+ log_info "Supported: Claude Code CLI, Cursor, Kiro"
580
+ exit 1
581
+ fi
582
+
583
+ log_info "Detected IDEs: ${detected[*]}"
584
+ targets=("${detected[@]}")
585
+ fi
586
+
587
+ log_info "Installing to: ${targets[*]}"
588
+ echo ""
589
+
590
+ for ide in "${targets[@]}"; do
591
+ install_to_ide "$ide"
592
+ echo ""
593
+ done
594
+
595
+ log_success "Installation complete!"
596
+ echo ""
597
+ log_info "Next steps:"
598
+ log_info " 1. Restart your IDE"
599
+ log_info " 2. Run /atool-init in a new project to auto-configure"
600
+ log_info " 3. Check that MCP servers appear in your IDE's tool list"
601
+ }
602
+
603
+ main "$@"