@dtt_siye/atool 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +235 -0
- package/VERSION +1 -0
- package/agents/code-reviewer.md +29 -0
- package/bin/atool.js +235 -0
- package/bin/postinstall.js +23 -0
- package/hooks/doc-sync-reminder +155 -0
- package/hooks/hooks-cursor.json +37 -0
- package/hooks/hooks.json +37 -0
- package/hooks/prompt-guard +135 -0
- package/hooks/session-start +286 -0
- package/install.sh +603 -0
- package/lib/analyze-source.sh +1265 -0
- package/lib/common.sh +1041 -0
- package/lib/compute-importance.sh +598 -0
- package/lib/detect-stack.sh +354 -0
- package/lib/generate-visualization.sh +266 -0
- package/lib/install-claude.sh +43 -0
- package/lib/install-cursor.sh +281 -0
- package/lib/install-hooks.sh +285 -0
- package/lib/install-kiro.sh +543 -0
- package/lib/install-mcp.sh +99 -0
- package/lib/install-skills.sh +129 -0
- package/lib/knowledge-graph.sh +1014 -0
- package/lib/multi-dimensional-analysis.sh +413 -0
- package/lib/pre-scan.sh +1045 -0
- package/lib/project-init.sh +552 -0
- package/lib/visualization-template.html +545 -0
- package/mcp/recommended.json +24 -0
- package/package.json +39 -0
- package/skills/_superpowers/.claude-plugin/marketplace.json +20 -0
- package/skills/_superpowers/.claude-plugin/plugin.json +20 -0
- package/skills/_superpowers/.codex/INSTALL.md +67 -0
- package/skills/_superpowers/.cursor-plugin/plugin.json +25 -0
- package/skills/_superpowers/.gitattributes +18 -0
- package/skills/_superpowers/.github/FUNDING.yml +3 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/bug_report.md +52 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/feature_request.md +34 -0
- package/skills/_superpowers/.github/ISSUE_TEMPLATE/platform_support.md +23 -0
- package/skills/_superpowers/.github/PULL_REQUEST_TEMPLATE.md +87 -0
- package/skills/_superpowers/.opencode/INSTALL.md +83 -0
- package/skills/_superpowers/.opencode/plugins/superpowers.js +107 -0
- package/skills/_superpowers/CHANGELOG.md +13 -0
- package/skills/_superpowers/CODE_OF_CONDUCT.md +128 -0
- package/skills/_superpowers/GEMINI.md +2 -0
- package/skills/_superpowers/LICENSE +21 -0
- package/skills/_superpowers/README.md +187 -0
- package/skills/_superpowers/RELEASE-NOTES.md +1083 -0
- package/skills/_superpowers/agents/code-reviewer.md +48 -0
- package/skills/_superpowers/commands/brainstorm.md +5 -0
- package/skills/_superpowers/commands/execute-plan.md +5 -0
- package/skills/_superpowers/commands/write-plan.md +5 -0
- package/skills/_superpowers/docs/README.codex.md +126 -0
- package/skills/_superpowers/docs/README.opencode.md +130 -0
- package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-design.md +294 -0
- package/skills/_superpowers/docs/plans/2025-11-22-opencode-support-implementation.md +1095 -0
- package/skills/_superpowers/docs/plans/2025-11-28-skills-improvements-from-user-feedback.md +711 -0
- package/skills/_superpowers/docs/plans/2026-01-17-visual-brainstorming.md +571 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-01-22-document-review-system.md +301 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-02-19-visual-brainstorming-refactor.md +523 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-03-11-zero-dep-brainstorm-server.md +479 -0
- package/skills/_superpowers/docs/superpowers/plans/2026-03-23-codex-app-compatibility.md +564 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-01-22-document-review-system-design.md +136 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-02-19-visual-brainstorming-refactor-design.md +162 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-03-11-zero-dep-brainstorm-server-design.md +118 -0
- package/skills/_superpowers/docs/superpowers/specs/2026-03-23-codex-app-compatibility-design.md +244 -0
- package/skills/_superpowers/docs/testing.md +303 -0
- package/skills/_superpowers/docs/windows/polyglot-hooks.md +212 -0
- package/skills/_superpowers/gemini-extension.json +6 -0
- package/skills/_superpowers/hooks/hooks-cursor.json +10 -0
- package/skills/_superpowers/hooks/hooks.json +16 -0
- package/skills/_superpowers/hooks/run-hook.cmd +46 -0
- package/skills/_superpowers/hooks/session-start +57 -0
- package/skills/_superpowers/package.json +6 -0
- package/skills/_superpowers/skills/brainstorming/SKILL.md +164 -0
- package/skills/_superpowers/skills/brainstorming/scripts/frame-template.html +214 -0
- package/skills/_superpowers/skills/brainstorming/scripts/helper.js +88 -0
- package/skills/_superpowers/skills/brainstorming/scripts/server.cjs +354 -0
- package/skills/_superpowers/skills/brainstorming/scripts/start-server.sh +148 -0
- package/skills/_superpowers/skills/brainstorming/scripts/stop-server.sh +56 -0
- package/skills/_superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
- package/skills/_superpowers/skills/brainstorming/visual-companion.md +287 -0
- package/skills/_superpowers/skills/dispatching-parallel-agents/SKILL.md +182 -0
- package/skills/_superpowers/skills/executing-plans/SKILL.md +70 -0
- package/skills/_superpowers/skills/finishing-a-development-branch/SKILL.md +200 -0
- package/skills/_superpowers/skills/receiving-code-review/SKILL.md +213 -0
- package/skills/_superpowers/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/_superpowers/skills/requesting-code-review/code-reviewer.md +146 -0
- package/skills/_superpowers/skills/subagent-driven-development/SKILL.md +277 -0
- package/skills/_superpowers/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/_superpowers/skills/subagent-driven-development/implementer-prompt.md +113 -0
- package/skills/_superpowers/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/_superpowers/skills/systematic-debugging/CREATION-LOG.md +119 -0
- package/skills/_superpowers/skills/systematic-debugging/SKILL.md +296 -0
- package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/skills/_superpowers/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/_superpowers/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/_superpowers/skills/systematic-debugging/find-polluter.sh +63 -0
- package/skills/_superpowers/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/_superpowers/skills/systematic-debugging/test-academic.md +14 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-1.md +58 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-2.md +68 -0
- package/skills/_superpowers/skills/systematic-debugging/test-pressure-3.md +69 -0
- package/skills/_superpowers/skills/test-driven-development/SKILL.md +371 -0
- package/skills/_superpowers/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/skills/_superpowers/skills/using-git-worktrees/SKILL.md +218 -0
- package/skills/_superpowers/skills/using-superpowers/SKILL.md +115 -0
- package/skills/_superpowers/skills/using-superpowers/references/codex-tools.md +100 -0
- package/skills/_superpowers/skills/using-superpowers/references/gemini-tools.md +33 -0
- package/skills/_superpowers/skills/verification-before-completion/SKILL.md +139 -0
- package/skills/_superpowers/skills/writing-plans/SKILL.md +152 -0
- package/skills/_superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
- package/skills/_superpowers/skills/writing-skills/SKILL.md +655 -0
- package/skills/_superpowers/skills/writing-skills/anthropic-best-practices.md +1150 -0
- package/skills/_superpowers/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
- package/skills/_superpowers/skills/writing-skills/graphviz-conventions.dot +172 -0
- package/skills/_superpowers/skills/writing-skills/persuasion-principles.md +187 -0
- package/skills/_superpowers/skills/writing-skills/render-graphs.js +168 -0
- package/skills/_superpowers/skills/writing-skills/testing-skills-with-subagents.md +384 -0
- package/skills/_superpowers/tests/brainstorm-server/package-lock.json +36 -0
- package/skills/_superpowers/tests/brainstorm-server/package.json +10 -0
- package/skills/_superpowers/tests/brainstorm-server/server.test.js +427 -0
- package/skills/_superpowers/tests/brainstorm-server/windows-lifecycle.test.sh +351 -0
- package/skills/_superpowers/tests/brainstorm-server/ws-protocol.test.js +392 -0
- package/skills/_superpowers/tests/claude-code/README.md +158 -0
- package/skills/_superpowers/tests/claude-code/analyze-token-usage.py +168 -0
- package/skills/_superpowers/tests/claude-code/run-skill-tests.sh +187 -0
- package/skills/_superpowers/tests/claude-code/test-document-review-system.sh +177 -0
- package/skills/_superpowers/tests/claude-code/test-helpers.sh +202 -0
- package/skills/_superpowers/tests/claude-code/test-subagent-driven-development-integration.sh +314 -0
- package/skills/_superpowers/tests/claude-code/test-subagent-driven-development.sh +165 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/action-oriented.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/after-planning-flow.txt +17 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/claude-suggested-it.txt +11 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/i-know-what-sdd-means.txt +8 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/mid-conversation-execute-plan.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/please-use-brainstorming.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/skip-formalities.txt +3 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/subagent-driven-development-please.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/prompts/use-systematic-debugging.txt +1 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-all.sh +70 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-claude-describes-sdd.sh +100 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-extended-multiturn-test.sh +113 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-haiku-test.sh +144 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-multiturn-test.sh +143 -0
- package/skills/_superpowers/tests/explicit-skill-requests/run-test.sh +136 -0
- package/skills/_superpowers/tests/opencode/run-tests.sh +163 -0
- package/skills/_superpowers/tests/opencode/setup.sh +73 -0
- package/skills/_superpowers/tests/opencode/test-plugin-loading.sh +72 -0
- package/skills/_superpowers/tests/opencode/test-priority.sh +198 -0
- package/skills/_superpowers/tests/opencode/test-tools.sh +104 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/dispatching-parallel-agents.txt +8 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/executing-plans.txt +1 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/requesting-code-review.txt +3 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/systematic-debugging.txt +11 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/test-driven-development.txt +7 -0
- package/skills/_superpowers/tests/skill-triggering/prompts/writing-plans.txt +10 -0
- package/skills/_superpowers/tests/skill-triggering/run-all.sh +60 -0
- package/skills/_superpowers/tests/skill-triggering/run-test.sh +88 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/design.md +81 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/plan.md +172 -0
- package/skills/_superpowers/tests/subagent-driven-dev/go-fractals/scaffold.sh +45 -0
- package/skills/_superpowers/tests/subagent-driven-dev/run-test.sh +106 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/design.md +70 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/plan.md +222 -0
- package/skills/_superpowers/tests/subagent-driven-dev/svelte-todo/scaffold.sh +46 -0
- package/skills/ai-project-architecture/SKILL.md +632 -0
- package/skills/ai-project-architecture/reference/structure-rules.md +406 -0
- package/skills/ai-project-architecture/templates/compliance-report.md +300 -0
- package/skills/ai-project-architecture/templates/migration-plan.md +433 -0
- package/skills/ai-project-architecture/templates/verification-checklist.md +408 -0
- package/skills/android-conventions/SKILL.md +125 -0
- package/skills/atool-init/SKILL.md +141 -0
- package/skills/clarify-before-build/SKILL.md +107 -0
- package/skills/code-review/SKILL.md +406 -0
- package/skills/code-review/rules/architecture.md +285 -0
- package/skills/code-review/rules/coupling-cohesion.md +309 -0
- package/skills/code-review/rules/dead-code.md +115 -0
- package/skills/code-review/rules/deprecation-debt.md +279 -0
- package/skills/code-review/rules/duplication.md +104 -0
- package/skills/code-review/rules/error-security.md +143 -0
- package/skills/code-review/rules/maintainability.md +203 -0
- package/skills/code-review/rules/quality.md +158 -0
- package/skills/devops-conventions/SKILL.md +205 -0
- package/skills/doc-coauthoring/SKILL.md +392 -0
- package/skills/doc-standards-enforcer/SKILL.md +290 -0
- package/skills/doc-standards-enforcer/examples/valid-document-example.md +67 -0
- package/skills/doc-standards-enforcer/references/101-standards-summary.md +318 -0
- package/skills/doc-standards-enforcer/scripts/check_references.py +175 -0
- package/skills/doc-standards-enforcer/scripts/fix_common_issues.py +303 -0
- package/skills/doc-standards-enforcer/scripts/validate_doc_standards.py +332 -0
- package/skills/docx/LICENSE.txt +30 -0
- package/skills/docx/SKILL.md +200 -0
- package/skills/docx/docx-js.md +350 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/ooxml/scripts/pack.py +159 -0
- package/skills/docx/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/ooxml/scripts/validate.py +69 -0
- package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/ooxml/scripts/validation/base.py +951 -0
- package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/docx/ooxml.md +610 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/document.py +1276 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/utilities.py +374 -0
- package/skills/flutter-conventions/SKILL.md +70 -0
- package/skills/go-conventions/SKILL.md +230 -0
- package/skills/harmony-conventions/SKILL.md +156 -0
- package/skills/java-conventions/SKILL.md +277 -0
- package/skills/pdf/LICENSE.txt +30 -0
- package/skills/pdf/SKILL.md +297 -0
- package/skills/pdf/forms.md +205 -0
- package/skills/pdf/reference.md +612 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
- package/skills/pptx/LICENSE.txt +30 -0
- package/skills/pptx/SKILL.md +487 -0
- package/skills/pptx/html2pptx.md +625 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/ooxml/scripts/validate.py +69 -0
- package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
- package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
- package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
- package/skills/pptx/ooxml.md +427 -0
- package/skills/pptx/scripts/html2pptx.js +979 -0
- package/skills/pptx/scripts/inventory.py +1020 -0
- package/skills/pptx/scripts/rearrange.py +231 -0
- package/skills/pptx/scripts/replace.py +385 -0
- package/skills/pptx/scripts/thumbnail.py +450 -0
- package/skills/project-analyze/SKILL.md +270 -0
- package/skills/project-analyze/phases/phase0-discovery.md +278 -0
- package/skills/project-analyze/phases/phase0.5-prescan.md +139 -0
- package/skills/project-analyze/phases/phase1-inventory.md +94 -0
- package/skills/project-analyze/phases/phase2-deep-analysis.md +249 -0
- package/skills/project-analyze/phases/phase2a-l4-analysis.md +94 -0
- package/skills/project-analyze/phases/phase2b-l5-analysis.md +97 -0
- package/skills/project-analyze/phases/phase3-knowledge-graph.md +120 -0
- package/skills/project-analyze/phases/phase3a-multi-dimensional.md +61 -0
- package/skills/project-analyze/phases/phase4-code-quality.md +81 -0
- package/skills/project-analyze/phases/phase5-synthesis.md +284 -0
- package/skills/project-analyze/phases/phase6-validation.md +179 -0
- package/skills/project-analyze/prompts/code-review-agent.md +122 -0
- package/skills/project-analyze/prompts/deep-analysis-agent.md +107 -0
- package/skills/project-analyze/prompts/inventory-agent.md +67 -0
- package/skills/project-analyze/prompts/l4-analysis-agent.md +98 -0
- package/skills/project-analyze/rules/android.md +282 -0
- package/skills/project-analyze/rules/devops.md +443 -0
- package/skills/project-analyze/rules/generic.md +243 -0
- package/skills/project-analyze/rules/go.md +289 -0
- package/skills/project-analyze/rules/harmony.md +257 -0
- package/skills/project-analyze/rules/java.md +507 -0
- package/skills/project-analyze/rules/mobile-flutter.md +315 -0
- package/skills/project-analyze/rules/mobile-react-native.md +283 -0
- package/skills/project-analyze/rules/mobile-swift.md +323 -0
- package/skills/project-analyze/rules/python.md +317 -0
- package/skills/project-analyze/rules/rust-tauri.md +243 -0
- package/skills/project-analyze/rules/rust.md +296 -0
- package/skills/project-analyze/rules/web-nextjs.md +364 -0
- package/skills/project-analyze/rules/web-react.md +298 -0
- package/skills/project-analyze/rules/web-vue.md +378 -0
- package/skills/project-analyze/rules/web.md +390 -0
- package/skills/project-query/SKILL.md +224 -0
- package/skills/project-query/rules/query-templates.md +212 -0
- package/skills/python-conventions/SKILL.md +169 -0
- package/skills/react-native-conventions/SKILL.md +73 -0
- package/skills/requirements-writer/README.md +153 -0
- package/skills/requirements-writer/SKILL.md +341 -0
- package/skills/requirements-writer/examples/prd-outline-example.md +217 -0
- package/skills/requirements-writer/templates/module-prd-template.md +362 -0
- package/skills/requirements-writer/templates/prd-outline-template.md +185 -0
- package/skills/requirements-writer/templates/user-story-template.md +1125 -0
- package/skills/rust-conventions/SKILL.md +361 -0
- package/skills/smart-dispatch/SKILL.md +296 -0
- package/skills/smart-dispatch/implementer-prompt.md +146 -0
- package/skills/smart-dispatch/reviewer-prompt.md +199 -0
- package/skills/software-architecture/SKILL.md +278 -0
- package/skills/swift-conventions/SKILL.md +72 -0
- package/skills/ui-ux-pro/SKILL.md +140 -0
- package/skills/verification-before-completion/SKILL.md +119 -0
- package/skills/web-conventions/SKILL.md +259 -0
- package/skills/webapp-testing/LICENSE.txt +202 -0
- package/skills/webapp-testing/SKILL.md +97 -0
- package/skills/webapp-testing/examples/console_logging.py +35 -0
- package/skills/webapp-testing/examples/element_discovery.py +40 -0
- package/skills/webapp-testing/examples/static_html_automation.py +33 -0
- package/skills/webapp-testing/scripts/with_server.py +106 -0
- package/skills/writing-plans/SKILL.md +144 -0
- package/skills/xlsx/LICENSE.txt +30 -0
- package/skills/xlsx/SKILL.md +292 -0
- package/skills/xlsx/recalc.py +178 -0
- package/templates/CLAUDE.md.android +57 -0
- package/templates/CLAUDE.md.devops +50 -0
- package/templates/CLAUDE.md.generic +34 -0
- package/templates/CLAUDE.md.go +67 -0
- package/templates/CLAUDE.md.harmony +54 -0
- package/templates/CLAUDE.md.java +56 -0
- package/templates/CLAUDE.md.mobile-flutter +38 -0
- package/templates/CLAUDE.md.mobile-react-native +37 -0
- package/templates/CLAUDE.md.mobile-swift +40 -0
- package/templates/CLAUDE.md.python +65 -0
- package/templates/CLAUDE.md.rust +68 -0
- package/templates/CLAUDE.md.rust-tauri +120 -0
- package/templates/CLAUDE.md.web +63 -0
- package/templates/COMPONENT.md.android +58 -0
- package/templates/COMPONENT.md.devops +54 -0
- package/templates/COMPONENT.md.generic +35 -0
- package/templates/COMPONENT.md.go +59 -0
- package/templates/COMPONENT.md.harmony +63 -0
- package/templates/COMPONENT.md.java +69 -0
- package/templates/COMPONENT.md.mobile-flutter +56 -0
- package/templates/COMPONENT.md.mobile-react-native +55 -0
- package/templates/COMPONENT.md.mobile-swift +56 -0
- package/templates/COMPONENT.md.python +67 -0
- package/templates/COMPONENT.md.rust +57 -0
- package/templates/COMPONENT.md.rust-tauri +66 -0
- package/templates/COMPONENT.md.web +39 -0
- package/templates/README.md.android +71 -0
- package/templates/README.md.devops +68 -0
- package/templates/README.md.generic +39 -0
- package/templates/README.md.go +70 -0
- package/templates/README.md.harmony +72 -0
- package/templates/README.md.java +73 -0
- package/templates/README.md.mobile-flutter +69 -0
- package/templates/README.md.mobile-react-native +65 -0
- package/templates/README.md.mobile-swift +69 -0
- package/templates/README.md.monorepo +59 -0
- package/templates/README.md.python +66 -0
- package/templates/README.md.rust +69 -0
- package/templates/README.md.rust-tauri +149 -0
- package/templates/README.md.web +94 -0
- package/templates/UI_STYLE.md.android +74 -0
- package/templates/UI_STYLE.md.devops +50 -0
- package/templates/UI_STYLE.md.generic +31 -0
- package/templates/UI_STYLE.md.go +49 -0
- package/templates/UI_STYLE.md.harmony +71 -0
- package/templates/UI_STYLE.md.java +61 -0
- package/templates/UI_STYLE.md.mobile-flutter +70 -0
- package/templates/UI_STYLE.md.mobile-react-native +71 -0
- package/templates/UI_STYLE.md.mobile-swift +71 -0
- package/templates/UI_STYLE.md.python +58 -0
- package/templates/UI_STYLE.md.rust +52 -0
- package/templates/UI_STYLE.md.rust-tauri +102 -0
- package/templates/UI_STYLE.md.web +92 -0
- package/templates/cursor-rules.android.mdc +33 -0
- package/templates/cursor-rules.devops.mdc +32 -0
- package/templates/cursor-rules.generic.mdc +25 -0
- package/templates/cursor-rules.go.mdc +34 -0
- package/templates/cursor-rules.harmony.mdc +30 -0
- package/templates/cursor-rules.java.mdc +30 -0
- package/templates/cursor-rules.mobile-flutter.mdc +42 -0
- package/templates/cursor-rules.mobile-react-native.mdc +43 -0
- package/templates/cursor-rules.mobile-swift.mdc +42 -0
- package/templates/cursor-rules.python.mdc +33 -0
- package/templates/cursor-rules.rust-tauri.mdc +67 -0
- package/templates/cursor-rules.rust.mdc +30 -0
- package/templates/cursor-rules.web.mdc +30 -0
- package/templates/kiro-steering.android.md +39 -0
- package/templates/kiro-steering.devops.md +32 -0
- package/templates/kiro-steering.generic.md +28 -0
- package/templates/kiro-steering.go.md +41 -0
- package/templates/kiro-steering.harmony.md +36 -0
- package/templates/kiro-steering.java.md +37 -0
- package/templates/kiro-steering.mobile-flutter.md +73 -0
- package/templates/kiro-steering.mobile-react-native.md +71 -0
- package/templates/kiro-steering.mobile-swift.md +62 -0
- package/templates/kiro-steering.python.md +34 -0
- package/templates/kiro-steering.rust-tauri.md +50 -0
- package/templates/kiro-steering.rust.md +36 -0
- package/templates/kiro-steering.web.md +41 -0
|
@@ -0,0 +1,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
|
+
}
|