@zeyue0329/xiaoma-cli 1.13.0 → 1.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/package.json +24 -14
  2. package/src/core-skills/module-help.csv +13 -0
  3. package/src/{core → core-skills}/module.yaml +8 -0
  4. package/src/{core/skills/xiaoma-advanced-elicitation/workflow.md → core-skills/xiaoma-advanced-elicitation/SKILL.md} +10 -3
  5. package/src/core-skills/xiaoma-advanced-elicitation/methods.csv +70 -0
  6. package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-03-technique-execution.md +6 -4
  7. package/src/{core/skills → core-skills}/xiaoma-brainstorming/workflow.md +1 -1
  8. package/src/core-skills/xiaoma-customize/SKILL.md +111 -0
  9. package/src/core-skills/xiaoma-customize/scripts/list_customizable_skills.js +172 -0
  10. package/src/{core/skills → core-skills}/xiaoma-distillator/resources/distillate-format-reference.md +1 -1
  11. package/src/{core/skills → core-skills}/xiaoma-distillator/scripts/analyze_sources.py +2 -2
  12. package/src/{core/skills/xiaoma-editorial-review-prose/workflow.md → core-skills/xiaoma-editorial-review-prose/SKILL.md} +5 -0
  13. package/src/{core/skills/xiaoma-editorial-review-structure/workflow.md → core-skills/xiaoma-editorial-review-structure/SKILL.md} +5 -0
  14. package/src/core-skills/xiaoma-help/SKILL.md +75 -0
  15. package/src/{core/skills/xiaoma-index-docs/workflow.md → core-skills/xiaoma-index-docs/SKILL.md} +5 -0
  16. package/src/core-skills/xiaoma-party-mode/SKILL.md +128 -0
  17. package/src/{core/skills/xiaoma-review-adversarial-general/workflow.md → core-skills/xiaoma-review-adversarial-general/SKILL.md} +5 -0
  18. package/src/{core/skills/xiaoma-review-edge-case-hunter/workflow.md → core-skills/xiaoma-review-edge-case-hunter/SKILL.md} +5 -0
  19. package/src/{core/skills/xiaoma-shard-doc/workflow.md → core-skills/xiaoma-shard-doc/SKILL.md} +5 -0
  20. package/src/core-skills/xiaoma-spec/SKILL.md +129 -0
  21. package/src/core-skills/xiaoma-spec/assets/headless-schemas.md +33 -0
  22. package/src/core-skills/xiaoma-spec/assets/spec-template.md +49 -0
  23. package/src/core-skills/xiaoma-spec/customize.toml +53 -0
  24. package/src/scripts/resolve_config.js +163 -0
  25. package/src/scripts/resolve_customization.js +188 -0
  26. package/src/scripts/toml.js +338 -0
  27. package/src/xmc-skills/1-analysis/research/xiaoma-domain-research/SKILL.md +96 -0
  28. package/src/xmc-skills/1-analysis/research/xiaoma-domain-research/customize.toml +41 -0
  29. package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-06-research-synthesis.md +6 -0
  30. package/src/xmc-skills/1-analysis/research/xiaoma-market-research/SKILL.md +96 -0
  31. package/src/xmc-skills/1-analysis/research/xiaoma-market-research/customize.toml +41 -0
  32. package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-06-research-completion.md +6 -0
  33. package/src/xmc-skills/1-analysis/research/xiaoma-technical-research/SKILL.md +96 -0
  34. package/src/xmc-skills/1-analysis/research/xiaoma-technical-research/customize.toml +41 -0
  35. package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-06-research-synthesis.md +6 -0
  36. package/src/xmc-skills/1-analysis/xiaoma-agent-analyst/SKILL.md +76 -0
  37. package/src/xmc-skills/1-analysis/xiaoma-agent-analyst/customize.toml +90 -0
  38. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/SKILL.md +76 -0
  39. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/customize.toml +81 -0
  40. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/explain-concept.md +20 -0
  41. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/mermaid-gen.md +20 -0
  42. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/validate-doc.md +19 -0
  43. package/src/xmc-skills/1-analysis/xiaoma-agent-tech-writer/write-document.md +20 -0
  44. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/checklist.md +5 -2
  45. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-01-init-and-validate.md +18 -1
  46. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-02-requirements-analysis.md +3 -1
  47. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-03-architecture-analysis.md +5 -3
  48. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-04-create-prd.md +12 -14
  49. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-05-validate-prd.md +18 -15
  50. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-06-create-epics.md +9 -5
  51. package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/steps/step-07-create-architecture.md +10 -7
  52. package/src/xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline/steps/step-08-finalize.md +184 -0
  53. package/src/xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline/workflow.md +140 -0
  54. package/src/xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline/xiaoma-skill-manifest.yaml +24 -0
  55. package/src/xmc-skills/1-analysis/xiaoma-document-project/SKILL.md +62 -0
  56. package/src/xmc-skills/1-analysis/xiaoma-document-project/customize.toml +41 -0
  57. package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/workflows/deep-dive-instructions.md +1 -0
  58. package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/workflows/full-scan-instructions.md +1 -0
  59. package/src/xmc-skills/1-analysis/xiaoma-prfaq/SKILL.md +135 -0
  60. package/src/xmc-skills/1-analysis/xiaoma-prfaq/agents/artifact-analyzer.md +60 -0
  61. package/src/xmc-skills/1-analysis/xiaoma-prfaq/agents/web-researcher.md +49 -0
  62. package/src/xmc-skills/1-analysis/xiaoma-prfaq/assets/prfaq-template.md +62 -0
  63. package/src/xmc-skills/1-analysis/xiaoma-prfaq/customize.toml +41 -0
  64. package/src/xmc-skills/1-analysis/xiaoma-prfaq/references/customer-faq.md +55 -0
  65. package/src/xmc-skills/1-analysis/xiaoma-prfaq/references/internal-faq.md +51 -0
  66. package/src/xmc-skills/1-analysis/xiaoma-prfaq/references/press-release.md +60 -0
  67. package/src/xmc-skills/1-analysis/xiaoma-prfaq/references/verdict.md +83 -0
  68. package/src/xmc-skills/1-analysis/xiaoma-prfaq/xiaoma-manifest.json +16 -0
  69. package/src/xmc-skills/1-analysis/xiaoma-product-brief/SKILL.md +91 -0
  70. package/src/xmc-skills/1-analysis/xiaoma-product-brief/assets/brief-template.md +41 -0
  71. package/src/xmc-skills/1-analysis/xiaoma-product-brief/customize.toml +99 -0
  72. package/src/xmc-skills/2-plan-workflows/xiaoma-agent-pm/SKILL.md +76 -0
  73. package/src/xmc-skills/2-plan-workflows/xiaoma-agent-pm/customize.toml +75 -0
  74. package/src/xmc-skills/2-plan-workflows/xiaoma-agent-ux-designer/SKILL.md +76 -0
  75. package/src/xmc-skills/2-plan-workflows/xiaoma-agent-ux-designer/customize.toml +60 -0
  76. package/src/xmc-skills/2-plan-workflows/xiaoma-create-prd/SKILL.md +30 -0
  77. package/src/xmc-skills/2-plan-workflows/xiaoma-create-prd/customize.toml +41 -0
  78. package/src/xmc-skills/2-plan-workflows/xiaoma-edit-prd/SKILL.md +30 -0
  79. package/src/xmc-skills/2-plan-workflows/xiaoma-edit-prd/customize.toml +42 -0
  80. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/SKILL.md +92 -0
  81. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/assets/headless-schemas.md +76 -0
  82. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/assets/prd-template.md +165 -0
  83. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/assets/prd-validation-checklist.md +217 -0
  84. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/assets/validation-report-template.html +325 -0
  85. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/customize.toml +147 -0
  86. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/references/headless.md +39 -0
  87. package/src/xmc-skills/2-plan-workflows/xiaoma-prd/references/validate.md +97 -0
  88. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/SKILL.md +90 -0
  89. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/color-themes.md +9 -0
  90. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/design-directions.md +9 -0
  91. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/design-example-editorial.md +158 -0
  92. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/design-example-mobile.md +93 -0
  93. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/design-example-shadcn.md +109 -0
  94. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/excalidraw-wireframe.md +19 -0
  95. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/experience-example-mobile.md +112 -0
  96. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/experience-example-shadcn.md +133 -0
  97. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/headless-schemas.md +84 -0
  98. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/key-screens.md +29 -0
  99. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/assets/validation-report-template.html +319 -0
  100. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/customize.toml +100 -0
  101. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/references/creative-tools.md +19 -0
  102. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/references/design-md-spec.md +50 -0
  103. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/references/headless.md +37 -0
  104. package/src/xmc-skills/2-plan-workflows/xiaoma-ux/references/validate.md +115 -0
  105. package/src/xmc-skills/2-plan-workflows/xiaoma-validate-prd/SKILL.md +30 -0
  106. package/src/xmc-skills/2-plan-workflows/xiaoma-validate-prd/customize.toml +31 -0
  107. package/src/xmc-skills/3-solutioning/xiaoma-agent-architect/SKILL.md +76 -0
  108. package/src/xmc-skills/3-solutioning/xiaoma-agent-architect/customize.toml +65 -0
  109. package/src/xmc-skills/3-solutioning/xiaoma-check-implementation-readiness/SKILL.md +91 -0
  110. package/src/xmc-skills/3-solutioning/xiaoma-check-implementation-readiness/customize.toml +41 -0
  111. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-01-document-discovery.md +1 -1
  112. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-02-prd-analysis.md +1 -1
  113. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +1 -1
  114. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-06-final-assessment.md +6 -0
  115. package/src/xmc-skills/3-solutioning/xiaoma-create-architecture/SKILL.md +74 -0
  116. package/src/xmc-skills/3-solutioning/xiaoma-create-architecture/customize.toml +41 -0
  117. package/src/xmc-skills/3-solutioning/xiaoma-create-architecture/references/headless.md +37 -0
  118. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-07-validation.md +23 -21
  119. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-08-complete.md +6 -0
  120. package/src/xmc-skills/3-solutioning/xiaoma-create-epics-and-stories/SKILL.md +93 -0
  121. package/src/xmc-skills/3-solutioning/xiaoma-create-epics-and-stories/customize.toml +41 -0
  122. package/src/xmc-skills/3-solutioning/xiaoma-create-epics-and-stories/references/headless.md +35 -0
  123. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-epics-and-stories/steps/step-02-design-epics.md +34 -4
  124. package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-epics-and-stories/steps/step-04-final-validation.md +12 -0
  125. package/src/xmc-skills/3-solutioning/xiaoma-generate-project-context/SKILL.md +81 -0
  126. package/src/xmc-skills/3-solutioning/xiaoma-generate-project-context/customize.toml +41 -0
  127. package/src/{xmc/workflows → xmc-skills/3-solutioning}/xiaoma-generate-project-context/steps/step-03-complete.md +6 -0
  128. package/src/xmc-skills/4-implementation/xiaoma-agent-dev/SKILL.md +76 -0
  129. package/src/xmc-skills/4-implementation/xiaoma-agent-dev/customize.toml +131 -0
  130. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/checklist.md +29 -0
  131. package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/steps/step-01-init-and-validate.md +16 -8
  132. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/steps/step-02-create-story.md +111 -0
  133. package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/steps/step-03-validate-story.md +4 -2
  134. package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/steps/step-04-develop-story.md +10 -6
  135. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/steps/step-05-code-review.md +99 -0
  136. package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/steps/step-06-test-story.md +25 -12
  137. package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/steps/step-07-fix-and-retest.md +28 -13
  138. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/steps/step-08-complete-story.md +174 -0
  139. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/steps/step-09-finalize.md +145 -0
  140. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/workflow.md +127 -0
  141. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline/xiaoma-skill-manifest.yaml +27 -0
  142. package/src/{xmc/workflows/4-implementation/auto-story-pipeline-batch → xmc-skills/4-implementation/xiaoma-auto-story-pipeline-batch}/SKILL.md +2 -2
  143. package/src/xmc-skills/4-implementation/xiaoma-auto-story-pipeline-batch/checklist.md +45 -0
  144. package/src/{xmc/workflows/4-implementation/auto-story-pipeline-batch → xmc-skills/4-implementation/xiaoma-auto-story-pipeline-batch}/workflow.md +150 -7
  145. package/src/{xmc/workflows/4-implementation/auto-story-pipeline-batch → xmc-skills/4-implementation/xiaoma-auto-story-pipeline-batch}/xiaoma-skill-manifest.yaml +2 -2
  146. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/SKILL.md +68 -0
  147. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/customize.toml +41 -0
  148. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/generate-trail.md +38 -0
  149. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/step-01-orientation.md +105 -0
  150. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/step-02-walkthrough.md +89 -0
  151. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/step-03-detail-pass.md +106 -0
  152. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/step-04-testing.md +74 -0
  153. package/src/xmc-skills/4-implementation/xiaoma-checkpoint-preview/step-05-wrapup.md +30 -0
  154. package/src/xmc-skills/4-implementation/xiaoma-code-review/SKILL.md +90 -0
  155. package/src/xmc-skills/4-implementation/xiaoma-code-review/customize.toml +41 -0
  156. package/src/xmc-skills/4-implementation/xiaoma-code-review/steps/step-01-gather-context.md +85 -0
  157. package/src/xmc-skills/4-implementation/xiaoma-code-review/steps/step-02-review.md +35 -0
  158. package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-code-review/steps/step-03-triage.md +7 -8
  159. package/src/xmc-skills/4-implementation/xiaoma-code-review/steps/step-04-present.md +132 -0
  160. package/src/{xmc/workflows/4-implementation/xiaoma-correct-course/workflow.md → xmc-skills/4-implementation/xiaoma-correct-course/SKILL.md} +65 -31
  161. package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-correct-course/checklist.md +2 -2
  162. package/src/xmc-skills/4-implementation/xiaoma-correct-course/customize.toml +41 -0
  163. package/src/{xmc/workflows/4-implementation/xiaoma-create-story/workflow.md → xmc-skills/4-implementation/xiaoma-create-story/SKILL.md} +60 -11
  164. package/src/xmc-skills/4-implementation/xiaoma-create-story/customize.toml +41 -0
  165. package/src/xmc-skills/4-implementation/xiaoma-create-story/references/headless.md +32 -0
  166. package/src/{xmc/workflows/4-implementation/xiaoma-dev-story/workflow.md → xmc-skills/4-implementation/xiaoma-dev-story/SKILL.md} +70 -20
  167. package/src/xmc-skills/4-implementation/xiaoma-dev-story/customize.toml +41 -0
  168. package/src/xmc-skills/4-implementation/xiaoma-investigate/SKILL.md +196 -0
  169. package/src/xmc-skills/4-implementation/xiaoma-investigate/customize.toml +62 -0
  170. package/src/xmc-skills/4-implementation/xiaoma-investigate/references/case-file-template.md +127 -0
  171. package/src/{xmc/workflows/xiaoma-qa-generate-e2e-tests/workflow.md → xmc-skills/4-implementation/xiaoma-qa-generate-e2e-tests/SKILL.md} +51 -23
  172. package/src/{xmc/workflows → xmc-skills/4-implementation}/xiaoma-qa-generate-e2e-tests/checklist.md +1 -5
  173. package/src/xmc-skills/4-implementation/xiaoma-qa-generate-e2e-tests/customize.toml +41 -0
  174. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/SKILL.md +111 -0
  175. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/compile-epic-context.md +62 -0
  176. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/customize.toml +41 -0
  177. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/spec-template.md +88 -0
  178. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-01-clarify-and-route.md +100 -0
  179. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-02-plan.md +47 -0
  180. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-03-implement.md +41 -0
  181. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-04-review.md +50 -0
  182. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-05-present.md +78 -0
  183. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/step-oneshot.md +71 -0
  184. package/src/xmc-skills/4-implementation/xiaoma-quick-dev/sync-sprint-status.md +19 -0
  185. package/src/{xmc/workflows/4-implementation/xiaoma-retrospective/workflow.md → xmc-skills/4-implementation/xiaoma-retrospective/SKILL.md} +185 -152
  186. package/src/xmc-skills/4-implementation/xiaoma-retrospective/customize.toml +41 -0
  187. package/src/{xmc/workflows/4-implementation/xiaoma-sprint-planning/workflow.md → xmc-skills/4-implementation/xiaoma-sprint-planning/SKILL.md} +59 -15
  188. package/src/xmc-skills/4-implementation/xiaoma-sprint-planning/customize.toml +41 -0
  189. package/src/xmc-skills/4-implementation/xiaoma-sprint-planning/references/headless.md +28 -0
  190. package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-sprint-planning/sprint-status-template.yaml +3 -3
  191. package/src/{xmc/workflows/4-implementation/xiaoma-sprint-status/workflow.md → xmc-skills/4-implementation/xiaoma-sprint-status/SKILL.md} +57 -20
  192. package/src/xmc-skills/4-implementation/xiaoma-sprint-status/customize.toml +41 -0
  193. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/checklist.md +6 -0
  194. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/steps/step-01-init-and-validate.md +28 -4
  195. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/steps/step-02-run-requirements-pipeline.md +2 -1
  196. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/steps/step-03-bridge-sprint-planning.md +63 -9
  197. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/steps/step-04-run-story-pipeline.md +2 -1
  198. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/steps/step-05-finalize.md +30 -3
  199. package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/workflow.md +7 -8
  200. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/checklist.md +4 -0
  201. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/steps/step-01-init-and-validate.md +8 -7
  202. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/steps/step-02-create-epics.md +3 -2
  203. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/steps/step-03-bridge-sprint-planning.md +68 -14
  204. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/steps/step-04-batch-create-stories.md +6 -5
  205. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/steps/step-05-finalize.md +48 -8
  206. package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/workflow.md +7 -8
  207. package/src/xmc-skills/module-help.csv +32 -0
  208. package/src/xmc-skills/module.yaml +95 -0
  209. package/src/xpm-skills/module-help.csv +3 -0
  210. package/src/xpm-skills/module.yaml +36 -0
  211. package/src/xpm-skills/xiaoma-agent-patent-advisor/SKILL.md +75 -0
  212. package/src/xpm-skills/xiaoma-agent-patent-advisor/customize.toml +46 -0
  213. package/src/xpm-skills/xiaoma-patent-mining/SKILL.md +6 -0
  214. package/src/xpm-skills/xiaoma-patent-mining/steps/step-01-project-analysis.md +65 -0
  215. package/src/xpm-skills/xiaoma-patent-mining/steps/step-02-patent-mining.md +87 -0
  216. package/src/xpm-skills/xiaoma-patent-mining/steps/step-03-disclosure-writing.md +110 -0
  217. package/src/xpm-skills/xiaoma-patent-mining/steps/step-04-ai-taste-removal.md +85 -0
  218. package/src/xpm-skills/xiaoma-patent-mining/steps/step-05-docx-generation.md +111 -0
  219. package/src/xpm-skills/xiaoma-patent-mining/workflow.md +94 -0
  220. package/tools/format-workflow-md.js +263 -0
  221. package/tools/{cli → installer}/README.md +2 -2
  222. package/tools/installer/cli-utils.js +57 -0
  223. package/tools/installer/commands/install.js +146 -0
  224. package/tools/{cli → installer}/commands/status.js +15 -7
  225. package/tools/{cli → installer}/commands/uninstall.js +7 -7
  226. package/tools/installer/core/config.js +73 -0
  227. package/tools/installer/core/existing-install.js +121 -0
  228. package/tools/installer/core/install-paths.js +132 -0
  229. package/tools/installer/core/installer.js +1624 -0
  230. package/tools/installer/core/legacy-warnings.js +156 -0
  231. package/tools/installer/core/manifest-generator.js +859 -0
  232. package/tools/installer/core/manifest.js +434 -0
  233. package/tools/{cli/lib → installer}/file-ops.js +1 -1
  234. package/tools/installer/fs-native.js +116 -0
  235. package/tools/installer/ide/_config-driven.js +972 -0
  236. package/tools/{cli/installers/lib → installer}/ide/manager.js +82 -62
  237. package/tools/installer/ide/platform-codes.js +80 -0
  238. package/tools/installer/ide/platform-codes.yaml +322 -0
  239. package/tools/installer/ide/shared/installed-skills.js +50 -0
  240. package/tools/{cli/installers/lib → installer}/ide/shared/path-utils.js +0 -145
  241. package/tools/{cli/installers/lib → installer}/ide/shared/skill-manifest.js +3 -36
  242. package/tools/installer/list-options.js +210 -0
  243. package/tools/{cli/installers/lib → installer}/message-loader.js +3 -3
  244. package/tools/installer/modules/channel-plan.js +203 -0
  245. package/tools/installer/modules/channel-resolver.js +241 -0
  246. package/tools/installer/modules/custom-module-manager.js +912 -0
  247. package/tools/installer/modules/external-manager.js +533 -0
  248. package/tools/installer/modules/module-help-schema.js +13 -0
  249. package/tools/{cli/installers/lib/core/config-collector.js → installer/modules/official-modules.js} +1052 -110
  250. package/tools/installer/modules/plugin-resolver.js +398 -0
  251. package/tools/installer/modules/version-resolver.js +336 -0
  252. package/tools/installer/project-root.js +230 -0
  253. package/tools/{cli/lib → installer}/prompts.js +143 -100
  254. package/tools/installer/set-overrides.js +330 -0
  255. package/tools/installer/ui.js +2078 -0
  256. package/tools/{cli → installer}/xiaoma-cli.js +9 -10
  257. package/tools/{cli/lib → installer}/yaml-format.js +1 -1
  258. package/tools/migrate-custom-module-paths.js +124 -0
  259. package/tools/schema/step.js +855 -0
  260. package/tools/skill-validator.md +323 -0
  261. package/tools/validate-file-refs.js +566 -0
  262. package/tools/validate-frontmatter-prose-routing.js +334 -0
  263. package/tools/validate-skills.js +702 -0
  264. package/tools/validate-step-schemas.js +401 -0
  265. package/tools/validate-svg-changes.sh +1 -1
  266. package/tools/validate-trigger-column-vs-emits.js +375 -0
  267. package/tools/validate-warnings-samples.js +261 -0
  268. package/tools/xiaoma/rebrand.mjs +0 -0
  269. package/tools/xiaoma-npx-wrapper.js +2 -2
  270. package/.playwright-cli/console-2026-05-13T06-36-26-793Z.log +0 -2
  271. package/.playwright-cli/page-2026-05-13T06-36-27-725Z.yml +0 -1
  272. package/CLAUDE.md +0 -111
  273. package/README.md +0 -128
  274. package/XiaoMa-CLI-2026H2-/350/277/255/344/273/243/350/247/204/345/210/222.pptx +0 -0
  275. package/demo/xiaoma-bug-circle-resolve/SKILL.md +0 -6
  276. package/demo/xiaoma-bug-circle-resolve/workflow.md +0 -254
  277. package/demo/xiaoma-bug-resolve/SKILL.md +0 -6
  278. package/demo/xiaoma-bug-resolve/workflow.md +0 -269
  279. package/demo/xiaoma-prd-saas-zh/README.md +0 -57
  280. package/demo/xiaoma-prd-saas-zh/domain-research.md +0 -128
  281. package/demo/xiaoma-prd-saas-zh/epics.md +0 -303
  282. package/demo/xiaoma-prd-saas-zh/market-research-2026-q1.md +0 -183
  283. package/demo/xiaoma-prd-saas-zh/prd-bad-examples.md +0 -268
  284. package/demo/xiaoma-prd-saas-zh/prd.md +0 -409
  285. package/demo/xiaoma-prd-saas-zh/product-brief.md +0 -97
  286. package/demo/xiaoma-prd-saas-zh/validation-report.md +0 -279
  287. 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 +0 -189
  288. 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 +0 -464
  289. 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 +0 -334
  290. 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 +0 -1038
  291. 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 +0 -205
  292. 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 +0 -167
  293. package/media/doc1_fig1.png +0 -0
  294. package/media/doc1_fig2.png +0 -0
  295. package/media/doc1_fig3.png +0 -0
  296. package/media/doc1_fig4.png +0 -0
  297. package/media/doc2_fig1.png +0 -0
  298. package/media/doc2_fig2.png +0 -0
  299. package/media/doc2_fig3.png +0 -0
  300. package/media/doc2_fig4.png +0 -0
  301. package/media/doc3_fig1.png +0 -0
  302. package/media/doc3_fig2.png +0 -0
  303. package/media/doc3_fig3.png +0 -0
  304. package/media/doc3_fig4.png +0 -0
  305. package/media/doc4_fig1.png +0 -0
  306. package/media/doc4_fig2.png +0 -0
  307. package/media/doc4_fig3.png +0 -0
  308. package/media/doc5_fig1.png +0 -0
  309. package/media/doc5_fig2.png +0 -0
  310. package/media/doc5_fig3.png +0 -0
  311. package/patent-disclosure-optimized/SKILL.md +0 -416
  312. package/src/core/module-help.csv +0 -11
  313. package/src/core/skills/xiaoma-advanced-elicitation/SKILL.md +0 -6
  314. package/src/core/skills/xiaoma-advanced-elicitation/methods.csv +0 -51
  315. package/src/core/skills/xiaoma-editorial-review-prose/SKILL.md +0 -6
  316. package/src/core/skills/xiaoma-editorial-review-structure/SKILL.md +0 -6
  317. package/src/core/skills/xiaoma-help/SKILL.md +0 -6
  318. package/src/core/skills/xiaoma-help/workflow.md +0 -88
  319. package/src/core/skills/xiaoma-help/xiaoma-skill-manifest.yaml +0 -1
  320. package/src/core/skills/xiaoma-index-docs/SKILL.md +0 -6
  321. package/src/core/skills/xiaoma-index-docs/xiaoma-skill-manifest.yaml +0 -1
  322. package/src/core/skills/xiaoma-party-mode/SKILL.md +0 -6
  323. package/src/core/skills/xiaoma-party-mode/steps/step-01-agent-loading.md +0 -138
  324. package/src/core/skills/xiaoma-party-mode/steps/step-02-discussion-orchestration.md +0 -187
  325. package/src/core/skills/xiaoma-party-mode/steps/step-03-graceful-exit.md +0 -167
  326. package/src/core/skills/xiaoma-party-mode/workflow.md +0 -190
  327. package/src/core/skills/xiaoma-party-mode/xiaoma-skill-manifest.yaml +0 -1
  328. package/src/core/skills/xiaoma-review-adversarial-general/SKILL.md +0 -6
  329. package/src/core/skills/xiaoma-review-adversarial-general/xiaoma-skill-manifest.yaml +0 -1
  330. package/src/core/skills/xiaoma-review-edge-case-hunter/SKILL.md +0 -6
  331. package/src/core/skills/xiaoma-review-edge-case-hunter/xiaoma-skill-manifest.yaml +0 -1
  332. package/src/core/skills/xiaoma-shard-doc/SKILL.md +0 -6
  333. package/src/core/skills/xiaoma-shard-doc/xiaoma-skill-manifest.yaml +0 -1
  334. package/src/core/tasks/xiaoma-create-prd/SKILL.md +0 -6
  335. package/src/core/tasks/xiaoma-create-prd/data/prd-purpose.md +0 -354
  336. package/src/core/tasks/xiaoma-create-prd/data/upstream-input-contract.md +0 -168
  337. package/src/core/tasks/xiaoma-create-prd/steps-c/step-01-init.md +0 -178
  338. package/src/core/tasks/xiaoma-create-prd/steps-c/step-01b-continue.md +0 -161
  339. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02-discovery.md +0 -208
  340. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02b-vision.md +0 -142
  341. package/src/core/tasks/xiaoma-create-prd/steps-c/step-02c-executive-summary.md +0 -158
  342. package/src/core/tasks/xiaoma-create-prd/steps-c/step-03-success.md +0 -214
  343. package/src/core/tasks/xiaoma-create-prd/steps-c/step-04-journeys.md +0 -201
  344. package/src/core/tasks/xiaoma-create-prd/steps-c/step-05-domain.md +0 -194
  345. package/src/core/tasks/xiaoma-create-prd/steps-c/step-06-innovation.md +0 -211
  346. package/src/core/tasks/xiaoma-create-prd/steps-c/step-07-project-type.md +0 -222
  347. package/src/core/tasks/xiaoma-create-prd/steps-c/step-08-scoping.md +0 -216
  348. package/src/core/tasks/xiaoma-create-prd/steps-c/step-09-functional.md +0 -219
  349. package/src/core/tasks/xiaoma-create-prd/steps-c/step-10-nonfunctional.md +0 -230
  350. package/src/core/tasks/xiaoma-create-prd/steps-c/step-11-polish.md +0 -221
  351. package/src/core/tasks/xiaoma-create-prd/steps-c/step-12-complete.md +0 -115
  352. package/src/core/tasks/xiaoma-create-prd/templates/prd-skeleton-reference.md +0 -428
  353. package/src/core/tasks/xiaoma-create-prd/templates/prd-template.md +0 -108
  354. package/src/core/tasks/xiaoma-create-prd/workflow.md +0 -62
  355. package/src/core/tasks/xiaoma-create-prd/xiaoma-skill-manifest.yaml +0 -1
  356. package/src/utility/agent-components/activation-rules.txt +0 -6
  357. package/src/utility/agent-components/activation-steps.txt +0 -14
  358. package/src/utility/agent-components/agent-command-header.md +0 -1
  359. package/src/utility/agent-components/agent.customize.template.yaml +0 -41
  360. package/src/utility/agent-components/handler-action.txt +0 -4
  361. package/src/utility/agent-components/handler-data.txt +0 -5
  362. package/src/utility/agent-components/handler-exec.txt +0 -6
  363. package/src/utility/agent-components/handler-multi.txt +0 -13
  364. package/src/utility/agent-components/handler-tmpl.txt +0 -5
  365. package/src/utility/agent-components/menu-handlers.txt +0 -6
  366. package/src/xmc/agents/analyst.agent.yaml +0 -47
  367. package/src/xmc/agents/architect.agent.yaml +0 -29
  368. package/src/xmc/agents/dev.agent.yaml +0 -38
  369. package/src/xmc/agents/pm.agent.yaml +0 -44
  370. package/src/xmc/agents/qa.agent.yaml +0 -58
  371. package/src/xmc/agents/quick-flow-solo-dev.agent.yaml +0 -36
  372. package/src/xmc/agents/sm.agent.yaml +0 -53
  373. package/src/xmc/agents/tech-writer/tech-writer-sidecar/documentation-standards.md +0 -224
  374. package/src/xmc/agents/tech-writer/tech-writer.agent.yaml +0 -46
  375. package/src/xmc/agents/tech-writer/xiaoma-skill-manifest.yaml +0 -3
  376. package/src/xmc/agents/ux-designer.agent.yaml +0 -27
  377. package/src/xmc/agents/xiaoma-skill-manifest.yaml +0 -39
  378. package/src/xmc/data/project-context-template.md +0 -26
  379. package/src/xmc/module-help.csv +0 -32
  380. package/src/xmc/module.yaml +0 -50
  381. package/src/xmc/teams/default-party.csv +0 -20
  382. package/src/xmc/teams/team-fullstack.yaml +0 -12
  383. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/steps/step-08-finalize.md +0 -124
  384. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/workflow.md +0 -107
  385. package/src/xmc/workflows/1-analysis/auto-requirements-pipeline/xiaoma-skill-manifest.yaml +0 -3
  386. package/src/xmc/workflows/1-analysis/research/market-steps/step-01-init.md +0 -182
  387. package/src/xmc/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +0 -237
  388. package/src/xmc/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +0 -249
  389. package/src/xmc/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +0 -259
  390. package/src/xmc/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +0 -177
  391. package/src/xmc/workflows/1-analysis/research/market-steps/step-06-research-completion.md +0 -476
  392. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/SKILL.md +0 -6
  393. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/workflow.md +0 -49
  394. package/src/xmc/workflows/1-analysis/research/xiaoma-domain-research/xiaoma-skill-manifest.yaml +0 -1
  395. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/SKILL.md +0 -6
  396. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/workflow.md +0 -49
  397. package/src/xmc/workflows/1-analysis/research/xiaoma-market-research/xiaoma-skill-manifest.yaml +0 -1
  398. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/SKILL.md +0 -6
  399. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/research.template.md +0 -29
  400. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/workflow.md +0 -50
  401. package/src/xmc/workflows/1-analysis/research/xiaoma-technical-research/xiaoma-skill-manifest.yaml +0 -1
  402. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/SKILL.md +0 -6
  403. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/product-brief.template.md +0 -10
  404. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-01-init.md +0 -170
  405. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-01b-continue.md +0 -158
  406. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-02-vision.md +0 -193
  407. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-03-users.md +0 -196
  408. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-04-metrics.md +0 -199
  409. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-05-scope.md +0 -213
  410. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/steps/step-06-complete.md +0 -159
  411. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/workflow.md +0 -55
  412. package/src/xmc/workflows/1-analysis/xiaoma-create-product-brief/xiaoma-skill-manifest.yaml +0 -1
  413. package/src/xmc/workflows/1-analysis/xiaoma-product-brief-preview/xiaoma-skill-manifest.yaml +0 -1
  414. package/src/xmc/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +0 -15
  415. package/src/xmc/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +0 -197
  416. package/src/xmc/workflows/2-plan-workflows/create-prd/data/project-types.csv +0 -11
  417. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +0 -224
  418. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +0 -191
  419. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +0 -209
  420. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +0 -174
  421. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -214
  422. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +0 -228
  423. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +0 -217
  424. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -205
  425. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -243
  426. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +0 -263
  427. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +0 -209
  428. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -264
  429. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +0 -242
  430. package/src/xmc/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +0 -232
  431. package/src/xmc/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +0 -65
  432. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/SKILL.md +0 -6
  433. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-01-init.md +0 -135
  434. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-01b-continue.md +0 -127
  435. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-02-discovery.md +0 -190
  436. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-03-core-experience.md +0 -217
  437. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-04-emotional-response.md +0 -220
  438. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-05-inspiration.md +0 -235
  439. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-06-design-system.md +0 -253
  440. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-07-defining-experience.md +0 -255
  441. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-08-visual-foundation.md +0 -225
  442. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-09-design-directions.md +0 -225
  443. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-10-user-journeys.md +0 -242
  444. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-11-component-strategy.md +0 -249
  445. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-12-ux-patterns.md +0 -238
  446. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-13-responsive-accessibility.md +0 -265
  447. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/steps/step-14-complete.md +0 -171
  448. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/ux-design-template.md +0 -13
  449. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/workflow.md +0 -36
  450. package/src/xmc/workflows/2-plan-workflows/xiaoma-create-ux-design/xiaoma-skill-manifest.yaml +0 -1
  451. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/SKILL.md +0 -6
  452. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-01-discovery.md +0 -242
  453. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-01b-legacy-conversion.md +0 -204
  454. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-02-review.md +0 -245
  455. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-03-edit.md +0 -250
  456. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/steps-e/step-e-04-complete.md +0 -165
  457. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/workflow.md +0 -63
  458. package/src/xmc/workflows/2-plan-workflows/xiaoma-edit-prd/xiaoma-skill-manifest.yaml +0 -1
  459. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/SKILL.md +0 -6
  460. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/domain-complexity.csv +0 -15
  461. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/prd-purpose.md +0 -197
  462. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/prd-quality-rubric.csv +0 -14
  463. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/data/project-types.csv +0 -11
  464. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-01-discovery.md +0 -221
  465. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-02-format-detection.md +0 -188
  466. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-02b-parity-check.md +0 -206
  467. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-03-density-validation.md +0 -171
  468. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +0 -211
  469. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-05-measurability-validation.md +0 -225
  470. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-06-traceability-validation.md +0 -214
  471. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +0 -202
  472. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +0 -240
  473. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-09-project-type-validation.md +0 -260
  474. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-10-smart-validation.md +0 -206
  475. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +0 -261
  476. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-12-completeness-validation.md +0 -239
  477. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/steps-v/step-v-13-report-complete.md +0 -229
  478. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/workflow.md +0 -62
  479. package/src/xmc/workflows/2-plan-workflows/xiaoma-validate-prd/xiaoma-skill-manifest.yaml +0 -1
  480. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/SKILL.md +0 -6
  481. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/workflow.md +0 -49
  482. package/src/xmc/workflows/3-solutioning/xiaoma-check-implementation-readiness/xiaoma-skill-manifest.yaml +0 -1
  483. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/SKILL.md +0 -6
  484. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/workflow.md +0 -38
  485. package/src/xmc/workflows/3-solutioning/xiaoma-create-architecture/xiaoma-skill-manifest.yaml +0 -1
  486. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/SKILL.md +0 -6
  487. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/workflow.md +0 -53
  488. package/src/xmc/workflows/3-solutioning/xiaoma-create-epics-and-stories/xiaoma-skill-manifest.yaml +0 -1
  489. package/src/xmc/workflows/4-implementation/auto-story-pipeline/checklist.md +0 -22
  490. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-02-create-story.md +0 -102
  491. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-05-code-review.md +0 -95
  492. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-08-complete-story.md +0 -114
  493. package/src/xmc/workflows/4-implementation/auto-story-pipeline/steps/step-09-finalize.md +0 -69
  494. package/src/xmc/workflows/4-implementation/auto-story-pipeline/workflow.md +0 -89
  495. package/src/xmc/workflows/4-implementation/auto-story-pipeline/xiaoma-skill-manifest.yaml +0 -3
  496. package/src/xmc/workflows/4-implementation/xiaoma-code-review/SKILL.md +0 -6
  497. package/src/xmc/workflows/4-implementation/xiaoma-code-review/checklist.md +0 -23
  498. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-01-gather-context.md +0 -61
  499. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-02-review.md +0 -41
  500. package/src/xmc/workflows/4-implementation/xiaoma-code-review/steps/step-04-present.md +0 -38
  501. package/src/xmc/workflows/4-implementation/xiaoma-code-review/workflow.md +0 -54
  502. package/src/xmc/workflows/4-implementation/xiaoma-code-review/xiaoma-skill-manifest.yaml +0 -1
  503. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/SKILL.md +0 -6
  504. package/src/xmc/workflows/4-implementation/xiaoma-correct-course/xiaoma-skill-manifest.yaml +0 -1
  505. package/src/xmc/workflows/4-implementation/xiaoma-create-story/SKILL.md +0 -6
  506. package/src/xmc/workflows/4-implementation/xiaoma-create-story/discover-inputs.md +0 -88
  507. package/src/xmc/workflows/4-implementation/xiaoma-create-story/xiaoma-skill-manifest.yaml +0 -1
  508. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/SKILL.md +0 -6
  509. package/src/xmc/workflows/4-implementation/xiaoma-dev-story/xiaoma-skill-manifest.yaml +0 -1
  510. package/src/xmc/workflows/4-implementation/xiaoma-retrospective/SKILL.md +0 -6
  511. package/src/xmc/workflows/4-implementation/xiaoma-retrospective/xiaoma-skill-manifest.yaml +0 -1
  512. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/SKILL.md +0 -6
  513. package/src/xmc/workflows/4-implementation/xiaoma-sprint-planning/xiaoma-skill-manifest.yaml +0 -1
  514. package/src/xmc/workflows/4-implementation/xiaoma-sprint-status/SKILL.md +0 -6
  515. package/src/xmc/workflows/4-implementation/xiaoma-sprint-status/xiaoma-skill-manifest.yaml +0 -1
  516. package/src/xmc/workflows/xiaoma-document-project/SKILL.md +0 -6
  517. package/src/xmc/workflows/xiaoma-document-project/workflow.md +0 -27
  518. package/src/xmc/workflows/xiaoma-document-project/xiaoma-skill-manifest.yaml +0 -1
  519. package/src/xmc/workflows/xiaoma-generate-project-context/SKILL.md +0 -6
  520. package/src/xmc/workflows/xiaoma-generate-project-context/workflow.md +0 -43
  521. package/src/xmc/workflows/xiaoma-generate-project-context/xiaoma-skill-manifest.yaml +0 -1
  522. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/SKILL.md +0 -6
  523. package/src/xmc/workflows/xiaoma-qa-generate-e2e-tests/xiaoma-skill-manifest.yaml +0 -1
  524. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/SKILL.md +0 -6
  525. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-01-mode-detection.md +0 -169
  526. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-02-context-gathering.md +0 -114
  527. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-03-execute.md +0 -107
  528. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-04-self-check.md +0 -107
  529. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-05-adversarial-review.md +0 -94
  530. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/steps/step-06-resolve-findings.md +0 -144
  531. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/workflow.md +0 -38
  532. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev/xiaoma-skill-manifest.yaml +0 -1
  533. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-dev-new-preview/xiaoma-skill-manifest.yaml +0 -1
  534. package/src/xmc/workflows/xiaoma-quick-flow/xiaoma-quick-spec/xiaoma-skill-manifest.yaml +0 -1
  535. package/tools/cli/commands/install.js +0 -87
  536. package/tools/cli/external-official-modules.yaml +0 -4
  537. package/tools/cli/installers/lib/core/custom-module-cache.js +0 -260
  538. package/tools/cli/installers/lib/core/dependency-resolver.js +0 -743
  539. package/tools/cli/installers/lib/core/detector.js +0 -223
  540. package/tools/cli/installers/lib/core/ide-config-manager.js +0 -157
  541. package/tools/cli/installers/lib/core/installer.js +0 -3212
  542. package/tools/cli/installers/lib/core/manifest-generator.js +0 -1374
  543. package/tools/cli/installers/lib/core/manifest.js +0 -1040
  544. package/tools/cli/installers/lib/custom/handler.js +0 -358
  545. package/tools/cli/installers/lib/ide/_base-ide.js +0 -673
  546. package/tools/cli/installers/lib/ide/_config-driven.js +0 -1058
  547. package/tools/cli/installers/lib/ide/platform-codes.js +0 -100
  548. package/tools/cli/installers/lib/ide/platform-codes.yaml +0 -321
  549. package/tools/cli/installers/lib/ide/shared/agent-command-generator.js +0 -181
  550. package/tools/cli/installers/lib/ide/shared/module-injections.js +0 -136
  551. package/tools/cli/installers/lib/ide/shared/task-tool-command-generator.js +0 -368
  552. package/tools/cli/installers/lib/ide/shared/workflow-command-generator.js +0 -179
  553. package/tools/cli/installers/lib/ide/shared/xiaoma-artifacts.js +0 -181
  554. package/tools/cli/installers/lib/ide/templates/agent-command-template.md +0 -14
  555. package/tools/cli/installers/lib/ide/templates/combined/antigravity.md +0 -8
  556. package/tools/cli/installers/lib/ide/templates/combined/default-agent.md +0 -15
  557. package/tools/cli/installers/lib/ide/templates/combined/default-task.md +0 -10
  558. package/tools/cli/installers/lib/ide/templates/combined/default-tool.md +0 -10
  559. package/tools/cli/installers/lib/ide/templates/combined/default-workflow.md +0 -6
  560. package/tools/cli/installers/lib/ide/templates/combined/gemini-agent.toml +0 -14
  561. package/tools/cli/installers/lib/ide/templates/combined/gemini-task.toml +0 -11
  562. package/tools/cli/installers/lib/ide/templates/combined/gemini-tool.toml +0 -11
  563. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow-yaml.toml +0 -16
  564. package/tools/cli/installers/lib/ide/templates/combined/gemini-workflow.toml +0 -14
  565. package/tools/cli/installers/lib/ide/templates/combined/kiro-agent.md +0 -16
  566. package/tools/cli/installers/lib/ide/templates/combined/kiro-task.md +0 -9
  567. package/tools/cli/installers/lib/ide/templates/combined/kiro-tool.md +0 -9
  568. package/tools/cli/installers/lib/ide/templates/combined/kiro-workflow.md +0 -7
  569. package/tools/cli/installers/lib/ide/templates/combined/opencode-agent.md +0 -15
  570. package/tools/cli/installers/lib/ide/templates/combined/opencode-task.md +0 -13
  571. package/tools/cli/installers/lib/ide/templates/combined/opencode-tool.md +0 -13
  572. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow-yaml.md +0 -16
  573. package/tools/cli/installers/lib/ide/templates/combined/opencode-workflow.md +0 -16
  574. package/tools/cli/installers/lib/ide/templates/combined/rovodev.md +0 -9
  575. package/tools/cli/installers/lib/ide/templates/combined/trae.md +0 -9
  576. package/tools/cli/installers/lib/ide/templates/combined/windsurf-workflow.md +0 -10
  577. package/tools/cli/installers/lib/ide/templates/split/.gitkeep +0 -0
  578. package/tools/cli/installers/lib/modules/external-manager.js +0 -136
  579. package/tools/cli/installers/lib/modules/manager.js +0 -1382
  580. package/tools/cli/lib/activation-builder.js +0 -165
  581. package/tools/cli/lib/agent/compiler.js +0 -516
  582. package/tools/cli/lib/agent/installer.js +0 -680
  583. package/tools/cli/lib/agent/template-engine.js +0 -152
  584. package/tools/cli/lib/agent-analyzer.js +0 -97
  585. package/tools/cli/lib/agent-party-generator.js +0 -194
  586. package/tools/cli/lib/cli-utils.js +0 -182
  587. package/tools/cli/lib/config.js +0 -213
  588. package/tools/cli/lib/platform-codes.js +0 -116
  589. package/tools/cli/lib/project-root.js +0 -77
  590. package/tools/cli/lib/ui.js +0 -1960
  591. package/tools/cli/lib/xml-handler.js +0 -177
  592. package/tools/cli/lib/xml-to-markdown.js +0 -82
  593. package/tools/cli/lib/yaml-xml-builder.js +0 -570
  594. package/tools/platform-codes.yaml +0 -157
  595. package/tools/schema/agent.js +0 -489
  596. 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 +0 -483
  597. 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 +0 -592
  598. 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 +0 -624
  599. 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 +0 -628
  600. 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 +0 -652
  601. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/SKILL.md +0 -0
  602. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/brain-methods.csv +0 -0
  603. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-01-session-setup.md +0 -0
  604. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-01b-continue.md +0 -0
  605. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-02a-user-selected.md +0 -0
  606. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-02b-ai-recommended.md +0 -0
  607. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-02c-random-selection.md +0 -0
  608. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-02d-progressive-flow.md +0 -0
  609. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/steps/step-04-idea-organization.md +0 -0
  610. /package/src/{core/skills → core-skills}/xiaoma-brainstorming/template.md +0 -0
  611. /package/src/{core/skills → core-skills}/xiaoma-distillator/SKILL.md +0 -0
  612. /package/src/{core/skills → core-skills}/xiaoma-distillator/agents/distillate-compressor.md +0 -0
  613. /package/src/{core/skills → core-skills}/xiaoma-distillator/agents/round-trip-reconstructor.md +0 -0
  614. /package/src/{core/skills → core-skills}/xiaoma-distillator/resources/compression-rules.md +0 -0
  615. /package/src/{core/skills → core-skills}/xiaoma-distillator/resources/splitting-strategy.md +0 -0
  616. /package/src/{core/skills → core-skills}/xiaoma-distillator/scripts/tests/test_analyze_sources.py +0 -0
  617. /package/src/{core/skills → core-skills}/xiaoma-distillator/xiaoma-skill-manifest.yaml +0 -0
  618. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-01-init.md +0 -0
  619. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-02-domain-analysis.md +0 -0
  620. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-03-competitive-landscape.md +0 -0
  621. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-04-regulatory-focus.md +0 -0
  622. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-domain-research/domain-steps/step-05-technical-trends.md +0 -0
  623. /package/src/{xmc/workflows/1-analysis/research → xmc-skills/1-analysis/research/xiaoma-domain-research}/research.template.md +0 -0
  624. /package/src/{xmc/workflows/1-analysis/research/xiaoma-domain-research → xmc-skills/1-analysis/research/xiaoma-market-research}/research.template.md +0 -0
  625. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-01-init.md +0 -0
  626. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-02-customer-behavior.md +0 -0
  627. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-03-customer-pain-points.md +0 -0
  628. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-04-customer-decisions.md +0 -0
  629. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-market-research/steps/step-05-competitive-analysis.md +0 -0
  630. /package/src/{xmc/workflows/1-analysis/research/xiaoma-market-research → xmc-skills/1-analysis/research/xiaoma-technical-research}/research.template.md +0 -0
  631. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-01-init.md +0 -0
  632. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-02-technical-overview.md +0 -0
  633. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-03-integration-patterns.md +0 -0
  634. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-04-architectural-patterns.md +0 -0
  635. /package/src/{xmc/workflows → xmc-skills}/1-analysis/research/xiaoma-technical-research/technical-steps/step-05-implementation-research.md +0 -0
  636. /package/src/{xmc/workflows/1-analysis/auto-requirements-pipeline → xmc-skills/1-analysis/xiaoma-auto-requirements-pipeline}/SKILL.md +0 -0
  637. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/checklist.md +0 -0
  638. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/documentation-requirements.csv +0 -0
  639. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/instructions.md +0 -0
  640. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/templates/deep-dive-template.md +0 -0
  641. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/templates/index-template.md +0 -0
  642. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/templates/project-overview-template.md +0 -0
  643. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/templates/project-scan-report-schema.json +0 -0
  644. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/templates/source-tree-template.md +0 -0
  645. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/workflows/deep-dive-workflow.md +0 -0
  646. /package/src/{xmc/workflows → xmc-skills/1-analysis}/xiaoma-document-project/workflows/full-scan-workflow.md +0 -0
  647. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/SKILL.md +0 -0
  648. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/agents/artifact-analyzer.md +0 -0
  649. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/agents/opportunity-reviewer.md +0 -0
  650. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/agents/skeptic-reviewer.md +0 -0
  651. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/agents/web-researcher.md +0 -0
  652. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/prompts/contextual-discovery.md +0 -0
  653. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/prompts/draft-and-review.md +0 -0
  654. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/prompts/finalize.md +0 -0
  655. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/prompts/guided-elicitation.md +0 -0
  656. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/resources/brief-template.md +0 -0
  657. /package/src/{xmc/workflows → xmc-skills}/1-analysis/xiaoma-product-brief-preview/xiaoma-manifest.json +0 -0
  658. /package/src/{core/skills/xiaoma-advanced-elicitation → xmc-skills/1-analysis/xiaoma-product-brief-preview}/xiaoma-skill-manifest.yaml +0 -0
  659. /package/src/{core/tasks/xiaoma-create-prd/data → xmc-skills/2-plan-workflows/xiaoma-prd/assets}/domain-complexity.csv +0 -0
  660. /package/src/{core/tasks/xiaoma-create-prd/data → xmc-skills/2-plan-workflows/xiaoma-prd/assets}/project-types.csv +0 -0
  661. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-04-ux-alignment.md +0 -0
  662. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/steps/step-05-epic-quality-review.md +0 -0
  663. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-check-implementation-readiness/templates/readiness-report-template.md +0 -0
  664. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/architecture-decision-template.md +0 -0
  665. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/data/domain-complexity.csv +0 -0
  666. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/data/project-types.csv +0 -0
  667. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-01-init.md +0 -0
  668. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-01b-continue.md +0 -0
  669. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-02-context.md +0 -0
  670. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-03-starter.md +0 -0
  671. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-04-decisions.md +0 -0
  672. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-05-patterns.md +0 -0
  673. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-architecture/steps/step-06-structure.md +0 -0
  674. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-epics-and-stories/steps/step-01-validate-prerequisites.md +0 -0
  675. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-epics-and-stories/steps/step-03-create-stories.md +0 -0
  676. /package/src/{xmc/workflows → xmc-skills}/3-solutioning/xiaoma-create-epics-and-stories/templates/epics-template.md +0 -0
  677. /package/src/{xmc/workflows → xmc-skills/3-solutioning}/xiaoma-generate-project-context/project-context-template.md +0 -0
  678. /package/src/{xmc/workflows → xmc-skills/3-solutioning}/xiaoma-generate-project-context/steps/step-01-discover.md +0 -0
  679. /package/src/{xmc/workflows → xmc-skills/3-solutioning}/xiaoma-generate-project-context/steps/step-02-generate.md +0 -0
  680. /package/src/{xmc/workflows/4-implementation/auto-story-pipeline → xmc-skills/4-implementation/xiaoma-auto-story-pipeline}/SKILL.md +0 -0
  681. /package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-create-story/checklist.md +0 -0
  682. /package/src/{xmc/workflows/4-implementation/xiaoma-code-review → xmc-skills/4-implementation/xiaoma-create-story}/discover-inputs.md +0 -0
  683. /package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-create-story/template.md +0 -0
  684. /package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-dev-story/checklist.md +0 -0
  685. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/SKILL.md +0 -0
  686. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/steps/step-01-clarify-and-route.md +0 -0
  687. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/steps/step-02-plan.md +0 -0
  688. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/steps/step-03-implement.md +0 -0
  689. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/steps/step-04-review.md +0 -0
  690. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/steps/step-05-present.md +0 -0
  691. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/tech-spec-template.md +0 -0
  692. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-dev-new-preview/workflow.md +0 -0
  693. /package/src/{core/skills/xiaoma-brainstorming → xmc-skills/4-implementation/xiaoma-quick-dev-new-preview}/xiaoma-skill-manifest.yaml +0 -0
  694. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/SKILL.md +0 -0
  695. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/steps/step-01-understand.md +0 -0
  696. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/steps/step-02-investigate.md +0 -0
  697. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/steps/step-03-generate.md +0 -0
  698. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/steps/step-04-review.md +0 -0
  699. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/tech-spec-template.md +0 -0
  700. /package/src/{xmc/workflows/xiaoma-quick-flow → xmc-skills/4-implementation}/xiaoma-quick-spec/workflow.md +0 -0
  701. /package/src/{core/skills/xiaoma-editorial-review-prose → xmc-skills/4-implementation/xiaoma-quick-spec}/xiaoma-skill-manifest.yaml +0 -0
  702. /package/src/{xmc/workflows → xmc-skills}/4-implementation/xiaoma-sprint-planning/checklist.md +0 -0
  703. /package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/SKILL.md +0 -0
  704. /package/src/{xmc/workflows/5-full-pipeline/auto-full-pipeline → xmc-skills/5-full-pipeline/xiaoma-auto-full-pipeline}/xiaoma-skill-manifest.yaml +0 -0
  705. /package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/SKILL.md +0 -0
  706. /package/src/{xmc/workflows/5-full-pipeline/auto-prd-to-stories → xmc-skills/5-full-pipeline/xiaoma-auto-prd-to-stories}/xiaoma-skill-manifest.yaml +0 -0
  707. /package/{patent-disclosure-optimized → src/xpm-skills/xiaoma-patent-mining}/references/disclosure-template.md +0 -0
  708. /package/{patent-disclosure-optimized → src/xpm-skills/xiaoma-patent-mining}/references/docx-format-spec.md +0 -0
  709. /package/{patent-disclosure-optimized → src/xpm-skills/xiaoma-patent-mining}/references/mining-principles.md +0 -0
  710. /package/{patent-disclosure-optimized → src/xpm-skills/xiaoma-patent-mining}/scripts/md2docx.js +0 -0
  711. /package/src/{core/skills/xiaoma-editorial-review-structure → xpm-skills/xiaoma-patent-mining}/xiaoma-skill-manifest.yaml +0 -0
  712. /package/tools/{cli/installers → installer}/install-messages.yaml +0 -0
@@ -0,0 +1,859 @@
1
+ const path = require('node:path');
2
+ const fs = require('../fs-native');
3
+ const yaml = require('yaml');
4
+ const crypto = require('node:crypto');
5
+ const { resolveInstalledModuleYaml } = require('../project-root');
6
+ const prompts = require('../prompts');
7
+
8
+ // Load package.json for version info
9
+ const packageJson = require('../../../package.json');
10
+
11
+ /**
12
+ * Generates manifest files for installed skills and agents
13
+ */
14
+ class ManifestGenerator {
15
+ constructor() {
16
+ this.skills = [];
17
+ this.agents = [];
18
+ this.modules = [];
19
+ this.files = [];
20
+ this.selectedIdes = [];
21
+ }
22
+
23
+ /**
24
+ * Clean text for CSV output by normalizing whitespace.
25
+ * Note: Quote escaping is handled by escapeCsv() at write time.
26
+ * @param {string} text - Text to clean
27
+ * @returns {string} Cleaned text
28
+ */
29
+ cleanForCSV(text) {
30
+ if (!text) return '';
31
+ return text.trim().replaceAll(/\s+/g, ' '); // Normalize all whitespace (including newlines) to single space
32
+ }
33
+
34
+ /**
35
+ * Generate all manifests for the installation
36
+ * @param {string} xiaomaDir - _xiaoma
37
+ * @param {Array} selectedModules - Selected modules for installation
38
+ * @param {Array} installedFiles - All installed files (optional, for hash tracking)
39
+ */
40
+ async generateManifests(xiaomaDir, selectedModules, installedFiles = [], options = {}) {
41
+ // Create _config directory if it doesn't exist
42
+ const cfgDir = path.join(xiaomaDir, '_config');
43
+ await fs.ensureDir(cfgDir);
44
+
45
+ // Store modules list (all modules including preserved ones)
46
+ const preservedModules = options.preservedModules || [];
47
+
48
+ // Scan the xiaoma directory to find all actually installed modules
49
+ const installedModules = await this.scanInstalledModules(xiaomaDir);
50
+
51
+ // Since custom modules are now installed the same way as regular modules,
52
+ // we don't need to exclude them from manifest generation
53
+ const allModules = [...new Set(['core', ...selectedModules, ...preservedModules, ...installedModules])];
54
+
55
+ this.modules = allModules;
56
+ this.updatedModules = allModules; // Include ALL modules (including custom) for scanning
57
+
58
+ this.xiaomaDir = xiaomaDir;
59
+ this.xiaomaFolderName = path.basename(xiaomaDir); // Get the actual folder name (e.g., '_xiaoma' or 'xiaoma')
60
+ this.allInstalledFiles = installedFiles;
61
+
62
+ if (!Object.prototype.hasOwnProperty.call(options, 'ides')) {
63
+ throw new Error('ManifestGenerator requires `options.ides` to be provided – installer should supply the selected IDEs array.');
64
+ }
65
+
66
+ const resolvedIdes = options.ides ?? [];
67
+ if (!Array.isArray(resolvedIdes)) {
68
+ throw new TypeError('ManifestGenerator expected `options.ides` to be an array.');
69
+ }
70
+
71
+ // Filter out any undefined/null values from IDE list
72
+ this.selectedIdes = resolvedIdes.filter((ide) => ide && typeof ide === 'string');
73
+
74
+ // Reset files list (defensive: prevent stale data if instance is reused)
75
+ this.files = [];
76
+
77
+ // Collect skills first (populates skillClaimedDirs before legacy collectors run)
78
+ await this.collectSkills();
79
+
80
+ // Collect agent essence from each module's source module.yaml `agents:` array
81
+ await this.collectAgentsFromModuleYaml();
82
+
83
+ // Write manifest files and collect their paths
84
+ const [teamConfigPath, userConfigPath] = await this.writeCentralConfig(xiaomaDir, options.moduleConfigs || {});
85
+ const manifestFiles = [
86
+ await this.writeMainManifest(cfgDir),
87
+ await this.writeSkillManifest(cfgDir),
88
+ teamConfigPath,
89
+ userConfigPath,
90
+ await this.writeFilesManifest(cfgDir),
91
+ ];
92
+
93
+ await this.ensureCustomConfigStubs(xiaomaDir);
94
+
95
+ return {
96
+ skills: this.skills.length,
97
+ agents: this.agents.length,
98
+ files: this.files.length,
99
+ manifestFiles: manifestFiles,
100
+ };
101
+ }
102
+
103
+ /**
104
+ * Recursively walk a module directory tree, collecting native SKILL.md entrypoints.
105
+ * A directory is discovered as a skill when it contains a SKILL.md file with
106
+ * valid name/description frontmatter (name must match directory name).
107
+ * Manifest YAML is loaded only when present — for agent metadata.
108
+ * Populates this.skills[] and this.skillClaimedDirs (Set of absolute paths).
109
+ */
110
+ async collectSkills() {
111
+ this.skills = [];
112
+ this.skillClaimedDirs = new Set();
113
+ const debug = process.env.XiaoMa_DEBUG_MANIFEST === 'true';
114
+
115
+ for (const moduleName of this.updatedModules) {
116
+ const modulePath = path.join(this.xiaomaDir, moduleName);
117
+ if (!(await fs.pathExists(modulePath))) continue;
118
+
119
+ // Recursive walk skipping . and _ prefixed dirs
120
+ const walk = async (dir) => {
121
+ let entries;
122
+ try {
123
+ entries = await fs.readdir(dir, { withFileTypes: true });
124
+ } catch {
125
+ return;
126
+ }
127
+
128
+ // SKILL.md with valid frontmatter is the primary discovery gate
129
+ const skillFile = 'SKILL.md';
130
+ const skillMdPath = path.join(dir, skillFile);
131
+ const dirName = path.basename(dir);
132
+
133
+ const skillMeta = await this.parseSkillMd(skillMdPath, dir, dirName, debug);
134
+
135
+ if (skillMeta) {
136
+ // Build path relative from module root (points to SKILL.md — the permanent entrypoint)
137
+ const relativePath = path.relative(modulePath, dir).split(path.sep).join('/');
138
+ const installPath = relativePath
139
+ ? `${this.xiaomaFolderName}/${moduleName}/${relativePath}/${skillFile}`
140
+ : `${this.xiaomaFolderName}/${moduleName}/${skillFile}`;
141
+
142
+ // Native SKILL.md entrypoints always derive canonicalId from directory name.
143
+ const canonicalId = dirName;
144
+
145
+ this.skills.push({
146
+ name: skillMeta.name,
147
+ description: this.cleanForCSV(skillMeta.description),
148
+ module: moduleName,
149
+ path: installPath,
150
+ canonicalId,
151
+ });
152
+
153
+ // Add to files list
154
+ this.files.push({
155
+ type: 'skill',
156
+ name: skillMeta.name,
157
+ module: moduleName,
158
+ path: installPath,
159
+ });
160
+
161
+ this.skillClaimedDirs.add(dir);
162
+
163
+ if (debug) {
164
+ console.log(`[DEBUG] collectSkills: claimed skill "${skillMeta.name}" as ${canonicalId} at ${dir}`);
165
+ }
166
+ }
167
+
168
+ // Recurse into subdirectories — but not inside a discovered skill
169
+ if (!skillMeta) {
170
+ for (const entry of entries) {
171
+ if (!entry.isDirectory()) continue;
172
+ if (entry.name.startsWith('.') || entry.name.startsWith('_')) continue;
173
+ await walk(path.join(dir, entry.name));
174
+ }
175
+ }
176
+ };
177
+
178
+ await walk(modulePath);
179
+ }
180
+
181
+ if (debug) {
182
+ console.log(`[DEBUG] collectSkills: total skills found: ${this.skills.length}, claimed dirs: ${this.skillClaimedDirs.size}`);
183
+ }
184
+ }
185
+
186
+ /**
187
+ * Parse and validate SKILL.md for a skill directory.
188
+ * Returns parsed frontmatter object with name/description, or null if invalid.
189
+ * @param {string} skillMdPath - Absolute path to SKILL.md
190
+ * @param {string} dir - Skill directory path (for error messages)
191
+ * @param {string} dirName - Expected name (must match frontmatter name)
192
+ * @param {boolean} debug - Whether to emit debug-level messages
193
+ * @returns {Promise<Object|null>} Parsed frontmatter or null
194
+ */
195
+ async parseSkillMd(skillMdPath, dir, dirName, debug = false) {
196
+ if (!(await fs.pathExists(skillMdPath))) {
197
+ if (debug) console.log(`[DEBUG] parseSkillMd: "${dir}" is missing SKILL.md — skipping`);
198
+ return null;
199
+ }
200
+
201
+ try {
202
+ const rawContent = await fs.readFile(skillMdPath, 'utf8');
203
+ const content = rawContent.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
204
+
205
+ const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
206
+ if (frontmatterMatch) {
207
+ const skillMeta = yaml.parse(frontmatterMatch[1]);
208
+
209
+ if (
210
+ !skillMeta ||
211
+ typeof skillMeta !== 'object' ||
212
+ typeof skillMeta.name !== 'string' ||
213
+ typeof skillMeta.description !== 'string' ||
214
+ !skillMeta.name ||
215
+ !skillMeta.description
216
+ ) {
217
+ if (debug) console.log(`[DEBUG] parseSkillMd: SKILL.md in "${dir}" is missing name or description (or wrong type) — skipping`);
218
+ return null;
219
+ }
220
+
221
+ if (skillMeta.name !== dirName) {
222
+ console.error(`Error: SKILL.md name "${skillMeta.name}" does not match directory name "${dirName}" — skipping`);
223
+ return null;
224
+ }
225
+
226
+ return skillMeta;
227
+ }
228
+
229
+ if (debug) console.log(`[DEBUG] parseSkillMd: SKILL.md in "${dir}" has no frontmatter — skipping`);
230
+ return null;
231
+ } catch (error) {
232
+ if (debug) console.log(`[DEBUG] parseSkillMd: failed to parse SKILL.md in "${dir}": ${error.message} — skipping`);
233
+ return null;
234
+ }
235
+ }
236
+
237
+ /**
238
+ * Collect agents from each installed module's source module.yaml `agents:` array.
239
+ * Essence fields (code, name, title, icon, description) are authored in module.yaml;
240
+ * `team` defaults to module code when not set; `module` is always the owning module.
241
+ */
242
+ async collectAgentsFromModuleYaml() {
243
+ this.agents = [];
244
+ const debug = process.env.XiaoMa_DEBUG_MANIFEST === 'true';
245
+
246
+ for (const moduleName of this.updatedModules) {
247
+ const moduleYamlPath = await resolveInstalledModuleYaml(moduleName);
248
+ if (!moduleYamlPath) {
249
+ // External modules live in ~/.xiaoma/cache/external-modules, not src/modules.
250
+ // Warn rather than silently skip so missing agent rosters don't vanish
251
+ // from config.toml without notice.
252
+ console.warn(
253
+ `[warn] collectAgentsFromModuleYaml: could not locate module.yaml for '${moduleName}'. ` +
254
+ `Agents declared by this module will not be written to config.toml.`,
255
+ );
256
+ continue;
257
+ }
258
+
259
+ let moduleDef;
260
+ try {
261
+ moduleDef = yaml.parse(await fs.readFile(moduleYamlPath, 'utf8'));
262
+ } catch (error) {
263
+ if (debug) console.log(`[DEBUG] collectAgentsFromModuleYaml: failed to parse ${moduleYamlPath}: ${error.message}`);
264
+ continue;
265
+ }
266
+
267
+ if (!moduleDef || !Array.isArray(moduleDef.agents)) continue;
268
+
269
+ for (const entry of moduleDef.agents) {
270
+ if (!entry || typeof entry.code !== 'string') continue;
271
+ this.agents.push({
272
+ code: entry.code,
273
+ name: entry.name || '',
274
+ title: entry.title || '',
275
+ icon: entry.icon || '',
276
+ description: entry.description || '',
277
+ module: moduleName,
278
+ team: entry.team || moduleName,
279
+ });
280
+ }
281
+
282
+ if (debug) {
283
+ console.log(
284
+ `[DEBUG] collectAgentsFromModuleYaml: ${moduleName} contributed ${moduleDef.agents.length} agents from ${moduleYamlPath}`,
285
+ );
286
+ }
287
+ }
288
+
289
+ if (debug) {
290
+ console.log(`[DEBUG] collectAgentsFromModuleYaml: total agents found: ${this.agents.length}`);
291
+ }
292
+ }
293
+
294
+ /**
295
+ * Write main manifest as YAML with installation info only
296
+ * Fetches fresh version info for all modules
297
+ * @returns {string} Path to the manifest file
298
+ */
299
+ async writeMainManifest(cfgDir) {
300
+ const manifestPath = path.join(cfgDir, 'manifest.yaml');
301
+ const installedModuleSet = new Set(this.modules);
302
+
303
+ // Read existing manifest to preserve install date
304
+ let existingInstallDate = null;
305
+ const existingModulesMap = new Map();
306
+ if (await fs.pathExists(manifestPath)) {
307
+ try {
308
+ const existingContent = await fs.readFile(manifestPath, 'utf8');
309
+ const existingManifest = yaml.parse(existingContent);
310
+
311
+ // Preserve original install date
312
+ if (existingManifest.installation?.installDate) {
313
+ existingInstallDate = existingManifest.installation.installDate;
314
+ }
315
+
316
+ // Build map of existing modules for quick lookup
317
+ if (existingManifest.modules && Array.isArray(existingManifest.modules)) {
318
+ for (const m of existingManifest.modules) {
319
+ if (typeof m === 'object' && m.name) {
320
+ existingModulesMap.set(m.name, m);
321
+ } else if (typeof m === 'string') {
322
+ existingModulesMap.set(m, { installDate: existingInstallDate });
323
+ }
324
+ }
325
+ }
326
+ } catch {
327
+ // If we can't read existing manifest, continue with defaults
328
+ }
329
+ }
330
+
331
+ // Fetch fresh version info for all modules
332
+ const { Manifest } = require('./manifest');
333
+ const manifestObj = new Manifest();
334
+ const updatedModules = [];
335
+
336
+ for (const moduleName of this.modules) {
337
+ // Get fresh version info from source
338
+ const versionInfo = await manifestObj.getModuleVersionInfo(moduleName, this.xiaomaDir);
339
+
340
+ // Get existing install date if available
341
+ const existing = existingModulesMap.get(moduleName);
342
+
343
+ const moduleEntry = {
344
+ name: moduleName,
345
+ version: versionInfo.version,
346
+ installDate: existing?.installDate || new Date().toISOString(),
347
+ lastUpdated: new Date().toISOString(),
348
+ source: versionInfo.source,
349
+ npmPackage: versionInfo.npmPackage,
350
+ repoUrl: versionInfo.repoUrl,
351
+ };
352
+ // Preserve channel/sha from the resolution (external/community/custom)
353
+ // or from the existing entry if this is a no-change rewrite.
354
+ const channel = versionInfo.channel ?? existing?.channel;
355
+ const sha = versionInfo.sha ?? existing?.sha;
356
+ if (channel) moduleEntry.channel = channel;
357
+ if (sha) moduleEntry.sha = sha;
358
+ if (versionInfo.localPath || existing?.localPath) {
359
+ moduleEntry.localPath = versionInfo.localPath || existing.localPath;
360
+ }
361
+ if (versionInfo.rawSource || existing?.rawSource) {
362
+ moduleEntry.rawSource = versionInfo.rawSource || existing.rawSource;
363
+ }
364
+ const regTag = versionInfo.registryApprovedTag ?? existing?.registryApprovedTag;
365
+ const regSha = versionInfo.registryApprovedSha ?? existing?.registryApprovedSha;
366
+ if (regTag) moduleEntry.registryApprovedTag = regTag;
367
+ if (regSha) moduleEntry.registryApprovedSha = regSha;
368
+ updatedModules.push(moduleEntry);
369
+ }
370
+
371
+ const manifest = {
372
+ installation: {
373
+ version: packageJson.version,
374
+ installDate: existingInstallDate || new Date().toISOString(),
375
+ lastUpdated: new Date().toISOString(),
376
+ },
377
+ modules: updatedModules,
378
+ ides: this.selectedIdes,
379
+ };
380
+
381
+ // Clean the manifest to remove any non-serializable values
382
+ const cleanManifest = structuredClone(manifest);
383
+
384
+ const yamlStr = yaml.stringify(cleanManifest, {
385
+ indent: 2,
386
+ lineWidth: 0,
387
+ sortKeys: false,
388
+ });
389
+
390
+ // Ensure POSIX-compliant final newline
391
+ const content = yamlStr.endsWith('\n') ? yamlStr : yamlStr + '\n';
392
+ await fs.writeFile(manifestPath, content);
393
+ return manifestPath;
394
+ }
395
+
396
+ /**
397
+ * Write skill manifest CSV
398
+ * @returns {string} Path to the manifest file
399
+ */
400
+ async writeSkillManifest(cfgDir) {
401
+ const csvPath = path.join(cfgDir, 'skill-manifest.csv');
402
+ const escapeCsv = (value) => `"${String(value ?? '').replaceAll('"', '""')}"`;
403
+
404
+ let csvContent = 'canonicalId,name,description,module,path\n';
405
+
406
+ for (const skill of this.skills) {
407
+ const row = [
408
+ escapeCsv(skill.canonicalId),
409
+ escapeCsv(skill.name),
410
+ escapeCsv(skill.description),
411
+ escapeCsv(skill.module),
412
+ escapeCsv(skill.path),
413
+ ].join(',');
414
+ csvContent += row + '\n';
415
+ }
416
+
417
+ await fs.writeFile(csvPath, csvContent);
418
+ return csvPath;
419
+ }
420
+
421
+ /**
422
+ * Write central _xiaoma/config.toml with [core], [modules.<code>], [agents.<code>] tables.
423
+ * Install-owned. Team-scope answers → config.toml; user-scope answers → config.user.toml.
424
+ * Both files are regenerated on every install. User overrides live in
425
+ * _xiaoma/custom/config.toml and _xiaoma/custom/config.user.toml (never touched by installer).
426
+ * @returns {string[]} Paths to the written config files
427
+ */
428
+ async writeCentralConfig(xiaomaDir, moduleConfigs) {
429
+ const teamPath = path.join(xiaomaDir, 'config.toml');
430
+ const userPath = path.join(xiaomaDir, 'config.user.toml');
431
+
432
+ // Load each module's source module.yaml to determine scope per prompt key.
433
+ // Default scope is 'team' when the prompt doesn't declare one.
434
+ // When a module.yaml is unreadable we warn — for known official modules
435
+ // this means user-scoped keys (e.g. user_name) could mis-file into the
436
+ // team config, so the operator should notice.
437
+ const scopeByModuleKey = {};
438
+ // Maps installer moduleName (may be full display name) → module code field
439
+ // from module.yaml, so TOML sections use [modules.<code>] not [modules.<name>].
440
+ const codeByModuleName = {};
441
+ for (const moduleName of this.updatedModules) {
442
+ const moduleYamlPath = await resolveInstalledModuleYaml(moduleName);
443
+ if (!moduleYamlPath) {
444
+ console.warn(
445
+ `[warn] writeCentralConfig: could not locate module.yaml for '${moduleName}'. ` +
446
+ `Answers from this module will default to team scope — user-scoped keys may mis-file into config.toml.`,
447
+ );
448
+ continue;
449
+ }
450
+ try {
451
+ const parsed = yaml.parse(await fs.readFile(moduleYamlPath, 'utf8'));
452
+ if (!parsed || typeof parsed !== 'object') continue;
453
+ if (parsed.code) codeByModuleName[moduleName] = parsed.code;
454
+ scopeByModuleKey[moduleName] = {};
455
+ for (const [key, value] of Object.entries(parsed)) {
456
+ if (value && typeof value === 'object' && 'prompt' in value) {
457
+ scopeByModuleKey[moduleName][key] = value.scope === 'user' ? 'user' : 'team';
458
+ }
459
+ }
460
+ } catch (error) {
461
+ console.warn(
462
+ `[warn] writeCentralConfig: could not parse module.yaml for '${moduleName}' (${error.message}). ` +
463
+ `Answers from this module will default to team scope — user-scoped keys may mis-file into config.toml.`,
464
+ );
465
+ }
466
+ }
467
+
468
+ // Core keys are always known (core module.yaml is built-in). These are
469
+ // the only keys allowed in [core]; they must be stripped from every
470
+ // non-core module bucket because legacy _xiaoma/{mod}/config.yaml files
471
+ // spread core values into each module. Core belongs in [core] only —
472
+ // workflows that need user_name/language/etc. read [core] directly.
473
+ const coreKeys = new Set(Object.keys(scopeByModuleKey.core || {}));
474
+
475
+ // Partition a module's answered config into team vs user buckets.
476
+ // For non-core modules: strip core keys always; when we know the module's
477
+ // own schema, also drop keys it doesn't declare. Unknown-schema modules
478
+ // (external / marketplace) fall through with their remaining answers as
479
+ // team so they don't vanish from the config.
480
+ const partition = (moduleName, cfg, onlyDeclaredKeys = false) => {
481
+ const team = {};
482
+ const user = {};
483
+ const scopes = scopeByModuleKey[moduleName] || {};
484
+ const isCore = moduleName === 'core';
485
+ for (const [key, value] of Object.entries(cfg || {})) {
486
+ if (!isCore && coreKeys.has(key)) continue;
487
+ if (onlyDeclaredKeys && !(key in scopes)) continue;
488
+ if (scopes[key] === 'user') {
489
+ user[key] = value;
490
+ } else {
491
+ team[key] = value;
492
+ }
493
+ }
494
+ return { team, user };
495
+ };
496
+
497
+ const teamHeader = [
498
+ '# ─────────────────────────────────────────────────────────────────',
499
+ '# Installer-managed. Regenerated on every install — treat as read-only.',
500
+ '#',
501
+ '# Direct edits to this file will be overwritten on the next install.',
502
+ '# To change an install answer durably, re-run the installer (your prior',
503
+ '# answers are remembered as defaults). To pin a value regardless of',
504
+ '# install answers, or to add custom agents / override descriptors, use:',
505
+ '# _xiaoma/custom/config.toml (team, committed)',
506
+ '# _xiaoma/custom/config.user.toml (personal, gitignored)',
507
+ '# Those files are never touched by the installer.',
508
+ '# ─────────────────────────────────────────────────────────────────',
509
+ '',
510
+ ];
511
+
512
+ const userHeader = [
513
+ '# ─────────────────────────────────────────────────────────────────',
514
+ '# Installer-managed. Regenerated on every install — treat as read-only.',
515
+ '# Holds install answers scoped to YOU personally.',
516
+ '#',
517
+ '# Direct edits to this file will be overwritten on the next install.',
518
+ '# To change an answer durably, re-run the installer (your prior answers',
519
+ '# are remembered as defaults). For pinned overrides or custom sections',
520
+ '# the installer does not know about, use _xiaoma/custom/config.user.toml',
521
+ '# — it is never touched by the installer.',
522
+ '# ─────────────────────────────────────────────────────────────────',
523
+ '',
524
+ ];
525
+
526
+ const teamLines = [...teamHeader];
527
+ const userLines = [...userHeader];
528
+
529
+ // [core] — split into team and user
530
+ const coreConfig = moduleConfigs.core || {};
531
+ const { team: coreTeam, user: coreUser } = partition('core', coreConfig);
532
+ if (Object.keys(coreTeam).length > 0) {
533
+ teamLines.push('[core]');
534
+ for (const [key, value] of Object.entries(coreTeam)) {
535
+ teamLines.push(`${key} = ${formatTomlValue(value)}`);
536
+ }
537
+ teamLines.push('');
538
+ }
539
+ if (Object.keys(coreUser).length > 0) {
540
+ userLines.push('[core]');
541
+ for (const [key, value] of Object.entries(coreUser)) {
542
+ userLines.push(`${key} = ${formatTomlValue(value)}`);
543
+ }
544
+ userLines.push('');
545
+ }
546
+
547
+ // [modules.<code>] — split per module
548
+ for (const moduleName of this.updatedModules) {
549
+ if (moduleName === 'core') continue;
550
+ const cfg = moduleConfigs[moduleName];
551
+ if (!cfg || Object.keys(cfg).length === 0) continue;
552
+ // Use the module's code field from module.yaml as the TOML key so the
553
+ // section is [modules.mdo] not [modules.MDO: Maxio DevOps Operations].
554
+ const sectionKey = codeByModuleName[moduleName] || moduleName;
555
+ // Only filter out spread-from-core pollution when we actually know
556
+ // this module's prompt schema. For external/marketplace modules whose
557
+ // module.yaml isn't in the src tree, fall through as all-team so we
558
+ // don't drop their real answers.
559
+ const haveSchema = Object.keys(scopeByModuleKey[moduleName] || {}).length > 0;
560
+ const { team: modTeam, user: modUser } = partition(moduleName, cfg, haveSchema);
561
+ if (Object.keys(modTeam).length > 0) {
562
+ teamLines.push(`[modules.${sectionKey}]`);
563
+ for (const [key, value] of Object.entries(modTeam)) {
564
+ teamLines.push(`${key} = ${formatTomlValue(value)}`);
565
+ }
566
+ teamLines.push('');
567
+ }
568
+ if (Object.keys(modUser).length > 0) {
569
+ userLines.push(`[modules.${sectionKey}]`);
570
+ for (const [key, value] of Object.entries(modUser)) {
571
+ userLines.push(`${key} = ${formatTomlValue(value)}`);
572
+ }
573
+ userLines.push('');
574
+ }
575
+ }
576
+
577
+ // [agents.<code>] — always team (agent roster is organizational).
578
+ // Freshly collected agents come from module.yaml this run. If a module
579
+ // was preserved (e.g. during quickUpdate when its source isn't available),
580
+ // its module.yaml wasn't read — so its agents aren't in `this.agents` and
581
+ // would silently disappear from the roster. Preserve those existing
582
+ // [agents.*] blocks verbatim from the prior config.toml.
583
+ const freshAgentCodes = new Set(this.agents.map((a) => a.code));
584
+ const contributingModules = new Set(this.agents.map((a) => a.module));
585
+ const preservedModules = this.updatedModules.filter((m) => !contributingModules.has(m));
586
+ const preservedBlocks = [];
587
+ if (preservedModules.length > 0 && (await fs.pathExists(teamPath))) {
588
+ try {
589
+ const prev = await fs.readFile(teamPath, 'utf8');
590
+ for (const block of extractAgentBlocks(prev)) {
591
+ if (freshAgentCodes.has(block.code)) continue;
592
+ if (block.module && preservedModules.includes(block.module)) {
593
+ preservedBlocks.push(block.body);
594
+ }
595
+ }
596
+ } catch (error) {
597
+ console.warn(`[warn] writeCentralConfig: could not read prior config.toml to preserve agents: ${error.message}`);
598
+ }
599
+ }
600
+
601
+ for (const agent of this.agents) {
602
+ const agentLines = [`[agents.${agent.code}]`, `module = ${formatTomlValue(agent.module)}`, `team = ${formatTomlValue(agent.team)}`];
603
+ if (agent.name) agentLines.push(`name = ${formatTomlValue(agent.name)}`);
604
+ if (agent.title) agentLines.push(`title = ${formatTomlValue(agent.title)}`);
605
+ if (agent.icon) agentLines.push(`icon = ${formatTomlValue(agent.icon)}`);
606
+ if (agent.description) agentLines.push(`description = ${formatTomlValue(agent.description)}`);
607
+ agentLines.push('');
608
+ teamLines.push(...agentLines);
609
+ }
610
+
611
+ for (const body of preservedBlocks) {
612
+ teamLines.push(body, '');
613
+ }
614
+
615
+ const teamContent = teamLines.join('\n').replace(/\n+$/, '\n');
616
+ const userContent = userLines.join('\n').replace(/\n+$/, '\n');
617
+ await fs.writeFile(teamPath, teamContent);
618
+ await fs.writeFile(userPath, userContent);
619
+ return [teamPath, userPath];
620
+ }
621
+
622
+ /**
623
+ * Create empty _xiaoma/custom/config.toml and _xiaoma/custom/config.user.toml stubs
624
+ * on first install only. Installer never touches these files again after creation.
625
+ */
626
+ async ensureCustomConfigStubs(xiaomaDir) {
627
+ const customDir = path.join(xiaomaDir, 'custom');
628
+ await fs.ensureDir(customDir);
629
+
630
+ const stubs = [
631
+ {
632
+ file: path.join(customDir, 'config.toml'),
633
+ header: [
634
+ '# Team / enterprise overrides for _xiaoma/config.toml.',
635
+ '# Committed to the repo — applies to every developer on the project.',
636
+ '# Tables deep-merge over base config; keyed entries merge by key.',
637
+ '# Example: override an agent descriptor, or add a new agent.',
638
+ '#',
639
+ '# [agents.xiaoma-agent-pm]',
640
+ '# description = "Prefers short, bulleted PRDs over narrative drafts."',
641
+ '',
642
+ ],
643
+ },
644
+ {
645
+ file: path.join(customDir, 'config.user.toml'),
646
+ header: [
647
+ '# Personal overrides for _xiaoma/config.toml.',
648
+ '# NOT committed (gitignored) — applies only to your local install.',
649
+ '# Wins over both base config and team overrides.',
650
+ '',
651
+ ],
652
+ },
653
+ ];
654
+
655
+ for (const { file, header } of stubs) {
656
+ if (await fs.pathExists(file)) continue;
657
+ await fs.writeFile(file, header.join('\n'));
658
+ }
659
+ }
660
+
661
+ /**
662
+ * Write files manifest CSV
663
+ */
664
+ /**
665
+ * Calculate SHA256 hash of a file
666
+ * @param {string} filePath - Path to file
667
+ * @returns {string} SHA256 hash
668
+ */
669
+ async calculateFileHash(filePath) {
670
+ try {
671
+ const content = await fs.readFile(filePath);
672
+ return crypto.createHash('sha256').update(content).digest('hex');
673
+ } catch {
674
+ return '';
675
+ }
676
+ }
677
+
678
+ /**
679
+ * @returns {string} Path to the manifest file
680
+ */
681
+ async writeFilesManifest(cfgDir) {
682
+ const csvPath = path.join(cfgDir, 'files-manifest.csv');
683
+
684
+ // Create CSV header with hash column
685
+ let csv = 'type,name,module,path,hash\n';
686
+
687
+ // If we have ALL installed files, use those instead of just workflows/agents/tasks
688
+ const allFiles = [];
689
+ if (this.allInstalledFiles && this.allInstalledFiles.length > 0) {
690
+ // Process all installed files
691
+ for (const filePath of this.allInstalledFiles) {
692
+ // Store paths relative to xiaomaDir (no folder prefix)
693
+ const relativePath = filePath.replace(this.xiaomaDir, '').replaceAll('\\', '/').replace(/^\//, '');
694
+ const ext = path.extname(filePath).toLowerCase();
695
+ const fileName = path.basename(filePath, ext);
696
+
697
+ // Determine module from path (first directory component)
698
+ const pathParts = relativePath.split('/');
699
+ const module = pathParts.length > 0 ? pathParts[0] : 'unknown';
700
+
701
+ // Calculate hash
702
+ const hash = await this.calculateFileHash(filePath);
703
+
704
+ allFiles.push({
705
+ type: ext.slice(1) || 'file',
706
+ name: fileName,
707
+ module: module,
708
+ path: relativePath,
709
+ hash: hash,
710
+ });
711
+ }
712
+ } else {
713
+ // Fallback: use the collected workflows/agents/tasks
714
+ for (const file of this.files) {
715
+ // Strip the folder prefix if present (for consistency)
716
+ const relPath = file.path.replace(this.xiaomaFolderName + '/', '');
717
+ const filePath = path.join(this.xiaomaDir, relPath);
718
+ const hash = await this.calculateFileHash(filePath);
719
+ allFiles.push({
720
+ ...file,
721
+ path: relPath,
722
+ hash: hash,
723
+ });
724
+ }
725
+ }
726
+
727
+ // Sort files by module, then type, then name
728
+ allFiles.sort((a, b) => {
729
+ if (a.module !== b.module) return a.module.localeCompare(b.module);
730
+ if (a.type !== b.type) return a.type.localeCompare(b.type);
731
+ return a.name.localeCompare(b.name);
732
+ });
733
+
734
+ // Add all files
735
+ for (const file of allFiles) {
736
+ csv += `"${file.type}","${file.name}","${file.module}","${file.path}","${file.hash}"\n`;
737
+ }
738
+
739
+ await fs.writeFile(csvPath, csv);
740
+ return csvPath;
741
+ }
742
+
743
+ /**
744
+ * Scan the xiaoma directory to find all installed modules
745
+ * @param {string} xiaomaDir - Path to xiaoma directory
746
+ * @returns {Array} List of module names
747
+ */
748
+ async scanInstalledModules(xiaomaDir) {
749
+ const modules = [];
750
+
751
+ try {
752
+ const entries = await fs.readdir(xiaomaDir, { withFileTypes: true });
753
+
754
+ for (const entry of entries) {
755
+ // Skip if not a directory or is a special directory
756
+ if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === '_config') {
757
+ continue;
758
+ }
759
+
760
+ // Check if this looks like a module (has agents directory or skill manifests)
761
+ const modulePath = path.join(xiaomaDir, entry.name);
762
+ const hasAgents = await fs.pathExists(path.join(modulePath, 'agents'));
763
+ const hasSkills = await this._hasSkillMdRecursive(modulePath);
764
+
765
+ if (hasAgents || hasSkills) {
766
+ modules.push(entry.name);
767
+ }
768
+ }
769
+ } catch (error) {
770
+ await prompts.log.warn(`Could not scan for installed modules: ${error.message}`);
771
+ }
772
+
773
+ return modules;
774
+ }
775
+
776
+ /**
777
+ * Recursively check if a directory tree contains a SKILL.md file.
778
+ * Skips directories starting with . or _.
779
+ * @param {string} dir - Directory to search
780
+ * @returns {boolean} True if a SKILL.md is found
781
+ */
782
+ async _hasSkillMdRecursive(dir) {
783
+ let entries;
784
+ try {
785
+ entries = await fs.readdir(dir, { withFileTypes: true });
786
+ } catch {
787
+ return false;
788
+ }
789
+
790
+ // Check for SKILL.md in this directory
791
+ if (entries.some((e) => !e.isDirectory() && e.name === 'SKILL.md')) return true;
792
+
793
+ // Recurse into subdirectories
794
+ for (const entry of entries) {
795
+ if (!entry.isDirectory()) continue;
796
+ if (entry.name.startsWith('.') || entry.name.startsWith('_')) continue;
797
+ if (await this._hasSkillMdRecursive(path.join(dir, entry.name))) return true;
798
+ }
799
+
800
+ return false;
801
+ }
802
+ }
803
+
804
+ /**
805
+ * Format a JS scalar as a TOML value literal.
806
+ * Handles strings (quoted + escaped), booleans, numbers, and arrays of scalars.
807
+ * Objects are not expected at this emit path.
808
+ */
809
+ function formatTomlValue(value) {
810
+ if (value === null || value === undefined) return '""';
811
+ if (typeof value === 'boolean') return value ? 'true' : 'false';
812
+ if (typeof value === 'number' && Number.isFinite(value)) return String(value);
813
+ if (Array.isArray(value)) return `[${value.map((v) => formatTomlValue(v)).join(', ')}]`;
814
+ const str = String(value);
815
+ const escaped = str
816
+ .replaceAll('\\', '\\\\')
817
+ .replaceAll('"', String.raw`\"`)
818
+ .replaceAll('\n', String.raw`\n`)
819
+ .replaceAll('\r', String.raw`\r`)
820
+ .replaceAll('\t', String.raw`\t`);
821
+ return `"${escaped}"`;
822
+ }
823
+
824
+ /**
825
+ * Extract [agents.<code>] blocks from a previously-emitted config.toml.
826
+ * We only need this for roster preservation — the file is our own controlled
827
+ * output, so a simple line scanner is safer than adding a TOML parser
828
+ * dependency. Each block runs from its `[agents.<code>]` header until the
829
+ * next `[` heading or EOF; the `module = "..."` line inside drives which
830
+ * entries we keep on the next write.
831
+ * @returns {Array<{code: string, module: string | null, body: string}>}
832
+ */
833
+ function extractAgentBlocks(tomlContent) {
834
+ const blocks = [];
835
+ const lines = tomlContent.split('\n');
836
+ let i = 0;
837
+ while (i < lines.length) {
838
+ const header = lines[i].match(/^\[agents\.([^\]]+)]\s*$/);
839
+ if (!header) {
840
+ i++;
841
+ continue;
842
+ }
843
+ const code = header[1];
844
+ const blockLines = [lines[i]];
845
+ let moduleName = null;
846
+ i++;
847
+ while (i < lines.length && !lines[i].startsWith('[')) {
848
+ blockLines.push(lines[i]);
849
+ const m = lines[i].match(/^module\s*=\s*"((?:[^"\\]|\\.)*)"\s*$/);
850
+ if (m) moduleName = m[1];
851
+ i++;
852
+ }
853
+ while (blockLines.length > 1 && blockLines.at(-1) === '') blockLines.pop();
854
+ blocks.push({ code, module: moduleName, body: blockLines.join('\n') });
855
+ }
856
+ return blocks;
857
+ }
858
+
859
+ module.exports = { ManifestGenerator };