universal-dev-standards 5.16.0 → 6.0.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 (540) hide show
  1. package/bin/uds.js +13 -135
  2. package/bundled/ai/standards/acceptance-criteria-traceability.ai.yaml +13 -4
  3. package/bundled/ai/standards/accessibility-standards.ai.yaml +1 -1
  4. package/bundled/ai/standards/ai-response-navigation.ai.yaml +15 -2
  5. package/bundled/ai/standards/api-design-standards.ai.yaml +27 -4
  6. package/bundled/ai/standards/behavior-snapshot.ai.yaml +86 -9
  7. package/bundled/ai/standards/checkin-standards.ai.yaml +2 -2
  8. package/bundled/ai/standards/code-review.ai.yaml +2 -2
  9. package/bundled/ai/standards/context-aware-loading.ai.yaml +3 -3
  10. package/bundled/ai/standards/data-migration-testing.ai.yaml +79 -3
  11. package/bundled/ai/standards/deprecation-standards.ai.yaml +10 -2
  12. package/bundled/ai/standards/developer-memory.ai.yaml +4 -3
  13. package/bundled/ai/standards/flow-based-testing.ai.yaml +2 -2
  14. package/bundled/ai/standards/forward-derivation-standards.ai.yaml +26 -2
  15. package/bundled/ai/standards/full-coverage-testing.ai.yaml +34 -2
  16. package/bundled/ai/standards/git-worktree.ai.yaml +3 -3
  17. package/bundled/ai/standards/logging.ai.yaml +97 -3
  18. package/bundled/ai/standards/mock-boundary.ai.yaml +48 -2
  19. package/bundled/ai/standards/model-provenance.ai.yaml +297 -0
  20. package/bundled/ai/standards/model-selection.ai.yaml +11 -2
  21. package/bundled/ai/standards/observability-standards.ai.yaml +10 -0
  22. package/bundled/ai/standards/performance-standards.ai.yaml +46 -1
  23. package/bundled/ai/standards/pii-classification.ai.yaml +15 -1
  24. package/bundled/ai/standards/pipeline-security-gates.ai.yaml +10 -0
  25. package/bundled/ai/standards/privacy-standards.ai.yaml +2 -2
  26. package/bundled/ai/standards/project-context-memory.ai.yaml +2 -2
  27. package/bundled/ai/standards/refactoring-standards.ai.yaml +68 -3
  28. package/bundled/ai/standards/resource-cost-boundary.ai.yaml +279 -0
  29. package/bundled/ai/standards/reverse-engineering-standards.ai.yaml +55 -2
  30. package/bundled/ai/standards/security-testing.ai.yaml +13 -2
  31. package/bundled/ai/standards/skill-standard-alignment-check.ai.yaml +37 -2
  32. package/bundled/ai/standards/user-journey-testing.ai.yaml +107 -0
  33. package/bundled/ai/standards/verification-oracle.ai.yaml +278 -0
  34. package/bundled/ai/standards/versioning.ai.yaml +32 -38
  35. package/bundled/core/acceptance-criteria-traceability.md +15 -5
  36. package/bundled/core/accessibility-standards.md +8 -4
  37. package/bundled/core/ai-friendly-architecture.md +1 -1
  38. package/bundled/core/ai-response-navigation.md +31 -3
  39. package/bundled/core/anti-sycophancy-prompting.md +1 -1
  40. package/bundled/core/api-design-standards.md +92 -7
  41. package/bundled/core/audit-trail.md +119 -0
  42. package/bundled/core/behavior-snapshot.md +94 -7
  43. package/bundled/core/browser-compatibility-standards.md +15 -2
  44. package/bundled/core/checkin-standards.md +9 -2
  45. package/bundled/core/code-review-checklist.md +10 -2
  46. package/bundled/core/container-image-standards.md +97 -0
  47. package/bundled/core/context-aware-loading.md +2 -2
  48. package/bundled/core/cost-budget-test.md +1 -1
  49. package/bundled/core/cross-flow-regression.md +3 -2
  50. package/bundled/core/data-contract.md +104 -0
  51. package/bundled/core/data-migration-testing.md +90 -0
  52. package/bundled/core/data-pipeline.md +113 -0
  53. package/bundled/core/deprecation-standards.md +16 -2
  54. package/bundled/core/developer-memory.md +13 -8
  55. package/bundled/core/documentation-writing-standards.md +1 -1
  56. package/bundled/core/error-code-standards.md +4 -3
  57. package/bundled/core/flaky-test-management.md +1 -1
  58. package/bundled/core/flow-based-testing.md +3 -3
  59. package/bundled/core/forward-derivation-standards.md +33 -5
  60. package/bundled/core/full-coverage-testing.md +72 -0
  61. package/bundled/core/git-worktree.md +4 -4
  62. package/bundled/core/guides/performance-guide.md +1 -1
  63. package/bundled/core/guides/security-guide.md +1 -1
  64. package/bundled/core/health-check-standards.md +2 -2
  65. package/bundled/core/iac-design-principles.md +97 -0
  66. package/bundled/core/incident-response.md +119 -0
  67. package/bundled/core/license-compliance.md +2 -0
  68. package/bundled/core/logging-standards.md +78 -2
  69. package/bundled/core/mock-boundary.md +54 -2
  70. package/bundled/core/model-provenance.md +181 -0
  71. package/bundled/core/model-selection.md +27 -2
  72. package/bundled/core/packaging-standards.md +1 -0
  73. package/bundled/core/performance-standards.md +96 -2
  74. package/bundled/core/pii-classification.md +148 -0
  75. package/bundled/core/pipeline-security-gates.md +22 -2
  76. package/bundled/core/postmortem-standards.md +2 -0
  77. package/bundled/core/prd-standards.md +91 -0
  78. package/bundled/core/privacy-standards.md +14 -3
  79. package/bundled/core/product-metrics-standards.md +100 -0
  80. package/bundled/core/project-context-memory.md +8 -2
  81. package/bundled/core/prompt-regression.md +1 -1
  82. package/bundled/core/refactoring-standards.md +44 -3
  83. package/bundled/core/replay-test.md +1 -1
  84. package/bundled/core/resource-cost-boundary.md +180 -0
  85. package/bundled/core/reverse-engineering-standards.md +66 -2
  86. package/bundled/core/runbook.md +113 -0
  87. package/bundled/core/schema-evolution.md +105 -0
  88. package/bundled/core/secret-management-standards.md +110 -0
  89. package/bundled/core/security-testing.md +26 -2
  90. package/bundled/core/self-review-protocol.md +2 -2
  91. package/bundled/core/skill-standard-alignment-check.md +53 -0
  92. package/bundled/core/slo-sli.md +109 -0
  93. package/bundled/core/smoke-test.md +1 -1
  94. package/bundled/core/spec-driven-development.md +21 -3
  95. package/bundled/core/tech-debt-standards.md +1 -1
  96. package/bundled/core/test-data-standards.md +2 -2
  97. package/bundled/core/user-journey-testing.md +102 -0
  98. package/bundled/core/user-story-mapping.md +96 -0
  99. package/bundled/core/verification-oracle.md +167 -0
  100. package/bundled/core/versioning.md +133 -109
  101. package/bundled/locales/COVERAGE.md +84 -73
  102. package/bundled/locales/zh-CN/CHANGELOG.md +81 -6
  103. package/bundled/locales/zh-CN/CLAUDE.md +1 -1
  104. package/bundled/locales/zh-CN/README.md +22 -9
  105. package/bundled/locales/zh-CN/SECURITY.md +1 -1
  106. package/bundled/locales/zh-CN/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
  107. package/bundled/locales/zh-CN/core/acceptance-criteria-traceability.md +4 -6
  108. package/bundled/locales/zh-CN/core/accessibility-standards.md +1 -1
  109. package/bundled/locales/zh-CN/core/adversarial-test.md +226 -0
  110. package/bundled/locales/zh-CN/core/agent-behavior-discipline.md +187 -0
  111. package/bundled/locales/zh-CN/core/ai-response-navigation.md +32 -6
  112. package/bundled/locales/zh-CN/core/anti-sycophancy-prompting.md +1 -1
  113. package/bundled/locales/zh-CN/core/api-design-standards.md +1 -1
  114. package/bundled/locales/zh-CN/core/behavior-snapshot.md +335 -0
  115. package/bundled/locales/zh-CN/core/browser-compatibility-standards.md +229 -0
  116. package/bundled/locales/zh-CN/core/cd-deployment-strategies.md +135 -0
  117. package/bundled/locales/zh-CN/core/chaos-injection-tests.md +130 -0
  118. package/bundled/locales/zh-CN/core/checkin-standards.md +1 -1
  119. package/bundled/locales/zh-CN/core/code-review-checklist.md +1 -1
  120. package/bundled/locales/zh-CN/core/container-security.md +535 -0
  121. package/bundled/locales/zh-CN/core/context-aware-loading.md +1 -1
  122. package/bundled/locales/zh-CN/core/contract-testing-standards.md +191 -0
  123. package/bundled/locales/zh-CN/core/cost-budget-test.md +86 -0
  124. package/bundled/locales/zh-CN/core/cross-flow-regression.md +199 -0
  125. package/bundled/locales/zh-CN/core/data-migration-testing.md +217 -0
  126. package/bundled/locales/zh-CN/core/deployment-standards.md +328 -9
  127. package/bundled/locales/zh-CN/core/deprecation-standards.md +1 -1
  128. package/bundled/locales/zh-CN/core/developer-memory.md +2 -2
  129. package/bundled/locales/zh-CN/core/disaster-recovery-drill.md +87 -0
  130. package/bundled/locales/zh-CN/core/documentation-structure.md +1 -1
  131. package/bundled/locales/zh-CN/core/documentation-writing-standards.md +1 -1
  132. package/bundled/locales/zh-CN/core/error-code-standards.md +2 -2
  133. package/bundled/locales/zh-CN/core/feature-manifest-standard.md +222 -0
  134. package/bundled/locales/zh-CN/core/flaky-test-management.md +87 -0
  135. package/bundled/locales/zh-CN/core/flow-based-testing.md +284 -0
  136. package/bundled/locales/zh-CN/core/forward-derivation-standards.md +3 -4
  137. package/bundled/locales/zh-CN/core/full-coverage-testing.md +197 -0
  138. package/bundled/locales/zh-CN/core/git-worktree.md +1 -1
  139. package/bundled/locales/zh-CN/core/governance-layer.md +160 -0
  140. package/bundled/locales/zh-CN/core/guides/performance-guide.md +515 -0
  141. package/bundled/locales/zh-CN/core/guides/security-guide.md +494 -0
  142. package/bundled/locales/zh-CN/core/knowledge-graph-memory.md +128 -0
  143. package/bundled/locales/zh-CN/core/license-compliance.md +129 -0
  144. package/bundled/locales/zh-CN/core/llm-output-validation.md +192 -0
  145. package/bundled/locales/zh-CN/core/logging-standards.md +130 -8
  146. package/bundled/locales/zh-CN/core/mock-boundary.md +109 -0
  147. package/bundled/locales/zh-CN/core/model-selection.md +28 -5
  148. package/bundled/locales/zh-CN/core/mutation-testing.md +106 -0
  149. package/bundled/locales/zh-CN/core/no-cicd-deployment.md +219 -0
  150. package/bundled/locales/zh-CN/core/packaging-standards.md +76 -5
  151. package/bundled/locales/zh-CN/core/pipeline-security-gates.md +126 -0
  152. package/bundled/locales/zh-CN/core/policy-as-code-testing.md +203 -0
  153. package/bundled/locales/zh-CN/core/privacy-standards.md +1 -1
  154. package/bundled/locales/zh-CN/core/project-context-memory.md +1 -1
  155. package/bundled/locales/zh-CN/core/prompt-regression.md +88 -0
  156. package/bundled/locales/zh-CN/core/property-based-testing.md +87 -0
  157. package/bundled/locales/zh-CN/core/release-quality-manifest.md +207 -0
  158. package/bundled/locales/zh-CN/core/release-readiness-gate.md +193 -0
  159. package/bundled/locales/zh-CN/core/replay-test.md +102 -0
  160. package/bundled/locales/zh-CN/core/reverse-engineering-standards.md +46 -1
  161. package/bundled/locales/zh-CN/core/rollback-standards.md +120 -0
  162. package/bundled/locales/zh-CN/core/sast-advanced.md +309 -0
  163. package/bundled/locales/zh-CN/core/secure-op.md +328 -0
  164. package/bundled/locales/zh-CN/core/security-testing.md +96 -0
  165. package/bundled/locales/zh-CN/core/self-review-protocol.md +167 -0
  166. package/bundled/locales/zh-CN/core/server-ops-security.md +507 -0
  167. package/bundled/locales/zh-CN/core/smoke-test.md +79 -0
  168. package/bundled/locales/zh-CN/core/spec-driven-development.md +55 -5
  169. package/bundled/locales/zh-CN/core/supply-chain-attestation.md +131 -0
  170. package/bundled/locales/zh-CN/core/versioning.md +1 -1
  171. package/bundled/locales/zh-CN/docs/CHEATSHEET.md +31 -6
  172. package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +61 -34
  173. package/bundled/locales/zh-CN/docs/MIGRATION-v6.md +88 -0
  174. package/bundled/locales/zh-CN/docs/USAGE-MODES-COMPARISON.md +2 -2
  175. package/bundled/locales/zh-CN/docs/USER-MANUAL.md +14 -14
  176. package/bundled/locales/zh-CN/docs/specs/system/memory-adoption-strategy.md +105 -0
  177. package/bundled/locales/zh-CN/docs/user/FAQ.md +132 -0
  178. package/bundled/locales/zh-CN/docs/user/GETTING-STARTED.md +144 -0
  179. package/bundled/locales/zh-CN/docs/user/GLOSSARY.md +178 -0
  180. package/bundled/locales/zh-CN/docs/user/README.md +70 -0
  181. package/bundled/locales/zh-CN/docs/user/TROUBLESHOOTING.md +190 -0
  182. package/bundled/locales/zh-CN/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +1 -1
  183. package/bundled/locales/zh-CN/integrations/github-copilot/README.md +1 -1
  184. package/bundled/locales/zh-CN/integrations/github-copilot/skills-mapping.md +3 -3
  185. package/bundled/locales/zh-CN/integrations/opencode/skills-mapping.md +3 -3
  186. package/bundled/locales/zh-CN/methodologies/guides/sdd-guide.md +836 -0
  187. package/bundled/locales/zh-CN/options/changelog/auto-generated.md +166 -0
  188. package/bundled/locales/zh-CN/options/changelog/keep-a-changelog.md +140 -0
  189. package/bundled/locales/zh-CN/options/code-review/automated-review.md +214 -0
  190. package/bundled/locales/zh-CN/options/code-review/pair-programming.md +166 -0
  191. package/bundled/locales/zh-CN/options/code-review/pr-review.md +167 -0
  192. package/bundled/locales/zh-CN/options/documentation/api-docs.md +191 -0
  193. package/bundled/locales/zh-CN/options/documentation/markdown-docs.md +150 -0
  194. package/bundled/locales/zh-CN/options/documentation/wiki-style.md +131 -0
  195. package/bundled/locales/zh-CN/options/project-structure/kotlin.md +144 -0
  196. package/bundled/locales/zh-CN/options/project-structure/php.md +168 -0
  197. package/bundled/locales/zh-CN/options/project-structure/ruby.md +156 -0
  198. package/bundled/locales/zh-CN/options/project-structure/rust.md +136 -0
  199. package/bundled/locales/zh-CN/options/project-structure/swift.md +165 -0
  200. package/bundled/locales/zh-CN/options/testing/contract-testing.md +237 -0
  201. package/bundled/locales/zh-CN/options/testing/industry-pyramid.md +200 -0
  202. package/bundled/locales/zh-CN/options/testing/istqb-framework.md +144 -0
  203. package/bundled/locales/zh-CN/options/testing/performance-testing.md +251 -0
  204. package/bundled/locales/zh-CN/options/testing/security-testing.md +192 -0
  205. package/bundled/locales/zh-CN/skills/README.md +89 -126
  206. package/bundled/locales/zh-CN/skills/ac-coverage/SKILL.md +5 -7
  207. package/bundled/locales/zh-CN/skills/adr-assistant/SKILL.md +1 -1
  208. package/bundled/locales/zh-CN/skills/agents/code-architect.md +263 -0
  209. package/bundled/locales/zh-CN/skills/agents/doc-writer.md +410 -0
  210. package/bundled/locales/zh-CN/skills/agents/reviewer.md +357 -0
  211. package/bundled/locales/zh-CN/skills/agents/spec-analyst.md +410 -0
  212. package/bundled/locales/zh-CN/skills/agents/test-specialist.md +368 -0
  213. package/bundled/locales/zh-CN/skills/ai-collaboration-standards/SKILL.md +2 -2
  214. package/bundled/locales/zh-CN/skills/ai-friendly-architecture/SKILL.md +2 -2
  215. package/bundled/locales/zh-CN/skills/ai-instruction-standards/SKILL.md +1 -1
  216. package/bundled/locales/zh-CN/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
  217. package/bundled/locales/zh-CN/skills/atdd-assistant/atdd-workflow.md +3 -4
  218. package/bundled/locales/zh-CN/skills/audit-assistant/SKILL.md +2 -2
  219. package/bundled/locales/zh-CN/skills/bdd-assistant/guide.md +1 -2
  220. package/bundled/locales/zh-CN/skills/brainstorm-assistant/SKILL.md +109 -13
  221. package/bundled/locales/zh-CN/skills/brainstorm-assistant/guide.md +30 -8
  222. package/bundled/locales/zh-CN/skills/checkin-assistant/SKILL.md +1 -1
  223. package/bundled/locales/zh-CN/skills/ci-cd-assistant/SKILL.md +50 -0
  224. package/bundled/locales/zh-CN/skills/code-review-assistant/SKILL.md +5 -5
  225. package/bundled/locales/zh-CN/skills/commands/ac-coverage.md +1 -1
  226. package/bundled/locales/zh-CN/skills/commands/atdd.md +3 -3
  227. package/bundled/locales/zh-CN/skills/commands/bdd.md +2 -2
  228. package/bundled/locales/zh-CN/skills/commands/brainstorm.md +26 -17
  229. package/bundled/locales/zh-CN/skills/commands/{review.md → code-review.md} +4 -4
  230. package/bundled/locales/zh-CN/skills/commands/derive-all.md +1 -1
  231. package/bundled/locales/zh-CN/skills/commands/derive-atdd.md +1 -1
  232. package/bundled/locales/zh-CN/skills/commands/derive-bdd.md +2 -3
  233. package/bundled/locales/zh-CN/skills/commands/derive-tdd.md +1 -1
  234. package/bundled/locales/zh-CN/skills/commands/derive.md +1 -1
  235. package/bundled/locales/zh-CN/skills/commands/dev-workflow.md +2 -2
  236. package/bundled/locales/zh-CN/skills/commands/methodology.md +4 -4
  237. package/bundled/locales/zh-CN/skills/commands/pr.md +1 -1
  238. package/bundled/locales/zh-CN/skills/commands/tdd.md +1 -1
  239. package/bundled/locales/zh-CN/skills/commit-standards/SKILL.md +1 -1
  240. package/bundled/locales/zh-CN/skills/contract-test-assistant/SKILL.md +1 -1
  241. package/bundled/locales/zh-CN/skills/dev-methodology/SKILL.md +1 -1
  242. package/bundled/locales/zh-CN/skills/dev-methodology/create-methodology.md +456 -0
  243. package/bundled/locales/zh-CN/skills/dev-methodology/guide.md +6 -6
  244. package/bundled/locales/zh-CN/skills/dev-methodology/runtime.md +296 -0
  245. package/bundled/locales/zh-CN/skills/dev-workflow-guide/SKILL.md +5 -5
  246. package/bundled/locales/zh-CN/skills/docs-generator/SKILL.md +1 -1
  247. package/bundled/locales/zh-CN/skills/e2e-assistant/SKILL.md +1 -1
  248. package/bundled/locales/zh-CN/skills/incident-response-assistant/SKILL.md +2 -2
  249. package/bundled/locales/zh-CN/skills/journey-test-assistant/SKILL.md +1 -1
  250. package/bundled/locales/zh-CN/skills/logging-guide/SKILL.md +146 -142
  251. package/bundled/locales/zh-CN/skills/migration-assistant/SKILL.md +1 -1
  252. package/bundled/locales/zh-CN/skills/observability-assistant/guide.md +1 -1
  253. package/bundled/locales/zh-CN/skills/pr-automation-assistant/SKILL.md +1 -1
  254. package/bundled/locales/zh-CN/skills/project-discovery/guide.md +2 -2
  255. package/bundled/locales/zh-CN/skills/reverse-engineer/SKILL.md +1 -1
  256. package/bundled/locales/zh-CN/skills/runbook-assistant/guide.md +1 -1
  257. package/bundled/locales/zh-CN/skills/security-assistant/SKILL.md +1 -1
  258. package/bundled/locales/zh-CN/skills/skill-builder/SKILL.md +3 -3
  259. package/bundled/locales/zh-CN/skills/slo-assistant/guide.md +1 -1
  260. package/bundled/locales/zh-CN/skills/spec-derivation/SKILL.md +1 -1
  261. package/bundled/locales/zh-CN/skills/spec-derivation/guide.md +8 -9
  262. package/bundled/locales/zh-CN/skills/spec-driven-dev/SKILL.md +2 -2
  263. package/bundled/locales/zh-CN/skills/sweep/SKILL.md +1 -1
  264. package/bundled/locales/zh-CN/skills/tdd-assistant/SKILL.md +1 -1
  265. package/bundled/locales/zh-CN/skills/testing-guide/SKILL.md +2 -2
  266. package/bundled/locales/zh-CN/skills/testing-guide/testing-theory.md +2298 -0
  267. package/bundled/locales/zh-CN/skills/workflows/README.md +451 -0
  268. package/bundled/locales/zh-TW/CHANGELOG.md +81 -6
  269. package/bundled/locales/zh-TW/CLAUDE.md +1 -1
  270. package/bundled/locales/zh-TW/MAINTENANCE.md +25 -2
  271. package/bundled/locales/zh-TW/README.md +22 -9
  272. package/bundled/locales/zh-TW/SECURITY.md +1 -1
  273. package/bundled/locales/zh-TW/adoption/DAILY-WORKFLOW-GUIDE.md +2 -2
  274. package/bundled/locales/zh-TW/ai/standards/versioning.ai.yaml +8 -48
  275. package/bundled/locales/zh-TW/core/acceptance-criteria-traceability.md +4 -6
  276. package/bundled/locales/zh-TW/core/accessibility-standards.md +1 -1
  277. package/bundled/locales/zh-TW/core/adversarial-test.md +226 -0
  278. package/bundled/locales/zh-TW/core/agent-behavior-discipline.md +187 -0
  279. package/bundled/locales/zh-TW/core/ai-response-navigation.md +32 -6
  280. package/bundled/locales/zh-TW/core/anti-sycophancy-prompting.md +1 -1
  281. package/bundled/locales/zh-TW/core/api-design-standards.md +91 -9
  282. package/bundled/locales/zh-TW/core/audit-trail.md +110 -0
  283. package/bundled/locales/zh-TW/core/behavior-snapshot.md +335 -0
  284. package/bundled/locales/zh-TW/core/browser-compatibility-standards.md +1 -0
  285. package/bundled/locales/zh-TW/core/cd-deployment-strategies.md +135 -0
  286. package/bundled/locales/zh-TW/core/chaos-injection-tests.md +130 -0
  287. package/bundled/locales/zh-TW/core/checkin-standards.md +1 -1
  288. package/bundled/locales/zh-TW/core/code-review-checklist.md +1 -1
  289. package/bundled/locales/zh-TW/core/container-image-standards.md +93 -0
  290. package/bundled/locales/zh-TW/core/container-security.md +535 -0
  291. package/bundled/locales/zh-TW/core/cost-budget-test.md +86 -0
  292. package/bundled/locales/zh-TW/core/cross-flow-regression.md +1 -0
  293. package/bundled/locales/zh-TW/core/data-contract.md +101 -0
  294. package/bundled/locales/zh-TW/core/data-migration-testing.md +217 -0
  295. package/bundled/locales/zh-TW/core/data-pipeline.md +105 -0
  296. package/bundled/locales/zh-TW/core/deployment-standards.md +363 -25
  297. package/bundled/locales/zh-TW/core/deprecation-standards.md +17 -4
  298. package/bundled/locales/zh-TW/core/developer-memory.md +2 -2
  299. package/bundled/locales/zh-TW/core/disaster-recovery-drill.md +87 -0
  300. package/bundled/locales/zh-TW/core/documentation-writing-standards.md +1 -1
  301. package/bundled/locales/zh-TW/core/error-code-standards.md +2 -2
  302. package/bundled/locales/zh-TW/core/feature-manifest-standard.md +222 -0
  303. package/bundled/locales/zh-TW/core/flaky-test-management.md +87 -0
  304. package/bundled/locales/zh-TW/core/flow-based-testing.md +284 -0
  305. package/bundled/locales/zh-TW/core/forward-derivation-standards.md +3 -4
  306. package/bundled/locales/zh-TW/core/full-coverage-testing.md +250 -0
  307. package/bundled/locales/zh-TW/core/git-worktree.md +1 -1
  308. package/bundled/locales/zh-TW/core/guides/performance-guide.md +515 -0
  309. package/bundled/locales/zh-TW/core/guides/security-guide.md +494 -0
  310. package/bundled/locales/zh-TW/core/iac-design-principles.md +90 -0
  311. package/bundled/locales/zh-TW/core/incident-response.md +111 -0
  312. package/bundled/locales/zh-TW/core/license-compliance.md +129 -0
  313. package/bundled/locales/zh-TW/core/llm-output-validation.md +192 -0
  314. package/bundled/locales/zh-TW/core/logging-standards.md +208 -4
  315. package/bundled/locales/zh-TW/core/mock-boundary.md +161 -0
  316. package/bundled/locales/zh-TW/core/model-provenance.md +173 -0
  317. package/bundled/locales/zh-TW/core/model-selection.md +28 -5
  318. package/bundled/locales/zh-TW/core/mutation-testing.md +106 -0
  319. package/bundled/locales/zh-TW/core/no-cicd-deployment.md +219 -0
  320. package/bundled/locales/zh-TW/core/packaging-standards.md +76 -5
  321. package/bundled/locales/zh-TW/core/performance-standards.md +84 -5
  322. package/bundled/locales/zh-TW/core/pii-classification.md +102 -0
  323. package/bundled/locales/zh-TW/core/pipeline-security-gates.md +126 -0
  324. package/bundled/locales/zh-TW/core/policy-as-code-testing.md +203 -0
  325. package/bundled/locales/zh-TW/core/prd-standards.md +88 -0
  326. package/bundled/locales/zh-TW/core/privacy-standards.md +1 -1
  327. package/bundled/locales/zh-TW/core/product-metrics-standards.md +96 -0
  328. package/bundled/locales/zh-TW/core/project-context-memory.md +1 -1
  329. package/bundled/locales/zh-TW/core/prompt-regression.md +88 -0
  330. package/bundled/locales/zh-TW/core/property-based-testing.md +87 -0
  331. package/bundled/locales/zh-TW/core/refactoring-standards.md +43 -6
  332. package/bundled/locales/zh-TW/core/release-quality-manifest.md +207 -0
  333. package/bundled/locales/zh-TW/core/replay-test.md +102 -0
  334. package/bundled/locales/zh-TW/core/resource-cost-boundary.md +175 -0
  335. package/bundled/locales/zh-TW/core/reverse-engineering-standards.md +64 -5
  336. package/bundled/locales/zh-TW/core/rollback-standards.md +120 -0
  337. package/bundled/locales/zh-TW/core/runbook.md +110 -0
  338. package/bundled/locales/zh-TW/core/sast-advanced.md +309 -0
  339. package/bundled/locales/zh-TW/core/schema-evolution.md +98 -0
  340. package/bundled/locales/zh-TW/core/secret-management-standards.md +101 -0
  341. package/bundled/locales/zh-TW/core/secure-op.md +328 -0
  342. package/bundled/locales/zh-TW/core/security-testing.md +96 -0
  343. package/bundled/locales/zh-TW/core/self-review-protocol.md +2 -2
  344. package/bundled/locales/zh-TW/core/server-ops-security.md +507 -0
  345. package/bundled/locales/zh-TW/core/slo-sli.md +108 -0
  346. package/bundled/locales/zh-TW/core/smoke-test.md +79 -0
  347. package/bundled/locales/zh-TW/core/spec-driven-development.md +39 -13
  348. package/bundled/locales/zh-TW/core/supply-chain-attestation.md +131 -0
  349. package/bundled/locales/zh-TW/core/user-journey-testing.md +111 -0
  350. package/bundled/locales/zh-TW/core/user-story-mapping.md +94 -0
  351. package/bundled/locales/zh-TW/core/verification-oracle.md +159 -0
  352. package/bundled/locales/zh-TW/core/versioning.md +112 -112
  353. package/bundled/locales/zh-TW/docs/CHEATSHEET.md +31 -6
  354. package/bundled/locales/zh-TW/docs/DEV-WORKFLOW-MAPPING.md +6 -6
  355. package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +61 -34
  356. package/bundled/locales/zh-TW/docs/MIGRATION-v6.md +88 -0
  357. package/bundled/locales/zh-TW/docs/USAGE-MODES-COMPARISON.md +2 -2
  358. package/bundled/locales/zh-TW/docs/USER-MANUAL.md +14 -14
  359. package/bundled/locales/zh-TW/docs/specs/system/memory-adoption-strategy.md +105 -0
  360. package/bundled/locales/zh-TW/docs/user/FAQ.md +132 -0
  361. package/bundled/locales/zh-TW/docs/user/GETTING-STARTED.md +144 -0
  362. package/bundled/locales/zh-TW/docs/user/GLOSSARY.md +178 -0
  363. package/bundled/locales/zh-TW/docs/user/README.md +70 -0
  364. package/bundled/locales/zh-TW/docs/user/TROUBLESHOOTING.md +190 -0
  365. package/bundled/locales/zh-TW/integrations/github-copilot/COPILOT-CHAT-REFERENCE.md +1 -1
  366. package/bundled/locales/zh-TW/integrations/github-copilot/README.md +1 -1
  367. package/bundled/locales/zh-TW/integrations/github-copilot/skills-mapping.md +3 -3
  368. package/bundled/locales/zh-TW/integrations/opencode/skills-mapping.md +3 -3
  369. package/bundled/locales/zh-TW/methodologies/guides/sdd-guide.md +523 -26
  370. package/bundled/locales/zh-TW/options/changelog/auto-generated.md +166 -0
  371. package/bundled/locales/zh-TW/options/changelog/keep-a-changelog.md +140 -0
  372. package/bundled/locales/zh-TW/options/code-review/automated-review.md +214 -0
  373. package/bundled/locales/zh-TW/options/code-review/pair-programming.md +166 -0
  374. package/bundled/locales/zh-TW/options/code-review/pr-review.md +167 -0
  375. package/bundled/locales/zh-TW/options/documentation/api-docs.md +191 -0
  376. package/bundled/locales/zh-TW/options/documentation/markdown-docs.md +150 -0
  377. package/bundled/locales/zh-TW/options/documentation/wiki-style.md +131 -0
  378. package/bundled/locales/zh-TW/options/project-structure/kotlin.md +144 -0
  379. package/bundled/locales/zh-TW/options/project-structure/php.md +168 -0
  380. package/bundled/locales/zh-TW/options/project-structure/ruby.md +156 -0
  381. package/bundled/locales/zh-TW/options/project-structure/rust.md +136 -0
  382. package/bundled/locales/zh-TW/options/project-structure/swift.md +165 -0
  383. package/bundled/locales/zh-TW/options/testing/contract-testing.md +237 -0
  384. package/bundled/locales/zh-TW/options/testing/industry-pyramid.md +200 -0
  385. package/bundled/locales/zh-TW/options/testing/istqb-framework.md +144 -0
  386. package/bundled/locales/zh-TW/options/testing/performance-testing.md +251 -0
  387. package/bundled/locales/zh-TW/options/testing/security-testing.md +192 -0
  388. package/bundled/locales/zh-TW/skills/README.md +91 -128
  389. package/bundled/locales/zh-TW/skills/ac-coverage/SKILL.md +4 -6
  390. package/bundled/locales/zh-TW/skills/adr-assistant/SKILL.md +1 -1
  391. package/bundled/locales/zh-TW/skills/agents/code-architect.md +263 -0
  392. package/bundled/locales/zh-TW/skills/agents/doc-writer.md +410 -0
  393. package/bundled/locales/zh-TW/skills/agents/reviewer.md +357 -0
  394. package/bundled/locales/zh-TW/skills/agents/spec-analyst.md +410 -0
  395. package/bundled/locales/zh-TW/skills/agents/test-specialist.md +368 -0
  396. package/bundled/locales/zh-TW/skills/ai-collaboration-standards/SKILL.md +2 -2
  397. package/bundled/locales/zh-TW/skills/ai-friendly-architecture/SKILL.md +2 -2
  398. package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +1 -1
  399. package/bundled/locales/zh-TW/skills/atdd-assistant/SKILL.md +2 -0
  400. package/bundled/locales/zh-TW/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
  401. package/bundled/locales/zh-TW/skills/atdd-assistant/atdd-workflow.md +3 -4
  402. package/bundled/locales/zh-TW/skills/audit-assistant/SKILL.md +2 -2
  403. package/bundled/locales/zh-TW/skills/bdd-assistant/SKILL.md +2 -0
  404. package/bundled/locales/zh-TW/skills/bdd-assistant/guide.md +1 -2
  405. package/bundled/locales/zh-TW/skills/brainstorm-assistant/SKILL.md +110 -14
  406. package/bundled/locales/zh-TW/skills/brainstorm-assistant/guide.md +31 -7
  407. package/bundled/locales/zh-TW/skills/checkin-assistant/SKILL.md +3 -1
  408. package/bundled/locales/zh-TW/skills/ci-cd-assistant/SKILL.md +50 -0
  409. package/bundled/locales/zh-TW/skills/code-review-assistant/SKILL.md +7 -5
  410. package/bundled/locales/zh-TW/skills/commands/ac-coverage.md +1 -1
  411. package/bundled/locales/zh-TW/skills/commands/atdd.md +3 -3
  412. package/bundled/locales/zh-TW/skills/commands/bdd.md +2 -2
  413. package/bundled/locales/zh-TW/skills/commands/brainstorm.md +26 -17
  414. package/bundled/locales/zh-TW/skills/commands/{review.md → code-review.md} +5 -5
  415. package/bundled/locales/zh-TW/skills/commands/derive-all.md +1 -1
  416. package/bundled/locales/zh-TW/skills/commands/derive-atdd.md +1 -1
  417. package/bundled/locales/zh-TW/skills/commands/derive-bdd.md +2 -3
  418. package/bundled/locales/zh-TW/skills/commands/derive-tdd.md +1 -1
  419. package/bundled/locales/zh-TW/skills/commands/derive.md +1 -1
  420. package/bundled/locales/zh-TW/skills/commands/dev-workflow.md +2 -2
  421. package/bundled/locales/zh-TW/skills/commands/methodology.md +4 -4
  422. package/bundled/locales/zh-TW/skills/commands/pr.md +1 -1
  423. package/bundled/locales/zh-TW/skills/commands/tdd.md +1 -1
  424. package/bundled/locales/zh-TW/skills/commit-standards/SKILL.md +1 -1
  425. package/bundled/locales/zh-TW/skills/contract-test-assistant/SKILL.md +1 -1
  426. package/bundled/locales/zh-TW/skills/dev-methodology/create-methodology.md +456 -0
  427. package/bundled/locales/zh-TW/skills/dev-methodology/guide.md +5 -5
  428. package/bundled/locales/zh-TW/skills/dev-methodology/runtime.md +296 -0
  429. package/bundled/locales/zh-TW/skills/dev-workflow-guide/SKILL.md +5 -5
  430. package/bundled/locales/zh-TW/skills/docs-generator/SKILL.md +1 -1
  431. package/bundled/locales/zh-TW/skills/e2e-assistant/SKILL.md +1 -1
  432. package/bundled/locales/zh-TW/skills/incident-response-assistant/SKILL.md +2 -2
  433. package/bundled/locales/zh-TW/skills/logging-guide/SKILL.md +29 -27
  434. package/bundled/locales/zh-TW/skills/migration-assistant/SKILL.md +1 -1
  435. package/bundled/locales/zh-TW/skills/pr-automation-assistant/SKILL.md +3 -1
  436. package/bundled/locales/zh-TW/skills/project-discovery/guide.md +2 -2
  437. package/bundled/locales/zh-TW/skills/reverse-engineer/SKILL.md +1 -1
  438. package/bundled/locales/zh-TW/skills/security-assistant/SKILL.md +1 -1
  439. package/bundled/locales/zh-TW/skills/spec-derivation/guide.md +7 -8
  440. package/bundled/locales/zh-TW/skills/spec-driven-dev/SKILL.md +2 -2
  441. package/bundled/locales/zh-TW/skills/sweep/SKILL.md +1 -1
  442. package/bundled/locales/zh-TW/skills/tdd-assistant/SKILL.md +3 -1
  443. package/bundled/locales/zh-TW/skills/testing-guide/SKILL.md +2 -2
  444. package/bundled/locales/zh-TW/skills/testing-guide/testing-theory.md +2298 -0
  445. package/bundled/locales/zh-TW/skills/workflows/README.md +451 -0
  446. package/bundled/skills/README.md +1 -1
  447. package/bundled/skills/ac-coverage/SKILL.md +17 -7
  448. package/bundled/skills/adr-assistant/SKILL.md +1 -1
  449. package/bundled/skills/agents/code-architect.md +1 -1
  450. package/bundled/skills/agents/doc-writer.md +1 -1
  451. package/bundled/skills/agents/reviewer.md +2 -2
  452. package/bundled/skills/agents/spec-analyst.md +1 -1
  453. package/bundled/skills/agents/test-specialist.md +1 -1
  454. package/bundled/skills/ai-collaboration-standards/SKILL.md +2 -2
  455. package/bundled/skills/ai-friendly-architecture/SKILL.md +2 -2
  456. package/bundled/skills/ai-instruction-standards/SKILL.md +1 -1
  457. package/bundled/skills/atdd-assistant/SKILL.md +7 -0
  458. package/bundled/skills/atdd-assistant/acceptance-criteria-guide.md +1 -1
  459. package/bundled/skills/atdd-assistant/atdd-workflow.md +6 -8
  460. package/bundled/skills/audit-assistant/SKILL.md +2 -2
  461. package/bundled/skills/bdd-assistant/SKILL.md +7 -0
  462. package/bundled/skills/bdd-assistant/guide.md +1 -2
  463. package/bundled/skills/brainstorm-assistant/SKILL.md +133 -11
  464. package/bundled/skills/brainstorm-assistant/guide.md +33 -5
  465. package/bundled/skills/checkin-assistant/SKILL.md +8 -1
  466. package/bundled/skills/ci-cd-assistant/SKILL.md +57 -0
  467. package/bundled/skills/code-review-assistant/SKILL.md +15 -8
  468. package/bundled/skills/commands/COMMAND-FAMILY-OVERVIEW.md +2 -2
  469. package/bundled/skills/commands/COMMAND-INDEX.json +3 -3
  470. package/bundled/skills/commands/README.md +2 -2
  471. package/bundled/skills/commands/ac-coverage.md +1 -1
  472. package/bundled/skills/commands/atdd.md +2 -2
  473. package/bundled/skills/commands/bdd.md +2 -2
  474. package/bundled/skills/commands/brainstorm.md +25 -14
  475. package/bundled/skills/commands/{review.md → code-review.md} +6 -6
  476. package/bundled/skills/commands/derive-all.md +1 -1
  477. package/bundled/skills/commands/derive-atdd.md +1 -1
  478. package/bundled/skills/commands/derive-bdd.md +2 -3
  479. package/bundled/skills/commands/derive-tdd.md +1 -1
  480. package/bundled/skills/commands/derive.md +1 -1
  481. package/bundled/skills/commands/dev-workflow.md +1 -1
  482. package/bundled/skills/commands/journey-test.md +45 -0
  483. package/bundled/skills/commands/methodology.md +4 -4
  484. package/bundled/skills/commands/pr.md +1 -1
  485. package/bundled/skills/commands/skill-builder.md +42 -0
  486. package/bundled/skills/commands/tdd.md +1 -1
  487. package/bundled/skills/dev-methodology/create-methodology.md +1 -1
  488. package/bundled/skills/dev-methodology/guide.md +1 -1
  489. package/bundled/skills/dev-methodology/runtime.md +1 -1
  490. package/bundled/skills/dev-workflow-guide/SKILL.md +3 -3
  491. package/bundled/skills/dev-workflow-guide/workflow-phases.md +3 -3
  492. package/bundled/skills/docs-generator/SKILL.md +3 -3
  493. package/bundled/skills/incident-response-assistant/SKILL.md +2 -2
  494. package/bundled/skills/logging-guide/SKILL.md +38 -2
  495. package/bundled/skills/migration-assistant/SKILL.md +226 -0
  496. package/bundled/skills/observability-assistant/SKILL.md +74 -0
  497. package/bundled/skills/pr-automation-assistant/SKILL.md +5 -1
  498. package/bundled/skills/project-discovery/guide.md +2 -2
  499. package/bundled/skills/push/SKILL.md +1 -1
  500. package/bundled/skills/release-standards/SKILL.md +19 -5
  501. package/bundled/skills/security-assistant/SKILL.md +1 -1
  502. package/bundled/skills/skill-builder/SKILL.md +1 -1
  503. package/bundled/skills/spec-derivation/guide.md +3 -4
  504. package/bundled/skills/spec-driven-dev/SKILL.md +27 -0
  505. package/bundled/skills/sweep/SKILL.md +1 -1
  506. package/bundled/skills/tdd-assistant/SKILL.md +8 -1
  507. package/bundled/skills/testing-guide/SKILL.md +1 -1
  508. package/bundled/skills/testing-guide/testing-theory.md +1 -1
  509. package/bundled/skills/workflows/README.md +2 -2
  510. package/package.json +3 -3
  511. package/src/commands/audit.js +30 -9
  512. package/src/commands/config.js +33 -2
  513. package/src/commands/hitl.js +14 -1
  514. package/src/commands/init.js +110 -58
  515. package/src/commands/quickstart.js +1 -2
  516. package/src/commands/release.js +51 -6
  517. package/src/commands/run-intent.js +9 -0
  518. package/src/commands/spec-split.js +27 -2
  519. package/src/commands/update.js +22 -6
  520. package/src/config/ai-agent-paths.js +3 -1
  521. package/src/i18n/messages.js +3 -102
  522. package/src/missions/MissionManager.js +44 -12
  523. package/src/utils/build-manifest.js +35 -3
  524. package/src/utils/friction-detector.js +71 -22
  525. package/src/utils/health-checker.js +29 -2
  526. package/src/utils/transaction.js +111 -0
  527. package/src/utils/version-promote.js +16 -0
  528. package/standards-registry.json +58 -146
  529. package/bundled/ai/standards/agent-communication-protocol.ai.yaml +0 -42
  530. package/bundled/ai/standards/agent-dispatch.ai.yaml +0 -42
  531. package/bundled/ai/standards/branch-completion.ai.yaml +0 -44
  532. package/bundled/ai/standards/change-batching-standards.ai.yaml +0 -44
  533. package/bundled/ai/standards/execution-history.ai.yaml +0 -42
  534. package/bundled/ai/standards/pipeline-integration-standards.ai.yaml +0 -42
  535. package/bundled/ai/standards/workflow-enforcement.ai.yaml +0 -44
  536. package/bundled/ai/standards/workflow-state-protocol.ai.yaml +0 -43
  537. package/src/commands/flow.js +0 -260
  538. package/src/commands/start.js +0 -372
  539. package/src/commands/sweep.js +0 -151
  540. package/src/commands/workflow.js +0 -681
@@ -1,260 +0,0 @@
1
- /**
2
- * UDS Flow Command — SPEC-FLOW-001
3
- *
4
- * CLI 命令:管理自訂 SDLC 流程(create/list/validate/diff/export/import)。
5
- *
6
- * @deprecated XSPEC-095 (2026-04-28): Runtime relocated to adoption layer.
7
- * The list/validate/diff operations are adoption-layer responsibility:
8
- * adoption layers must implement equivalent flow management commands
9
- * in their own toolchain.
10
- *
11
- * 棄用理由:UDS 專注於活動定義;流程編排由採用層承擔(XSPEC-086 /
12
- * DEC-049 — orchestration runtime moved to adoption layer 2026-04-28)。
13
- * UDS 5.x 仍維持本命令可用(向後相容),UDS 6.0.0 將移除。
14
- * 建議遷移:實作於採用層工具鏈。
15
- */
16
-
17
- import { existsSync, readdirSync, readFileSync, writeFileSync, mkdirSync } from 'fs';
18
- import { join } from 'path';
19
- import yaml from 'js-yaml';
20
- import { parseFlow } from '../flow/flow-parser.js';
21
- import { listFlows, validateFlowById, diffFlows } from '../flow/flow-commands.js';
22
- import { exportBundle, importBundle } from '../flow/flow-bundler.js';
23
-
24
- /**
25
- * 從互動式回答建立 Flow 物件。
26
- * @param {object} answers - 互動式回答
27
- * @param {string} answers.id - Flow ID
28
- * @param {string} answers.name - Flow 名稱
29
- * @param {string|null} answers.base - 繼承的 base flow ID
30
- * @param {Array<{id, name, commands}>} answers.stages - Stages 定義
31
- * @returns {object} Flow 物件(可序列化為 YAML)
32
- */
33
- export function buildFlowFromAnswers(answers) {
34
- const flow = {
35
- id: answers.id,
36
- name: answers.name
37
- };
38
-
39
- if (answers.base) {
40
- flow.extends = answers.base;
41
- }
42
-
43
- if (answers.stages && answers.stages.length > 0) {
44
- flow.stages = answers.stages.map(stage => ({
45
- id: stage.id,
46
- name: stage.name,
47
- steps: stage.commands.map(cmd => ({
48
- command: cmd,
49
- required: true
50
- }))
51
- }));
52
- }
53
-
54
- flow.config = {
55
- enforcement: 'suggest',
56
- allow_skip_optional: true,
57
- state_persistence: true,
58
- gate_timeout: 30
59
- };
60
-
61
- return flow;
62
- }
63
-
64
- /**
65
- * 載入所有可用 flows(built-in + custom)。
66
- * @param {string} projectPath - 專案根目錄
67
- * @returns {object[]} Flow 物件陣列
68
- */
69
- export function loadAllFlows(projectPath) {
70
- const flows = [];
71
-
72
- // Built-in flows from .standards/flows/
73
- const builtInDir = join(projectPath, '.standards', 'flows');
74
- if (existsSync(builtInDir)) {
75
- for (const file of readdirSync(builtInDir).filter(f => f.endsWith('.flow.yaml'))) {
76
- try {
77
- const content = readFileSync(join(builtInDir, file), 'utf-8');
78
- const flow = parseFlow(content);
79
- flow._source = 'built-in';
80
- flows.push(flow);
81
- } catch {
82
- // Skip invalid files
83
- }
84
- }
85
- }
86
-
87
- // Custom flows from .uds/flows/
88
- const customDir = join(projectPath, '.uds', 'flows');
89
- if (existsSync(customDir)) {
90
- for (const file of readdirSync(customDir).filter(f => f.endsWith('.flow.yaml'))) {
91
- try {
92
- const content = readFileSync(join(customDir, file), 'utf-8');
93
- const flow = parseFlow(content);
94
- flow._source = 'custom';
95
- flows.push(flow);
96
- } catch {
97
- // Skip invalid files
98
- }
99
- }
100
- }
101
-
102
- return flows;
103
- }
104
-
105
- /**
106
- * CLI action: uds flow create
107
- */
108
- export async function flowCreateCommand(_options) {
109
- const inquirer = await import('inquirer');
110
- const projectPath = process.cwd();
111
-
112
- const answers = await inquirer.default.prompt([
113
- { type: 'input', name: 'id', message: 'Flow ID (kebab-case):', validate: v => /^[a-z0-9-]+$/.test(v) || '必須為 kebab-case' },
114
- { type: 'input', name: 'name', message: 'Flow 名稱:' },
115
- { type: 'list', name: 'base', message: '繼承自哪個預設流程?', choices: ['(從零開始)', 'sdd', 'tdd', 'bdd'], filter: v => v === '(從零開始)' ? null : v }
116
- ]);
117
-
118
- // 如果從零開始,收集 stages
119
- if (!answers.base) {
120
- answers.stages = [];
121
- let addMore = true;
122
- while (addMore) {
123
- const stage = await inquirer.default.prompt([
124
- { type: 'input', name: 'id', message: 'Stage ID:' },
125
- { type: 'input', name: 'name', message: 'Stage 名稱:' },
126
- { type: 'input', name: 'commands', message: '命令(逗號分隔,如 /sdd,/tdd):' }
127
- ]);
128
- answers.stages.push({
129
- id: stage.id,
130
- name: stage.name,
131
- commands: stage.commands.split(',').map(c => c.trim())
132
- });
133
- const cont = await inquirer.default.prompt([
134
- { type: 'confirm', name: 'more', message: '繼續新增 stage?', default: false }
135
- ]);
136
- addMore = cont.more;
137
- }
138
- } else {
139
- answers.stages = [];
140
- }
141
-
142
- const flow = buildFlowFromAnswers(answers);
143
- const outputDir = join(projectPath, '.uds', 'flows');
144
- if (!existsSync(outputDir)) {
145
- mkdirSync(outputDir, { recursive: true });
146
- }
147
-
148
- const outputPath = join(outputDir, `${flow.id}.flow.yaml`);
149
- writeFileSync(outputPath, yaml.dump(flow, { lineWidth: -1 }));
150
- console.log(`✅ 流程已建立:${outputPath}`);
151
- }
152
-
153
- /**
154
- * CLI action: uds flow list
155
- */
156
- export function flowListCommand() {
157
- const flows = loadAllFlows(process.cwd());
158
- const listed = listFlows(flows);
159
-
160
- if (listed.length === 0) {
161
- console.log('沒有找到任何流程定義。');
162
- return;
163
- }
164
-
165
- console.log('\n可用的流程:');
166
- for (const f of listed) {
167
- const ext = f.extends ? ` (extends: ${f.extends})` : '';
168
- console.log(` ${f.id} [${f.label}] — ${f.stageCount} stages${ext}`);
169
- }
170
- console.log('');
171
- }
172
-
173
- /**
174
- * CLI action: uds flow validate <id>
175
- */
176
- export function flowValidateCommand(id) {
177
- const flows = loadAllFlows(process.cwd());
178
- const registry = Object.fromEntries(flows.map(f => [f.id, f]));
179
- const result = validateFlowById(id, registry, { availableCommands: [] });
180
-
181
- if (result.valid) {
182
- console.log(`✅ 流程 "${id}" 驗證通過`);
183
- } else {
184
- console.log(`❌ 流程 "${id}" 有 ${result.errors.length} 個問題:`);
185
- for (const err of result.errors) {
186
- console.log(` - ${err.message}`);
187
- }
188
- }
189
- }
190
-
191
- /**
192
- * CLI action: uds flow diff <a> <b>
193
- */
194
- export function flowDiffCommand(idA, idB) {
195
- const flows = loadAllFlows(process.cwd());
196
- const registry = Object.fromEntries(flows.map(f => [f.id, f]));
197
-
198
- if (!registry[idA]) { console.log(`❌ 流程 "${idA}" 不存在`); return; }
199
- if (!registry[idB]) { console.log(`❌ 流程 "${idB}" 不存在`); return; }
200
-
201
- const diff = diffFlows(registry[idA], registry[idB]);
202
-
203
- console.log(`\n比較 ${idA} → ${idB}:`);
204
- if (diff.stages.added.length) console.log(` 新增 stages: ${diff.stages.added.join(', ')}`);
205
- if (diff.stages.removed.length) console.log(` 移除 stages: ${diff.stages.removed.join(', ')}`);
206
- for (const mod of diff.steps.modified) {
207
- if (mod.added.length) console.log(` ${mod.stageId}: 新增 steps ${mod.added.join(', ')}`);
208
- if (mod.removed.length) console.log(` ${mod.stageId}: 移除 steps ${mod.removed.join(', ')}`);
209
- }
210
- if (!diff.stages.added.length && !diff.stages.removed.length && !diff.steps.modified.length) {
211
- console.log(' (無差異)');
212
- }
213
- console.log('');
214
- }
215
-
216
- /**
217
- * CLI action: uds flow export <id>
218
- */
219
- export function flowExportCommand(id, options) {
220
- const flows = loadAllFlows(process.cwd());
221
- const flow = flows.find(f => f.id === id);
222
- if (!flow) { console.log(`❌ 流程 "${id}" 不存在`); return; }
223
-
224
- const bundle = exportBundle(flow, {});
225
- const outputPath = options.output || `${id}.bundle.yaml`;
226
- writeFileSync(outputPath, yaml.dump(bundle, { lineWidth: -1 }));
227
- console.log(`✅ Bundle 已匯出:${outputPath}`);
228
- }
229
-
230
- /**
231
- * CLI action: uds flow import <file>
232
- */
233
- export function flowImportCommand(file, options) {
234
- const content = readFileSync(file, 'utf-8');
235
- const bundle = yaml.load(content);
236
- const flows = loadAllFlows(process.cwd());
237
- const existingIds = flows.map(f => f.id);
238
-
239
- const result = importBundle(bundle, { existingFlowIds: existingIds });
240
-
241
- if (result.conflicts.length > 0 && !options.force) {
242
- console.log(`⚠️ 衝突:${result.conflicts.join(', ')} 已存在。使用 --force 覆寫。`);
243
- return;
244
- }
245
-
246
- const outputDir = join(process.cwd(), '.uds', 'flows');
247
- if (!existsSync(outputDir)) mkdirSync(outputDir, { recursive: true });
248
-
249
- writeFileSync(join(outputDir, `${result.flow.id}.flow.yaml`), yaml.dump(result.flow, { lineWidth: -1 }));
250
-
251
- const gatesDir = join(process.cwd(), '.uds', 'gates');
252
- if (result.gates.length > 0) {
253
- if (!existsSync(gatesDir)) mkdirSync(gatesDir, { recursive: true });
254
- for (const gate of result.gates) {
255
- writeFileSync(join(gatesDir, `${gate.id}.gate.yaml`), yaml.dump(gate, { lineWidth: -1 }));
256
- }
257
- }
258
-
259
- console.log(`✅ 已匯入流程 "${result.flow.id}" 和 ${result.gates.length} 個閘門`);
260
- }
@@ -1,372 +0,0 @@
1
- /**
2
- * UDS Start Command — Mission 任務啟動
3
- *
4
- * 啟動一個具名任務(Mission)並設定任務意圖。
5
- *
6
- * @deprecated XSPEC-095 (2026-04-28): Runtime relocated to adoption layer.
7
- * The orchestration logic is adoption-layer responsibility:
8
- * adoption layers must implement equivalent mission start commands
9
- * in their own toolchain.
10
- *
11
- * 棄用理由:UDS 專注於活動定義;流程編排由採用層承擔(XSPEC-086 /
12
- * DEC-049 — orchestration runtime moved to adoption layer 2026-04-28)。
13
- * UDS 5.x 仍維持本命令可用(向後相容),UDS 6.0.0 將移除。
14
- * 建議遷移:實作於採用層工具鏈。
15
- */
16
- import chalk from 'chalk';
17
- import { select, input, confirm as inquirerConfirm } from '@inquirer/prompts';
18
- import { MissionManager, MissionType, MissionState } from '../missions/MissionManager.js';
19
- import { msg } from '../i18n/messages.js';
20
-
21
- /**
22
- * Get localized message with fallback
23
- */
24
- function t(key, fallback) {
25
- return msg(key) || fallback;
26
- }
27
-
28
- /**
29
- * Mission type display names and descriptions
30
- */
31
- const MISSION_INFO = {
32
- [MissionType.GENESIS]: {
33
- name: 'Genesis (Greenfield)',
34
- description: 'Create a new project from scratch',
35
- emoji: '🌱'
36
- },
37
- [MissionType.RENOVATE]: {
38
- name: 'Renovate (Refactor)',
39
- description: 'Refactor and improve existing code',
40
- emoji: '🔧'
41
- },
42
- [MissionType.MEDIC]: {
43
- name: 'Medic (Debug)',
44
- description: 'Debug and fix issues',
45
- emoji: '🩺'
46
- },
47
- [MissionType.EXODUS]: {
48
- name: 'Exodus (Migration)',
49
- description: 'Migrate to new technology/framework',
50
- emoji: '🚀'
51
- },
52
- [MissionType.GUARDIAN]: {
53
- name: 'Guardian (Security)',
54
- description: 'Security audit and compliance check',
55
- emoji: '🛡️'
56
- }
57
- };
58
-
59
- /**
60
- * Handle start command - create a new mission
61
- * @param {string} missionType - Mission type
62
- * @param {string} intent - Natural language intent
63
- * @param {Object} options - Command options
64
- */
65
- export async function startCommand(missionType, intent, options) {
66
- const manager = new MissionManager();
67
-
68
- // Check for existing mission
69
- const current = manager.getCurrent();
70
- if (current && !manager.isTerminalState(current.state)) {
71
- console.log(chalk.yellow(t('mission.activeExists', 'An active mission already exists:')));
72
- console.log('');
73
- displayMissionStatus(current);
74
- console.log('');
75
-
76
- if (!options.yes) {
77
- const action = await select({
78
- message: t('mission.existingAction', 'What would you like to do?'),
79
- choices: [
80
- { name: t('mission.resume', 'Resume existing mission'), value: 'resume' },
81
- { name: t('mission.cancel', 'Cancel existing and start new'), value: 'cancel' },
82
- { name: t('mission.abort', 'Abort (do nothing)'), value: 'abort' }
83
- ]
84
- });
85
-
86
- if (action === 'abort') {
87
- console.log(chalk.gray(t('mission.aborted', 'Operation cancelled.')));
88
- return;
89
- }
90
-
91
- if (action === 'resume') {
92
- console.log(chalk.cyan(t('mission.resuming', 'Resuming existing mission...')));
93
- displayMissionDetails(current, manager);
94
- return;
95
- }
96
-
97
- if (action === 'cancel') {
98
- manager.cancel('Cancelled to start new mission');
99
- console.log(chalk.gray(t('mission.previousCancelled', 'Previous mission cancelled.')));
100
- }
101
- } else {
102
- // With --yes flag, cancel existing and proceed
103
- manager.cancel('Cancelled to start new mission (--yes flag)');
104
- }
105
- }
106
-
107
- // If no type provided, prompt for selection
108
- let selectedType = missionType;
109
- if (!selectedType) {
110
- const type = await select({
111
- message: t('mission.selectType', 'Select mission type:'),
112
- choices: Object.entries(MISSION_INFO).map(([key, info]) => ({
113
- name: `${info.emoji} ${info.name}\n ${chalk.gray(info.description)}`,
114
- value: key,
115
- short: info.name
116
- }))
117
- });
118
- selectedType = type;
119
- }
120
-
121
- // If no intent provided, prompt for it
122
- let missionIntent = intent;
123
- if (!missionIntent) {
124
- const userIntent = await input({
125
- message: t('mission.enterIntent', 'Describe your goal:'),
126
- validate: (val) => val.trim().length > 0 || t('mission.intentRequired', 'Intent is required')
127
- });
128
- missionIntent = userIntent;
129
- }
130
-
131
- try {
132
- // Create the mission
133
- const mission = manager.create(selectedType, missionIntent);
134
- const info = MISSION_INFO[selectedType];
135
-
136
- console.log('');
137
- console.log(chalk.green(`${info.emoji} ${t('mission.created', 'Mission created!')}`));
138
- console.log('');
139
- console.log(chalk.bold(`Mission: ${mission.id}`));
140
- console.log(chalk.gray('─'.repeat(50)));
141
- console.log(` ${chalk.cyan('Type')}: ${info.name}`);
142
- console.log(` ${chalk.cyan('Intent')}: ${missionIntent}`);
143
- console.log(` ${chalk.cyan('State')}: ${chalk.yellow(mission.state)}`);
144
- console.log(chalk.gray('─'.repeat(50)));
145
- console.log('');
146
-
147
- // Show workflow config
148
- const workflowConfig = manager.getWorkflowConfig(selectedType);
149
- if (workflowConfig) {
150
- console.log(chalk.bold(t('mission.suggestedWorkflow', 'Suggested workflow:')));
151
- workflowConfig.steps.forEach((step, i) => {
152
- console.log(` ${i + 1}. ${step}`);
153
- });
154
- console.log('');
155
- }
156
-
157
- // Show next steps
158
- console.log(chalk.gray(t('mission.nextSteps', 'Next steps:')));
159
- console.log(chalk.gray(` • ${t('mission.useSpecCreate', 'Create specs:')} uds spec create "<feature>"`));
160
- console.log(chalk.gray(` • ${t('mission.useStatus', 'Check status:')} uds mission status`));
161
- console.log(chalk.gray(` • ${t('mission.usePause', 'Pause mission:')} uds mission pause`));
162
-
163
- // Transition to planning
164
- if (!options.skipPlanning) {
165
- manager.transition(MissionState.PLANNING, { reason: 'Mission started' });
166
- console.log('');
167
- console.log(chalk.cyan(t('mission.planningPhase', 'Mission is now in planning phase.')));
168
- }
169
-
170
- } catch (error) {
171
- console.error(chalk.red(`Error: ${error.message}`));
172
- process.exitCode = 1;
173
- }
174
- }
175
-
176
- /**
177
- * Handle mission status command
178
- */
179
- export async function missionStatusCommand() {
180
- const manager = new MissionManager();
181
- const status = manager.getStatus();
182
-
183
- if (!status.active) {
184
- console.log(chalk.gray(t('mission.noActive', 'No active mission.')));
185
- console.log(chalk.gray(t('mission.startHint', 'Start one with: uds start <type> "<intent>"')));
186
- return;
187
- }
188
-
189
- const mission = manager.getCurrent();
190
- displayMissionDetails(mission, manager);
191
- }
192
-
193
- /**
194
- * Handle mission pause command
195
- * @param {Object} options - Command options
196
- */
197
- export async function missionPauseCommand(options) {
198
- const manager = new MissionManager();
199
- const current = manager.getCurrent();
200
-
201
- if (!current) {
202
- console.log(chalk.gray(t('mission.noActive', 'No active mission to pause.')));
203
- return;
204
- }
205
-
206
- try {
207
- const mission = manager.pause(options.reason || '');
208
- console.log(chalk.yellow(t('mission.paused', 'Mission paused.')));
209
- console.log(` ID: ${mission.id}`);
210
- console.log(` State: ${chalk.yellow(mission.state)}`);
211
- } catch (error) {
212
- console.error(chalk.red(`Error: ${error.message}`));
213
- }
214
- }
215
-
216
- /**
217
- * Handle mission resume command
218
- */
219
- export async function missionResumeCommand() {
220
- const manager = new MissionManager();
221
- const current = manager.getCurrent();
222
-
223
- if (!current) {
224
- console.log(chalk.gray(t('mission.noActive', 'No active mission to resume.')));
225
- return;
226
- }
227
-
228
- try {
229
- const mission = manager.resume();
230
- console.log(chalk.green(t('mission.resumed', 'Mission resumed!')));
231
- displayMissionStatus(mission);
232
- } catch (error) {
233
- console.error(chalk.red(`Error: ${error.message}`));
234
- }
235
- }
236
-
237
- /**
238
- * Handle mission cancel command
239
- * @param {Object} options - Command options
240
- */
241
- export async function missionCancelCommand(options) {
242
- const manager = new MissionManager();
243
- const current = manager.getCurrent();
244
-
245
- if (!current) {
246
- console.log(chalk.gray(t('mission.noActive', 'No active mission to cancel.')));
247
- return;
248
- }
249
-
250
- if (!options.yes) {
251
- const confirmed = await inquirerConfirm({
252
- message: t('mission.confirmCancel', `Cancel mission "${current.id}"?`),
253
- default: false
254
- });
255
-
256
- if (!confirmed) {
257
- console.log(chalk.gray(t('mission.cancelAborted', 'Operation cancelled.')));
258
- return;
259
- }
260
- }
261
-
262
- try {
263
- const mission = manager.cancel(options.reason || 'User cancelled');
264
- console.log(chalk.red(t('mission.cancelled', 'Mission cancelled.')));
265
- console.log(` ID: ${mission.id}`);
266
- } catch (error) {
267
- console.error(chalk.red(`Error: ${error.message}`));
268
- }
269
- }
270
-
271
- /**
272
- * Handle mission list command
273
- * @param {Object} options - Command options
274
- */
275
- export async function missionListCommand(options) {
276
- const manager = new MissionManager();
277
- const missions = manager.list({
278
- type: options.type,
279
- state: options.state
280
- });
281
-
282
- if (missions.length === 0) {
283
- console.log(chalk.gray(t('mission.noMissions', 'No missions found.')));
284
- return;
285
- }
286
-
287
- console.log(chalk.bold(t('mission.listTitle', 'Missions:')));
288
- console.log('');
289
-
290
- for (const mission of missions) {
291
- const info = MISSION_INFO[mission.type] || { emoji: '📋', name: mission.type };
292
- const currentMark = mission.isCurrent ? chalk.green(' (current)') : '';
293
- const stateColor = getStateColor(mission.state);
294
-
295
- console.log(`${info.emoji} ${chalk.bold(mission.id)}${currentMark}`);
296
- console.log(` Type: ${info.name}`);
297
- console.log(` State: ${stateColor(mission.state)}`);
298
- console.log(` Intent: ${mission.intent.substring(0, 60)}${mission.intent.length > 60 ? '...' : ''}`);
299
- console.log(` Created: ${new Date(mission.createdAt).toLocaleDateString()}`);
300
- console.log('');
301
- }
302
- }
303
-
304
- /**
305
- * Display mission status summary
306
- */
307
- function displayMissionStatus(mission) {
308
- const info = MISSION_INFO[mission.type] || { emoji: '📋', name: mission.type };
309
- const stateColor = getStateColor(mission.state);
310
-
311
- console.log(`${info.emoji} ${chalk.bold(mission.id)}`);
312
- console.log(` State: ${stateColor(mission.state)}`);
313
- console.log(` Intent: ${mission.intent}`);
314
- }
315
-
316
- /**
317
- * Display detailed mission information
318
- */
319
- function displayMissionDetails(mission, _manager) {
320
- const info = MISSION_INFO[mission.type] || { emoji: '📋', name: mission.type };
321
- const stateColor = getStateColor(mission.state);
322
-
323
- console.log('');
324
- console.log(chalk.bold(`${info.emoji} Mission: ${mission.id}`));
325
- console.log(chalk.gray('═'.repeat(50)));
326
- console.log(` ${chalk.cyan('Type')}: ${info.name}`);
327
- console.log(` ${chalk.cyan('State')}: ${stateColor(mission.state)}`);
328
- console.log(` ${chalk.cyan('Intent')}: ${mission.intent}`);
329
- console.log(` ${chalk.cyan('Created')}: ${new Date(mission.createdAt).toLocaleString()}`);
330
- console.log(` ${chalk.cyan('Updated')}: ${new Date(mission.updatedAt).toLocaleString()}`);
331
-
332
- if (mission.steps.length > 0) {
333
- console.log('');
334
- console.log(chalk.bold(' Steps:'));
335
- mission.steps.forEach((step) => {
336
- const statusIcon = step.status === 'completed' ? '✓' :
337
- step.status === 'in_progress' ? '→' :
338
- step.status === 'failed' ? '✗' : '○';
339
- const statusColor = step.status === 'completed' ? chalk.green :
340
- step.status === 'failed' ? chalk.red : chalk.gray;
341
- console.log(` ${statusColor(statusIcon)} ${step.description || step.id}`);
342
- });
343
- }
344
-
345
- if (mission.specs.length > 0) {
346
- console.log('');
347
- console.log(chalk.bold(' Linked Specs:'));
348
- mission.specs.forEach(specId => {
349
- console.log(` • ${specId}`);
350
- });
351
- }
352
-
353
- console.log(chalk.gray('═'.repeat(50)));
354
- }
355
-
356
- /**
357
- * Get chalk color function for mission state
358
- */
359
- function getStateColor(state) {
360
- switch (state) {
361
- case MissionState.COMPLETED:
362
- return chalk.green;
363
- case MissionState.CANCELLED:
364
- return chalk.red;
365
- case MissionState.PAUSED:
366
- return chalk.yellow;
367
- case MissionState.IN_PROGRESS:
368
- return chalk.cyan;
369
- default:
370
- return chalk.white;
371
- }
372
- }