@zeyue0329/xiaoma-cli 1.0.49 → 1.0.66

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 (754) hide show
  1. package/.playwright-cli/console-2026-05-13T06-36-26-793Z.log +2 -0
  2. package/.playwright-cli/page-2026-05-13T06-36-27-725Z.yml +1 -0
  3. package/CLAUDE.md +79 -251
  4. package/LICENSE +30 -0
  5. package/README.md +127 -2
  6. package/XiaoMa-CLI-2026H2-/350/277/255/344/273/243/350/247/204/345/210/222.pptx +0 -0
  7. package/demo/xiaoma-bug-circle-resolve/SKILL.md +6 -0
  8. package/demo/xiaoma-bug-circle-resolve/workflow.md +254 -0
  9. package/demo/xiaoma-bug-resolve/SKILL.md +6 -0
  10. package/demo/xiaoma-bug-resolve/workflow.md +269 -0
  11. package/demo/xiaoma-prd-saas-zh/README.md +57 -0
  12. package/demo/xiaoma-prd-saas-zh/domain-research.md +128 -0
  13. package/demo/xiaoma-prd-saas-zh/epics.md +303 -0
  14. package/demo/xiaoma-prd-saas-zh/market-research-2026-q1.md +183 -0
  15. package/demo/xiaoma-prd-saas-zh/prd-bad-examples.md +268 -0
  16. package/demo/xiaoma-prd-saas-zh/prd.md +409 -0
  17. package/demo/xiaoma-prd-saas-zh/product-brief.md +97 -0
  18. package/demo/xiaoma-prd-saas-zh/validation-report.md +279 -0
  19. package/docs/roadshow/01-/351/241/271/347/233/256/346/246/202/350/247/210/344/270/216/346/236/266/346/236/204.md +189 -0
  20. package/docs/roadshow/02-/346/231/272/350/203/275/344/275/223/347/263/273/347/273/237/350/257/246/350/247/243.md +464 -0
  21. package/docs/roadshow/03-/346/231/272/350/203/275/344/275/223/344/272/244/344/272/222/346/265/201/347/250/213/345/233/276.md +334 -0
  22. package/docs/roadshow/04-/345/267/245/344/275/234/346/265/201/346/211/247/350/241/214/350/257/246/350/247/243.md +1038 -0
  23. package/docs/roadshow/05-/346/212/200/346/234/257/345/256/236/347/216/260/344/270/216/345/210/233/346/226/260/344/272/256/347/202/271.md +205 -0
  24. package/docs/roadshow/06-/350/267/257/346/274/224/346/200/273/347/273/223/344/270/216/346/274/224/347/244/272/345/273/272/350/256/256.md +167 -0
  25. package/media/doc1_fig1.png +0 -0
  26. package/media/doc1_fig2.png +0 -0
  27. package/media/doc1_fig3.png +0 -0
  28. package/media/doc1_fig4.png +0 -0
  29. package/media/doc2_fig1.png +0 -0
  30. package/media/doc2_fig2.png +0 -0
  31. package/media/doc2_fig3.png +0 -0
  32. package/media/doc2_fig4.png +0 -0
  33. package/media/doc3_fig1.png +0 -0
  34. package/media/doc3_fig2.png +0 -0
  35. package/media/doc3_fig3.png +0 -0
  36. package/media/doc3_fig4.png +0 -0
  37. package/media/doc4_fig1.png +0 -0
  38. package/media/doc4_fig2.png +0 -0
  39. package/media/doc4_fig3.png +0 -0
  40. package/media/doc5_fig1.png +0 -0
  41. package/media/doc5_fig2.png +0 -0
  42. package/media/doc5_fig3.png +0 -0
  43. package/package.json +50 -60
  44. package/src/core/module-help.csv +11 -0
  45. package/src/core/module.yaml +25 -0
  46. package/src/core/skills/xiaoma-advanced-elicitation/SKILL.md +6 -0
  47. package/src/core/skills/xiaoma-advanced-elicitation/methods.csv +51 -0
  48. package/src/core/skills/xiaoma-advanced-elicitation/workflow.md +135 -0
  49. package/src/core/skills/xiaoma-advanced-elicitation/xiaoma-skill-manifest.yaml +1 -0
  50. package/src/core/skills/xiaoma-brainstorming/SKILL.md +6 -0
  51. package/src/core/skills/xiaoma-brainstorming/brain-methods.csv +62 -0
  52. package/src/core/skills/xiaoma-brainstorming/steps/step-01-session-setup.md +214 -0
  53. package/src/core/skills/xiaoma-brainstorming/steps/step-01b-continue.md +124 -0
  54. package/src/core/skills/xiaoma-brainstorming/steps/step-02a-user-selected.md +229 -0
  55. package/src/core/skills/xiaoma-brainstorming/steps/step-02b-ai-recommended.md +239 -0
  56. package/src/core/skills/xiaoma-brainstorming/steps/step-02c-random-selection.md +211 -0
  57. package/src/core/skills/xiaoma-brainstorming/steps/step-02d-progressive-flow.md +266 -0
  58. package/src/core/skills/xiaoma-brainstorming/steps/step-03-technique-execution.md +401 -0
  59. package/src/core/skills/xiaoma-brainstorming/steps/step-04-idea-organization.md +305 -0
  60. package/src/core/skills/xiaoma-brainstorming/template.md +15 -0
  61. package/src/core/skills/xiaoma-brainstorming/workflow.md +53 -0
  62. package/src/core/skills/xiaoma-brainstorming/xiaoma-skill-manifest.yaml +1 -0
  63. package/src/core/skills/xiaoma-distillator/SKILL.md +178 -0
  64. package/src/core/skills/xiaoma-distillator/agents/distillate-compressor.md +116 -0
  65. package/src/core/skills/xiaoma-distillator/agents/round-trip-reconstructor.md +68 -0
  66. package/src/core/skills/xiaoma-distillator/resources/compression-rules.md +51 -0
  67. package/src/core/skills/xiaoma-distillator/resources/distillate-format-reference.md +227 -0
  68. package/src/core/skills/xiaoma-distillator/resources/splitting-strategy.md +78 -0
  69. package/src/core/skills/xiaoma-distillator/scripts/analyze_sources.py +300 -0
  70. package/src/core/skills/xiaoma-distillator/scripts/tests/test_analyze_sources.py +204 -0
  71. package/src/core/skills/xiaoma-distillator/xiaoma-skill-manifest.yaml +15 -0
  72. package/src/core/skills/xiaoma-editorial-review-prose/SKILL.md +6 -0
  73. package/src/core/skills/xiaoma-editorial-review-prose/workflow.md +81 -0
  74. package/src/core/skills/xiaoma-editorial-review-prose/xiaoma-skill-manifest.yaml +1 -0
  75. package/src/core/skills/xiaoma-editorial-review-structure/SKILL.md +6 -0
  76. package/src/core/skills/xiaoma-editorial-review-structure/workflow.md +174 -0
  77. package/src/core/skills/xiaoma-editorial-review-structure/xiaoma-skill-manifest.yaml +1 -0
  78. package/src/core/skills/xiaoma-help/SKILL.md +6 -0
  79. package/src/core/skills/xiaoma-help/workflow.md +88 -0
  80. package/src/core/skills/xiaoma-help/xiaoma-skill-manifest.yaml +1 -0
  81. package/src/core/skills/xiaoma-index-docs/SKILL.md +6 -0
  82. package/src/core/skills/xiaoma-index-docs/workflow.md +61 -0
  83. package/src/core/skills/xiaoma-index-docs/xiaoma-skill-manifest.yaml +1 -0
  84. package/src/core/skills/xiaoma-party-mode/SKILL.md +6 -0
  85. package/src/core/skills/xiaoma-party-mode/steps/step-01-agent-loading.md +138 -0
  86. package/src/core/skills/xiaoma-party-mode/steps/step-02-discussion-orchestration.md +187 -0
  87. package/src/core/skills/xiaoma-party-mode/steps/step-03-graceful-exit.md +167 -0
  88. package/src/core/skills/xiaoma-party-mode/workflow.md +190 -0
  89. package/src/core/skills/xiaoma-party-mode/xiaoma-skill-manifest.yaml +1 -0
  90. package/src/core/skills/xiaoma-review-adversarial-general/SKILL.md +6 -0
  91. package/src/core/skills/xiaoma-review-adversarial-general/workflow.md +32 -0
  92. package/src/core/skills/xiaoma-review-adversarial-general/xiaoma-skill-manifest.yaml +1 -0
  93. package/src/core/skills/xiaoma-review-edge-case-hunter/SKILL.md +6 -0
  94. package/src/core/skills/xiaoma-review-edge-case-hunter/workflow.md +62 -0
  95. package/src/core/skills/xiaoma-review-edge-case-hunter/xiaoma-skill-manifest.yaml +1 -0
  96. package/src/core/skills/xiaoma-shard-doc/SKILL.md +6 -0
  97. package/src/core/skills/xiaoma-shard-doc/workflow.md +100 -0
  98. package/src/core/skills/xiaoma-shard-doc/xiaoma-skill-manifest.yaml +1 -0
  99. package/src/core/tasks/xiaoma-create-prd/SKILL.md +6 -0
  100. package/src/core/tasks/xiaoma-create-prd/data/domain-complexity.csv +15 -0
  101. package/src/core/tasks/xiaoma-create-prd/data/prd-purpose.md +354 -0
  102. package/src/core/tasks/xiaoma-create-prd/data/project-types.csv +11 -0
  103. package/src/core/tasks/xiaoma-create-prd/data/upstream-input-contract.md +168 -0
  104. package/src/core/tasks/xiaoma-create-prd/steps-c/step-01-init.md +178 -0
  105. package/src/core/tasks/xiaoma-create-prd/steps-c/step-01b-continue.md +161 -0
  106. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02-discovery.md +208 -0
  107. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02b-vision.md +142 -0
  108. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02c-executive-summary.md +158 -0
  109. package/src/core/tasks/xiaoma-create-prd/steps-c/step-03-success.md +214 -0
  110. package/src/core/tasks/xiaoma-create-prd/steps-c/step-04-journeys.md +201 -0
  111. package/src/core/tasks/xiaoma-create-prd/steps-c/step-05-domain.md +194 -0
  112. package/src/core/tasks/xiaoma-create-prd/steps-c/step-06-innovation.md +211 -0
  113. package/src/core/tasks/xiaoma-create-prd/steps-c/step-07-project-type.md +222 -0
  114. package/src/core/tasks/xiaoma-create-prd/steps-c/step-08-scoping.md +216 -0
  115. package/src/core/tasks/xiaoma-create-prd/steps-c/step-09-functional.md +219 -0
  116. package/src/core/tasks/xiaoma-create-prd/steps-c/step-10-nonfunctional.md +230 -0
  117. package/src/core/tasks/xiaoma-create-prd/steps-c/step-11-polish.md +221 -0
  118. package/src/core/tasks/xiaoma-create-prd/steps-c/step-12-complete.md +115 -0
  119. package/src/core/tasks/xiaoma-create-prd/templates/prd-skeleton-reference.md +428 -0
  120. package/src/core/tasks/xiaoma-create-prd/templates/prd-template.md +108 -0
  121. package/src/core/tasks/xiaoma-create-prd/workflow.md +62 -0
  122. package/src/core/tasks/xiaoma-create-prd/xiaoma-skill-manifest.yaml +1 -0
  123. package/src/utility/agent-components/activation-rules.txt +6 -0
  124. package/src/utility/agent-components/activation-steps.txt +14 -0
  125. package/src/utility/agent-components/agent-command-header.md +1 -0
  126. package/src/utility/agent-components/agent.customize.template.yaml +41 -0
  127. package/src/utility/agent-components/handler-action.txt +4 -0
  128. package/src/utility/agent-components/handler-data.txt +5 -0
  129. package/src/utility/agent-components/handler-exec.txt +6 -0
  130. package/src/utility/agent-components/handler-multi.txt +13 -0
  131. package/src/utility/agent-components/handler-tmpl.txt +5 -0
  132. package/src/utility/agent-components/menu-handlers.txt +6 -0
  133. package/src/xmc/agents/analyst.agent.yaml +47 -0
  134. package/src/xmc/agents/architect.agent.yaml +29 -0
  135. package/src/xmc/agents/dev.agent.yaml +38 -0
  136. package/src/xmc/agents/pm.agent.yaml +44 -0
  137. package/src/xmc/agents/qa.agent.yaml +58 -0
  138. package/src/xmc/agents/quick-flow-solo-dev.agent.yaml +36 -0
  139. package/src/xmc/agents/sm.agent.yaml +53 -0
  140. package/src/xmc/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +224 -0
  141. package/src/xmc/agents/tech-writer/tech-writer.agent.yaml +46 -0
  142. package/src/xmc/agents/tech-writer/xiaoma-skill-manifest.yaml +3 -0
  143. package/src/xmc/agents/ux-designer.agent.yaml +27 -0
  144. package/src/xmc/agents/xiaoma-skill-manifest.yaml +39 -0
  145. package/src/xmc/data/project-context-template.md +26 -0
  146. package/src/xmc/module-help.csv +32 -0
  147. package/src/xmc/module.yaml +50 -0
  148. package/src/xmc/teams/default-party.csv +20 -0
  149. package/src/xmc/teams/team-fullstack.yaml +12 -0
  150. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/SKILL.md +6 -0
  151. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/checklist.md +28 -0
  152. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-01-init-and-validate.md +102 -0
  153. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-02-requirements-analysis.md +146 -0
  154. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-03-architecture-analysis.md +141 -0
  155. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-04-create-prd.md +101 -0
  156. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-05-validate-prd.md +159 -0
  157. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-06-create-epics.md +104 -0
  158. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-07-create-architecture.md +107 -0
  159. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-08-finalize.md +124 -0
  160. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/workflow.md +107 -0
  161. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/xiaoma-skill-manifest.yaml +3 -0
  162. package/src/xmc/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
  163. package/src/xmc/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
  164. package/src/xmc/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
  165. package/src/xmc/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
  166. package/src/xmc/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
  167. package/src/xmc/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
  168. package/src/xmc/workflows/1-analysis/research/research.template.md +29 -0
  169. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/SKILL.md +6 -0
  170. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-01-init.md +137 -0
  171. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
  172. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
  173. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
  174. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-05-technical-trends.md +234 -0
  175. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
  176. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/research.template.md +29 -0
  177. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/workflow.md +49 -0
  178. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/xiaoma-skill-manifest.yaml +1 -0
  179. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/SKILL.md +6 -0
  180. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/research.template.md +29 -0
  181. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-01-init.md +184 -0
  182. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-02-customer-behavior.md +239 -0
  183. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-03-customer-pain-points.md +251 -0
  184. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-04-customer-decisions.md +261 -0
  185. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-05-competitive-analysis.md +173 -0
  186. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/steps/step-06-research-completion.md +478 -0
  187. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/workflow.md +49 -0
  188. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/xiaoma-skill-manifest.yaml +1 -0
  189. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/SKILL.md +6 -0
  190. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/research.template.md +29 -0
  191. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-01-init.md +137 -0
  192. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-02-technical-overview.md +239 -0
  193. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
  194. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
  195. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-05-implementation-research.md +233 -0
  196. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
  197. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/workflow.md +50 -0
  198. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/xiaoma-skill-manifest.yaml +1 -0
  199. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/SKILL.md +6 -0
  200. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/product-brief.template.md +10 -0
  201. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-01-init.md +170 -0
  202. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-01b-continue.md +158 -0
  203. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-02-vision.md +193 -0
  204. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-03-users.md +196 -0
  205. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-04-metrics.md +199 -0
  206. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-05-scope.md +213 -0
  207. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-06-complete.md +159 -0
  208. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/workflow.md +55 -0
  209. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/xiaoma-skill-manifest.yaml +1 -0
  210. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/SKILL.md +88 -0
  211. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/agents/artifact-analyzer.md +60 -0
  212. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/agents/opportunity-reviewer.md +44 -0
  213. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/agents/skeptic-reviewer.md +44 -0
  214. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/agents/web-researcher.md +49 -0
  215. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/prompts/contextual-discovery.md +57 -0
  216. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/prompts/draft-and-review.md +86 -0
  217. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/prompts/finalize.md +75 -0
  218. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/prompts/guided-elicitation.md +70 -0
  219. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/resources/brief-template.md +60 -0
  220. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/xiaoma-manifest.json +17 -0
  221. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/xiaoma-skill-manifest.yaml +1 -0
  222. package/src/xmc/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
  223. package/src/xmc/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
  224. package/src/xmc/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
  225. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +224 -0
  226. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
  227. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
  228. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
  229. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
  230. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
  231. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
  232. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
  233. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
  234. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
  235. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
  236. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
  237. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
  238. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +232 -0
  239. package/src/xmc/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +65 -0
  240. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/SKILL.md +6 -0
  241. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-01-init.md +135 -0
  242. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-01b-continue.md +127 -0
  243. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-02-discovery.md +190 -0
  244. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-03-core-experience.md +217 -0
  245. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-04-emotional-response.md +220 -0
  246. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-05-inspiration.md +235 -0
  247. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-06-design-system.md +253 -0
  248. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-07-defining-experience.md +255 -0
  249. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-08-visual-foundation.md +225 -0
  250. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-09-design-directions.md +225 -0
  251. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-10-user-journeys.md +242 -0
  252. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-11-component-strategy.md +249 -0
  253. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-12-ux-patterns.md +238 -0
  254. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
  255. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-14-complete.md +171 -0
  256. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/ux-design-template.md +13 -0
  257. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/workflow.md +36 -0
  258. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/xiaoma-skill-manifest.yaml +1 -0
  259. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/SKILL.md +6 -0
  260. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-01-discovery.md +242 -0
  261. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
  262. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-02-review.md +245 -0
  263. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-03-edit.md +250 -0
  264. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-04-complete.md +165 -0
  265. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/workflow.md +63 -0
  266. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/xiaoma-skill-manifest.yaml +1 -0
  267. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/SKILL.md +6 -0
  268. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/domain-complexity.csv +15 -0
  269. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/prd-purpose.md +197 -0
  270. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/prd-quality-rubric.csv +14 -0
  271. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/project-types.csv +11 -0
  272. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-01-discovery.md +221 -0
  273. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
  274. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
  275. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
  276. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
  277. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
  278. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
  279. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
  280. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
  281. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
  282. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
  283. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
  284. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
  285. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
  286. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/workflow.md +62 -0
  287. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/xiaoma-skill-manifest.yaml +1 -0
  288. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/SKILL.md +6 -0
  289. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
  290. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
  291. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
  292. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
  293. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
  294. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
  295. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/templates/readiness-report-template.md +4 -0
  296. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/workflow.md +49 -0
  297. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/xiaoma-skill-manifest.yaml +1 -0
  298. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/SKILL.md +6 -0
  299. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/architecture-decision-template.md +12 -0
  300. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/data/domain-complexity.csv +13 -0
  301. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/data/project-types.csv +7 -0
  302. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-01-init.md +153 -0
  303. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-01b-continue.md +173 -0
  304. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-02-context.md +224 -0
  305. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-03-starter.md +329 -0
  306. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-04-decisions.md +318 -0
  307. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-05-patterns.md +359 -0
  308. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-06-structure.md +379 -0
  309. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-07-validation.md +359 -0
  310. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/steps/step-08-complete.md +76 -0
  311. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/workflow.md +38 -0
  312. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/xiaoma-skill-manifest.yaml +1 -0
  313. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/SKILL.md +6 -0
  314. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
  315. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
  316. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
  317. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
  318. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/templates/epics-template.md +61 -0
  319. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/workflow.md +53 -0
  320. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/xiaoma-skill-manifest.yaml +1 -0
  321. package/src/xmc/workflows/4-implementation/auto-story-pipeline/SKILL.md +6 -0
  322. package/src/xmc/workflows/4-implementation/auto-story-pipeline/checklist.md +22 -0
  323. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-01-init-and-validate.md +173 -0
  324. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-02-create-story.md +102 -0
  325. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-03-validate-story.md +107 -0
  326. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-04-develop-story.md +97 -0
  327. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-05-code-review.md +95 -0
  328. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-06-test-story.md +253 -0
  329. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-07-fix-and-retest.md +237 -0
  330. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-08-complete-story.md +114 -0
  331. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-09-finalize.md +69 -0
  332. package/src/xmc/workflows/4-implementation/auto-story-pipeline/workflow.md +89 -0
  333. package/src/xmc/workflows/4-implementation/auto-story-pipeline/xiaoma-skill-manifest.yaml +3 -0
  334. package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/SKILL.md +6 -0
  335. package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/workflow.md +333 -0
  336. package/src/xmc/workflows/4-implementation/auto-story-pipeline-batch/xiaoma-skill-manifest.yaml +3 -0
  337. package/src/xmc/workflows/4-implementation/xiaoma-code-review/SKILL.md +6 -0
  338. package/src/xmc/workflows/4-implementation/xiaoma-code-review/checklist.md +23 -0
  339. package/src/xmc/workflows/4-implementation/xiaoma-code-review/discover-inputs.md +88 -0
  340. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-01-gather-context.md +61 -0
  341. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-02-review.md +41 -0
  342. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-03-triage.md +50 -0
  343. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-04-present.md +38 -0
  344. package/src/xmc/workflows/4-implementation/xiaoma-code-review/workflow.md +54 -0
  345. package/src/xmc/workflows/4-implementation/xiaoma-code-review/xiaoma-skill-manifest.yaml +1 -0
  346. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/SKILL.md +6 -0
  347. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/checklist.md +288 -0
  348. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/workflow.md +267 -0
  349. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/xiaoma-skill-manifest.yaml +1 -0
  350. package/src/xmc/workflows/4-implementation/xiaoma-create-story/SKILL.md +6 -0
  351. package/src/xmc/workflows/4-implementation/xiaoma-create-story/checklist.md +357 -0
  352. package/src/xmc/workflows/4-implementation/xiaoma-create-story/discover-inputs.md +88 -0
  353. package/src/xmc/workflows/4-implementation/xiaoma-create-story/template.md +49 -0
  354. package/src/xmc/workflows/4-implementation/xiaoma-create-story/workflow.md +380 -0
  355. package/src/xmc/workflows/4-implementation/xiaoma-create-story/xiaoma-skill-manifest.yaml +1 -0
  356. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/SKILL.md +6 -0
  357. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/checklist.md +80 -0
  358. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/workflow.md +450 -0
  359. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/xiaoma-skill-manifest.yaml +1 -0
  360. package/src/xmc/workflows/4-implementation/xiaoma-retrospective/SKILL.md +6 -0
  361. package/src/xmc/workflows/4-implementation/xiaoma-retrospective/workflow.md +1479 -0
  362. package/src/xmc/workflows/4-implementation/xiaoma-retrospective/xiaoma-skill-manifest.yaml +1 -0
  363. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/SKILL.md +6 -0
  364. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/checklist.md +33 -0
  365. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/sprint-status-template.yaml +56 -0
  366. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/workflow.md +263 -0
  367. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/xiaoma-skill-manifest.yaml +1 -0
  368. package/src/xmc/workflows/4-implementation/xiaoma-sprint-status/SKILL.md +6 -0
  369. package/src/xmc/workflows/4-implementation/xiaoma-sprint-status/workflow.md +261 -0
  370. package/src/xmc/workflows/4-implementation/xiaoma-sprint-status/xiaoma-skill-manifest.yaml +1 -0
  371. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/SKILL.md +6 -0
  372. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/checklist.md +37 -0
  373. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-01-init-and-validate.md +152 -0
  374. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-02-run-requirements-pipeline.md +120 -0
  375. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-03-bridge-sprint-planning.md +119 -0
  376. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-04-run-story-pipeline.md +114 -0
  377. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/steps/step-05-finalize.md +194 -0
  378. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/workflow.md +108 -0
  379. package/src/xmc/workflows/5-full-pipeline/auto-full-pipeline/xiaoma-skill-manifest.yaml +3 -0
  380. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/SKILL.md +6 -0
  381. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/checklist.md +43 -0
  382. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-01-init-and-validate.md +155 -0
  383. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-02-create-epics.md +156 -0
  384. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-03-bridge-sprint-planning.md +143 -0
  385. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-04-batch-create-stories.md +309 -0
  386. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/steps/step-05-finalize.md +311 -0
  387. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/workflow.md +105 -0
  388. package/src/xmc/workflows/5-full-pipeline/auto-prd-to-stories/xiaoma-skill-manifest.yaml +3 -0
  389. package/src/xmc/workflows/xiaoma-document-project/SKILL.md +6 -0
  390. package/src/xmc/workflows/xiaoma-document-project/checklist.md +245 -0
  391. package/src/xmc/workflows/xiaoma-document-project/documentation-requirements.csv +12 -0
  392. package/src/xmc/workflows/xiaoma-document-project/instructions.md +128 -0
  393. package/src/xmc/workflows/xiaoma-document-project/templates/deep-dive-template.md +345 -0
  394. package/src/xmc/workflows/xiaoma-document-project/templates/index-template.md +169 -0
  395. package/src/xmc/workflows/xiaoma-document-project/templates/project-overview-template.md +103 -0
  396. package/src/xmc/workflows/xiaoma-document-project/templates/project-scan-report-schema.json +160 -0
  397. package/src/xmc/workflows/xiaoma-document-project/templates/source-tree-template.md +135 -0
  398. package/src/xmc/workflows/xiaoma-document-project/workflow.md +27 -0
  399. package/src/xmc/workflows/xiaoma-document-project/workflows/deep-dive-instructions.md +299 -0
  400. package/src/xmc/workflows/xiaoma-document-project/workflows/deep-dive-workflow.md +34 -0
  401. package/src/xmc/workflows/xiaoma-document-project/workflows/full-scan-instructions.md +1107 -0
  402. package/src/xmc/workflows/xiaoma-document-project/workflows/full-scan-workflow.md +34 -0
  403. package/src/xmc/workflows/xiaoma-document-project/xiaoma-skill-manifest.yaml +1 -0
  404. package/src/xmc/workflows/xiaoma-generate-project-context/SKILL.md +6 -0
  405. package/src/xmc/workflows/xiaoma-generate-project-context/project-context-template.md +21 -0
  406. package/src/xmc/workflows/xiaoma-generate-project-context/steps/step-01-discover.md +186 -0
  407. package/src/xmc/workflows/xiaoma-generate-project-context/steps/step-02-generate.md +321 -0
  408. package/src/xmc/workflows/xiaoma-generate-project-context/steps/step-03-complete.md +278 -0
  409. package/src/xmc/workflows/xiaoma-generate-project-context/workflow.md +43 -0
  410. package/src/xmc/workflows/xiaoma-generate-project-context/xiaoma-skill-manifest.yaml +1 -0
  411. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/SKILL.md +6 -0
  412. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/checklist.md +33 -0
  413. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/workflow.md +136 -0
  414. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/xiaoma-skill-manifest.yaml +1 -0
  415. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/SKILL.md +6 -0
  416. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-01-mode-detection.md +169 -0
  417. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-02-context-gathering.md +114 -0
  418. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-03-execute.md +107 -0
  419. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-04-self-check.md +107 -0
  420. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-05-adversarial-review.md +94 -0
  421. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-06-resolve-findings.md +144 -0
  422. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/workflow.md +38 -0
  423. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/xiaoma-skill-manifest.yaml +1 -0
  424. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/SKILL.md +6 -0
  425. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/steps/step-01-clarify-and-route.md +51 -0
  426. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/steps/step-02-plan.md +35 -0
  427. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/steps/step-03-implement.md +33 -0
  428. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/steps/step-04-review.md +50 -0
  429. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/steps/step-05-present.md +17 -0
  430. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/tech-spec-template.md +90 -0
  431. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/workflow.md +79 -0
  432. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/xiaoma-skill-manifest.yaml +1 -0
  433. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/SKILL.md +6 -0
  434. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/steps/step-01-understand.md +185 -0
  435. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/steps/step-02-investigate.md +140 -0
  436. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/steps/step-03-generate.md +123 -0
  437. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/steps/step-04-review.md +195 -0
  438. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/tech-spec-template.md +74 -0
  439. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/workflow.md +73 -0
  440. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/xiaoma-skill-manifest.yaml +1 -0
  441. package/src/xpm/agents/patent-advisor.agent.yaml +30 -0
  442. package/src/xpm/module.yaml +26 -0
  443. package/src/xpm/skills/xiaoma-patent-mining/SKILL.md +6 -0
  444. package/src/xpm/skills/xiaoma-patent-mining/references/disclosure-template.md +84 -0
  445. package/src/xpm/skills/xiaoma-patent-mining/references/docx-format-spec.md +183 -0
  446. package/src/xpm/skills/xiaoma-patent-mining/references/mining-principles.md +168 -0
  447. package/src/xpm/skills/xiaoma-patent-mining/scripts/md2docx.js +777 -0
  448. package/src/xpm/skills/xiaoma-patent-mining/steps/step-01-project-analysis.md +65 -0
  449. package/src/xpm/skills/xiaoma-patent-mining/steps/step-02-patent-mining.md +87 -0
  450. package/src/xpm/skills/xiaoma-patent-mining/steps/step-03-disclosure-writing.md +110 -0
  451. package/src/xpm/skills/xiaoma-patent-mining/steps/step-04-ai-taste-removal.md +85 -0
  452. package/src/xpm/skills/xiaoma-patent-mining/steps/step-05-docx-generation.md +111 -0
  453. package/src/xpm/skills/xiaoma-patent-mining/workflow.md +94 -0
  454. package/src/xpm/skills/xiaoma-patent-mining/xiaoma-skill-manifest.yaml +1 -0
  455. package/tools/cli/README.md +60 -0
  456. package/tools/cli/commands/install.js +87 -0
  457. package/tools/cli/commands/status.js +65 -0
  458. package/tools/cli/commands/uninstall.js +167 -0
  459. package/tools/cli/external-official-modules.yaml +6 -0
  460. package/tools/cli/installers/install-messages.yaml +9 -0
  461. package/tools/cli/installers/lib/core/config-collector.js +1285 -0
  462. package/tools/cli/installers/lib/core/custom-module-cache.js +260 -0
  463. package/tools/cli/installers/lib/core/dependency-resolver.js +742 -0
  464. package/tools/cli/installers/lib/core/detector.js +223 -0
  465. package/tools/cli/installers/lib/core/ide-config-manager.js +157 -0
  466. package/tools/cli/installers/lib/core/installer.js +3216 -0
  467. package/tools/cli/installers/lib/core/manifest-generator.js +1374 -0
  468. package/tools/cli/installers/lib/core/manifest.js +1042 -0
  469. package/tools/cli/installers/lib/custom/handler.js +358 -0
  470. package/tools/cli/installers/lib/ide/_base-ide.js +673 -0
  471. package/tools/cli/installers/lib/ide/_config-driven.js +1058 -0
  472. package/tools/cli/installers/lib/ide/manager.js +304 -0
  473. package/tools/cli/installers/lib/ide/platform-codes.js +100 -0
  474. package/tools/cli/installers/lib/ide/platform-codes.yaml +321 -0
  475. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +181 -0
  476. package/tools/cli/installers/lib/ide/shared/module-injections.js +136 -0
  477. package/tools/cli/installers/lib/ide/shared/path-utils.js +364 -0
  478. package/tools/cli/installers/lib/ide/shared/skill-manifest.js +90 -0
  479. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +368 -0
  480. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +179 -0
  481. package/tools/cli/installers/lib/ide/shared/xiaoma-artifacts.js +181 -0
  482. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +14 -0
  483. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +8 -0
  484. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +15 -0
  485. package/tools/cli/installers/lib/ide/templates/combined/default-task.md +10 -0
  486. package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +10 -0
  487. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +6 -0
  488. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +14 -0
  489. package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +11 -0
  490. package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +11 -0
  491. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +16 -0
  492. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +14 -0
  493. package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +16 -0
  494. package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +9 -0
  495. package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +9 -0
  496. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +7 -0
  497. package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +15 -0
  498. package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +13 -0
  499. package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +13 -0
  500. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +16 -0
  501. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +16 -0
  502. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +9 -0
  503. package/tools/cli/installers/lib/ide/templates/combined/trae.md +9 -0
  504. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +10 -0
  505. package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
  506. package/tools/cli/installers/lib/message-loader.js +83 -0
  507. package/tools/cli/installers/lib/modules/external-manager.js +136 -0
  508. package/tools/cli/installers/lib/modules/manager.js +1387 -0
  509. package/tools/cli/lib/activation-builder.js +165 -0
  510. package/tools/cli/lib/agent/compiler.js +516 -0
  511. package/tools/cli/lib/agent/installer.js +680 -0
  512. package/tools/cli/lib/agent/template-engine.js +152 -0
  513. package/tools/cli/lib/agent-analyzer.js +97 -0
  514. package/tools/cli/lib/agent-party-generator.js +203 -0
  515. package/tools/cli/lib/cli-utils.js +182 -0
  516. package/tools/cli/lib/config.js +213 -0
  517. package/tools/cli/lib/file-ops.js +204 -0
  518. package/tools/cli/lib/platform-codes.js +116 -0
  519. package/tools/cli/lib/project-root.js +75 -0
  520. package/tools/cli/lib/prompts.js +809 -0
  521. package/tools/cli/lib/ui.js +1960 -0
  522. package/tools/cli/lib/xml-handler.js +177 -0
  523. package/tools/cli/lib/xml-to-markdown.js +82 -0
  524. package/tools/{yaml-format.js → cli/lib/yaml-format.js} +39 -71
  525. package/tools/cli/lib/yaml-xml-builder.js +570 -0
  526. package/tools/cli/xiaoma-cli.js +106 -0
  527. package/tools/lib/xml-utils.js +13 -0
  528. package/tools/platform-codes.yaml +157 -0
  529. package/tools/schema/agent.js +489 -0
  530. package/tools/validate-svg-changes.sh +356 -0
  531. package/tools/xiaoma-npx-wrapper.js +18 -24
  532. package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_1_/351/235/242/345/220/221AI/346/231/272/350/203/275/344/275/223/347/232/204/345/244/232/351/200/232/351/201/223/344/276/235/350/265/226_20260318.md +483 -0
  533. package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_2_/345/237/272/344/272/216/351/205/215/347/275/256/351/251/261/345/212/250/347/232/204/350/267/250/345/271/263/345/217/260IDE/346/231/272/350/203/275_20260318.md +592 -0
  534. package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_3_AI/346/231/272/350/203/275/344/275/223/345/243/260/346/230/216/345/274/217/345/256/232/344/271/211/347/232/204/347/274/226/350/257/221/346/265/201/346/260/264_20260318.md +624 -0
  535. package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_4_/345/237/272/344/272/216/345/223/210/345/270/214/346/214/207/347/272/271/347/232/204/346/231/272/350/203/275/344/275/223/351/231/204/345/261/236/350/265/204/346/272/220/351/200/211_20260318.md +628 -0
  536. package//344/270/223/345/210/251/344/272/244/345/272/225/344/271/246_5_AI/346/231/272/350/203/275/344/275/223/350/247/246/345/217/221/346/214/207/344/273/244/347/232/204/345/244/215/345/220/210/346/240/274/345/274/217/346/240/241_20260318.md +652 -0
  537. package/.claude/agents/tech-translator.md +0 -124
  538. package/.claude/settings.local.json +0 -37
  539. package/.idea/XiaoMa-Cli.iml +0 -9
  540. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  541. package/.idea/misc.xml +0 -6
  542. package/.idea/modules.xml +0 -8
  543. package/.idea/prettier.xml +0 -6
  544. package/.idea/vcs.xml +0 -7
  545. package/.idea/workspace.xml +0 -117
  546. package/.xiaoma-core/.coordinator-state.json +0 -19
  547. package/JAVA-BACKEND-COMMANDS-REFERENCE.md +0 -300
  548. package/JAVA-BACKEND-ITERATION-GUIDE.md +0 -2116
  549. package/common/tasks/create-doc.md +0 -103
  550. package/common/tasks/execute-checklist.md +0 -88
  551. package/common/utils/bmad-doc-template.md +0 -327
  552. package/common/utils/workflow-management.md +0 -71
  553. package/dist/agents/analyst.txt +0 -6308
  554. package/dist/agents/architect.txt +0 -5046
  555. package/dist/agents/automation-orchestrator.txt +0 -396
  556. package/dist/agents/dev.txt +0 -1180
  557. package/dist/agents/full-requirement-orchestrator.txt +0 -505
  558. package/dist/agents/pm.txt +0 -3078
  559. package/dist/agents/po.txt +0 -1358
  560. package/dist/agents/qa.txt +0 -2002
  561. package/dist/agents/sm.txt +0 -3044
  562. package/dist/agents/ux-expert.txt +0 -707
  563. package/dist/agents/workflow-executor.txt +0 -1029
  564. package/dist/agents/workflow-helper.txt +0 -93
  565. package/dist/agents/xiaoma-master.txt +0 -9008
  566. package/dist/agents/xiaoma-orchestrator.txt +0 -1523
  567. package/dist/teams/team-all.txt +0 -23101
  568. package/dist/teams/team-fullstack-with-database.txt +0 -25076
  569. package/dist/teams/team-fullstack.txt +0 -15820
  570. package/dist/teams/team-ide-minimal.txt +0 -8285
  571. package/dist/teams/team-no-ui.txt +0 -14368
  572. package/docs/GUIDING-PRINCIPLES.md +0 -91
  573. package/docs/architecture/workflow-coordinator-implementation.md +0 -1188
  574. package/docs/architecture-sharding-modification.md +0 -623
  575. package/docs/automated-requirements-analysis-outputs.md +0 -896
  576. package/docs/core-architecture.md +0 -219
  577. package/docs/enhanced-ide-development-workflow.md +0 -248
  578. package/docs/prd/workflow-coordinator-prd.md +0 -1214
  579. package/docs/user-guide.md +0 -530
  580. package/docs/versioning-and-releases.md +0 -155
  581. package/docs/versions.md +0 -48
  582. package/docs/working-in-the-brownfield.md +0 -597
  583. package/tools/api-server.js +0 -367
  584. package/tools/builders/web-builder.js +0 -830
  585. package/tools/bump-all-versions.js +0 -133
  586. package/tools/cli.js +0 -157
  587. package/tools/flattener/aggregate.js +0 -94
  588. package/tools/flattener/binary.js +0 -83
  589. package/tools/flattener/discovery.js +0 -79
  590. package/tools/flattener/files.js +0 -35
  591. package/tools/flattener/ignoreRules.js +0 -177
  592. package/tools/flattener/main.js +0 -673
  593. package/tools/flattener/projectRoot.js +0 -211
  594. package/tools/flattener/prompts.js +0 -46
  595. package/tools/flattener/stats.helpers.js +0 -424
  596. package/tools/flattener/stats.js +0 -80
  597. package/tools/flattener/test-matrix.js +0 -468
  598. package/tools/flattener/xml.js +0 -96
  599. package/tools/installer/README.md +0 -8
  600. package/tools/installer/bin/xiaoma.js +0 -477
  601. package/tools/installer/config/ide-agent-config.yaml +0 -58
  602. package/tools/installer/config/install.config.yaml +0 -164
  603. package/tools/installer/lib/config-loader.js +0 -286
  604. package/tools/installer/lib/file-manager.js +0 -446
  605. package/tools/installer/lib/ide-base-setup.js +0 -238
  606. package/tools/installer/lib/ide-setup.js +0 -2027
  607. package/tools/installer/lib/installer.js +0 -2333
  608. package/tools/installer/lib/memory-profiler.js +0 -235
  609. package/tools/installer/lib/module-manager.js +0 -116
  610. package/tools/installer/lib/resource-locator.js +0 -334
  611. package/tools/installer/package-lock.json +0 -715
  612. package/tools/installer/package.json +0 -44
  613. package/tools/lib/dependency-resolver.js +0 -186
  614. package/tools/lib/yaml-utils.js +0 -34
  615. package/tools/md-assets/web-agent-startup-instructions.md +0 -39
  616. package/tools/preview-release-notes.js +0 -74
  617. package/tools/setup-hooks.sh +0 -37
  618. package/tools/shared/bannerArt.js +0 -105
  619. package/tools/sync-installer-version.js +0 -41
  620. package/tools/sync-version.sh +0 -23
  621. package/tools/upgraders/v3-to-v4-upgrader.js +0 -753
  622. package/tools/version-bump.js +0 -100
  623. package/tools/workflow-coordinator/README.md +0 -38
  624. package/tools/workflow-coordinator/USAGE.md +0 -548
  625. package/tools/workflow-coordinator/package-lock.json +0 -4868
  626. package/tools/workflow-coordinator/package.json +0 -35
  627. package/tools/workflow-coordinator/src/api/server.js +0 -207
  628. package/tools/workflow-coordinator/src/controller/workflow-controller.js +0 -263
  629. package/tools/workflow-coordinator/src/index.js +0 -113
  630. package/tools/workflow-coordinator/src/parser/workflow-parser.js +0 -144
  631. package/tools/workflow-coordinator/src/utils/state-manager.js +0 -59
  632. package/tools/workflow-coordinator/src/utils/validator.js +0 -86
  633. package/tools/workflow-coordinator/test/integration-test.js +0 -266
  634. package/tools/workflow-coordinator/test/quick-test.js +0 -127
  635. package/xiaoma-core/agent-teams/team-all.yaml +0 -15
  636. package/xiaoma-core/agent-teams/team-fullstack-with-database.yaml +0 -27
  637. package/xiaoma-core/agent-teams/team-fullstack.yaml +0 -19
  638. package/xiaoma-core/agent-teams/team-ide-minimal.yaml +0 -11
  639. package/xiaoma-core/agent-teams/team-no-ui.yaml +0 -14
  640. package/xiaoma-core/agents/analyst.md +0 -91
  641. package/xiaoma-core/agents/architect.md +0 -88
  642. package/xiaoma-core/agents/automated-fix-validator.yaml +0 -579
  643. package/xiaoma-core/agents/automated-quality-validator.yaml +0 -549
  644. package/xiaoma-core/agents/automation-orchestrator.md +0 -353
  645. package/xiaoma-core/agents/dev.md +0 -144
  646. package/xiaoma-core/agents/enhanced-workflow-orchestrator.yaml +0 -304
  647. package/xiaoma-core/agents/full-requirement-orchestrator.md +0 -462
  648. package/xiaoma-core/agents/global-requirements-auditor.yaml +0 -520
  649. package/xiaoma-core/agents/intelligent-template-adapter.yaml +0 -389
  650. package/xiaoma-core/agents/issue-dispatcher.yaml +0 -627
  651. package/xiaoma-core/agents/master-execution-engine.yaml +0 -543
  652. package/xiaoma-core/agents/pm.md +0 -85
  653. package/xiaoma-core/agents/po.md +0 -77
  654. package/xiaoma-core/agents/qa.md +0 -88
  655. package/xiaoma-core/agents/requirements-coverage-auditor.yaml +0 -373
  656. package/xiaoma-core/agents/sm.md +0 -125
  657. package/xiaoma-core/agents/ux-expert.md +0 -67
  658. package/xiaoma-core/agents/workflow-executor.md +0 -1031
  659. package/xiaoma-core/agents/workflow-helper.md +0 -481
  660. package/xiaoma-core/agents/xiaoma-master.md +0 -108
  661. package/xiaoma-core/agents/xiaoma-orchestrator.md +0 -145
  662. package/xiaoma-core/checklists/architect-checklist.md +0 -440
  663. package/xiaoma-core/checklists/change-checklist.md +0 -184
  664. package/xiaoma-core/checklists/dev-completion-checklist.md +0 -324
  665. package/xiaoma-core/checklists/pm-checklist.md +0 -372
  666. package/xiaoma-core/checklists/po-master-checklist.md +0 -434
  667. package/xiaoma-core/checklists/po-story-validation-checklist.md +0 -219
  668. package/xiaoma-core/checklists/qa-approval-checklist.md +0 -393
  669. package/xiaoma-core/checklists/story-dod-checklist.md +0 -96
  670. package/xiaoma-core/checklists/story-draft-checklist.md +0 -155
  671. package/xiaoma-core/core-config.yaml +0 -23
  672. package/xiaoma-core/data/bmad-kb.md +0 -809
  673. package/xiaoma-core/data/brainstorming-techniques.md +0 -38
  674. package/xiaoma-core/data/elicitation-methods.md +0 -156
  675. package/xiaoma-core/data/technical-preferences.md +0 -5
  676. package/xiaoma-core/data/test-levels-framework.md +0 -148
  677. package/xiaoma-core/data/test-priorities-matrix.md +0 -174
  678. package/xiaoma-core/scripts/build-validation/pre-dev-validation.sh +0 -71
  679. package/xiaoma-core/scripts/build-validation/progressive-validation.sh +0 -88
  680. package/xiaoma-core/scripts/build-validation/quick-check.sh +0 -69
  681. package/xiaoma-core/tasks/advanced-elicitation.md +0 -119
  682. package/xiaoma-core/tasks/analyze-existing-database.md +0 -155
  683. package/xiaoma-core/tasks/apply-qa-fixes.md +0 -150
  684. package/xiaoma-core/tasks/automated-story-cycle.md +0 -370
  685. package/xiaoma-core/tasks/batch-story-generation.md +0 -354
  686. package/xiaoma-core/tasks/brownfield-create-epic.md +0 -162
  687. package/xiaoma-core/tasks/brownfield-create-story.md +0 -149
  688. package/xiaoma-core/tasks/correct-course.md +0 -72
  689. package/xiaoma-core/tasks/create-brownfield-story.md +0 -314
  690. package/xiaoma-core/tasks/create-database-design.md +0 -161
  691. package/xiaoma-core/tasks/create-deep-research-prompt.md +0 -280
  692. package/xiaoma-core/tasks/create-enhanced-story-with-database.md +0 -250
  693. package/xiaoma-core/tasks/create-incremental-architecture.md +0 -525
  694. package/xiaoma-core/tasks/create-next-story.md +0 -114
  695. package/xiaoma-core/tasks/create-prd-from-rag.md +0 -435
  696. package/xiaoma-core/tasks/create-story-with-rag.md +0 -559
  697. package/xiaoma-core/tasks/develop-story-with-rag.md +0 -536
  698. package/xiaoma-core/tasks/document-project.md +0 -345
  699. package/xiaoma-core/tasks/facilitate-brainstorming-session.md +0 -138
  700. package/xiaoma-core/tasks/generate-ai-frontend-prompt.md +0 -53
  701. package/xiaoma-core/tasks/generate-database-ddl.md +0 -240
  702. package/xiaoma-core/tasks/generate-database-entities.md +0 -501
  703. package/xiaoma-core/tasks/generate-rag-questions.md +0 -312
  704. package/xiaoma-core/tasks/index-docs.md +0 -175
  705. package/xiaoma-core/tasks/kb-mode-interaction.md +0 -77
  706. package/xiaoma-core/tasks/nfr-assess.md +0 -345
  707. package/xiaoma-core/tasks/project-integration-testing.md +0 -477
  708. package/xiaoma-core/tasks/qa-gate.md +0 -163
  709. package/xiaoma-core/tasks/requirement-analysis-with-rag.md +0 -1318
  710. package/xiaoma-core/tasks/requirements-coverage-audit.md +0 -198
  711. package/xiaoma-core/tasks/review-story.md +0 -316
  712. package/xiaoma-core/tasks/risk-profile.md +0 -355
  713. package/xiaoma-core/tasks/serial-development-orchestration.md +0 -426
  714. package/xiaoma-core/tasks/shard-doc.md +0 -187
  715. package/xiaoma-core/tasks/test-design.md +0 -176
  716. package/xiaoma-core/tasks/trace-requirements.md +0 -266
  717. package/xiaoma-core/tasks/validate-next-story.md +0 -136
  718. package/xiaoma-core/templates/api-design-tmpl.yaml +0 -704
  719. package/xiaoma-core/templates/architecture-tmpl.yaml +0 -650
  720. package/xiaoma-core/templates/brainstorming-output-tmpl.yaml +0 -156
  721. package/xiaoma-core/templates/brownfield-architecture-tmpl.yaml +0 -476
  722. package/xiaoma-core/templates/brownfield-prd-tmpl.yaml +0 -280
  723. package/xiaoma-core/templates/competitor-analysis-tmpl.yaml +0 -336
  724. package/xiaoma-core/templates/database-design-tmpl.yaml +0 -266
  725. package/xiaoma-core/templates/enhanced-story-with-database-tmpl.yaml +0 -428
  726. package/xiaoma-core/templates/front-end-architecture-tmpl.yaml +0 -272
  727. package/xiaoma-core/templates/front-end-spec-tmpl.yaml +0 -354
  728. package/xiaoma-core/templates/fullstack-architecture-tmpl.yaml +0 -925
  729. package/xiaoma-core/templates/global-qa-monitoring-tmpl.yaml +0 -443
  730. package/xiaoma-core/templates/incremental-architecture-tmpl.yaml +0 -601
  731. package/xiaoma-core/templates/market-research-tmpl.yaml +0 -252
  732. package/xiaoma-core/templates/maven-lombok-template.xml +0 -111
  733. package/xiaoma-core/templates/prd-from-rag-tmpl.yaml +0 -410
  734. package/xiaoma-core/templates/prd-tmpl.yaml +0 -202
  735. package/xiaoma-core/templates/project-brief-tmpl.yaml +0 -221
  736. package/xiaoma-core/templates/qa-gate-tmpl.yaml +0 -102
  737. package/xiaoma-core/templates/rag-knowledge-tmpl.yaml +0 -569
  738. package/xiaoma-core/templates/rag-questions-tmpl.yaml +0 -949
  739. package/xiaoma-core/templates/requirements-coverage-audit.yaml +0 -330
  740. package/xiaoma-core/templates/start-enhanced-workflow.yaml +0 -347
  741. package/xiaoma-core/templates/story-tmpl.yaml +0 -137
  742. package/xiaoma-core/templates/story-with-rag-tmpl.yaml +0 -360
  743. package/xiaoma-core/workflows/automated-requirements-analysis.yaml +0 -2149
  744. package/xiaoma-core/workflows/automated-requirements-development.yaml +0 -739
  745. package/xiaoma-core/workflows/automated-story-development.yaml +0 -1264
  746. package/xiaoma-core/workflows/brownfield-fullstack.yaml +0 -298
  747. package/xiaoma-core/workflows/brownfield-service.yaml +0 -188
  748. package/xiaoma-core/workflows/brownfield-ui.yaml +0 -198
  749. package/xiaoma-core/workflows/enhanced-fullstack-with-database.yaml +0 -427
  750. package/xiaoma-core/workflows/enhanced-fullstack-with-qa-loop.yaml +0 -766
  751. package/xiaoma-core/workflows/full-requirement-automation.yaml +0 -1305
  752. package/xiaoma-core/workflows/greenfield-fullstack.yaml +0 -241
  753. package/xiaoma-core/workflows/greenfield-service.yaml +0 -207
  754. package/xiaoma-core/workflows/greenfield-ui.yaml +0 -236
@@ -0,0 +1,1058 @@
1
+ const os = require('node:os');
2
+ const path = require('node:path');
3
+ const fs = require('fs-extra');
4
+ const yaml = require('yaml');
5
+ const { BaseIdeSetup } = require('./_base-ide');
6
+ const prompts = require('../../../lib/prompts');
7
+ const { AgentCommandGenerator } = require('./shared/agent-command-generator');
8
+ const { WorkflowCommandGenerator } = require('./shared/workflow-command-generator');
9
+ const { TaskToolCommandGenerator } = require('./shared/task-tool-command-generator');
10
+ const csv = require('csv-parse/sync');
11
+
12
+ /**
13
+ * Config-driven IDE setup handler
14
+ *
15
+ * This class provides a standardized way to install XiaoMa artifacts to IDEs
16
+ * based on configuration in platform-codes.yaml. It eliminates the need for
17
+ * individual installer files for each IDE.
18
+ *
19
+ * Features:
20
+ * - Config-driven from platform-codes.yaml
21
+ * - Template-based content generation
22
+ * - Multi-target installation support (e.g., GitHub Copilot)
23
+ * - Artifact type filtering (agents, workflows, tasks, tools)
24
+ */
25
+ class ConfigDrivenIdeSetup extends BaseIdeSetup {
26
+ constructor(platformCode, platformConfig) {
27
+ super(platformCode, platformConfig.name, platformConfig.preferred);
28
+ this.platformConfig = platformConfig;
29
+ this.installerConfig = platformConfig.installer || null;
30
+
31
+ // Set configDir from target_dir so base-class detect() works
32
+ if (this.installerConfig?.target_dir) {
33
+ this.configDir = this.installerConfig.target_dir;
34
+ }
35
+ }
36
+
37
+ /**
38
+ * Detect whether this IDE already has configuration in the project.
39
+ * For skill_format platforms, checks for xiaoma-prefixed entries in target_dir
40
+ * (matching old codex.js behavior) instead of just checking directory existence.
41
+ * @param {string} projectDir - Project directory
42
+ * @returns {Promise<boolean>}
43
+ */
44
+ async detect(projectDir) {
45
+ if (this.installerConfig?.skill_format && this.configDir) {
46
+ const dir = path.join(projectDir || process.cwd(), this.configDir);
47
+ if (await fs.pathExists(dir)) {
48
+ try {
49
+ const entries = await fs.readdir(dir);
50
+ return entries.some((e) => typeof e === 'string' && e.startsWith('xiaoma'));
51
+ } catch {
52
+ return false;
53
+ }
54
+ }
55
+ return false;
56
+ }
57
+ return super.detect(projectDir);
58
+ }
59
+
60
+ /**
61
+ * Main setup method - called by IdeManager
62
+ * @param {string} projectDir - Project directory
63
+ * @param {string} xiaomaDir - XiaoMa installation directory
64
+ * @param {Object} options - Setup options
65
+ * @returns {Promise<Object>} Setup result
66
+ */
67
+ async setup(projectDir, xiaomaDir, options = {}) {
68
+ // Check for XiaoMa files in ancestor directories that would cause duplicates
69
+ if (this.installerConfig?.ancestor_conflict_check) {
70
+ const conflict = await this.findAncestorConflict(projectDir);
71
+ if (conflict) {
72
+ await prompts.log.error(
73
+ `Found existing XiaoMa skills in ancestor installation: ${conflict}\n` +
74
+ ` ${this.name} inherits skills from parent directories, so this would cause duplicates.\n` +
75
+ ` Please remove the XiaoMa files from that directory first:\n` +
76
+ ` rm -rf "${conflict}"/xiaoma*`,
77
+ );
78
+ return {
79
+ success: false,
80
+ reason: 'ancestor-conflict',
81
+ error: `Ancestor conflict: ${conflict}`,
82
+ conflictDir: conflict,
83
+ };
84
+ }
85
+ }
86
+
87
+ if (!options.silent) await prompts.log.info(`Setting up ${this.name}...`);
88
+
89
+ // Clean up any old XiaoMa installation first
90
+ await this.cleanup(projectDir, options);
91
+
92
+ if (!this.installerConfig) {
93
+ return { success: false, reason: 'no-config' };
94
+ }
95
+
96
+ // Handle multi-target installations (e.g., GitHub Copilot)
97
+ if (this.installerConfig.targets) {
98
+ return this.installToMultipleTargets(projectDir, xiaomaDir, this.installerConfig.targets, options);
99
+ }
100
+
101
+ // Handle single-target installations
102
+ if (this.installerConfig.target_dir) {
103
+ return this.installToTarget(projectDir, xiaomaDir, this.installerConfig, options);
104
+ }
105
+
106
+ return { success: false, reason: 'invalid-config' };
107
+ }
108
+
109
+ /**
110
+ * Install to a single target directory
111
+ * @param {string} projectDir - Project directory
112
+ * @param {string} xiaomaDir - XiaoMa installation directory
113
+ * @param {Object} config - Installation configuration
114
+ * @param {Object} options - Setup options
115
+ * @returns {Promise<Object>} Installation result
116
+ */
117
+ async installToTarget(projectDir, xiaomaDir, config, options) {
118
+ const { target_dir, template_type, artifact_types } = config;
119
+
120
+ // Skip targets with explicitly empty artifact_types and no verbatim skills
121
+ // This prevents creating empty directories when no artifacts will be written
122
+ const skipStandardArtifacts = Array.isArray(artifact_types) && artifact_types.length === 0;
123
+ if (skipStandardArtifacts && !config.skill_format) {
124
+ return { success: true, results: { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 } };
125
+ }
126
+
127
+ const targetPath = path.join(projectDir, target_dir);
128
+ await this.ensureDir(targetPath);
129
+
130
+ const selectedModules = options.selectedModules || [];
131
+ const results = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
132
+ this.skillWriteTracker = config.skill_format ? new Set() : null;
133
+
134
+ // Install standard artifacts (agents, workflows, tasks, tools)
135
+ if (!skipStandardArtifacts) {
136
+ // Install agents
137
+ if (!artifact_types || artifact_types.includes('agents')) {
138
+ const agentGen = new AgentCommandGenerator(this.xiaomaFolderName);
139
+ const { artifacts } = await agentGen.collectAgentArtifacts(xiaomaDir, selectedModules);
140
+ results.agents = await this.writeAgentArtifacts(targetPath, artifacts, template_type, config);
141
+ }
142
+
143
+ // Install workflows
144
+ if (!artifact_types || artifact_types.includes('workflows')) {
145
+ const workflowGen = new WorkflowCommandGenerator(this.xiaomaFolderName);
146
+ const { artifacts } = await workflowGen.collectWorkflowArtifacts(xiaomaDir);
147
+ results.workflows = await this.writeWorkflowArtifacts(targetPath, artifacts, template_type, config);
148
+ }
149
+
150
+ // Install tasks and tools using template system (supports TOML for Gemini, MD for others)
151
+ if (!artifact_types || artifact_types.includes('tasks') || artifact_types.includes('tools')) {
152
+ const taskToolGen = new TaskToolCommandGenerator(this.xiaomaFolderName);
153
+ const { artifacts } = await taskToolGen.collectTaskToolArtifacts(xiaomaDir);
154
+ const taskToolResult = await this.writeTaskToolArtifacts(targetPath, artifacts, template_type, config);
155
+ results.tasks = taskToolResult.tasks || 0;
156
+ results.tools = taskToolResult.tools || 0;
157
+ }
158
+ }
159
+
160
+ // Install verbatim skills (type: skill)
161
+ if (config.skill_format) {
162
+ results.skills = await this.installVerbatimSkills(projectDir, xiaomaDir, targetPath, config);
163
+ results.skillDirectories = this.skillWriteTracker ? this.skillWriteTracker.size : 0;
164
+ }
165
+
166
+ await this.printSummary(results, target_dir, options);
167
+ this.skillWriteTracker = null;
168
+ return { success: true, results };
169
+ }
170
+
171
+ /**
172
+ * Install to multiple target directories
173
+ * @param {string} projectDir - Project directory
174
+ * @param {string} xiaomaDir - XiaoMa installation directory
175
+ * @param {Array} targets - Array of target configurations
176
+ * @param {Object} options - Setup options
177
+ * @returns {Promise<Object>} Installation result
178
+ */
179
+ async installToMultipleTargets(projectDir, xiaomaDir, targets, options) {
180
+ const allResults = { agents: 0, workflows: 0, tasks: 0, tools: 0, skills: 0 };
181
+
182
+ for (const target of targets) {
183
+ const result = await this.installToTarget(projectDir, xiaomaDir, target, options);
184
+ if (result.success) {
185
+ allResults.agents += result.results.agents || 0;
186
+ allResults.workflows += result.results.workflows || 0;
187
+ allResults.tasks += result.results.tasks || 0;
188
+ allResults.tools += result.results.tools || 0;
189
+ allResults.skills += result.results.skills || 0;
190
+ }
191
+ }
192
+
193
+ return { success: true, results: allResults };
194
+ }
195
+
196
+ /**
197
+ * Write agent artifacts to target directory
198
+ * @param {string} targetPath - Target directory path
199
+ * @param {Array} artifacts - Agent artifacts
200
+ * @param {string} templateType - Template type to use
201
+ * @param {Object} config - Installation configuration
202
+ * @returns {Promise<number>} Count of artifacts written
203
+ */
204
+ async writeAgentArtifacts(targetPath, artifacts, templateType, config = {}) {
205
+ // Try to load platform-specific template, fall back to default-agent
206
+ const { content: template, extension } = await this.loadTemplate(templateType, 'agent', config, 'default-agent');
207
+ let count = 0;
208
+
209
+ for (const artifact of artifacts) {
210
+ const content = this.renderTemplate(template, artifact);
211
+ const filename = this.generateFilename(artifact, 'agent', extension);
212
+
213
+ if (config.skill_format) {
214
+ await this.writeSkillFile(targetPath, artifact, content);
215
+ } else {
216
+ const filePath = path.join(targetPath, filename);
217
+ await this.writeFile(filePath, content);
218
+ }
219
+ count++;
220
+ }
221
+
222
+ return count;
223
+ }
224
+
225
+ /**
226
+ * Write workflow artifacts to target directory
227
+ * @param {string} targetPath - Target directory path
228
+ * @param {Array} artifacts - Workflow artifacts
229
+ * @param {string} templateType - Template type to use
230
+ * @param {Object} config - Installation configuration
231
+ * @returns {Promise<number>} Count of artifacts written
232
+ */
233
+ async writeWorkflowArtifacts(targetPath, artifacts, templateType, config = {}) {
234
+ let count = 0;
235
+
236
+ for (const artifact of artifacts) {
237
+ if (artifact.type === 'workflow-command') {
238
+ const workflowTemplateType = config.md_workflow_template || `${templateType}-workflow`;
239
+ const { content: template, extension } = await this.loadTemplate(workflowTemplateType, '', config, 'default-workflow');
240
+ const content = this.renderTemplate(template, artifact);
241
+ const filename = this.generateFilename(artifact, 'workflow', extension);
242
+
243
+ if (config.skill_format) {
244
+ await this.writeSkillFile(targetPath, artifact, content);
245
+ } else {
246
+ const filePath = path.join(targetPath, filename);
247
+ await this.writeFile(filePath, content);
248
+ }
249
+ count++;
250
+ }
251
+ }
252
+
253
+ return count;
254
+ }
255
+
256
+ /**
257
+ * Write task/tool artifacts to target directory using templates
258
+ * @param {string} targetPath - Target directory path
259
+ * @param {Array} artifacts - Task/tool artifacts
260
+ * @param {string} templateType - Template type to use
261
+ * @param {Object} config - Installation configuration
262
+ * @returns {Promise<Object>} Counts of tasks and tools written
263
+ */
264
+ async writeTaskToolArtifacts(targetPath, artifacts, templateType, config = {}) {
265
+ let taskCount = 0;
266
+ let toolCount = 0;
267
+
268
+ // Pre-load templates to avoid repeated file I/O in the loop
269
+ const taskTemplate = await this.loadTemplate(templateType, 'task', config, 'default-task');
270
+ const toolTemplate = await this.loadTemplate(templateType, 'tool', config, 'default-tool');
271
+
272
+ const { artifact_types } = config;
273
+
274
+ for (const artifact of artifacts) {
275
+ if (artifact.type !== 'task' && artifact.type !== 'tool') {
276
+ continue;
277
+ }
278
+
279
+ // Skip if the specific artifact type is not requested in config
280
+ if (artifact_types) {
281
+ if (artifact.type === 'task' && !artifact_types.includes('tasks')) continue;
282
+ if (artifact.type === 'tool' && !artifact_types.includes('tools')) continue;
283
+ }
284
+
285
+ // Use pre-loaded template based on artifact type
286
+ const { content: template, extension } = artifact.type === 'task' ? taskTemplate : toolTemplate;
287
+
288
+ const content = this.renderTemplate(template, artifact);
289
+ const filename = this.generateFilename(artifact, artifact.type, extension);
290
+
291
+ if (config.skill_format) {
292
+ await this.writeSkillFile(targetPath, artifact, content);
293
+ } else {
294
+ const filePath = path.join(targetPath, filename);
295
+ await this.writeFile(filePath, content);
296
+ }
297
+
298
+ if (artifact.type === 'task') {
299
+ taskCount++;
300
+ } else {
301
+ toolCount++;
302
+ }
303
+ }
304
+
305
+ return { tasks: taskCount, tools: toolCount };
306
+ }
307
+
308
+ /**
309
+ * Load template based on type and configuration
310
+ * @param {string} templateType - Template type (claude, windsurf, etc.)
311
+ * @param {string} artifactType - Artifact type (agent, workflow, task, tool)
312
+ * @param {Object} config - Installation configuration
313
+ * @param {string} fallbackTemplateType - Fallback template type if requested template not found
314
+ * @returns {Promise<{content: string, extension: string}>} Template content and extension
315
+ */
316
+ async loadTemplate(templateType, artifactType, config = {}, fallbackTemplateType = null) {
317
+ const { header_template, body_template } = config;
318
+
319
+ // Check for separate header/body templates
320
+ if (header_template || body_template) {
321
+ const content = await this.loadSplitTemplates(templateType, artifactType, header_template, body_template);
322
+ // Allow config to override extension, default to .md
323
+ const ext = config.extension || '.md';
324
+ const normalizedExt = ext.startsWith('.') ? ext : `.${ext}`;
325
+ return { content, extension: normalizedExt };
326
+ }
327
+
328
+ // Load combined template - try multiple extensions
329
+ // If artifactType is empty, templateType already contains full name (e.g., 'gemini-workflow-yaml')
330
+ const templateBaseName = artifactType ? `${templateType}-${artifactType}` : templateType;
331
+ const templateDir = path.join(__dirname, 'templates', 'combined');
332
+ const extensions = ['.md', '.toml', '.yaml', '.yml'];
333
+
334
+ for (const ext of extensions) {
335
+ const templatePath = path.join(templateDir, templateBaseName + ext);
336
+ if (await fs.pathExists(templatePath)) {
337
+ const content = await fs.readFile(templatePath, 'utf8');
338
+ return { content, extension: ext };
339
+ }
340
+ }
341
+
342
+ // Fall back to default template (if provided)
343
+ if (fallbackTemplateType) {
344
+ for (const ext of extensions) {
345
+ const fallbackPath = path.join(templateDir, `${fallbackTemplateType}${ext}`);
346
+ if (await fs.pathExists(fallbackPath)) {
347
+ const content = await fs.readFile(fallbackPath, 'utf8');
348
+ return { content, extension: ext };
349
+ }
350
+ }
351
+ }
352
+
353
+ // Ultimate fallback - minimal template
354
+ return { content: this.getDefaultTemplate(artifactType), extension: '.md' };
355
+ }
356
+
357
+ /**
358
+ * Load split templates (header + body)
359
+ * @param {string} templateType - Template type
360
+ * @param {string} artifactType - Artifact type
361
+ * @param {string} headerTpl - Header template name
362
+ * @param {string} bodyTpl - Body template name
363
+ * @returns {Promise<string>} Combined template content
364
+ */
365
+ async loadSplitTemplates(templateType, artifactType, headerTpl, bodyTpl) {
366
+ let header = '';
367
+ let body = '';
368
+
369
+ // Load header template
370
+ if (headerTpl) {
371
+ const headerPath = path.join(__dirname, 'templates', 'split', headerTpl);
372
+ if (await fs.pathExists(headerPath)) {
373
+ header = await fs.readFile(headerPath, 'utf8');
374
+ }
375
+ } else {
376
+ // Use default header for template type
377
+ const defaultHeaderPath = path.join(__dirname, 'templates', 'split', templateType, 'header.md');
378
+ if (await fs.pathExists(defaultHeaderPath)) {
379
+ header = await fs.readFile(defaultHeaderPath, 'utf8');
380
+ }
381
+ }
382
+
383
+ // Load body template
384
+ if (bodyTpl) {
385
+ const bodyPath = path.join(__dirname, 'templates', 'split', bodyTpl);
386
+ if (await fs.pathExists(bodyPath)) {
387
+ body = await fs.readFile(bodyPath, 'utf8');
388
+ }
389
+ } else {
390
+ // Use default body for template type
391
+ const defaultBodyPath = path.join(__dirname, 'templates', 'split', templateType, 'body.md');
392
+ if (await fs.pathExists(defaultBodyPath)) {
393
+ body = await fs.readFile(defaultBodyPath, 'utf8');
394
+ }
395
+ }
396
+
397
+ // Combine header and body
398
+ return `${header}\n${body}`;
399
+ }
400
+
401
+ /**
402
+ * Get default minimal template
403
+ * @param {string} artifactType - Artifact type
404
+ * @returns {string} Default template
405
+ */
406
+ getDefaultTemplate(artifactType) {
407
+ if (artifactType === 'agent') {
408
+ return `---
409
+ name: '{{name}}'
410
+ description: '{{description}}'
411
+ disable-model-invocation: true
412
+ ---
413
+
414
+ You must fully embody this agent's persona and follow all activation instructions exactly as specified.
415
+
416
+ <agent-activation CRITICAL="TRUE">
417
+ 1. LOAD the FULL agent file from {project-root}/{{xiaomaFolderName}}/{{path}}
418
+ 2. READ its entire contents - this contains the complete agent persona, menu, and instructions
419
+ 3. FOLLOW every step in the <activation> section precisely
420
+ </agent-activation>
421
+ `;
422
+ }
423
+ return `---
424
+ name: '{{name}}'
425
+ description: '{{description}}'
426
+ ---
427
+
428
+ # {{name}}
429
+
430
+ LOAD and execute from: {project-root}/{{xiaomaFolderName}}/{{path}}
431
+ `;
432
+ }
433
+
434
+ /**
435
+ * Render template with artifact data
436
+ * @param {string} template - Template content
437
+ * @param {Object} artifact - Artifact data
438
+ * @returns {string} Rendered content
439
+ */
440
+ renderTemplate(template, artifact) {
441
+ // Use the appropriate path property based on artifact type
442
+ let pathToUse = artifact.relativePath || '';
443
+ switch (artifact.type) {
444
+ case 'agent-launcher': {
445
+ pathToUse = artifact.agentPath || artifact.relativePath || '';
446
+
447
+ break;
448
+ }
449
+ case 'workflow-command': {
450
+ pathToUse = artifact.workflowPath || artifact.relativePath || '';
451
+
452
+ break;
453
+ }
454
+ case 'task':
455
+ case 'tool': {
456
+ pathToUse = artifact.path || artifact.relativePath || '';
457
+
458
+ break;
459
+ }
460
+ // No default
461
+ }
462
+
463
+ // Replace _xiaoma placeholder with actual folder name BEFORE inserting paths,
464
+ // so that paths containing '_xiaoma' are not corrupted by the blanket replacement.
465
+ let rendered = template.replaceAll('_xiaoma', this.xiaomaFolderName);
466
+
467
+ // Replace {{xiaomaFolderName}} placeholder if present
468
+ rendered = rendered.replaceAll('{{xiaomaFolderName}}', this.xiaomaFolderName);
469
+
470
+ rendered = rendered
471
+ .replaceAll('{{name}}', artifact.name || '')
472
+ .replaceAll('{{module}}', artifact.module || 'core')
473
+ .replaceAll('{{path}}', pathToUse)
474
+ .replaceAll('{{description}}', artifact.description || `${artifact.name} ${artifact.type || ''}`)
475
+ .replaceAll('{{workflow_path}}', pathToUse);
476
+
477
+ return rendered;
478
+ }
479
+
480
+ /**
481
+ * Write artifact as a skill directory with SKILL.md inside.
482
+ * Writes artifact as a skill directory with SKILL.md inside.
483
+ * @param {string} targetPath - Base skills directory
484
+ * @param {Object} artifact - Artifact data
485
+ * @param {string} content - Rendered template content
486
+ */
487
+ async writeSkillFile(targetPath, artifact, content) {
488
+ const { resolveSkillName } = require('./shared/path-utils');
489
+
490
+ // Get the skill name (prefers canonicalId, falls back to path-derived) and remove .md
491
+ const flatName = resolveSkillName(artifact);
492
+ const skillName = path.basename(flatName.replace(/\.md$/, ''));
493
+
494
+ if (!skillName) {
495
+ throw new Error(`Cannot derive skill name for artifact: ${artifact.relativePath || JSON.stringify(artifact)}`);
496
+ }
497
+
498
+ // Create skill directory
499
+ const skillDir = path.join(targetPath, skillName);
500
+ await this.ensureDir(skillDir);
501
+ this.skillWriteTracker?.add(skillName);
502
+
503
+ // Transform content: rewrite frontmatter for skills format
504
+ const skillContent = this.transformToSkillFormat(content, skillName);
505
+
506
+ await this.writeFile(path.join(skillDir, 'SKILL.md'), skillContent);
507
+ }
508
+
509
+ /**
510
+ * Transform artifact content to Agent Skills format.
511
+ * Rewrites frontmatter to contain only unquoted name and description.
512
+ * @param {string} content - Original content with YAML frontmatter
513
+ * @param {string} skillName - Skill name (must match directory name)
514
+ * @returns {string} Transformed content
515
+ */
516
+ transformToSkillFormat(content, skillName) {
517
+ // Normalize line endings
518
+ content = content.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
519
+
520
+ // Parse frontmatter
521
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---\n?([\s\S]*)$/);
522
+ if (!fmMatch) {
523
+ // No frontmatter -- wrap with minimal frontmatter
524
+ const fm = yaml.stringify({ name: skillName, description: skillName }).trimEnd();
525
+ return `---\n${fm}\n---\n\n${content}`;
526
+ }
527
+
528
+ const frontmatter = fmMatch[1];
529
+ const body = fmMatch[2];
530
+
531
+ // Parse frontmatter with yaml library to extract description
532
+ let description;
533
+ try {
534
+ const parsed = yaml.parse(frontmatter);
535
+ const rawDesc = parsed?.description;
536
+ description = typeof rawDesc === 'string' && rawDesc ? rawDesc : `${skillName} skill`;
537
+ } catch {
538
+ description = `${skillName} skill`;
539
+ }
540
+
541
+ // Build new frontmatter with only name and description, unquoted
542
+ const newFrontmatter = yaml.stringify({ name: skillName, description: String(description) }, { lineWidth: 0 }).trimEnd();
543
+ return `---\n${newFrontmatter}\n---\n${body}`;
544
+ }
545
+
546
+ /**
547
+ * Install a custom agent launcher.
548
+ * For skill_format platforms, produces <skillDir>/SKILL.md.
549
+ * For flat platforms, produces a single file in target_dir.
550
+ * @param {string} projectDir - Project directory
551
+ * @param {string} agentName - Agent name (e.g., "fred-commit-poet")
552
+ * @param {string} agentPath - Path to compiled agent (relative to project root)
553
+ * @param {Object} metadata - Agent metadata
554
+ * @returns {Object|null} Info about created file/skill
555
+ */
556
+ async installCustomAgentLauncher(projectDir, agentName, agentPath, metadata) {
557
+ if (!this.installerConfig?.target_dir) return null;
558
+
559
+ const { customAgentDashName } = require('./shared/path-utils');
560
+ const targetPath = path.join(projectDir, this.installerConfig.target_dir);
561
+ await this.ensureDir(targetPath);
562
+
563
+ // Build artifact to reuse existing template rendering.
564
+ // The default-agent template already includes the _xiaoma/ prefix before {{path}},
565
+ // but agentPath is relative to project root (e.g. "_xiaoma/custom/agents/fred.md").
566
+ // Strip the xiaomaFolderName prefix so the template doesn't produce a double path.
567
+ const xiaomaPrefix = this.xiaomaFolderName + '/';
568
+ const normalizedPath = agentPath.startsWith(xiaomaPrefix) ? agentPath.slice(xiaomaPrefix.length) : agentPath;
569
+
570
+ const artifact = {
571
+ type: 'agent-launcher',
572
+ name: agentName,
573
+ description: metadata?.description || `${agentName} agent`,
574
+ agentPath: normalizedPath,
575
+ relativePath: normalizedPath,
576
+ module: 'custom',
577
+ };
578
+
579
+ const { content: template } = await this.loadTemplate(
580
+ this.installerConfig.template_type || 'default',
581
+ 'agent',
582
+ this.installerConfig,
583
+ 'default-agent',
584
+ );
585
+ const content = this.renderTemplate(template, artifact);
586
+
587
+ if (this.installerConfig.skill_format) {
588
+ const skillName = customAgentDashName(agentName).replace(/\.md$/, '');
589
+ const skillDir = path.join(targetPath, skillName);
590
+ await this.ensureDir(skillDir);
591
+ const skillContent = this.transformToSkillFormat(content, skillName);
592
+ const skillPath = path.join(skillDir, 'SKILL.md');
593
+ await this.writeFile(skillPath, skillContent);
594
+ return { path: path.relative(projectDir, skillPath), command: `$${skillName}` };
595
+ }
596
+
597
+ // Flat file output
598
+ const filename = customAgentDashName(agentName);
599
+ const filePath = path.join(targetPath, filename);
600
+ await this.writeFile(filePath, content);
601
+ return { path: path.relative(projectDir, filePath), command: agentName };
602
+ }
603
+
604
+ /**
605
+ * Generate filename for artifact
606
+ * @param {Object} artifact - Artifact data
607
+ * @param {string} artifactType - Artifact type (agent, workflow, task, tool)
608
+ * @param {string} extension - File extension to use (e.g., '.md', '.toml')
609
+ * @returns {string} Generated filename
610
+ */
611
+ generateFilename(artifact, artifactType, extension = '.md') {
612
+ const { resolveSkillName } = require('./shared/path-utils');
613
+
614
+ // Reuse central logic to ensure consistent naming conventions
615
+ // Prefers canonicalId from manifest when available, falls back to path-derived name
616
+ const standardName = resolveSkillName(artifact);
617
+
618
+ // Clean up potential double extensions from source files (e.g. .yaml.md, .xml.md -> .md)
619
+ // This handles any extensions that might slip through toDashPath()
620
+ const baseName = standardName.replace(/\.(md|yaml|yml|json|xml|toml)\.md$/i, '.md');
621
+
622
+ // If using default markdown, preserve the xiaoma-agent- prefix for agents
623
+ if (extension === '.md') {
624
+ return baseName;
625
+ }
626
+
627
+ // For other extensions (e.g., .toml), replace .md extension
628
+ // Note: agent prefix is preserved even with non-markdown extensions
629
+ return baseName.replace(/\.md$/, extension);
630
+ }
631
+
632
+ /**
633
+ * Install verbatim skill directories (type: skill entries from skill-manifest.csv).
634
+ * Copies the entire source directory as-is into the IDE skill directory.
635
+ * The source SKILL.md is used directly — no frontmatter transformation or file generation.
636
+ * @param {string} projectDir - Project directory
637
+ * @param {string} xiaomaDir - XiaoMa installation directory
638
+ * @param {string} targetPath - Target skills directory
639
+ * @param {Object} config - Installation configuration
640
+ * @returns {Promise<number>} Count of skills installed
641
+ */
642
+ async installVerbatimSkills(projectDir, xiaomaDir, targetPath, config) {
643
+ const xiaomaFolderName = path.basename(xiaomaDir);
644
+ const xiaomaPrefix = xiaomaFolderName + '/';
645
+ const csvPath = path.join(xiaomaDir, '_config', 'skill-manifest.csv');
646
+
647
+ if (!(await fs.pathExists(csvPath))) return 0;
648
+
649
+ const csvContent = await fs.readFile(csvPath, 'utf8');
650
+ const records = csv.parse(csvContent, {
651
+ columns: true,
652
+ skip_empty_lines: true,
653
+ });
654
+
655
+ let count = 0;
656
+
657
+ for (const record of records) {
658
+ const canonicalId = record.canonicalId;
659
+ if (!canonicalId) continue;
660
+
661
+ // Derive source directory from path column
662
+ // path is like "_xiaoma/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/SKILL.md"
663
+ // Strip xiaomaFolderName prefix and join with xiaomaDir, then get dirname
664
+ const relativePath = record.path.startsWith(xiaomaPrefix) ? record.path.slice(xiaomaPrefix.length) : record.path;
665
+ const sourceFile = path.join(xiaomaDir, relativePath);
666
+ const sourceDir = path.dirname(sourceFile);
667
+
668
+ if (!(await fs.pathExists(sourceDir))) continue;
669
+
670
+ // Clean target before copy to prevent stale files
671
+ const skillDir = path.join(targetPath, canonicalId);
672
+ await fs.remove(skillDir);
673
+ await fs.ensureDir(skillDir);
674
+ this.skillWriteTracker?.add(canonicalId);
675
+
676
+ // Copy all skill files, filtering OS/editor artifacts recursively
677
+ const skipPatterns = new Set(['.DS_Store', 'Thumbs.db', 'desktop.ini']);
678
+ const skipSuffixes = ['~', '.swp', '.swo', '.bak'];
679
+ const filter = (src) => {
680
+ const name = path.basename(src);
681
+ if (src === sourceDir) return true;
682
+ if (skipPatterns.has(name)) return false;
683
+ if (name.startsWith('.') && name !== '.gitkeep') return false;
684
+ if (skipSuffixes.some((s) => name.endsWith(s))) return false;
685
+ return true;
686
+ };
687
+ await fs.copy(sourceDir, skillDir, { filter });
688
+
689
+ count++;
690
+ }
691
+
692
+ // Post-install cleanup: remove _xiaoma/ directories for skills with install_to_xiaoma === "false"
693
+ for (const record of records) {
694
+ if (record.install_to_xiaoma === 'false') {
695
+ const relativePath = record.path.startsWith(xiaomaPrefix) ? record.path.slice(xiaomaPrefix.length) : record.path;
696
+ const sourceFile = path.join(xiaomaDir, relativePath);
697
+ const sourceDir = path.dirname(sourceFile);
698
+ if (await fs.pathExists(sourceDir)) {
699
+ await fs.remove(sourceDir);
700
+ }
701
+ }
702
+ }
703
+
704
+ return count;
705
+ }
706
+
707
+ /**
708
+ * Print installation summary
709
+ * @param {Object} results - Installation results
710
+ * @param {string} targetDir - Target directory (relative)
711
+ */
712
+ async printSummary(results, targetDir, options = {}) {
713
+ if (options.silent) return;
714
+ const parts = [];
715
+ const totalDirs =
716
+ results.skillDirectories || (results.workflows || 0) + (results.tasks || 0) + (results.tools || 0) + (results.skills || 0);
717
+ const skillCount = totalDirs - (results.agents || 0);
718
+ if (skillCount > 0) parts.push(`${skillCount} skills`);
719
+ if (results.agents > 0) parts.push(`${results.agents} agents`);
720
+ await prompts.log.success(`${this.name} configured: ${parts.join(', ')} → ${targetDir}`);
721
+ }
722
+
723
+ /**
724
+ * Cleanup IDE configuration
725
+ * @param {string} projectDir - Project directory
726
+ */
727
+ async cleanup(projectDir, options = {}) {
728
+ // Migrate legacy target directories (e.g. .opencode/agent → .opencode/agents)
729
+ if (this.installerConfig?.legacy_targets) {
730
+ if (!options.silent) await prompts.log.message(' Migrating legacy directories...');
731
+ for (const legacyDir of this.installerConfig.legacy_targets) {
732
+ if (this.isGlobalPath(legacyDir)) {
733
+ await this.warnGlobalLegacy(legacyDir, options);
734
+ } else {
735
+ await this.cleanupTarget(projectDir, legacyDir, options);
736
+ await this.removeEmptyParents(projectDir, legacyDir);
737
+ }
738
+ }
739
+ }
740
+
741
+ // Strip XiaoMa markers from copilot-instructions.md if present
742
+ if (this.name === 'github-copilot') {
743
+ await this.cleanupCopilotInstructions(projectDir, options);
744
+ }
745
+
746
+ // Strip XiaoMa modes from .kilocodemodes if present
747
+ if (this.name === 'kilo') {
748
+ await this.cleanupKiloModes(projectDir, options);
749
+ }
750
+
751
+ // Strip XiaoMa entries from .rovodev/prompts.yml if present
752
+ if (this.name === 'rovo-dev') {
753
+ await this.cleanupRovoDevPrompts(projectDir, options);
754
+ }
755
+
756
+ // Clean all target directories
757
+ if (this.installerConfig?.targets) {
758
+ const parentDirs = new Set();
759
+ for (const target of this.installerConfig.targets) {
760
+ await this.cleanupTarget(projectDir, target.target_dir, options);
761
+ // Track parent directories for empty-dir cleanup
762
+ const parentDir = path.dirname(target.target_dir);
763
+ if (parentDir && parentDir !== '.') {
764
+ parentDirs.add(parentDir);
765
+ }
766
+ }
767
+ // After all targets cleaned, remove empty parent directories (recursive up to projectDir)
768
+ for (const parentDir of parentDirs) {
769
+ await this.removeEmptyParents(projectDir, parentDir);
770
+ }
771
+ } else if (this.installerConfig?.target_dir) {
772
+ await this.cleanupTarget(projectDir, this.installerConfig.target_dir, options);
773
+ }
774
+ }
775
+
776
+ /**
777
+ * Check if a path is global (starts with ~ or is absolute)
778
+ * @param {string} p - Path to check
779
+ * @returns {boolean}
780
+ */
781
+ isGlobalPath(p) {
782
+ return p.startsWith('~') || path.isAbsolute(p);
783
+ }
784
+
785
+ /**
786
+ * Warn about stale XiaoMa files in a global legacy directory (never auto-deletes)
787
+ * @param {string} legacyDir - Legacy directory path (may start with ~)
788
+ * @param {Object} options - Options (silent, etc.)
789
+ */
790
+ async warnGlobalLegacy(legacyDir, options = {}) {
791
+ try {
792
+ const expanded = legacyDir.startsWith('~/')
793
+ ? path.join(os.homedir(), legacyDir.slice(2))
794
+ : legacyDir === '~'
795
+ ? os.homedir()
796
+ : legacyDir;
797
+
798
+ if (!(await fs.pathExists(expanded))) return;
799
+
800
+ const entries = await fs.readdir(expanded);
801
+ const xiaomaFiles = entries.filter((e) => typeof e === 'string' && e.startsWith('xiaoma'));
802
+
803
+ if (xiaomaFiles.length > 0 && !options.silent) {
804
+ await prompts.log.warn(`Found ${xiaomaFiles.length} stale XiaoMa file(s) in ${expanded}. Remove manually: rm ${expanded}/xiaoma-*`);
805
+ }
806
+ } catch {
807
+ // Errors reading global paths are silently ignored
808
+ }
809
+ }
810
+
811
+ /**
812
+ * Cleanup a specific target directory
813
+ * @param {string} projectDir - Project directory
814
+ * @param {string} targetDir - Target directory to clean
815
+ */
816
+ async cleanupTarget(projectDir, targetDir, options = {}) {
817
+ const targetPath = path.join(projectDir, targetDir);
818
+
819
+ if (!(await fs.pathExists(targetPath))) {
820
+ return;
821
+ }
822
+
823
+ // Remove all xiaoma* files
824
+ let entries;
825
+ try {
826
+ entries = await fs.readdir(targetPath);
827
+ } catch {
828
+ // Directory exists but can't be read - skip cleanup
829
+ return;
830
+ }
831
+
832
+ if (!entries || !Array.isArray(entries)) {
833
+ return;
834
+ }
835
+
836
+ let removedCount = 0;
837
+
838
+ for (const entry of entries) {
839
+ if (!entry || typeof entry !== 'string') {
840
+ continue;
841
+ }
842
+ if (entry.startsWith('xiaoma') && !entry.startsWith('xiaoma-os-')) {
843
+ const entryPath = path.join(targetPath, entry);
844
+ try {
845
+ await fs.remove(entryPath);
846
+ removedCount++;
847
+ } catch {
848
+ // Skip entries that can't be removed (broken symlinks, permission errors)
849
+ }
850
+ }
851
+ }
852
+
853
+ if (removedCount > 0 && !options.silent) {
854
+ await prompts.log.message(` Cleaned ${removedCount} XiaoMa files from ${targetDir}`);
855
+ }
856
+
857
+ // Remove empty directory after cleanup
858
+ if (removedCount > 0) {
859
+ try {
860
+ const remaining = await fs.readdir(targetPath);
861
+ if (remaining.length === 0) {
862
+ await fs.remove(targetPath);
863
+ }
864
+ } catch {
865
+ // Directory may already be gone or in use — skip
866
+ }
867
+ }
868
+ }
869
+ /**
870
+ * Strip XiaoMa-owned content from .github/copilot-instructions.md.
871
+ * The old custom installer injected content between <!-- XiaoMa:START --> and <!-- XiaoMa:END --> markers.
872
+ * Deletes the file if nothing remains. Restores .bak backup if one exists.
873
+ */
874
+ async cleanupCopilotInstructions(projectDir, options = {}) {
875
+ const filePath = path.join(projectDir, '.github', 'copilot-instructions.md');
876
+
877
+ if (!(await fs.pathExists(filePath))) return;
878
+
879
+ try {
880
+ const content = await fs.readFile(filePath, 'utf8');
881
+ const startIdx = content.indexOf('<!-- XiaoMa:START -->');
882
+ const endIdx = content.indexOf('<!-- XiaoMa:END -->');
883
+
884
+ if (startIdx === -1 || endIdx === -1 || endIdx <= startIdx) return;
885
+
886
+ const cleaned = content.slice(0, startIdx) + content.slice(endIdx + '<!-- XiaoMa:END -->'.length);
887
+
888
+ if (cleaned.trim().length === 0) {
889
+ await fs.remove(filePath);
890
+ const backupPath = `${filePath}.bak`;
891
+ if (await fs.pathExists(backupPath)) {
892
+ await fs.rename(backupPath, filePath);
893
+ if (!options.silent) await prompts.log.message(' Restored copilot-instructions.md from backup');
894
+ }
895
+ } else {
896
+ await fs.writeFile(filePath, cleaned, 'utf8');
897
+ const backupPath = `${filePath}.bak`;
898
+ if (await fs.pathExists(backupPath)) await fs.remove(backupPath);
899
+ }
900
+
901
+ if (!options.silent) await prompts.log.message(' Cleaned XiaoMa markers from copilot-instructions.md');
902
+ } catch {
903
+ if (!options.silent) await prompts.log.warn(' Warning: Could not clean XiaoMa markers from copilot-instructions.md');
904
+ }
905
+ }
906
+
907
+ /**
908
+ * Strip XiaoMa-owned modes from .kilocodemodes.
909
+ * The old custom kilo.js installer added modes with slug starting with 'xiaoma-'.
910
+ * Parses YAML, filters out XiaoMa modes, rewrites. Leaves file as-is on parse failure.
911
+ */
912
+ async cleanupKiloModes(projectDir, options = {}) {
913
+ const kiloModesPath = path.join(projectDir, '.kilocodemodes');
914
+
915
+ if (!(await fs.pathExists(kiloModesPath))) return;
916
+
917
+ const content = await fs.readFile(kiloModesPath, 'utf8');
918
+
919
+ let config;
920
+ try {
921
+ config = yaml.parse(content) || {};
922
+ } catch {
923
+ if (!options.silent) await prompts.log.warn(' Warning: Could not parse .kilocodemodes for cleanup');
924
+ return;
925
+ }
926
+
927
+ if (!Array.isArray(config.customModes)) return;
928
+
929
+ const originalCount = config.customModes.length;
930
+ config.customModes = config.customModes.filter((mode) => mode && (!mode.slug || !mode.slug.startsWith('xiaoma-')));
931
+ const removedCount = originalCount - config.customModes.length;
932
+
933
+ if (removedCount > 0) {
934
+ try {
935
+ await fs.writeFile(kiloModesPath, yaml.stringify(config, { lineWidth: 0 }));
936
+ if (!options.silent) await prompts.log.message(` Removed ${removedCount} XiaoMa modes from .kilocodemodes`);
937
+ } catch {
938
+ if (!options.silent) await prompts.log.warn(' Warning: Could not write .kilocodemodes during cleanup');
939
+ }
940
+ }
941
+ }
942
+
943
+ /**
944
+ * Strip XiaoMa-owned entries from .rovodev/prompts.yml.
945
+ * The old custom rovodev.js installer registered workflows in prompts.yml.
946
+ * Parses YAML, filters out entries with name starting with 'xiaoma-', rewrites.
947
+ * Removes the file if no entries remain.
948
+ */
949
+ async cleanupRovoDevPrompts(projectDir, options = {}) {
950
+ const promptsPath = path.join(projectDir, '.rovodev', 'prompts.yml');
951
+
952
+ if (!(await fs.pathExists(promptsPath))) return;
953
+
954
+ const content = await fs.readFile(promptsPath, 'utf8');
955
+
956
+ let config;
957
+ try {
958
+ config = yaml.parse(content) || {};
959
+ } catch {
960
+ if (!options.silent) await prompts.log.warn(' Warning: Could not parse prompts.yml for cleanup');
961
+ return;
962
+ }
963
+
964
+ if (!Array.isArray(config.prompts)) return;
965
+
966
+ const originalCount = config.prompts.length;
967
+ config.prompts = config.prompts.filter((entry) => entry && (!entry.name || !entry.name.startsWith('xiaoma-')));
968
+ const removedCount = originalCount - config.prompts.length;
969
+
970
+ if (removedCount > 0) {
971
+ try {
972
+ if (config.prompts.length === 0) {
973
+ await fs.remove(promptsPath);
974
+ } else {
975
+ await fs.writeFile(promptsPath, yaml.stringify(config, { lineWidth: 0 }));
976
+ }
977
+ if (!options.silent) await prompts.log.message(` Removed ${removedCount} XiaoMa entries from prompts.yml`);
978
+ } catch {
979
+ if (!options.silent) await prompts.log.warn(' Warning: Could not write prompts.yml during cleanup');
980
+ }
981
+ }
982
+ }
983
+
984
+ /**
985
+ * Check ancestor directories for existing XiaoMa files in the same target_dir.
986
+ * IDEs like Claude Code inherit commands from parent directories, so an existing
987
+ * installation in an ancestor would cause duplicate commands.
988
+ * @param {string} projectDir - Project directory being installed to
989
+ * @returns {Promise<string|null>} Path to conflicting directory, or null if clean
990
+ */
991
+ async findAncestorConflict(projectDir) {
992
+ const targetDir = this.installerConfig?.target_dir;
993
+ if (!targetDir) return null;
994
+
995
+ const resolvedProject = await fs.realpath(path.resolve(projectDir));
996
+ let current = path.dirname(resolvedProject);
997
+ const root = path.parse(current).root;
998
+
999
+ while (current !== root && current.length > root.length) {
1000
+ const candidatePath = path.join(current, targetDir);
1001
+ try {
1002
+ if (await fs.pathExists(candidatePath)) {
1003
+ const entries = await fs.readdir(candidatePath);
1004
+ const hasXiaoma = entries.some(
1005
+ (e) => typeof e === 'string' && e.toLowerCase().startsWith('xiaoma') && !e.toLowerCase().startsWith('xiaoma-os-'),
1006
+ );
1007
+ if (hasXiaoma) {
1008
+ return candidatePath;
1009
+ }
1010
+ }
1011
+ } catch {
1012
+ // Can't read directory — skip
1013
+ }
1014
+ current = path.dirname(current);
1015
+ }
1016
+
1017
+ return null;
1018
+ }
1019
+
1020
+ /**
1021
+ * Walk up ancestor directories from relativeDir toward projectDir, removing each if empty
1022
+ * Stops at projectDir boundary — never removes projectDir itself
1023
+ * @param {string} projectDir - Project root (boundary)
1024
+ * @param {string} relativeDir - Relative directory to start from
1025
+ */
1026
+ async removeEmptyParents(projectDir, relativeDir) {
1027
+ const resolvedProject = path.resolve(projectDir);
1028
+ let current = relativeDir;
1029
+ let last = null;
1030
+ while (current && current !== '.' && current !== last) {
1031
+ last = current;
1032
+ const fullPath = path.resolve(projectDir, current);
1033
+ // Boundary guard: never traverse outside projectDir
1034
+ if (!fullPath.startsWith(resolvedProject + path.sep) && fullPath !== resolvedProject) break;
1035
+ try {
1036
+ if (!(await fs.pathExists(fullPath))) {
1037
+ // Dir already gone — advance current; last is reset at top of next iteration
1038
+ current = path.dirname(current);
1039
+ continue;
1040
+ }
1041
+ const remaining = await fs.readdir(fullPath);
1042
+ if (remaining.length > 0) break;
1043
+ await fs.rmdir(fullPath);
1044
+ } catch (error) {
1045
+ // ENOTEMPTY: TOCTOU race (file added between readdir and rmdir) — skip level, continue upward
1046
+ // ENOENT: dir removed by another process between pathExists and rmdir — skip level, continue upward
1047
+ if (error.code === 'ENOTEMPTY' || error.code === 'ENOENT') {
1048
+ current = path.dirname(current);
1049
+ continue;
1050
+ }
1051
+ break; // fatal error (e.g. EACCES) — stop upward walk
1052
+ }
1053
+ current = path.dirname(current);
1054
+ }
1055
+ }
1056
+ }
1057
+
1058
+ module.exports = { ConfigDrivenIdeSetup };