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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "universal-dev-standards",
3
- "version": "5.16.0",
3
+ "version": "6.0.0",
4
4
  "description": "CLI tool for adopting Universal Development Standards",
5
5
  "keywords": [
6
6
  "documentation",
@@ -61,7 +61,7 @@
61
61
  "dependencies": {
62
62
  "@inquirer/prompts": "^8.4.2",
63
63
  "chalk": "^5.3.0",
64
- "commander": "^14.0.0",
64
+ "commander": "^15.0.0",
65
65
  "js-yaml": "^4.1.0",
66
66
  "ora": "^9.4.0"
67
67
  },
@@ -70,7 +70,7 @@
70
70
  "@vitest/coverage-v8": "^4.1.5",
71
71
  "ajv": "^8.20.0",
72
72
  "ajv-formats": "^3.0.1",
73
- "eslint": "10.4.1",
73
+ "eslint": "10.5.0",
74
74
  "glob": "^13.0.1",
75
75
  "globals": "17.6.0",
76
76
  "husky": "^9.1.7",
@@ -302,19 +302,40 @@ async function handleReport(auditResult, options, msg) {
302
302
  return;
303
303
  }
304
304
 
305
- // Interactive selection
305
+ // Interactive selection (skipped with --yes: submit all findings)
306
306
  let selectedFindings = findings.map(f => f.value);
307
307
  let userComments = '';
308
308
 
309
- if (!isDryRun) {
310
- const selected = await checkbox({
311
- message: msg.submitPrompt || 'Select findings to submit:',
312
- choices: findings
313
- });
309
+ const submitAll = options.yes || false;
310
+ const nonInteractiveHint = msg.nonInteractiveHint ||
311
+ 'Interactive prompt unavailable in this terminal. Re-run with `uds audit --report --yes` to submit all findings without prompts.';
314
312
 
315
- const comments = await input({
316
- message: msg.userCommentsPrompt || 'Additional comments (optional):'
317
- });
313
+ if (!isDryRun && !submitAll) {
314
+ // @inquirer/prompts throws ExitPromptError on non-TTY stdin
315
+ // (CI, piped shells, some Windows consoles) — guard instead of crashing (#125)
316
+ if (!process.stdin.isTTY) {
317
+ console.log(chalk.yellow(nonInteractiveHint));
318
+ return;
319
+ }
320
+
321
+ let selected;
322
+ let comments;
323
+ try {
324
+ selected = await checkbox({
325
+ message: msg.submitPrompt || 'Select findings to submit:',
326
+ choices: findings
327
+ });
328
+
329
+ comments = await input({
330
+ message: msg.userCommentsPrompt || 'Additional comments (optional):'
331
+ });
332
+ } catch (err) {
333
+ if (err && err.name === 'ExitPromptError') {
334
+ console.log(chalk.yellow(nonInteractiveHint));
335
+ return;
336
+ }
337
+ throw err;
338
+ }
318
339
 
319
340
  selectedFindings = selected;
320
341
  userComments = comments || '';
@@ -106,6 +106,30 @@ const VIBE_PRESETS = {
106
106
  * @param {string} value - Config value
107
107
  * @param {Object} options - Command options
108
108
  */
109
+ /**
110
+ * Schema for known config keys (T12 input validation, XSPEC-292 §9).
111
+ * Unknown keys are allowed (forward-compatible); known keys are constrained.
112
+ */
113
+ const CONFIG_SCHEMAS = {
114
+ 'hitl.threshold': { type: 'number', enum: [0, 1, 2, 3, 4] },
115
+ };
116
+
117
+ /**
118
+ * Validate a config value against CONFIG_SCHEMAS.
119
+ * Returns an error message string, or null if valid / no schema.
120
+ */
121
+ export function validateConfigValue(key, value) {
122
+ const schema = CONFIG_SCHEMAS[key];
123
+ if (!schema) return null;
124
+ if (schema.type === 'number' && typeof value !== 'number') {
125
+ return `${key} must be a number`;
126
+ }
127
+ if (schema.enum && !schema.enum.includes(value)) {
128
+ return `${key} must be one of: ${schema.enum.join(', ')}`;
129
+ }
130
+ return null;
131
+ }
132
+
109
133
  export async function configCommand(action, key, value, options) {
110
134
  // Initialize config manager
111
135
  const currentConfig = config.init();
@@ -141,6 +165,13 @@ export async function configCommand(action, key, value, options) {
141
165
  if (value === 'false') typedValue = false;
142
166
  if (!isNaN(Number(value))) typedValue = Number(value);
143
167
 
168
+ // T12 input validation: enforce schema for known config keys
169
+ const schemaError = validateConfigValue(key, typedValue);
170
+ if (schemaError) {
171
+ console.error(chalk.red(`Error: ${schemaError}`));
172
+ return;
173
+ }
174
+
144
175
  const scope = options.global ? 'global' : 'project';
145
176
  config.set(key, typedValue, scope);
146
177
 
@@ -442,8 +473,8 @@ async function initVibeMode(options) {
442
473
  console.log('');
443
474
  console.log(chalk.gray(t('config.nextSteps', 'Next steps:')));
444
475
  console.log(chalk.gray(` • ${t('config.useSpec', 'Generate specs:')} uds spec create "your idea"`));
445
- console.log(chalk.gray(` • ${t('config.useSweep', 'Clean up code:')} uds sweep`));
446
- console.log(chalk.gray(` • ${t('config.useStart', 'Start a mission:')} uds start greenfield "MyApp"`));
476
+ console.log(chalk.gray(` • ${t('config.useSweep', 'Clean up code:')} /sweep (AI assistant skill)`));
477
+ console.log(chalk.gray(` • ${t('config.useQuickstart', 'Explore recipes:')} uds quickstart`));
447
478
  }
448
479
 
449
480
  /**
@@ -1,13 +1,26 @@
1
1
  import chalk from 'chalk';
2
2
  import { hitl } from '../hitl/manager.js';
3
3
 
4
+ // T12 input validation (XSPEC-292 §9): bound operation description length.
5
+ const MAX_OP_LENGTH = 500;
6
+
4
7
  export async function hitlCommand(options) {
5
8
  if (!options.op) {
6
9
  console.error(chalk.red('Error: --op <operation> is required'));
7
10
  return;
8
11
  }
9
12
 
10
- const allowed = await hitl.enforce(options.op, { reason: 'Manual check via CLI' });
13
+ const op = String(options.op).trim();
14
+ if (op.length === 0) {
15
+ console.error(chalk.red('Error: --op must not be empty'));
16
+ return;
17
+ }
18
+ if (op.length > MAX_OP_LENGTH) {
19
+ console.error(chalk.red(`Error: --op must be ≤ ${MAX_OP_LENGTH} characters (got ${op.length})`));
20
+ return;
21
+ }
22
+
23
+ const allowed = await hitl.enforce(op, { reason: 'Manual check via CLI' });
11
24
 
12
25
  if (allowed) {
13
26
  console.log(chalk.green('✅ Approved'));
@@ -24,6 +24,8 @@ import { displayLanguageToLocale } from '../utils/locale.js';
24
24
  import { generateReleaseConfig, RELEASE_MODE_LABELS } from '../utils/release-config.js';
25
25
  import { guardAgainstSelfAdoption } from '../utils/detect-self-adoption.js';
26
26
  import { readInstallYaml } from '../utils/config-manager.js';
27
+ import { getToolFilePath } from '../utils/integration-generator.js';
28
+ import { withFileTransaction } from '../utils/transaction.js';
27
29
 
28
30
  /**
29
31
  * Init command - initialize standards in current project
@@ -92,69 +94,119 @@ export async function initCommand(options) {
92
94
  }
93
95
  }
94
96
 
95
- // ===== Execute Installation =====
97
+ // ===== Execute Installation (transactional — T11 / XSPEC-292 §9.2) =====
96
98
  console.log();
97
-
98
- // 1. Install Standards
99
- const standardsResults = await installStandards(config, projectPath);
100
- config.installedStandards = standardsResults.standards.map(s => basename(s));
101
-
102
- // 1.5. Generate release-config.yaml if non-default mode selected
103
- if (config.releaseMode && config.releaseMode !== 'ci-cd') {
104
- const releaseConfigData = generateReleaseConfig(config.releaseMode);
105
- const releaseConfigPath = join(projectPath, '.standards', 'release-config.yaml');
106
- const yaml = (await import('js-yaml')).default;
107
- mkdirSync(join(projectPath, '.standards'), { recursive: true });
108
- writeFileSync(releaseConfigPath, yaml.dump(releaseConfigData), 'utf-8');
109
- console.log(chalk.green(` ✓ release-config.yaml (${config.releaseMode})`));
110
- }
111
99
 
112
- // 2. Install Integrations
113
- const integrationResults = await installIntegrations(config, projectPath);
114
-
115
- // 2.5. Generate universal AGENTS.md if requested
116
- const agentsMdResult = await generateUniversalAgentsMd(config, integrationResults, projectPath);
117
- if (agentsMdResult.path) {
118
- integrationResults.integrations.push(agentsMdResult.path);
119
- if (agentsMdResult.blockHashInfo) {
120
- integrationResults.integrationBlockHashes[agentsMdResult.path] = {
121
- ...agentsMdResult.blockHashInfo,
122
- installedAt: new Date().toISOString()
123
- };
100
+ // Files/dirs `init` owns and must tear down if the install fails partway.
101
+ // `.standards/` (and release-config.yaml beneath it) plus the per-tool
102
+ // integration files at the project root. Skills/commands install into shared
103
+ // agent dirs (e.g. ~/.claude/skills, .opencode/) that may already hold
104
+ // unrelated content, so they are intentionally NOT tracked here — re-running
105
+ // `uds init` re-installs them idempotently.
106
+ const ownedPaths = [join(projectPath, '.standards')];
107
+ for (const tool of (config.integrations || config.aiTools || [])) {
108
+ const file = getToolFilePath(tool);
109
+ if (file) ownedPaths.push(join(projectPath, file));
110
+ }
111
+ if (config.generateAgentsMd) ownedPaths.push(join(projectPath, 'AGENTS.md'));
112
+
113
+ let combinedResults;
114
+ // Captured inside apply() so the catch block can report which installers
115
+ // failed even though the verification error itself is generic.
116
+ let installErrors = [];
117
+ try {
118
+ const tx = await withFileTransaction(
119
+ ownedPaths,
120
+ {
121
+ apply: async () => {
122
+ // 1. Install Standards
123
+ const standardsResults = await installStandards(config, projectPath);
124
+ config.installedStandards = standardsResults.standards.map(s => basename(s));
125
+
126
+ // 1.5. Generate release-config.yaml if non-default mode selected
127
+ if (config.releaseMode && config.releaseMode !== 'ci-cd') {
128
+ const releaseConfigData = generateReleaseConfig(config.releaseMode);
129
+ const releaseConfigPath = join(projectPath, '.standards', 'release-config.yaml');
130
+ const yaml = (await import('js-yaml')).default;
131
+ mkdirSync(join(projectPath, '.standards'), { recursive: true });
132
+ writeFileSync(releaseConfigPath, yaml.dump(releaseConfigData), 'utf-8');
133
+ console.log(chalk.green(` ✓ release-config.yaml (${config.releaseMode})`));
134
+ }
135
+
136
+ // 2. Install Integrations
137
+ const integrationResults = await installIntegrations(config, projectPath);
138
+
139
+ // 2.5. Generate universal AGENTS.md if requested
140
+ const agentsMdResult = await generateUniversalAgentsMd(config, integrationResults, projectPath);
141
+ if (agentsMdResult.path) {
142
+ integrationResults.integrations.push(agentsMdResult.path);
143
+ if (agentsMdResult.blockHashInfo) {
144
+ integrationResults.integrationBlockHashes[agentsMdResult.path] = {
145
+ ...agentsMdResult.blockHashInfo,
146
+ installedAt: new Date().toISOString()
147
+ };
148
+ }
149
+ }
150
+
151
+ // 3. Install Skills & Commands
152
+ const skillsResults = {
153
+ skills: [],
154
+ commands: [],
155
+ errors: [],
156
+ skillHashes: {},
157
+ commandHashes: {}
158
+ };
159
+ await installSkills(config.skillsConfig, projectPath, msg, skillsResults);
160
+ await installCommands(config.skillsConfig, projectPath, msg, skillsResults);
161
+
162
+ // Combine results
163
+ installErrors = [
164
+ ...standardsResults.errors,
165
+ ...integrationResults.errors,
166
+ ...skillsResults.errors
167
+ ];
168
+ return {
169
+ standards: standardsResults.standards,
170
+ extensions: standardsResults.extensions,
171
+ integrations: integrationResults.integrations,
172
+ skills: skillsResults.skills,
173
+ commands: skillsResults.commands,
174
+ errors: installErrors,
175
+ fileHashes: standardsResults.fileHashes,
176
+ skillHashes: skillsResults.skillHashes,
177
+ commandHashes: skillsResults.commandHashes,
178
+ integrationBlockHashes: integrationResults.integrationBlockHashes,
179
+ manifestIntegrationConfigs: integrationResults.manifestIntegrationConfigs
180
+ };
181
+ },
182
+ // A half-installed project must never be committed: if any installer
183
+ // reported an error, fail verification → roll back → no manifest written.
184
+ verify: (results) => results.errors.length === 0
185
+ },
186
+ { label: 'uds init' }
187
+ );
188
+ combinedResults = tx.result;
189
+ } catch (err) {
190
+ console.log();
191
+ console.log(chalk.red(
192
+ (msg.installFailed || 'Installation failed and was rolled back: {error}')
193
+ .replace('{error}', err.message)
194
+ ));
195
+ for (const e of installErrors) {
196
+ console.log(chalk.gray(` ${e}`));
197
+ }
198
+ if (err.rolledBack === false) {
199
+ console.log(chalk.yellow(
200
+ (msg.rollbackFailed || 'Rollback also failed: {error}. Manual cleanup may be required.')
201
+ .replace('{error}', err.rollbackError?.message || 'unknown')
202
+ ));
124
203
  }
204
+ process.exit(1);
205
+ return;
125
206
  }
126
207
 
127
- // 3. Install Skills & Commands
128
- const skillsResults = {
129
- skills: [],
130
- commands: [],
131
- errors: [],
132
- skillHashes: {},
133
- commandHashes: {}
134
- };
135
- await installSkills(config.skillsConfig, projectPath, msg, skillsResults);
136
- await installCommands(config.skillsConfig, projectPath, msg, skillsResults);
137
-
138
- // Combine results
139
- const combinedResults = {
140
- standards: standardsResults.standards,
141
- extensions: standardsResults.extensions,
142
- integrations: integrationResults.integrations,
143
- skills: skillsResults.skills,
144
- commands: skillsResults.commands,
145
- errors: [
146
- ...standardsResults.errors,
147
- ...integrationResults.errors,
148
- ...skillsResults.errors
149
- ],
150
- fileHashes: standardsResults.fileHashes,
151
- skillHashes: skillsResults.skillHashes,
152
- commandHashes: skillsResults.commandHashes,
153
- integrationBlockHashes: integrationResults.integrationBlockHashes,
154
- manifestIntegrationConfigs: integrationResults.manifestIntegrationConfigs
155
- };
156
-
157
- // 4. Write Manifest & Display Summary
208
+ // 4. Write Manifest & Display Summary (commit point — only reached when the
209
+ // install verified clean; this is the "initialized" marker for the project)
158
210
  writeFinalManifest(config, combinedResults, projectPath);
159
211
 
160
212
  // 4.5. Generate layered CLAUDE.md (if --content-layout layered)
@@ -35,7 +35,7 @@ export const WORKFLOWS = [
35
35
  name: 'Test-Driven Development (TDD)',
36
36
  description: 'Red-Green-Refactor cycle',
37
37
  steps: [
38
- { cmd: 'uds workflow execute tdd', desc: 'Start TDD workflow' },
38
+ { cmd: '# Drive TDD with the /tdd skill', desc: 'Red-Green-Refactor from your AI assistant' },
39
39
  { cmd: '# Write failing test (RED)', desc: 'Define expected behavior' },
40
40
  { cmd: '# Make it pass (GREEN)', desc: 'Minimal implementation' },
41
41
  { cmd: '# Improve (REFACTOR)', desc: 'Clean up without breaking tests' },
@@ -57,7 +57,6 @@ export const WORKFLOWS = [
57
57
  steps: [
58
58
  { cmd: 'uds sync', desc: 'Generate context.md from git diff + workflow state' },
59
59
  { cmd: 'cat .workflow-state/context.md', desc: 'Read context in new session' },
60
- { cmd: 'uds workflow status', desc: 'Check workflow execution status' },
61
60
  ],
62
61
  },
63
62
  ];
@@ -14,8 +14,12 @@ import yaml from 'js-yaml';
14
14
  import { existsSync, readFileSync, writeFileSync } from 'fs';
15
15
  import { join } from 'path';
16
16
  import { execSync } from 'child_process';
17
+ import { createHash } from 'crypto';
17
18
  import { resolveReleaseWorkflow } from '../utils/release-config.js';
18
- import { formatGitTag, createPromotionRecord, parseRCVersion } from '../utils/version-promote.js';
19
+ import { formatGitTag, createPromotionRecord, parseRCVersion, isStableVersion } from '../utils/version-promote.js';
20
+
21
+ // Default deployment environments (overridable via release-config.yaml release.environments)
22
+ const DEFAULT_ENVIRONMENTS = ['development', 'staging', 'canary', 'preview', 'production'];
19
23
  import { createManifest, verifyManifest } from '../utils/build-manifest.js';
20
24
  import { recordDeployment, updateDeploymentResult, checkDeploymentReadiness } from '../utils/deployment-tracker.js';
21
25
 
@@ -149,7 +153,7 @@ export async function releaseCommand(subcommand, args, options) {
149
153
  console.log(chalk.red('verify 子命令僅在 manual 或 hybrid 模式下可用。'));
150
154
  return;
151
155
  }
152
- await handleVerify(projectPath);
156
+ await handleVerify(projectPath, options);
153
157
  break;
154
158
 
155
159
  default:
@@ -177,6 +181,13 @@ async function handlePromote(targetVersion, projectPath) {
177
181
  return;
178
182
  }
179
183
 
184
+ // Validate stable semver format (catches typos like 1.a.0, 1.2, abc)
185
+ if (!isStableVersion(targetVersion)) {
186
+ console.log(chalk.red(`版本格式無效: ${targetVersion}`));
187
+ console.log(chalk.gray(' 需為 stable semver(X.Y.Z),例如: uds release promote 1.2.0'));
188
+ return;
189
+ }
190
+
180
191
  // Find the latest RC for this version
181
192
  const currentVersion = getPackageVersion(projectPath);
182
193
  const parsed = currentVersion ? parseRCVersion(currentVersion) : null;
@@ -221,6 +232,19 @@ async function handleDeploy(environment, options, projectPath) {
221
232
  return;
222
233
  }
223
234
 
235
+ // Validate environment against allow-list (overridable via release-config.yaml)
236
+ const deployConfig = loadReleaseConfig(projectPath);
237
+ const allowedEnvironments =
238
+ Array.isArray(deployConfig?.release?.environments) && deployConfig.release.environments.length > 0
239
+ ? deployConfig.release.environments
240
+ : DEFAULT_ENVIRONMENTS;
241
+ if (!allowedEnvironments.includes(environment)) {
242
+ console.log(chalk.red(`未知的部署環境: ${environment}`));
243
+ console.log(chalk.gray(` 允許的環境: ${allowedEnvironments.join(', ')}`));
244
+ console.log(chalk.gray(' 自訂環境請在 .standards/release-config.yaml 設定 release.environments'));
245
+ return;
246
+ }
247
+
224
248
  const currentVersion = getPackageVersion(projectPath) || 'unknown';
225
249
  const deployments = loadDeployments(projectPath);
226
250
 
@@ -307,9 +331,12 @@ async function handleManifest(versionArg, options, projectPath) {
307
331
  }
308
332
 
309
333
  /**
310
- * /release verify
334
+ * /release verify [--artifact <path>]
335
+ *
336
+ * T13 (XSPEC-292): when --artifact is given, compute its SHA256 so verify
337
+ * actually CONSUMES the checksum recorded in the manifest, not just stores it.
311
338
  */
312
- async function handleVerify(projectPath) {
339
+ async function handleVerify(projectPath, options = {}) {
313
340
  const manifestPath = join(projectPath, 'build-manifest.json');
314
341
 
315
342
  if (!existsSync(manifestPath)) {
@@ -327,12 +354,26 @@ async function handleVerify(projectPath) {
327
354
  }
328
355
  const currentCommit = getGitCommit();
329
356
 
330
- const result = verifyManifest(manifest, currentCommit);
357
+ // Compute the artefact's checksum when a path is supplied.
358
+ let actualChecksum;
359
+ const artifactPath = options.artifact || null;
360
+ if (artifactPath) {
361
+ if (!existsSync(artifactPath)) {
362
+ console.log(chalk.red(`找不到 artifact:${artifactPath}`));
363
+ return;
364
+ }
365
+ actualChecksum = createHash('sha256').update(readFileSync(artifactPath)).digest('hex');
366
+ }
367
+
368
+ const result = verifyManifest(manifest, currentCommit, { actualChecksum });
331
369
 
332
370
  if (result.valid) {
333
371
  console.log(chalk.green('✓ Manifest 驗證通過'));
334
372
  console.log(chalk.gray(` 版本: ${manifest.version}`));
335
373
  console.log(chalk.gray(` Commit: ${manifest.commit} (一致)`));
374
+ if (actualChecksum && manifest.checksum?.package) {
375
+ console.log(chalk.gray(` Checksum: ${actualChecksum} (一致)`));
376
+ }
336
377
  } else {
337
378
  console.log(chalk.red('✗ Manifest 驗證失敗'));
338
379
  for (const err of result.errors) {
@@ -340,6 +381,10 @@ async function handleVerify(projectPath) {
340
381
  }
341
382
  }
342
383
 
384
+ for (const w of result.warnings ?? []) {
385
+ console.log(chalk.yellow(` ⚠ ${w}`));
386
+ }
387
+
343
388
  // Show staging status
344
389
  const deployments = loadDeployments(projectPath);
345
390
  const stagingPassed = deployments.some(
@@ -369,7 +414,7 @@ function showReleaseHelp(workflow) {
369
414
  console.log(chalk.gray(' deploy <env> 記錄部署紀錄'));
370
415
  console.log(chalk.gray(' deploy <env> --result 更新測試結果'));
371
416
  console.log(chalk.gray(' manifest 產生 build-manifest.json'));
372
- console.log(chalk.gray(' verify 驗證 manifest 一致性'));
417
+ console.log(chalk.gray(' verify [--artifact <path>] 驗證 manifest 一致性(含 checksum 比對)'));
373
418
  } else {
374
419
  console.log(chalk.gray(' CI/CD 模式下,請使用 /release start 和 /release finish'));
375
420
  console.log(chalk.gray(' 切換到手動模式: uds config --type release_mode'));
@@ -19,6 +19,15 @@ export async function runIntentCommand(intent, options = {}) {
19
19
  return;
20
20
  }
21
21
 
22
+ // T12 input validation (XSPEC-292 §9): intent is a config key lookup —
23
+ // restrict to a safe charset to reject malformed/injection-style input.
24
+ if (!/^[a-z0-9][a-z0-9_-]*$/.test(intent)) {
25
+ console.error(chalk.red(`✗ intent 格式無效: "${intent}"`));
26
+ console.log(chalk.gray(' intent 僅可含小寫字母、數字、- 與 _(例: test, lint, build)'));
27
+ process.exit(1);
28
+ return;
29
+ }
30
+
22
31
  let resolved;
23
32
  try {
24
33
  resolved = resolveCommand(intent, projectPath);
@@ -12,6 +12,7 @@ import { checkbox, confirm as inquirerConfirm } from '@inquirer/prompts';
12
12
  import { MicroSpec } from '../vibe/micro-spec.js';
13
13
  import { existsSync, readFileSync, writeFileSync, mkdirSync, copyFileSync } from 'node:fs';
14
14
  import { join } from 'node:path';
15
+ import { withFileTransaction } from '../utils/transaction.js';
15
16
 
16
17
  /**
17
18
  * Extract acceptance criteria from spec markdown
@@ -135,7 +136,6 @@ export async function specSplitCommand(id, options = {}) {
135
136
  // Update original spec: add depends_on to new spec
136
137
  const originalContent = originalLines.join('\n');
137
138
  const updatedOriginal = addDependsOn(originalContent, newId);
138
- writeFileSync(specPath, updatedOriginal, 'utf-8');
139
139
 
140
140
  // Create new spec with moved ACs
141
141
  const newSpec = {
@@ -154,7 +154,32 @@ export async function specSplitCommand(id, options = {}) {
154
154
  /\*\*Acceptance\*\*:[\s\S]*?(?=\n\*\*|$)/,
155
155
  `**Acceptance**:\n${acSection}`
156
156
  );
157
- writeFileSync(newSpecPath, finalContent, 'utf-8');
157
+
158
+ // T11 (XSPEC-292 §9.2): the two writes must be atomic. If creating the new
159
+ // spec fails after the original was rewritten (ACs removed), the original
160
+ // would be corrupted and the moved ACs lost. Wrap both writes so any failure
161
+ // restores the original and removes a partially-written new spec.
162
+ try {
163
+ await withFileTransaction(
164
+ [specPath, newSpecPath],
165
+ {
166
+ apply: () => {
167
+ writeFileSync(specPath, updatedOriginal, 'utf-8');
168
+ writeFileSync(newSpecPath, finalContent, 'utf-8');
169
+ },
170
+ verify: () => existsSync(specPath) && existsSync(newSpecPath)
171
+ },
172
+ { label: `spec-split ${id}` }
173
+ );
174
+ } catch (err) {
175
+ console.log(chalk.red(`\nError: spec split failed and was rolled back: ${err.message}`));
176
+ console.log(chalk.gray(` Original ${id} restored. Backup also at ${join(backupDir, `${id}-pre-split.md`)}`));
177
+ if (err.rolledBack === false) {
178
+ console.log(chalk.yellow(` ⚠ Rollback also failed: ${err.rollbackError?.message}. Restore manually from the backup.`));
179
+ }
180
+ process.exit(1);
181
+ return;
182
+ }
158
183
 
159
184
  console.log(chalk.green('\nSplit complete:'));
160
185
  console.log(` ${chalk.cyan(id)} — ${acs.length - toMove.length} ACs (updated)`);
@@ -808,9 +808,18 @@ export async function updateCommand(options) {
808
808
  }
809
809
 
810
810
  // Update manifest
811
+ // T11 (XSPEC-292 §9.2): never record a partial failure as a completed update.
812
+ // If any standard/extension/integration copy failed, KEEP the previous
813
+ // upstream.version (and installed date) so that re-running `uds update`
814
+ // retries the failed files instead of treating the project as already up to
815
+ // date. The manifest is still written so that hash/migration bookkeeping for
816
+ // the files that DID succeed is persisted.
817
+ const updateIncomplete = results.errors.length > 0;
811
818
  manifest.version = '3.3.0';
812
- manifest.upstream.version = latestVersion;
813
- manifest.upstream.installed = new Date().toISOString().split('T')[0];
819
+ if (!updateIncomplete) {
820
+ manifest.upstream.version = latestVersion;
821
+ manifest.upstream.installed = new Date().toISOString().split('T')[0];
822
+ }
814
823
  refreshIntegrationBlockHashes(manifest, projectPath);
815
824
  writeManifest(manifest, projectPath);
816
825
 
@@ -893,8 +902,14 @@ export async function updateCommand(options) {
893
902
 
894
903
  // Summary
895
904
  console.log();
896
- console.log(chalk.green(msg.updateSuccess));
897
- console.log(chalk.gray(` ${msg.versionUpdated.replace('{current}', currentVersion).replace('{latest}', latestVersion)}`));
905
+ if (updateIncomplete) {
906
+ // T11: surface the partial state honestly instead of claiming success.
907
+ console.log(chalk.yellow(msg.updateIncomplete ||
908
+ '⚠ Update incomplete — some files failed to update. Version NOT advanced; re-run `uds update` to retry.'));
909
+ } else {
910
+ console.log(chalk.green(msg.updateSuccess));
911
+ console.log(chalk.gray(` ${msg.versionUpdated.replace('{current}', currentVersion).replace('{latest}', latestVersion)}`));
912
+ }
898
913
  if (results.integrations.length > 0) {
899
914
  console.log(chalk.gray(` ${msg.integrationsSynced.replace('{count}', results.integrations.length)}`));
900
915
  }
@@ -1285,8 +1300,9 @@ export async function updateCommand(options) {
1285
1300
 
1286
1301
  console.log();
1287
1302
 
1288
- // Exit explicitly to prevent hanging
1289
- process.exit(0);
1303
+ // Exit explicitly to prevent hanging.
1304
+ // T11: a partial update exits non-zero so CI / scripts can detect the failure.
1305
+ process.exit(updateIncomplete ? 1 : 0);
1290
1306
  }
1291
1307
 
1292
1308
  /**
@@ -471,7 +471,7 @@ export const AVAILABLE_COMMANDS = [
471
471
  // Core Development Workflow (Action Skills)
472
472
  // ═══════════════════════════════════════════════════════════════════════════
473
473
  { name: 'commit', description: 'Generate commit messages following Conventional Commits' },
474
- { name: 'review', description: 'Perform code review with checklist' },
474
+ { name: 'code-review', description: 'Perform code review with checklist' },
475
475
  { name: 'checkin', description: 'Pre-commit quality gates verification' },
476
476
  { name: 'release', description: 'Guide release process' },
477
477
  { name: 'changelog', description: 'Generate changelog entries' },
@@ -484,6 +484,7 @@ export const AVAILABLE_COMMANDS = [
484
484
  { name: 'atdd', description: 'Guide ATDD workflow (acceptance criteria)' },
485
485
  { name: 'coverage', description: 'Analyze test coverage (8 dimensions)' },
486
486
  { name: 'ac-coverage', description: 'Generate AC traceability matrix and coverage report' },
487
+ { name: 'journey-test', description: 'Generate user journey test plan (TESTPLAN) and E2E skeletons' },
487
488
 
488
489
  // ═══════════════════════════════════════════════════════════════════════════
489
490
  // Specification and Requirements (Action Skills)
@@ -524,6 +525,7 @@ export const AVAILABLE_COMMANDS = [
524
525
  // ═══════════════════════════════════════════════════════════════════════════
525
526
  { name: 'methodology', description: 'Development methodology selection' },
526
527
  { name: 'dev-workflow', description: 'Guide for mapping development phases to UDS commands' },
528
+ { name: 'skill-builder', description: 'Identify repeated processes and build Skills with the right depth' },
527
529
 
528
530
  // ═══════════════════════════════════════════════════════════════════════════
529
531
  // Operations and Infrastructure (Action Skills)