@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,1042 @@
1
+ const path = require('node:path');
2
+ const fs = require('fs-extra');
3
+ const crypto = require('node:crypto');
4
+ const { getProjectRoot } = require('../../../lib/project-root');
5
+ const prompts = require('../../../lib/prompts');
6
+
7
+ class Manifest {
8
+ /**
9
+ * Create a new manifest
10
+ * @param {string} xiaomaDir - Path to xiaoma directory
11
+ * @param {Object} data - Manifest data
12
+ * @param {Array} installedFiles - List of installed files (no longer used, files tracked in files-manifest.csv)
13
+ */
14
+ async create(xiaomaDir, data, installedFiles = []) {
15
+ const manifestPath = path.join(xiaomaDir, '_config', 'manifest.yaml');
16
+ const yaml = require('yaml');
17
+
18
+ // Ensure _config directory exists
19
+ await fs.ensureDir(path.dirname(manifestPath));
20
+
21
+ // Get the XiaoMa version from package.json
22
+ const xiaomaVersion = data.version || require(path.join(process.cwd(), 'package.json')).version;
23
+
24
+ // Convert module list to new detailed format
25
+ const BUILT_IN_MODULES = new Set(['core', 'xmc', 'xpm']);
26
+ const moduleDetails = [];
27
+ if (data.modules && Array.isArray(data.modules)) {
28
+ for (const moduleName of data.modules) {
29
+ // Built-in modules use the XiaoMa version and are sourced as 'built-in'
30
+ const isBuiltIn = BUILT_IN_MODULES.has(moduleName);
31
+ const moduleVersion = isBuiltIn ? xiaomaVersion : null;
32
+ const now = data.installDate || new Date().toISOString();
33
+
34
+ moduleDetails.push({
35
+ name: moduleName,
36
+ version: moduleVersion,
37
+ installDate: now,
38
+ lastUpdated: now,
39
+ source: isBuiltIn ? 'built-in' : 'unknown',
40
+ });
41
+ }
42
+ }
43
+
44
+ // Structure the manifest data
45
+ const manifestData = {
46
+ installation: {
47
+ version: xiaomaVersion,
48
+ installDate: data.installDate || new Date().toISOString(),
49
+ lastUpdated: data.lastUpdated || new Date().toISOString(),
50
+ },
51
+ modules: moduleDetails,
52
+ ides: data.ides || [],
53
+ };
54
+
55
+ // Write YAML manifest
56
+ // Clean the manifest data to remove any non-serializable values
57
+ const cleanManifestData = structuredClone(manifestData);
58
+
59
+ const yamlContent = yaml.stringify(cleanManifestData, {
60
+ indent: 2,
61
+ lineWidth: 0,
62
+ sortKeys: false,
63
+ });
64
+
65
+ // Ensure POSIX-compliant final newline
66
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
67
+ await fs.writeFile(manifestPath, content, 'utf8');
68
+ return { success: true, path: manifestPath, filesTracked: 0 };
69
+ }
70
+
71
+ /**
72
+ * Read existing manifest
73
+ * @param {string} xiaomaDir - Path to xiaoma directory
74
+ * @returns {Object|null} Manifest data or null if not found
75
+ */
76
+ async read(xiaomaDir) {
77
+ const yamlPath = path.join(xiaomaDir, '_config', 'manifest.yaml');
78
+ const yaml = require('yaml');
79
+
80
+ if (await fs.pathExists(yamlPath)) {
81
+ try {
82
+ const content = await fs.readFile(yamlPath, 'utf8');
83
+ const manifestData = yaml.parse(content);
84
+
85
+ // Handle new detailed module format
86
+ const modules = manifestData.modules || [];
87
+
88
+ // For backward compatibility: if modules is an array of strings (old format),
89
+ // the calling code may need the array of names
90
+ const moduleNames = modules.map((m) => (typeof m === 'string' ? m : m.name));
91
+
92
+ // Check if we have the new detailed format
93
+ const hasDetailedModules = modules.length > 0 && typeof modules[0] === 'object';
94
+
95
+ // Flatten the structure for compatibility with existing code
96
+ return {
97
+ version: manifestData.installation?.version,
98
+ installDate: manifestData.installation?.installDate,
99
+ lastUpdated: manifestData.installation?.lastUpdated,
100
+ modules: moduleNames, // Simple array of module names for backward compatibility
101
+ modulesDetailed: hasDetailedModules ? modules : null, // New detailed format
102
+ customModules: manifestData.customModules || [], // Keep for backward compatibility
103
+ ides: manifestData.ides || [],
104
+ };
105
+ } catch (error) {
106
+ await prompts.log.error(`Failed to read YAML manifest: ${error.message}`);
107
+ }
108
+ }
109
+
110
+ return null;
111
+ }
112
+
113
+ /**
114
+ * Update existing manifest
115
+ * @param {string} xiaomaDir - Path to xiaoma directory
116
+ * @param {Object} updates - Fields to update
117
+ * @param {Array} installedFiles - Updated list of installed files
118
+ */
119
+ async update(xiaomaDir, updates, installedFiles = null) {
120
+ const yaml = require('yaml');
121
+ const manifest = (await this._readRaw(xiaomaDir)) || {
122
+ installation: {},
123
+ modules: [],
124
+ ides: [],
125
+ };
126
+
127
+ // Handle module updates
128
+ if (updates.modules) {
129
+ // If modules is being updated, we need to preserve detailed module info
130
+ const existingDetailed = manifest.modules || [];
131
+ const incomingNames = updates.modules;
132
+
133
+ // Build updated modules array
134
+ const updatedModules = [];
135
+ for (const name of incomingNames) {
136
+ const existing = existingDetailed.find((m) => m.name === name);
137
+ if (existing) {
138
+ // Preserve existing details, update lastUpdated if this module is being updated
139
+ updatedModules.push({
140
+ ...existing,
141
+ lastUpdated: new Date().toISOString(),
142
+ });
143
+ } else {
144
+ // New module - add with minimal details
145
+ updatedModules.push({
146
+ name,
147
+ version: null,
148
+ installDate: new Date().toISOString(),
149
+ lastUpdated: new Date().toISOString(),
150
+ source: 'unknown',
151
+ });
152
+ }
153
+ }
154
+
155
+ manifest.modules = updatedModules;
156
+ }
157
+
158
+ // Merge other updates
159
+ if (updates.version) {
160
+ manifest.installation.version = updates.version;
161
+ }
162
+ if (updates.installDate) {
163
+ manifest.installation.installDate = updates.installDate;
164
+ }
165
+ manifest.installation.lastUpdated = new Date().toISOString();
166
+
167
+ if (updates.ides) {
168
+ manifest.ides = updates.ides;
169
+ }
170
+
171
+ // Handle per-module version updates
172
+ if (updates.moduleVersions) {
173
+ for (const [moduleName, versionInfo] of Object.entries(updates.moduleVersions)) {
174
+ const moduleIndex = manifest.modules.findIndex((m) => m.name === moduleName);
175
+ if (moduleIndex !== -1) {
176
+ manifest.modules[moduleIndex] = {
177
+ ...manifest.modules[moduleIndex],
178
+ ...versionInfo,
179
+ lastUpdated: new Date().toISOString(),
180
+ };
181
+ }
182
+ }
183
+ }
184
+
185
+ // Handle adding a new module with version info
186
+ if (updates.addModule) {
187
+ const { name, version, source, npmPackage, repoUrl } = updates.addModule;
188
+ const existing = manifest.modules.find((m) => m.name === name);
189
+ if (!existing) {
190
+ manifest.modules.push({
191
+ name,
192
+ version: version || null,
193
+ installDate: new Date().toISOString(),
194
+ lastUpdated: new Date().toISOString(),
195
+ source: source || 'external',
196
+ npmPackage: npmPackage || null,
197
+ repoUrl: repoUrl || null,
198
+ });
199
+ }
200
+ }
201
+
202
+ const manifestPath = path.join(xiaomaDir, '_config', 'manifest.yaml');
203
+ await fs.ensureDir(path.dirname(manifestPath));
204
+
205
+ // Clean the manifest data to remove any non-serializable values
206
+ const cleanManifestData = structuredClone(manifest);
207
+
208
+ const yamlContent = yaml.stringify(cleanManifestData, {
209
+ indent: 2,
210
+ lineWidth: 0,
211
+ sortKeys: false,
212
+ });
213
+
214
+ // Ensure POSIX-compliant final newline
215
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
216
+ await fs.writeFile(manifestPath, content, 'utf8');
217
+
218
+ // Return the flattened format for compatibility
219
+ return this._flattenManifest(manifest);
220
+ }
221
+
222
+ /**
223
+ * Read raw manifest data without flattening
224
+ * @param {string} xiaomaDir - Path to xiaoma directory
225
+ * @returns {Object|null} Raw manifest data or null if not found
226
+ */
227
+ async _readRaw(xiaomaDir) {
228
+ const yamlPath = path.join(xiaomaDir, '_config', 'manifest.yaml');
229
+ const yaml = require('yaml');
230
+
231
+ if (await fs.pathExists(yamlPath)) {
232
+ try {
233
+ const content = await fs.readFile(yamlPath, 'utf8');
234
+ return yaml.parse(content);
235
+ } catch (error) {
236
+ await prompts.log.error(`Failed to read YAML manifest: ${error.message}`);
237
+ }
238
+ }
239
+
240
+ return null;
241
+ }
242
+
243
+ /**
244
+ * Flatten manifest for backward compatibility
245
+ * @param {Object} manifest - Raw manifest data
246
+ * @returns {Object} Flattened manifest
247
+ */
248
+ _flattenManifest(manifest) {
249
+ const modules = manifest.modules || [];
250
+ const moduleNames = modules.map((m) => (typeof m === 'string' ? m : m.name));
251
+ const hasDetailedModules = modules.length > 0 && typeof modules[0] === 'object';
252
+
253
+ return {
254
+ version: manifest.installation?.version,
255
+ installDate: manifest.installation?.installDate,
256
+ lastUpdated: manifest.installation?.lastUpdated,
257
+ modules: moduleNames,
258
+ modulesDetailed: hasDetailedModules ? modules : null,
259
+ customModules: manifest.customModules || [],
260
+ ides: manifest.ides || [],
261
+ };
262
+ }
263
+
264
+ /**
265
+ * Add a module to the manifest with optional version info
266
+ * If module already exists, update its version info
267
+ * @param {string} xiaomaDir - Path to xiaoma directory
268
+ * @param {string} moduleName - Module name to add
269
+ * @param {Object} options - Optional version info
270
+ */
271
+ async addModule(xiaomaDir, moduleName, options = {}) {
272
+ let manifest = await this._readRaw(xiaomaDir);
273
+ if (!manifest) {
274
+ // Bootstrap a minimal manifest if it doesn't exist yet
275
+ // (e.g., skill-only modules with no agents to compile)
276
+ manifest = { modules: [] };
277
+ }
278
+
279
+ if (!manifest.modules) {
280
+ manifest.modules = [];
281
+ }
282
+
283
+ const existingIndex = manifest.modules.findIndex((m) => m.name === moduleName);
284
+
285
+ if (existingIndex === -1) {
286
+ // Module doesn't exist, add it
287
+ manifest.modules.push({
288
+ name: moduleName,
289
+ version: options.version || null,
290
+ installDate: new Date().toISOString(),
291
+ lastUpdated: new Date().toISOString(),
292
+ source: options.source || 'unknown',
293
+ npmPackage: options.npmPackage || null,
294
+ repoUrl: options.repoUrl || null,
295
+ });
296
+ } else {
297
+ // Module exists, update its version info
298
+ const existing = manifest.modules[existingIndex];
299
+ manifest.modules[existingIndex] = {
300
+ ...existing,
301
+ version: options.version === undefined ? existing.version : options.version,
302
+ source: options.source || existing.source,
303
+ npmPackage: options.npmPackage === undefined ? existing.npmPackage : options.npmPackage,
304
+ repoUrl: options.repoUrl === undefined ? existing.repoUrl : options.repoUrl,
305
+ lastUpdated: new Date().toISOString(),
306
+ };
307
+ }
308
+
309
+ await this._writeRaw(xiaomaDir, manifest);
310
+ }
311
+
312
+ /**
313
+ * Remove a module from the manifest
314
+ * @param {string} xiaomaDir - Path to xiaoma directory
315
+ * @param {string} moduleName - Module name to remove
316
+ */
317
+ async removeModule(xiaomaDir, moduleName) {
318
+ const manifest = await this._readRaw(xiaomaDir);
319
+ if (!manifest || !manifest.modules) {
320
+ return;
321
+ }
322
+
323
+ const index = manifest.modules.findIndex((m) => m.name === moduleName);
324
+ if (index !== -1) {
325
+ manifest.modules.splice(index, 1);
326
+ await this._writeRaw(xiaomaDir, manifest);
327
+ }
328
+ }
329
+
330
+ /**
331
+ * Update a single module's version info
332
+ * @param {string} xiaomaDir - Path to xiaoma directory
333
+ * @param {string} moduleName - Module name
334
+ * @param {Object} versionInfo - Version info to update
335
+ */
336
+ async updateModuleVersion(xiaomaDir, moduleName, versionInfo) {
337
+ const manifest = await this._readRaw(xiaomaDir);
338
+ if (!manifest || !manifest.modules) {
339
+ return;
340
+ }
341
+
342
+ const index = manifest.modules.findIndex((m) => m.name === moduleName);
343
+ if (index !== -1) {
344
+ manifest.modules[index] = {
345
+ ...manifest.modules[index],
346
+ ...versionInfo,
347
+ lastUpdated: new Date().toISOString(),
348
+ };
349
+ await this._writeRaw(xiaomaDir, manifest);
350
+ }
351
+ }
352
+
353
+ /**
354
+ * Get version info for a specific module
355
+ * @param {string} xiaomaDir - Path to xiaoma directory
356
+ * @param {string} moduleName - Module name
357
+ * @returns {Object|null} Module version info or null
358
+ */
359
+ async getModuleVersion(xiaomaDir, moduleName) {
360
+ const manifest = await this._readRaw(xiaomaDir);
361
+ if (!manifest || !manifest.modules) {
362
+ return null;
363
+ }
364
+
365
+ return manifest.modules.find((m) => m.name === moduleName) || null;
366
+ }
367
+
368
+ /**
369
+ * Get all modules with their version info
370
+ * @param {string} xiaomaDir - Path to xiaoma directory
371
+ * @returns {Array} Array of module info objects
372
+ */
373
+ async getAllModuleVersions(xiaomaDir) {
374
+ const manifest = await this._readRaw(xiaomaDir);
375
+ if (!manifest || !manifest.modules) {
376
+ return [];
377
+ }
378
+
379
+ return manifest.modules;
380
+ }
381
+
382
+ /**
383
+ * Write raw manifest data to file
384
+ * @param {string} xiaomaDir - Path to xiaoma directory
385
+ * @param {Object} manifestData - Raw manifest data to write
386
+ */
387
+ async _writeRaw(xiaomaDir, manifestData) {
388
+ const yaml = require('yaml');
389
+ const manifestPath = path.join(xiaomaDir, '_config', 'manifest.yaml');
390
+
391
+ await fs.ensureDir(path.dirname(manifestPath));
392
+
393
+ const cleanManifestData = structuredClone(manifestData);
394
+
395
+ const yamlContent = yaml.stringify(cleanManifestData, {
396
+ indent: 2,
397
+ lineWidth: 0,
398
+ sortKeys: false,
399
+ });
400
+
401
+ const content = yamlContent.endsWith('\n') ? yamlContent : yamlContent + '\n';
402
+ await fs.writeFile(manifestPath, content, 'utf8');
403
+ }
404
+
405
+ /**
406
+ * Add an IDE configuration to the manifest
407
+ * @param {string} xiaomaDir - Path to xiaoma directory
408
+ * @param {string} ideName - IDE name to add
409
+ */
410
+ async addIde(xiaomaDir, ideName) {
411
+ const manifest = await this.read(xiaomaDir);
412
+ if (!manifest) {
413
+ throw new Error('No manifest found');
414
+ }
415
+
416
+ if (!manifest.ides) {
417
+ manifest.ides = [];
418
+ }
419
+
420
+ if (!manifest.ides.includes(ideName)) {
421
+ manifest.ides.push(ideName);
422
+ await this.update(xiaomaDir, { ides: manifest.ides });
423
+ }
424
+ }
425
+
426
+ /**
427
+ * Calculate SHA256 hash of a file
428
+ * @param {string} filePath - Path to file
429
+ * @returns {string} SHA256 hash
430
+ */
431
+ async calculateFileHash(filePath) {
432
+ try {
433
+ const content = await fs.readFile(filePath);
434
+ return crypto.createHash('sha256').update(content).digest('hex');
435
+ } catch {
436
+ return null;
437
+ }
438
+ }
439
+
440
+ /**
441
+ * Parse installed files to extract metadata
442
+ * @param {Array} installedFiles - List of installed file paths
443
+ * @param {string} xiaomaDir - Path to xiaoma directory for relative paths
444
+ * @returns {Array} Array of file metadata objects
445
+ */
446
+ async parseInstalledFiles(installedFiles, xiaomaDir) {
447
+ const fileMetadata = [];
448
+
449
+ for (const filePath of installedFiles) {
450
+ const fileExt = path.extname(filePath).toLowerCase();
451
+ // Make path relative to parent of xiaoma directory, starting with 'xiaoma/'
452
+ const relativePath = 'xiaoma' + filePath.replace(xiaomaDir, '').replaceAll('\\', '/');
453
+
454
+ // Calculate file hash
455
+ const hash = await this.calculateFileHash(filePath);
456
+
457
+ // Handle markdown files - extract XML metadata if present
458
+ if (fileExt === '.md') {
459
+ try {
460
+ if (await fs.pathExists(filePath)) {
461
+ const content = await fs.readFile(filePath, 'utf8');
462
+ const metadata = this.extractXmlNodeAttributes(content, filePath, relativePath);
463
+
464
+ if (metadata) {
465
+ // Has XML metadata
466
+ metadata.hash = hash;
467
+ fileMetadata.push(metadata);
468
+ } else {
469
+ // No XML metadata - still track the file
470
+ fileMetadata.push({
471
+ file: relativePath,
472
+ type: 'md',
473
+ name: path.basename(filePath, fileExt),
474
+ title: null,
475
+ hash: hash,
476
+ });
477
+ }
478
+ }
479
+ } catch (error) {
480
+ await prompts.log.warn(`Could not parse ${filePath}: ${error.message}`);
481
+ }
482
+ }
483
+ // Handle other file types (CSV, JSON, YAML, etc.)
484
+ else {
485
+ fileMetadata.push({
486
+ file: relativePath,
487
+ type: fileExt.slice(1), // Remove the dot
488
+ name: path.basename(filePath, fileExt),
489
+ title: null,
490
+ hash: hash,
491
+ });
492
+ }
493
+ }
494
+
495
+ return fileMetadata;
496
+ }
497
+
498
+ /**
499
+ * Extract XML node attributes from MD file content
500
+ * @param {string} content - File content
501
+ * @param {string} filePath - File path for context
502
+ * @param {string} relativePath - Relative path starting with 'xiaoma/'
503
+ * @returns {Object|null} Extracted metadata or null
504
+ */
505
+ extractXmlNodeAttributes(content, filePath, relativePath) {
506
+ // Look for XML blocks in code fences
507
+ const xmlBlockMatch = content.match(/```xml\s*([\s\S]*?)```/);
508
+ if (!xmlBlockMatch) {
509
+ return null;
510
+ }
511
+
512
+ const xmlContent = xmlBlockMatch[1];
513
+
514
+ // Extract root XML node (agent, task, template, etc.)
515
+ const rootNodeMatch = xmlContent.match(/<(\w+)([^>]*)>/);
516
+ if (!rootNodeMatch) {
517
+ return null;
518
+ }
519
+
520
+ const nodeType = rootNodeMatch[1];
521
+ const attributes = rootNodeMatch[2];
522
+
523
+ // Extract name and title attributes (id not needed since we have path)
524
+ const nameMatch = attributes.match(/name="([^"]*)"/);
525
+ const titleMatch = attributes.match(/title="([^"]*)"/);
526
+
527
+ return {
528
+ file: relativePath,
529
+ type: nodeType,
530
+ name: nameMatch ? nameMatch[1] : null,
531
+ title: titleMatch ? titleMatch[1] : null,
532
+ };
533
+ }
534
+
535
+ /**
536
+ * Generate CSV manifest content
537
+ * @param {Object} data - Manifest data
538
+ * @param {Array} fileMetadata - File metadata array
539
+ * @param {Object} moduleConfigs - Module configuration data
540
+ * @returns {string} CSV content
541
+ */
542
+ generateManifestCsv(data, fileMetadata, moduleConfigs = {}) {
543
+ const timestamp = new Date().toISOString();
544
+ let csv = [];
545
+
546
+ // Header section
547
+ csv.push(
548
+ '# XiaoMa Manifest',
549
+ `# Generated: ${timestamp}`,
550
+ '',
551
+ '## Installation Info',
552
+ 'Property,Value',
553
+ `Version,${data.version}`,
554
+ `InstallDate,${data.installDate || timestamp}`,
555
+ `LastUpdated,${data.lastUpdated || timestamp}`,
556
+ );
557
+ if (data.language) {
558
+ csv.push(`Language,${data.language}`);
559
+ }
560
+ csv.push('');
561
+
562
+ // Modules section
563
+ if (data.modules && data.modules.length > 0) {
564
+ csv.push('## Modules', 'Name,Version,ShortTitle');
565
+ for (const moduleName of data.modules) {
566
+ const config = moduleConfigs[moduleName] || {};
567
+ csv.push([moduleName, config.version || '', config['short-title'] || ''].map((v) => this.escapeCsv(v)).join(','));
568
+ }
569
+ csv.push('');
570
+ }
571
+
572
+ // IDEs section
573
+ if (data.ides && data.ides.length > 0) {
574
+ csv.push('## IDEs', 'IDE');
575
+ for (const ide of data.ides) {
576
+ csv.push(this.escapeCsv(ide));
577
+ }
578
+ csv.push('');
579
+ }
580
+
581
+ // Files section - NO LONGER USED
582
+ // Files are now tracked in files-manifest.csv by ManifestGenerator
583
+
584
+ return csv.join('\n');
585
+ }
586
+
587
+ /**
588
+ * Parse CSV manifest content back to object
589
+ * @param {string} csvContent - CSV content to parse
590
+ * @returns {Object} Parsed manifest data
591
+ */
592
+ parseManifestCsv(csvContent) {
593
+ const result = {
594
+ modules: [],
595
+ ides: [],
596
+ files: [],
597
+ };
598
+
599
+ const lines = csvContent.split('\n');
600
+ let section = '';
601
+
602
+ for (const line_ of lines) {
603
+ const line = line_.trim();
604
+
605
+ // Skip empty lines and comments
606
+ if (!line || line.startsWith('#')) {
607
+ // Check for section headers
608
+ if (line.startsWith('## ')) {
609
+ section = line.slice(3).toLowerCase();
610
+ }
611
+ continue;
612
+ }
613
+
614
+ // Parse based on current section
615
+ switch (section) {
616
+ case 'installation info': {
617
+ // Skip header row
618
+ if (line === 'Property,Value') continue;
619
+
620
+ const [property, ...valueParts] = line.split(',');
621
+ const value = this.unescapeCsv(valueParts.join(','));
622
+
623
+ switch (property) {
624
+ // Path no longer stored in manifest
625
+ case 'Version': {
626
+ result.version = value;
627
+ break;
628
+ }
629
+ case 'InstallDate': {
630
+ result.installDate = value;
631
+ break;
632
+ }
633
+ case 'LastUpdated': {
634
+ result.lastUpdated = value;
635
+ break;
636
+ }
637
+ case 'Language': {
638
+ result.language = value;
639
+ break;
640
+ }
641
+ }
642
+
643
+ break;
644
+ }
645
+ case 'modules': {
646
+ // Skip header row
647
+ if (line === 'Name,Version,ShortTitle') continue;
648
+
649
+ const parts = this.parseCsvLine(line);
650
+ if (parts[0]) {
651
+ result.modules.push(parts[0]);
652
+ }
653
+
654
+ break;
655
+ }
656
+ case 'ides': {
657
+ // Skip header row
658
+ if (line === 'IDE') continue;
659
+
660
+ result.ides.push(this.unescapeCsv(line));
661
+
662
+ break;
663
+ }
664
+ case 'files': {
665
+ // Skip header rows (support both old and new format)
666
+ if (line === 'Type,Path,Name,Title' || line === 'Type,Path,Name,Title,Hash') continue;
667
+
668
+ const parts = this.parseCsvLine(line);
669
+ if (parts.length >= 2) {
670
+ result.files.push({
671
+ type: parts[0] || '',
672
+ file: parts[1] || '',
673
+ name: parts[2] || null,
674
+ title: parts[3] || null,
675
+ hash: parts[4] || null, // Hash column (may not exist in old manifests)
676
+ });
677
+ }
678
+
679
+ break;
680
+ }
681
+ // No default
682
+ }
683
+ }
684
+
685
+ return result;
686
+ }
687
+
688
+ /**
689
+ * Parse a CSV line handling quotes and commas
690
+ * @param {string} line - CSV line to parse
691
+ * @returns {Array} Array of values
692
+ */
693
+ parseCsvLine(line) {
694
+ const result = [];
695
+ let current = '';
696
+ let inQuotes = false;
697
+
698
+ for (let i = 0; i < line.length; i++) {
699
+ const char = line[i];
700
+
701
+ if (char === '"') {
702
+ if (inQuotes && line[i + 1] === '"') {
703
+ // Escaped quote
704
+ current += '"';
705
+ i++;
706
+ } else {
707
+ // Toggle quote state
708
+ inQuotes = !inQuotes;
709
+ }
710
+ } else if (char === ',' && !inQuotes) {
711
+ // Field separator
712
+ result.push(this.unescapeCsv(current));
713
+ current = '';
714
+ } else {
715
+ current += char;
716
+ }
717
+ }
718
+
719
+ // Add the last field
720
+ result.push(this.unescapeCsv(current));
721
+
722
+ return result;
723
+ }
724
+
725
+ /**
726
+ * Escape CSV special characters
727
+ * @param {string} text - Text to escape
728
+ * @returns {string} Escaped text
729
+ */
730
+ escapeCsv(text) {
731
+ if (!text) return '';
732
+ const str = String(text);
733
+
734
+ // If contains comma, newline, or quote, wrap in quotes and escape quotes
735
+ if (str.includes(',') || str.includes('\n') || str.includes('"')) {
736
+ return '"' + str.replaceAll('"', '""') + '"';
737
+ }
738
+
739
+ return str;
740
+ }
741
+
742
+ /**
743
+ * Unescape CSV field
744
+ * @param {string} text - Text to unescape
745
+ * @returns {string} Unescaped text
746
+ */
747
+ unescapeCsv(text) {
748
+ if (!text) return '';
749
+
750
+ // Remove surrounding quotes if present
751
+ if (text.startsWith('"') && text.endsWith('"')) {
752
+ text = text.slice(1, -1);
753
+ // Unescape doubled quotes
754
+ text = text.replaceAll('""', '"');
755
+ }
756
+
757
+ return text;
758
+ }
759
+
760
+ /**
761
+ * Load module configuration files
762
+ * @param {Array} modules - List of module names
763
+ * @returns {Object} Module configurations indexed by name
764
+ */
765
+ async loadModuleConfigs(modules) {
766
+ const configs = {};
767
+
768
+ for (const moduleName of modules) {
769
+ // Handle core module differently - it's in src/core not src/modules/core
770
+ const configPath =
771
+ moduleName === 'core'
772
+ ? path.join(process.cwd(), 'src', 'core', 'config.yaml')
773
+ : path.join(process.cwd(), 'src', 'modules', moduleName, 'config.yaml');
774
+
775
+ try {
776
+ if (await fs.pathExists(configPath)) {
777
+ const yaml = require('yaml');
778
+ const content = await fs.readFile(configPath, 'utf8');
779
+ configs[moduleName] = yaml.parse(content);
780
+ }
781
+ } catch (error) {
782
+ await prompts.log.warn(`Could not load config for module ${moduleName}: ${error.message}`);
783
+ }
784
+ }
785
+
786
+ return configs;
787
+ }
788
+ /**
789
+ * Add a custom module to the manifest with its source path
790
+ * @param {string} xiaomaDir - Path to xiaoma directory
791
+ * @param {Object} customModule - Custom module info
792
+ */
793
+ async addCustomModule(xiaomaDir, customModule) {
794
+ const manifest = await this.read(xiaomaDir);
795
+ if (!manifest) {
796
+ throw new Error('No manifest found');
797
+ }
798
+
799
+ if (!manifest.customModules) {
800
+ manifest.customModules = [];
801
+ }
802
+
803
+ // Check if custom module already exists
804
+ const existingIndex = manifest.customModules.findIndex((m) => m.id === customModule.id);
805
+ if (existingIndex === -1) {
806
+ // Add new entry
807
+ manifest.customModules.push(customModule);
808
+ } else {
809
+ // Update existing entry
810
+ manifest.customModules[existingIndex] = customModule;
811
+ }
812
+
813
+ await this.update(xiaomaDir, { customModules: manifest.customModules });
814
+ }
815
+
816
+ /**
817
+ * Remove a custom module from the manifest
818
+ * @param {string} xiaomaDir - Path to xiaoma directory
819
+ * @param {string} moduleId - Module ID to remove
820
+ */
821
+ async removeCustomModule(xiaomaDir, moduleId) {
822
+ const manifest = await this.read(xiaomaDir);
823
+ if (!manifest || !manifest.customModules) {
824
+ return;
825
+ }
826
+
827
+ const index = manifest.customModules.findIndex((m) => m.id === moduleId);
828
+ if (index !== -1) {
829
+ manifest.customModules.splice(index, 1);
830
+ await this.update(xiaomaDir, { customModules: manifest.customModules });
831
+ }
832
+ }
833
+
834
+ /**
835
+ * Get module version info from source
836
+ * @param {string} moduleName - Module name/code
837
+ * @param {string} xiaomaDir - Path to xiaoma directory
838
+ * @param {string} moduleSourcePath - Optional source path for custom modules
839
+ * @returns {Object} Version info object with version, source, npmPackage, repoUrl
840
+ */
841
+ async getModuleVersionInfo(moduleName, xiaomaDir, moduleSourcePath = null) {
842
+ const os = require('node:os');
843
+ const yaml = require('yaml');
844
+
845
+ // Built-in modules use XiaoMa version (core, xmc, xpm are in XiaoMa-CLI repo)
846
+ if (['core', 'xmc', 'xpm'].includes(moduleName)) {
847
+ const xiaomaVersion = require(path.join(getProjectRoot(), 'package.json')).version;
848
+ return {
849
+ version: xiaomaVersion,
850
+ source: 'built-in',
851
+ npmPackage: null,
852
+ repoUrl: null,
853
+ };
854
+ }
855
+
856
+ // Check if this is an external official module
857
+ const { ExternalModuleManager } = require('../modules/external-manager');
858
+ const extMgr = new ExternalModuleManager();
859
+ const moduleInfo = await extMgr.getModuleByCode(moduleName);
860
+
861
+ if (moduleInfo) {
862
+ // External module - try to get version from npm registry first, then fall back to cache
863
+ let version = null;
864
+
865
+ if (moduleInfo.npmPackage) {
866
+ // Fetch version from npm registry
867
+ try {
868
+ version = await this.fetchNpmVersion(moduleInfo.npmPackage);
869
+ } catch {
870
+ // npm fetch failed, try cache as fallback
871
+ }
872
+ }
873
+
874
+ // If npm didn't work, try reading from cached repo's package.json
875
+ if (!version) {
876
+ const cacheDir = path.join(os.homedir(), '.xiaoma', 'cache', 'external-modules', moduleName);
877
+ const packageJsonPath = path.join(cacheDir, 'package.json');
878
+
879
+ if (await fs.pathExists(packageJsonPath)) {
880
+ try {
881
+ const pkg = require(packageJsonPath);
882
+ version = pkg.version;
883
+ } catch (error) {
884
+ await prompts.log.warn(`Failed to read package.json for ${moduleName}: ${error.message}`);
885
+ }
886
+ }
887
+ }
888
+
889
+ return {
890
+ version: version,
891
+ source: 'external',
892
+ npmPackage: moduleInfo.npmPackage || null,
893
+ repoUrl: moduleInfo.url || null,
894
+ };
895
+ }
896
+
897
+ // Custom module - check cache directory
898
+ const cacheDir = path.join(xiaomaDir, '_config', 'custom', moduleName);
899
+ const moduleYamlPath = path.join(cacheDir, 'module.yaml');
900
+
901
+ if (await fs.pathExists(moduleYamlPath)) {
902
+ try {
903
+ const yamlContent = await fs.readFile(moduleYamlPath, 'utf8');
904
+ const moduleConfig = yaml.parse(yamlContent);
905
+ return {
906
+ version: moduleConfig.version || null,
907
+ source: 'custom',
908
+ npmPackage: moduleConfig.npmPackage || null,
909
+ repoUrl: moduleConfig.repoUrl || null,
910
+ };
911
+ } catch (error) {
912
+ await prompts.log.warn(`Failed to read module.yaml for ${moduleName}: ${error.message}`);
913
+ }
914
+ }
915
+
916
+ // Unknown module
917
+ return {
918
+ version: null,
919
+ source: 'unknown',
920
+ npmPackage: null,
921
+ repoUrl: null,
922
+ };
923
+ }
924
+
925
+ /**
926
+ * Fetch latest version from npm for a package
927
+ * @param {string} packageName - npm package name
928
+ * @returns {string|null} Latest version or null
929
+ */
930
+ async fetchNpmVersion(packageName) {
931
+ try {
932
+ const https = require('node:https');
933
+ const { execSync } = require('node:child_process');
934
+
935
+ // Try using npm view first (more reliable)
936
+ try {
937
+ const result = execSync(`npm view ${packageName} version`, {
938
+ encoding: 'utf8',
939
+ stdio: 'pipe',
940
+ timeout: 10_000,
941
+ });
942
+ return result.trim();
943
+ } catch {
944
+ // Fallback to npm registry API
945
+ return new Promise((resolve, reject) => {
946
+ https
947
+ .get(`https://registry.npmjs.org/${packageName}`, (res) => {
948
+ let data = '';
949
+ res.on('data', (chunk) => (data += chunk));
950
+ res.on('end', () => {
951
+ try {
952
+ const pkg = JSON.parse(data);
953
+ resolve(pkg['dist-tags']?.latest || pkg.version || null);
954
+ } catch {
955
+ resolve(null);
956
+ }
957
+ });
958
+ })
959
+ .on('error', () => resolve(null));
960
+ });
961
+ }
962
+ } catch {
963
+ return null;
964
+ }
965
+ }
966
+
967
+ /**
968
+ * Check for available updates for installed modules
969
+ * @param {string} xiaomaDir - Path to xiaoma directory
970
+ * @returns {Array} Array of update info objects
971
+ */
972
+ async checkForUpdates(xiaomaDir) {
973
+ const modules = await this.getAllModuleVersions(xiaomaDir);
974
+ const updates = [];
975
+
976
+ for (const module of modules) {
977
+ if (!module.npmPackage) {
978
+ continue; // Skip modules without npm package (built-in)
979
+ }
980
+
981
+ const latestVersion = await this.fetchNpmVersion(module.npmPackage);
982
+ if (!latestVersion) {
983
+ continue;
984
+ }
985
+
986
+ if (module.version !== latestVersion) {
987
+ updates.push({
988
+ name: module.name,
989
+ installedVersion: module.version,
990
+ latestVersion: latestVersion,
991
+ npmPackage: module.npmPackage,
992
+ updateAvailable: true,
993
+ });
994
+ }
995
+ }
996
+
997
+ return updates;
998
+ }
999
+
1000
+ /**
1001
+ * Compare two semantic versions
1002
+ * @param {string} v1 - First version
1003
+ * @param {string} v2 - Second version
1004
+ * @returns {number} -1 if v1 < v2, 0 if v1 == v2, 1 if v1 > v2
1005
+ */
1006
+ compareVersions(v1, v2) {
1007
+ if (!v1 || !v2) return 0;
1008
+
1009
+ const normalize = (v) => {
1010
+ // Remove leading 'v' if present
1011
+ v = v.replace(/^v/, '');
1012
+ // Handle prerelease tags
1013
+ const parts = v.split('-');
1014
+ const main = parts[0].split('.');
1015
+ const prerelease = parts[1];
1016
+ return { main, prerelease };
1017
+ };
1018
+
1019
+ const n1 = normalize(v1);
1020
+ const n2 = normalize(v2);
1021
+
1022
+ // Compare main version parts
1023
+ for (let i = 0; i < 3; i++) {
1024
+ const num1 = parseInt(n1.main[i] || '0', 10);
1025
+ const num2 = parseInt(n2.main[i] || '0', 10);
1026
+ if (num1 !== num2) {
1027
+ return num1 < num2 ? -1 : 1;
1028
+ }
1029
+ }
1030
+
1031
+ // If main versions are equal, compare prerelease
1032
+ if (n1.prerelease && n2.prerelease) {
1033
+ return n1.prerelease < n2.prerelease ? -1 : n1.prerelease > n2.prerelease ? 1 : 0;
1034
+ }
1035
+ if (n1.prerelease) return -1; // Prerelease is older than stable
1036
+ if (n2.prerelease) return 1; // Stable is newer than prerelease
1037
+
1038
+ return 0;
1039
+ }
1040
+ }
1041
+
1042
+ module.exports = { Manifest };