universal-dev-standards 5.0.0-rc.9 → 5.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 (355) hide show
  1. package/bin/uds.js +5 -3
  2. package/bundled/ai/standards/acceptance-criteria-traceability.ai.yaml +178 -0
  3. package/bundled/ai/standards/agent-dispatch.ai.yaml +69 -0
  4. package/bundled/ai/standards/ai-command-behavior.ai.yaml +45 -0
  5. package/bundled/ai/standards/api-design-standards.ai.yaml +192 -0
  6. package/bundled/ai/standards/branch-completion.ai.yaml +82 -0
  7. package/bundled/ai/standards/change-batching-standards.ai.yaml +195 -0
  8. package/bundled/ai/standards/database-standards.ai.yaml +220 -0
  9. package/bundled/ai/standards/error-codes.ai.yaml +37 -2
  10. package/bundled/ai/standards/git-worktree.ai.yaml +77 -0
  11. package/bundled/ai/standards/logging.ai.yaml +21 -2
  12. package/bundled/ai/standards/model-selection.ai.yaml +81 -0
  13. package/bundled/ai/standards/pipeline-integration-standards.ai.yaml +184 -0
  14. package/bundled/ai/standards/systematic-debugging.ai.yaml +73 -0
  15. package/bundled/ai/standards/verification-evidence.ai.yaml +84 -0
  16. package/bundled/ai/standards/workflow-enforcement.ai.yaml +253 -0
  17. package/bundled/core/acceptance-criteria-traceability.md +293 -0
  18. package/bundled/core/agent-dispatch.md +149 -0
  19. package/bundled/core/ai-command-behavior.md +239 -0
  20. package/bundled/core/api-design-standards.md +938 -0
  21. package/bundled/core/branch-completion.md +158 -0
  22. package/bundled/core/change-batching-standards.md +257 -0
  23. package/bundled/core/checkin-standards.md +43 -6
  24. package/bundled/core/database-standards.md +828 -0
  25. package/bundled/core/error-code-standards.md +228 -2
  26. package/bundled/core/forward-derivation-standards.md +54 -2
  27. package/bundled/core/git-worktree.md +131 -0
  28. package/bundled/core/model-selection.md +153 -0
  29. package/bundled/core/pipeline-integration-standards.md +230 -0
  30. package/bundled/core/systematic-debugging.md +156 -0
  31. package/bundled/core/testing-standards.md +49 -39
  32. package/bundled/core/verification-evidence.md +172 -0
  33. package/bundled/core/workflow-enforcement.md +132 -0
  34. package/bundled/locales/zh-CN/CLAUDE.md +2 -2
  35. package/bundled/locales/zh-CN/README.md +4 -4
  36. package/bundled/locales/zh-CN/SECURITY.md +92 -0
  37. package/bundled/locales/zh-CN/core/acceptance-criteria-traceability.md +301 -0
  38. package/bundled/locales/zh-CN/core/acceptance-test-driven-development.md +47 -0
  39. package/bundled/locales/zh-CN/core/accessibility-standards.md +124 -0
  40. package/bundled/locales/zh-CN/core/agent-dispatch.md +113 -0
  41. package/bundled/locales/zh-CN/core/ai-agreement-standards.md +103 -0
  42. package/bundled/locales/zh-CN/core/ai-command-behavior.md +247 -0
  43. package/bundled/locales/zh-CN/core/api-design-standards.md +946 -0
  44. package/bundled/locales/zh-CN/core/behavior-driven-development.md +48 -0
  45. package/bundled/locales/zh-CN/core/branch-completion.md +112 -0
  46. package/bundled/locales/zh-CN/core/change-batching-standards.md +265 -0
  47. package/bundled/locales/zh-CN/core/checkin-standards.md +43 -5
  48. package/bundled/locales/zh-CN/core/context-aware-loading.md +106 -0
  49. package/bundled/locales/zh-CN/core/database-standards.md +836 -0
  50. package/bundled/locales/zh-CN/core/deployment-standards.md +80 -0
  51. package/bundled/locales/zh-CN/core/error-code-standards.md +2 -2
  52. package/bundled/locales/zh-CN/core/forward-derivation-standards.md +493 -0
  53. package/bundled/locales/zh-CN/core/git-worktree.md +101 -0
  54. package/bundled/locales/zh-CN/core/model-selection.md +112 -0
  55. package/bundled/locales/zh-CN/core/performance-standards.md +104 -0
  56. package/bundled/locales/zh-CN/core/pipeline-integration-standards.md +238 -0
  57. package/bundled/locales/zh-CN/core/project-context-memory.md +124 -0
  58. package/bundled/locales/zh-CN/core/requirement-engineering.md +49 -0
  59. package/bundled/locales/zh-CN/core/security-standards.md +100 -0
  60. package/bundled/locales/zh-CN/core/systematic-debugging.md +106 -0
  61. package/bundled/locales/zh-CN/core/test-governance.md +116 -0
  62. package/bundled/locales/zh-CN/core/testing-standards.md +392 -156
  63. package/bundled/locales/zh-CN/core/verification-evidence.md +118 -0
  64. package/bundled/locales/zh-CN/core/virtual-organization-standards.md +104 -0
  65. package/bundled/locales/zh-CN/core/workflow-enforcement.md +132 -0
  66. package/bundled/locales/zh-CN/docs/CHEATSHEET.md +27 -1
  67. package/bundled/locales/zh-CN/docs/CLI-INIT-OPTIONS.md +9 -1
  68. package/bundled/locales/zh-CN/docs/FEATURE-REFERENCE.md +37 -9
  69. package/bundled/locales/zh-CN/docs/USER-MANUAL.md +652 -0
  70. package/bundled/locales/zh-CN/integrations/github-copilot/copilot-instructions.md +1 -1
  71. package/bundled/locales/zh-CN/integrations/openspec/AGENTS.md +29 -4
  72. package/bundled/locales/zh-CN/integrations/spec-kit/AGENTS.md +143 -72
  73. package/bundled/locales/zh-CN/skills/ac-coverage-assistant/SKILL.md +126 -0
  74. package/bundled/locales/zh-CN/skills/api-design-assistant/SKILL.md +100 -0
  75. package/bundled/locales/zh-CN/skills/brainstorm-assistant/SKILL.md +119 -0
  76. package/bundled/locales/zh-CN/skills/ci-cd-assistant/SKILL.md +82 -0
  77. package/bundled/locales/zh-CN/skills/commands/ac-coverage.md +97 -0
  78. package/bundled/locales/zh-CN/skills/commands/api-design.md +94 -0
  79. package/bundled/locales/zh-CN/skills/commands/atdd.md +163 -0
  80. package/bundled/locales/zh-CN/skills/commands/audit.md +77 -0
  81. package/bundled/locales/zh-CN/skills/commands/bdd.md +1 -1
  82. package/bundled/locales/zh-CN/skills/commands/brainstorm.md +87 -0
  83. package/bundled/locales/zh-CN/skills/commands/changelog.md +63 -0
  84. package/bundled/locales/zh-CN/skills/commands/check.md +219 -0
  85. package/bundled/locales/zh-CN/skills/commands/checkin.md +61 -0
  86. package/bundled/locales/zh-CN/skills/commands/ci-cd.md +77 -0
  87. package/bundled/locales/zh-CN/skills/commands/commit.md +81 -0
  88. package/bundled/locales/zh-CN/skills/commands/config.md +207 -0
  89. package/bundled/locales/zh-CN/skills/commands/coverage.md +74 -0
  90. package/bundled/locales/zh-CN/skills/commands/database.md +78 -0
  91. package/bundled/locales/zh-CN/skills/commands/derive-all.md +58 -0
  92. package/bundled/locales/zh-CN/skills/commands/derive-atdd.md +54 -0
  93. package/bundled/locales/zh-CN/skills/commands/derive-bdd.md +53 -0
  94. package/bundled/locales/zh-CN/skills/commands/derive-tdd.md +54 -0
  95. package/bundled/locales/zh-CN/skills/commands/derive.md +78 -0
  96. package/bundled/locales/zh-CN/skills/commands/dev-workflow.md +119 -0
  97. package/bundled/locales/zh-CN/skills/commands/discover.md +86 -0
  98. package/bundled/locales/zh-CN/skills/commands/docgen.md +67 -0
  99. package/bundled/locales/zh-CN/skills/commands/docs.md +65 -0
  100. package/bundled/locales/zh-CN/skills/commands/durable.md +87 -0
  101. package/bundled/locales/zh-CN/skills/commands/guide.md +52 -0
  102. package/bundled/locales/zh-CN/skills/commands/incident.md +92 -0
  103. package/bundled/locales/zh-CN/skills/commands/init.md +272 -0
  104. package/bundled/locales/zh-CN/skills/commands/methodology.md +1 -1
  105. package/bundled/locales/zh-CN/skills/commands/metrics.md +73 -0
  106. package/bundled/locales/zh-CN/skills/commands/migrate.md +92 -0
  107. package/bundled/locales/zh-CN/skills/commands/pr.md +80 -0
  108. package/bundled/locales/zh-CN/skills/commands/refactor.md +1 -1
  109. package/bundled/locales/zh-CN/skills/commands/release.md +62 -0
  110. package/bundled/locales/zh-CN/skills/commands/requirement.md +54 -0
  111. package/bundled/locales/zh-CN/skills/commands/reverse-bdd.md +47 -0
  112. package/bundled/locales/zh-CN/skills/commands/reverse-sdd.md +51 -0
  113. package/bundled/locales/zh-CN/skills/commands/reverse-tdd.md +51 -0
  114. package/bundled/locales/zh-CN/skills/commands/reverse.md +63 -0
  115. package/bundled/locales/zh-CN/skills/commands/review.md +50 -0
  116. package/bundled/locales/zh-CN/skills/commands/scan.md +76 -0
  117. package/bundled/locales/zh-CN/skills/commands/sdd-retro.md +40 -0
  118. package/bundled/locales/zh-CN/skills/commands/sdd.md +379 -0
  119. package/bundled/locales/zh-CN/skills/commands/security.md +75 -0
  120. package/bundled/locales/zh-CN/skills/commands/tdd.md +111 -0
  121. package/bundled/locales/zh-CN/skills/commands/update.md +337 -0
  122. package/bundled/locales/zh-CN/skills/commit-standards/SKILL.md +1 -2
  123. package/bundled/locales/zh-CN/skills/database-assistant/SKILL.md +97 -0
  124. package/bundled/locales/zh-CN/skills/dev-workflow-guide/SKILL.md +145 -0
  125. package/bundled/locales/zh-CN/skills/durable-execution-assistant/SKILL.md +84 -0
  126. package/bundled/locales/zh-CN/skills/incident-response-assistant/SKILL.md +107 -0
  127. package/bundled/locales/zh-CN/skills/metrics-dashboard-assistant/SKILL.md +67 -0
  128. package/bundled/locales/zh-CN/skills/migration-assistant/SKILL.md +77 -0
  129. package/bundled/locales/zh-CN/skills/pr-automation-assistant/SKILL.md +90 -0
  130. package/bundled/locales/zh-CN/skills/security-assistant/SKILL.md +79 -0
  131. package/bundled/locales/zh-CN/skills/security-scan-assistant/SKILL.md +72 -0
  132. package/bundled/locales/zh-CN/skills/spec-driven-dev/SKILL.md +73 -10
  133. package/bundled/locales/zh-CN/skills/spec-driven-dev/guide.md +267 -122
  134. package/bundled/locales/zh-TW/CLAUDE.md +2 -2
  135. package/bundled/locales/zh-TW/README.md +4 -4
  136. package/bundled/locales/zh-TW/SECURITY.md +92 -0
  137. package/bundled/locales/zh-TW/core/acceptance-criteria-traceability.md +301 -0
  138. package/bundled/locales/zh-TW/core/acceptance-test-driven-development.md +47 -0
  139. package/bundled/locales/zh-TW/core/accessibility-standards.md +84 -0
  140. package/bundled/locales/zh-TW/core/agent-dispatch.md +89 -0
  141. package/bundled/locales/zh-TW/core/ai-agreement-standards.md +87 -0
  142. package/bundled/locales/zh-TW/core/ai-command-behavior.md +247 -0
  143. package/bundled/locales/zh-TW/core/api-design-standards.md +946 -0
  144. package/bundled/locales/zh-TW/core/behavior-driven-development.md +63 -0
  145. package/bundled/locales/zh-TW/core/branch-completion.md +76 -0
  146. package/bundled/locales/zh-TW/core/change-batching-standards.md +265 -0
  147. package/bundled/locales/zh-TW/core/checkin-standards.md +39 -5
  148. package/bundled/locales/zh-TW/core/context-aware-loading.md +86 -0
  149. package/bundled/locales/zh-TW/core/database-standards.md +836 -0
  150. package/bundled/locales/zh-TW/core/deployment-standards.md +66 -0
  151. package/bundled/locales/zh-TW/core/error-code-standards.md +230 -4
  152. package/bundled/locales/zh-TW/core/forward-derivation-standards.md +62 -2
  153. package/bundled/locales/zh-TW/core/git-worktree.md +104 -0
  154. package/bundled/locales/zh-TW/core/model-selection.md +83 -0
  155. package/bundled/locales/zh-TW/core/performance-standards.md +84 -0
  156. package/bundled/locales/zh-TW/core/pipeline-integration-standards.md +238 -0
  157. package/bundled/locales/zh-TW/core/project-context-memory.md +79 -0
  158. package/bundled/locales/zh-TW/core/requirement-engineering.md +79 -0
  159. package/bundled/locales/zh-TW/core/security-standards.md +74 -0
  160. package/bundled/locales/zh-TW/core/systematic-debugging.md +95 -0
  161. package/bundled/locales/zh-TW/core/test-governance.md +88 -0
  162. package/bundled/locales/zh-TW/core/testing-standards.md +309 -86
  163. package/bundled/locales/zh-TW/core/verification-evidence.md +94 -0
  164. package/bundled/locales/zh-TW/core/virtual-organization-standards.md +88 -0
  165. package/bundled/locales/zh-TW/core/workflow-enforcement.md +132 -0
  166. package/bundled/locales/zh-TW/docs/CHEATSHEET.md +27 -1
  167. package/bundled/locales/zh-TW/docs/CLI-INIT-OPTIONS.md +9 -1
  168. package/bundled/locales/zh-TW/docs/FEATURE-REFERENCE.md +37 -9
  169. package/bundled/locales/zh-TW/docs/USER-MANUAL.md +652 -0
  170. package/bundled/locales/zh-TW/integrations/github-copilot/copilot-instructions.md +1 -1
  171. package/bundled/locales/zh-TW/integrations/openspec/AGENTS.md +29 -4
  172. package/bundled/locales/zh-TW/integrations/spec-kit/AGENTS.md +142 -71
  173. package/bundled/locales/zh-TW/skills/ac-coverage-assistant/SKILL.md +127 -0
  174. package/bundled/locales/zh-TW/skills/ai-friendly-architecture/SKILL.md +1 -4
  175. package/bundled/locales/zh-TW/skills/ai-instruction-standards/SKILL.md +1 -4
  176. package/bundled/locales/zh-TW/skills/api-design-assistant/SKILL.md +97 -0
  177. package/bundled/locales/zh-TW/skills/atdd-assistant/SKILL.md +1 -4
  178. package/bundled/locales/zh-TW/skills/audit-assistant/SKILL.md +1 -4
  179. package/bundled/locales/zh-TW/skills/bdd-assistant/SKILL.md +1 -4
  180. package/bundled/locales/zh-TW/skills/brainstorm-assistant/SKILL.md +1 -4
  181. package/bundled/locales/zh-TW/skills/changelog-guide/SKILL.md +1 -4
  182. package/bundled/locales/zh-TW/skills/checkin-assistant/SKILL.md +1 -4
  183. package/bundled/locales/zh-TW/skills/ci-cd-assistant/SKILL.md +79 -0
  184. package/bundled/locales/zh-TW/skills/code-review-assistant/SKILL.md +1 -4
  185. package/bundled/locales/zh-TW/skills/commands/ac-coverage.md +95 -0
  186. package/bundled/locales/zh-TW/skills/commands/api-design.md +92 -0
  187. package/bundled/locales/zh-TW/skills/commands/atdd.md +167 -0
  188. package/bundled/locales/zh-TW/skills/commands/audit.md +75 -0
  189. package/bundled/locales/zh-TW/skills/commands/bdd.md +1 -1
  190. package/bundled/locales/zh-TW/skills/commands/brainstorm.md +91 -0
  191. package/bundled/locales/zh-TW/skills/commands/changelog.md +67 -0
  192. package/bundled/locales/zh-TW/skills/commands/check.md +223 -0
  193. package/bundled/locales/zh-TW/skills/commands/checkin.md +65 -0
  194. package/bundled/locales/zh-TW/skills/commands/ci-cd.md +75 -0
  195. package/bundled/locales/zh-TW/skills/commands/commit.md +85 -0
  196. package/bundled/locales/zh-TW/skills/commands/config.md +211 -0
  197. package/bundled/locales/zh-TW/skills/commands/coverage.md +78 -0
  198. package/bundled/locales/zh-TW/skills/commands/database.md +76 -0
  199. package/bundled/locales/zh-TW/skills/commands/derive-all.md +62 -0
  200. package/bundled/locales/zh-TW/skills/commands/derive-atdd.md +58 -0
  201. package/bundled/locales/zh-TW/skills/commands/derive-bdd.md +54 -0
  202. package/bundled/locales/zh-TW/skills/commands/derive-tdd.md +55 -0
  203. package/bundled/locales/zh-TW/skills/commands/derive.md +79 -0
  204. package/bundled/locales/zh-TW/skills/commands/dev-workflow.md +120 -0
  205. package/bundled/locales/zh-TW/skills/commands/discover.md +87 -0
  206. package/bundled/locales/zh-TW/skills/commands/docgen.md +68 -0
  207. package/bundled/locales/zh-TW/skills/commands/docs.md +66 -0
  208. package/bundled/locales/zh-TW/skills/commands/durable.md +85 -0
  209. package/bundled/locales/zh-TW/skills/commands/guide.md +51 -0
  210. package/bundled/locales/zh-TW/skills/commands/incident.md +90 -0
  211. package/bundled/locales/zh-TW/skills/commands/init.md +273 -0
  212. package/bundled/locales/zh-TW/skills/commands/methodology.md +1 -1
  213. package/bundled/locales/zh-TW/skills/commands/metrics.md +71 -0
  214. package/bundled/locales/zh-TW/skills/commands/migrate.md +90 -0
  215. package/bundled/locales/zh-TW/skills/commands/pr.md +78 -0
  216. package/bundled/locales/zh-TW/skills/commands/refactor.md +1 -1
  217. package/bundled/locales/zh-TW/skills/commands/release.md +63 -0
  218. package/bundled/locales/zh-TW/skills/commands/requirement.md +61 -0
  219. package/bundled/locales/zh-TW/skills/commands/reverse-bdd.md +54 -0
  220. package/bundled/locales/zh-TW/skills/commands/reverse-sdd.md +58 -0
  221. package/bundled/locales/zh-TW/skills/commands/reverse-tdd.md +58 -0
  222. package/bundled/locales/zh-TW/skills/commands/reverse.md +70 -0
  223. package/bundled/locales/zh-TW/skills/commands/review.md +57 -0
  224. package/bundled/locales/zh-TW/skills/commands/scan.md +74 -0
  225. package/bundled/locales/zh-TW/skills/commands/sdd-retro.md +47 -0
  226. package/bundled/locales/zh-TW/skills/commands/sdd.md +362 -0
  227. package/bundled/locales/zh-TW/skills/commands/security.md +73 -0
  228. package/bundled/locales/zh-TW/skills/commands/tdd.md +115 -0
  229. package/bundled/locales/zh-TW/skills/commands/update.md +326 -0
  230. package/bundled/locales/zh-TW/skills/commit-standards/SKILL.md +2 -6
  231. package/bundled/locales/zh-TW/skills/database-assistant/SKILL.md +94 -0
  232. package/bundled/locales/zh-TW/skills/dev-workflow-guide/SKILL.md +140 -0
  233. package/bundled/locales/zh-TW/skills/docs-generator/SKILL.md +1 -4
  234. package/bundled/locales/zh-TW/skills/documentation-guide/SKILL.md +1 -4
  235. package/bundled/locales/zh-TW/skills/durable-execution-assistant/SKILL.md +81 -0
  236. package/bundled/locales/zh-TW/skills/error-code-guide/SKILL.md +1 -4
  237. package/bundled/locales/zh-TW/skills/forward-derivation/SKILL.md +1 -4
  238. package/bundled/locales/zh-TW/skills/git-workflow-guide/SKILL.md +1 -4
  239. package/bundled/locales/zh-TW/skills/incident-response-assistant/SKILL.md +104 -0
  240. package/bundled/locales/zh-TW/skills/logging-guide/SKILL.md +1 -4
  241. package/bundled/locales/zh-TW/skills/methodology-system/SKILL.md +1 -4
  242. package/bundled/locales/zh-TW/skills/metrics-dashboard-assistant/SKILL.md +64 -0
  243. package/bundled/locales/zh-TW/skills/migration-assistant/SKILL.md +74 -0
  244. package/bundled/locales/zh-TW/skills/pr-automation-assistant/SKILL.md +87 -0
  245. package/bundled/locales/zh-TW/skills/project-discovery/SKILL.md +1 -4
  246. package/bundled/locales/zh-TW/skills/refactoring-assistant/SKILL.md +1 -4
  247. package/bundled/locales/zh-TW/skills/release-standards/SKILL.md +1 -4
  248. package/bundled/locales/zh-TW/skills/requirement-assistant/SKILL.md +1 -4
  249. package/bundled/locales/zh-TW/skills/reverse-engineer/SKILL.md +1 -4
  250. package/bundled/locales/zh-TW/skills/security-assistant/SKILL.md +76 -0
  251. package/bundled/locales/zh-TW/skills/security-scan-assistant/SKILL.md +69 -0
  252. package/bundled/locales/zh-TW/skills/spec-driven-dev/SKILL.md +74 -14
  253. package/bundled/locales/zh-TW/skills/spec-driven-dev/guide.md +243 -98
  254. package/bundled/locales/zh-TW/skills/tdd-assistant/SKILL.md +1 -4
  255. package/bundled/locales/zh-TW/skills/test-coverage-assistant/SKILL.md +1 -4
  256. package/bundled/locales/zh-TW/skills/testing-guide/SKILL.md +1 -5
  257. package/bundled/skills/README.md +11 -0
  258. package/bundled/skills/ac-coverage-assistant/SKILL.md +127 -0
  259. package/bundled/skills/ai-collaboration-standards/SKILL.md +10 -0
  260. package/bundled/skills/ai-friendly-architecture/SKILL.md +10 -0
  261. package/bundled/skills/ai-instruction-standards/SKILL.md +10 -0
  262. package/bundled/skills/api-design-assistant/SKILL.md +119 -0
  263. package/bundled/skills/atdd-assistant/SKILL.md +7 -0
  264. package/bundled/skills/bdd-assistant/SKILL.md +7 -0
  265. package/bundled/skills/brainstorm-assistant/SKILL.md +7 -0
  266. package/bundled/skills/checkin-assistant/SKILL.md +7 -0
  267. package/bundled/skills/ci-cd-assistant/SKILL.md +97 -0
  268. package/bundled/skills/code-review-assistant/SKILL.md +7 -0
  269. package/bundled/skills/commands/README.md +70 -0
  270. package/bundled/skills/commands/ac-coverage.md +135 -0
  271. package/bundled/skills/commands/api-design.md +86 -0
  272. package/bundled/skills/commands/atdd.md +69 -0
  273. package/bundled/skills/commands/audit.md +69 -0
  274. package/bundled/skills/commands/bdd.md +101 -0
  275. package/bundled/skills/commands/brainstorm.md +45 -0
  276. package/bundled/skills/commands/changelog.md +34 -0
  277. package/bundled/skills/commands/check.md +52 -1
  278. package/bundled/skills/commands/checkin.md +46 -0
  279. package/bundled/skills/commands/ci-cd.md +69 -0
  280. package/bundled/skills/commands/commit.md +79 -0
  281. package/bundled/skills/commands/config.md +48 -0
  282. package/bundled/skills/commands/coverage.md +53 -0
  283. package/bundled/skills/commands/database.md +70 -0
  284. package/bundled/skills/commands/derive-all.md +40 -0
  285. package/bundled/skills/commands/derive-atdd.md +33 -0
  286. package/bundled/skills/commands/derive-bdd.md +39 -0
  287. package/bundled/skills/commands/derive-tdd.md +40 -0
  288. package/bundled/skills/commands/derive.md +47 -0
  289. package/bundled/skills/commands/dev-workflow.md +104 -7
  290. package/bundled/skills/commands/discover.md +39 -0
  291. package/bundled/skills/commands/docgen.md +35 -0
  292. package/bundled/skills/commands/docs.md +40 -0
  293. package/bundled/skills/commands/durable.md +79 -0
  294. package/bundled/skills/commands/incident.md +84 -0
  295. package/bundled/skills/commands/init.md +55 -0
  296. package/bundled/skills/commands/methodology.md +72 -0
  297. package/bundled/skills/commands/metrics.md +65 -0
  298. package/bundled/skills/commands/migrate.md +84 -0
  299. package/bundled/skills/commands/pr.md +72 -0
  300. package/bundled/skills/commands/refactor.md +51 -0
  301. package/bundled/skills/commands/release.md +60 -0
  302. package/bundled/skills/commands/requirement.md +38 -0
  303. package/bundled/skills/commands/reverse-bdd.md +34 -0
  304. package/bundled/skills/commands/reverse-sdd.md +42 -0
  305. package/bundled/skills/commands/reverse-tdd.md +40 -0
  306. package/bundled/skills/commands/reverse.md +41 -0
  307. package/bundled/skills/commands/review.md +39 -0
  308. package/bundled/skills/commands/scan.md +68 -0
  309. package/bundled/skills/commands/sdd-retro.md +48 -0
  310. package/bundled/skills/commands/sdd.md +220 -0
  311. package/bundled/skills/commands/security.md +67 -0
  312. package/bundled/skills/commands/tdd.md +101 -0
  313. package/bundled/skills/commands/update.md +61 -0
  314. package/bundled/skills/commit-standards/SKILL.md +8 -2
  315. package/bundled/skills/database-assistant/SKILL.md +118 -0
  316. package/bundled/skills/dev-workflow-guide/SKILL.md +53 -7
  317. package/bundled/skills/dev-workflow-guide/workflow-phases.md +24 -0
  318. package/bundled/skills/durable-execution-assistant/SKILL.md +116 -0
  319. package/bundled/skills/forward-derivation/SKILL.md +7 -0
  320. package/bundled/skills/incident-response-assistant/SKILL.md +132 -0
  321. package/bundled/skills/methodology-system/SKILL.md +24 -2
  322. package/bundled/skills/metrics-dashboard-assistant/SKILL.md +109 -0
  323. package/bundled/skills/migration-assistant/SKILL.md +119 -0
  324. package/bundled/skills/pr-automation-assistant/SKILL.md +114 -0
  325. package/bundled/skills/project-discovery/SKILL.md +7 -0
  326. package/bundled/skills/refactoring-assistant/SKILL.md +7 -0
  327. package/bundled/skills/release-standards/SKILL.md +7 -0
  328. package/bundled/skills/requirement-assistant/SKILL.md +7 -0
  329. package/bundled/skills/reverse-engineer/SKILL.md +7 -0
  330. package/bundled/skills/security-assistant/SKILL.md +105 -0
  331. package/bundled/skills/security-scan-assistant/SKILL.md +96 -0
  332. package/bundled/skills/spec-driven-dev/SKILL.md +84 -4
  333. package/bundled/skills/spec-driven-dev/guide.md +156 -22
  334. package/bundled/skills/tdd-assistant/SKILL.md +7 -0
  335. package/bundled/skills/test-coverage-assistant/SKILL.md +11 -0
  336. package/bundled/skills/testing-guide/SKILL.md +23 -0
  337. package/package.json +1 -1
  338. package/src/commands/check.js +154 -8
  339. package/src/commands/config.js +231 -104
  340. package/src/commands/init.js +23 -3
  341. package/src/commands/update.js +239 -23
  342. package/src/config/ai-agent-paths.js +16 -0
  343. package/src/config/workflow-definitions.js +184 -0
  344. package/src/core/constants.js +6 -0
  345. package/src/flows/init-flow.js +23 -6
  346. package/src/i18n/messages.js +51 -3
  347. package/src/installers/integration-installer.js +67 -2
  348. package/src/installers/manifest-installer.js +1 -0
  349. package/src/installers/standards-installer.js +3 -2
  350. package/src/prompts/init.js +50 -3
  351. package/src/reconciler/manifest-migrator.js +2 -2
  352. package/src/reconciler/plan-executor.js +11 -0
  353. package/src/utils/integration-generator.js +327 -14
  354. package/src/utils/workflow-gate.js +292 -0
  355. package/standards-registry.json +160 -5
@@ -9,7 +9,8 @@ import { getRepositoryInfo, getAllStandards, getStandardSource } from '../utils/
9
9
  import { computeFileHash, scanForUntrackedFiles, refreshIntegrationBlockHashes } from '../utils/hasher.js';
10
10
  import {
11
11
  writeIntegrationFile,
12
- getToolFilePath
12
+ getToolFilePath,
13
+ writeAgentsMdSummary
13
14
  } from '../utils/integration-generator.js';
14
15
  import {
15
16
  calculateCategoriesFromStandards,
@@ -45,6 +46,7 @@ import {
45
46
  formatPlan,
46
47
  listBackups
47
48
  } from '../reconciler/index.js';
49
+ import { restoreSingleFile } from './check.js';
48
50
 
49
51
  /**
50
52
  * Determine the correct target directory for a standard file.
@@ -55,6 +57,24 @@ function getStandardTargetDir(sourcePath) {
55
57
  return sourcePath.includes('options/') ? '.standards/options' : '.standards';
56
58
  }
57
59
 
60
+ /**
61
+ * Clean up stale commandHashes entries before merging new ones.
62
+ * Removes old entries for agents that are being updated.
63
+ */
64
+ function replaceCommandHashesForUpdatedAgents(commandHashes, newHashes) {
65
+ const updatedPrefixes = new Set(
66
+ Object.keys(newHashes).map(k => k.split('/')[0])
67
+ );
68
+ for (const prefix of updatedPrefixes) {
69
+ for (const key of Object.keys(commandHashes)) {
70
+ if (key.startsWith(prefix + '/')) {
71
+ delete commandHashes[key];
72
+ }
73
+ }
74
+ }
75
+ Object.assign(commandHashes, newHashes);
76
+ }
77
+
58
78
  /**
59
79
  * Compare two semantic versions
60
80
  * @param {string} v1 - First version (e.g., "3.4.0-beta.3")
@@ -340,11 +360,15 @@ export async function updateCommand(options) {
340
360
  // List files to update
341
361
  console.log(chalk.gray(msg.filesToUpdate));
342
362
  for (const std of manifest.standards) {
343
- console.log(chalk.gray(` .standards/${std.split('/').pop()}`));
363
+ const fileName = std.split('/').pop();
364
+ const displayPath = getStandardTargetDir(std) + '/' + fileName;
365
+ console.log(chalk.gray(` ${displayPath}`));
344
366
  }
345
367
  for (const ext of manifest.extensions) {
346
368
  if (typeof ext !== 'string') continue;
347
- console.log(chalk.gray(` .standards/${ext.split('/').pop()}`));
369
+ const fileName = ext.split('/').pop();
370
+ const displayPath = getStandardTargetDir(ext) + '/' + fileName;
371
+ console.log(chalk.gray(` ${displayPath}`));
348
372
  }
349
373
  if (!options.standardsOnly) {
350
374
  for (const int of manifest.integrations) {
@@ -504,6 +528,27 @@ export async function updateCommand(options) {
504
528
  }
505
529
  }
506
530
 
531
+ // Update universal AGENTS.md if enabled and not already generated by tool integration
532
+ if (manifest.generateAgentsMd && !generatedFiles.has('AGENTS.md')) {
533
+ const summaryConfig = {
534
+ installedStandards: installedStandardsList,
535
+ language: manifest.options?.display_language || 'en',
536
+ commitLanguage: manifest.options?.commit_language || 'english',
537
+ standardOptions: manifest.options || {}
538
+ };
539
+ const agentsMdResult = writeAgentsMdSummary(summaryConfig, projectPath);
540
+ if (agentsMdResult.success) {
541
+ results.integrations.push(agentsMdResult.path);
542
+ if (agentsMdResult.blockHashInfo) {
543
+ if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
544
+ manifest.integrationBlockHashes[agentsMdResult.path] = {
545
+ ...agentsMdResult.blockHashInfo,
546
+ installedAt: new Date().toISOString()
547
+ };
548
+ }
549
+ }
550
+ }
551
+
507
552
  intSpinner.succeed(msg.syncedIntegrations.replace('{count}', results.integrations.length));
508
553
  }
509
554
 
@@ -516,9 +561,9 @@ export async function updateCommand(options) {
516
561
  // Update hashes for standards
517
562
  for (const std of manifest.standards) {
518
563
  const fileName = basename(std);
519
- const relativePath = std.includes('options/')
564
+ const relativePath = (std.includes('options/')
520
565
  ? join('.standards', 'options', fileName)
521
- : join('.standards', fileName);
566
+ : join('.standards', fileName)).replace(/\\/g, '/');
522
567
  const fullPath = join(projectPath, relativePath);
523
568
  const hashInfo = computeFileHash(fullPath);
524
569
  if (hashInfo) {
@@ -530,7 +575,7 @@ export async function updateCommand(options) {
530
575
  for (const ext of manifest.extensions) {
531
576
  if (typeof ext !== 'string') continue;
532
577
  const fileName = basename(ext);
533
- const relativePath = join('.standards', fileName);
578
+ const relativePath = join('.standards', fileName).replace(/\\/g, '/');
534
579
  const fullPath = join(projectPath, relativePath);
535
580
  const hashInfo = computeFileHash(fullPath);
536
581
  if (hashInfo) {
@@ -562,6 +607,27 @@ export async function updateCommand(options) {
562
607
  }
563
608
  }
564
609
 
610
+ // Migrate test_levels: upgrade old 2-level default to full 4-level default
611
+ // Only for projects installed before v5.0.0 stable (pre-5.0 used 2-level default)
612
+ // 5.0.0-alpha/beta/rc are also < 5.0.0 in semver, so they get migrated too
613
+ const installedVersion = currentVersion || '0.0.0';
614
+ const isPreV5 = compareVersions(installedVersion, '5.0.0') < 0;
615
+ if (isPreV5) {
616
+ const ALL_TEST_LEVELS = ['unit-testing', 'integration-testing', 'system-testing', 'e2e-testing'];
617
+ const currentLevels = manifest.options?.test_levels || [];
618
+ const isOldDefault = currentLevels.length === 2 &&
619
+ currentLevels.includes('unit-testing') &&
620
+ currentLevels.includes('integration-testing') &&
621
+ !currentLevels.includes('system-testing') &&
622
+ !currentLevels.includes('e2e-testing');
623
+ if (isOldDefault) {
624
+ manifest.options = manifest.options || {};
625
+ manifest.options.test_levels = ALL_TEST_LEVELS;
626
+ console.log();
627
+ console.log(chalk.cyan(msg.testLevelsMigrated || 'ℹ Test levels updated: 2 → 4 (added system-testing, e2e-testing)'));
628
+ }
629
+ }
630
+
565
631
  // Update manifest
566
632
  manifest.version = '3.3.0';
567
633
  manifest.upstream.version = latestVersion;
@@ -569,6 +635,74 @@ export async function updateCommand(options) {
569
635
  refreshIntegrationBlockHashes(manifest, projectPath);
570
636
  writeManifest(manifest, projectPath);
571
637
 
638
+ // Post-update integrity check: detect and restore missing files
639
+ const allTrackedFiles = [];
640
+ for (const std of manifest.standards) {
641
+ const fileName = basename(std);
642
+ const relativePath = std.includes('options/')
643
+ ? join('.standards', 'options', fileName)
644
+ : join('.standards', fileName);
645
+ allTrackedFiles.push(relativePath);
646
+ }
647
+ for (const ext of manifest.extensions) {
648
+ if (typeof ext !== 'string') continue;
649
+ const fileName = basename(ext);
650
+ allTrackedFiles.push(join('.standards', fileName));
651
+ }
652
+ for (const int of (manifest.integrations || [])) {
653
+ allTrackedFiles.push(int);
654
+ }
655
+
656
+ const missingFiles = allTrackedFiles.filter(f => !existsSync(join(projectPath, f)));
657
+
658
+ if (missingFiles.length > 0) {
659
+ console.log();
660
+ console.log(chalk.yellow((msg.missingAfterUpdate || '⚠ {count} file(s) still missing after update').replace('{count}', missingFiles.length)));
661
+
662
+ let shouldRestore = false;
663
+ if (options.yes) {
664
+ shouldRestore = true;
665
+ } else {
666
+ const { restoreMissing } = await inquirer.prompt([
667
+ {
668
+ type: 'confirm',
669
+ name: 'restoreMissing',
670
+ message: (msg.restoreMissingPrompt || 'Restore {count} missing file(s)?').replace('{count}', missingFiles.length),
671
+ default: true
672
+ }
673
+ ]);
674
+ shouldRestore = restoreMissing;
675
+ }
676
+
677
+ if (shouldRestore) {
678
+ const restoreSpinner = ora((msg.restoringMissing || 'Restoring missing files...')).start();
679
+ const checkMsg = t().commands.check;
680
+ let restoredCount = 0;
681
+
682
+ for (const relativePath of missingFiles) {
683
+ const success = await restoreSingleFile(projectPath, manifest, relativePath, checkMsg);
684
+ if (success) restoredCount++;
685
+ }
686
+
687
+ restoreSpinner.succeed(
688
+ (msg.restoredCount || 'Restored {restored}/{total} file(s)')
689
+ .replace('{restored}', restoredCount)
690
+ .replace('{total}', missingFiles.length)
691
+ );
692
+
693
+ // Re-write manifest with updated hashes from restored files
694
+ writeManifest(manifest, projectPath);
695
+
696
+ // Re-generate integration files if files were restored and AI tools are configured
697
+ // This ensures CLAUDE.md / AGENTS.md standards index reflects restored files
698
+ if (restoredCount > 0 && manifest.aiTools?.length > 0) {
699
+ regenerateIntegrations(projectPath, manifest);
700
+ refreshIntegrationBlockHashes(manifest, projectPath);
701
+ writeManifest(manifest, projectPath);
702
+ }
703
+ }
704
+ }
705
+
572
706
  // Summary
573
707
  console.log();
574
708
  console.log(chalk.green(msg.updateSuccess));
@@ -615,6 +749,17 @@ export async function updateCommand(options) {
615
749
  ...installSkills
616
750
  ];
617
751
 
752
+ // Derive location from installations if not set
753
+ if (!manifest.skills.location) {
754
+ const levels = manifest.skills.installations.map(s => s.level).filter(Boolean);
755
+ const uniqueLevels = [...new Set(levels)];
756
+ if (uniqueLevels.length === 1) {
757
+ manifest.skills.location = uniqueLevels[0];
758
+ } else if (uniqueLevels.length > 1) {
759
+ manifest.skills.location = 'multiple';
760
+ }
761
+ }
762
+
618
763
  // Update skill hashes for integrity tracking
619
764
  if (skillResult.allFileHashes) {
620
765
  if (!manifest.skillHashes) manifest.skillHashes = {};
@@ -640,6 +785,17 @@ export async function updateCommand(options) {
640
785
  if (!manifest.skills) manifest.skills = {};
641
786
  manifest.skills.version = repoInfo.skills.version;
642
787
 
788
+ // Derive location from installations if not set
789
+ if (!manifest.skills.location && manifest.skills.installations?.length > 0) {
790
+ const levels = manifest.skills.installations.map(s => s.level).filter(Boolean);
791
+ const uniqueLevels = [...new Set(levels)];
792
+ if (uniqueLevels.length === 1) {
793
+ manifest.skills.location = uniqueLevels[0];
794
+ } else if (uniqueLevels.length > 1) {
795
+ manifest.skills.location = 'multiple';
796
+ }
797
+ }
798
+
643
799
  // Update skill hashes for integrity tracking
644
800
  if (updateResult.allFileHashes) {
645
801
  if (!manifest.skillHashes) manifest.skillHashes = {};
@@ -673,7 +829,7 @@ export async function updateCommand(options) {
673
829
  // Update command hashes for integrity tracking
674
830
  if (cmdResult.allFileHashes) {
675
831
  if (!manifest.commandHashes) manifest.commandHashes = {};
676
- Object.assign(manifest.commandHashes, cmdResult.allFileHashes);
832
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, cmdResult.allFileHashes);
677
833
  }
678
834
 
679
835
  if (cmdResult.totalErrors === 0) {
@@ -698,7 +854,7 @@ export async function updateCommand(options) {
698
854
  // Update command hashes for integrity tracking
699
855
  if (updateCmdResult.allFileHashes) {
700
856
  if (!manifest.commandHashes) manifest.commandHashes = {};
701
- Object.assign(manifest.commandHashes, updateCmdResult.allFileHashes);
857
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, updateCmdResult.allFileHashes);
702
858
  }
703
859
 
704
860
  if (updateCmdResult.totalErrors === 0) {
@@ -744,6 +900,15 @@ export async function updateCommand(options) {
744
900
  installCommands.length > 0 || updateCommands.length > 0 ||
745
901
  declinedSkills.length > 0 || declinedCommands.length > 0;
746
902
  if (hasChanges) {
903
+ // Re-run integration update if new skills were installed
904
+ // This ensures CLAUDE.md / AGENTS.md standards index is up-to-date
905
+ if (installSkills.length > 0 || updateSkills.length > 0) {
906
+ const regenResult = regenerateIntegrations(projectPath, manifest);
907
+ if (regenResult.updated.length > 0) {
908
+ console.log(chalk.green(` ✓ ${msg.syncedIntegrations.replace('{count}', regenResult.updated.length)}`));
909
+ }
910
+ }
911
+
747
912
  refreshIntegrationBlockHashes(manifest, projectPath);
748
913
  writeManifest(manifest, projectPath);
749
914
  }
@@ -804,8 +969,34 @@ export async function updateCommand(options) {
804
969
  console.log(chalk.gray(` ${msg.skillsLatest}: ${skillsVersion}`));
805
970
  console.log();
806
971
 
807
- // Check installation location to provide appropriate update instructions
808
- const location = manifest.skills.location || 'unknown';
972
+ // Determine installation location using multiple sources
973
+ let location = manifest.skills.location;
974
+
975
+ // Derive from installations array if location not set
976
+ if (!location && manifest.skills.installations?.length > 0) {
977
+ const hasMarketplace = manifest.skills.installations.some(
978
+ inst => inst.level === 'marketplace' || inst.agent === 'marketplace'
979
+ );
980
+ if (hasMarketplace) {
981
+ location = 'marketplace';
982
+ } else {
983
+ const levels = manifest.skills.installations.map(inst => inst.level).filter(Boolean);
984
+ const uniqueLevels = [...new Set(levels)];
985
+ location = uniqueLevels.length === 1 ? uniqueLevels[0] : (uniqueLevels.length > 1 ? 'project' : null);
986
+ }
987
+ }
988
+
989
+ // Fall back to file-system detection if still unknown
990
+ if (!location) {
991
+ for (const tool of (manifest.aiTools || [])) {
992
+ const projInfo = getInstalledSkillsInfoForAgent(tool, 'project', projectPath);
993
+ const usrInfo = getInstalledSkillsInfoForAgent(tool, 'user');
994
+ if (projInfo?.installed) { location = 'project'; break; }
995
+ if (usrInfo?.installed) { location = 'user'; break; }
996
+ }
997
+ }
998
+
999
+ location = location || 'unknown';
809
1000
 
810
1001
  if (location === 'marketplace') {
811
1002
  console.log(chalk.gray(` ${msg.updateViaMarketplace}`));
@@ -900,13 +1091,15 @@ export function regenerateIntegrations(projectPath, manifest) {
900
1091
  if (!manifest.fileHashes) {
901
1092
  manifest.fileHashes = {};
902
1093
  }
903
- manifest.fileHashes[result.path] = { ...hashInfo, installedAt: now };
1094
+ const normalizedPath = result.path.replace(/\\/g, '/');
1095
+ manifest.fileHashes[normalizedPath] = { ...hashInfo, installedAt: now };
904
1096
  }
905
1097
 
906
1098
  // Track integration block hash for UDS content integrity
907
1099
  if (result.blockHashInfo) {
908
1100
  if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
909
- manifest.integrationBlockHashes[result.path] = {
1101
+ const normalizedBlockPath = result.path.replace(/\\/g, '/');
1102
+ manifest.integrationBlockHashes[normalizedBlockPath] = {
910
1103
  ...result.blockHashInfo,
911
1104
  installedAt: now
912
1105
  };
@@ -916,6 +1109,27 @@ export function regenerateIntegrations(projectPath, manifest) {
916
1109
  }
917
1110
  }
918
1111
 
1112
+ // Regenerate universal AGENTS.md if enabled and not already covered
1113
+ if (manifest.generateAgentsMd && !generatedFiles.has('AGENTS.md')) {
1114
+ const summaryConfig = {
1115
+ installedStandards: installedStandardsList,
1116
+ language: manifest.options?.display_language || 'en',
1117
+ commitLanguage: manifest.options?.commit_language || 'english',
1118
+ standardOptions: manifest.options || {}
1119
+ };
1120
+ const agentsMdResult = writeAgentsMdSummary(summaryConfig, projectPath);
1121
+ if (agentsMdResult.success) {
1122
+ results.updated.push(agentsMdResult.path);
1123
+ if (agentsMdResult.blockHashInfo) {
1124
+ if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
1125
+ manifest.integrationBlockHashes[agentsMdResult.path] = {
1126
+ ...agentsMdResult.blockHashInfo,
1127
+ installedAt: now
1128
+ };
1129
+ }
1130
+ }
1131
+ }
1132
+
919
1133
  return {
920
1134
  success: results.errors.length === 0,
921
1135
  updated: results.updated,
@@ -1061,13 +1275,15 @@ async function syncIntegrationReferences(projectPath, manifest) {
1061
1275
  if (!manifest.fileHashes) {
1062
1276
  manifest.fileHashes = {};
1063
1277
  }
1064
- manifest.fileHashes[integrationPath] = { ...hashInfo, installedAt: now };
1278
+ const normalizedIntPath = integrationPath.replace(/\\/g, '/');
1279
+ manifest.fileHashes[normalizedIntPath] = { ...hashInfo, installedAt: now };
1065
1280
  }
1066
1281
 
1067
1282
  // Track integration block hash for UDS content integrity
1068
1283
  if (result.blockHashInfo) {
1069
1284
  if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
1070
- manifest.integrationBlockHashes[integrationPath] = {
1285
+ const normalizedIntBlockPath = integrationPath.replace(/\\/g, '/');
1286
+ manifest.integrationBlockHashes[normalizedIntBlockPath] = {
1071
1287
  ...result.blockHashInfo,
1072
1288
  installedAt: now
1073
1289
  };
@@ -1310,7 +1526,7 @@ async function updateCommandsOnly(projectPath, manifest) {
1310
1526
  // Update command hashes for integrity tracking
1311
1527
  if (result.allFileHashes) {
1312
1528
  if (!manifest.commandHashes) manifest.commandHashes = {};
1313
- Object.assign(manifest.commandHashes, result.allFileHashes);
1529
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, result.allFileHashes);
1314
1530
  }
1315
1531
 
1316
1532
  writeManifest(manifest, projectPath);
@@ -1419,16 +1635,16 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion, debug = fa
1419
1635
  const installedInfo = userInfo || projectInfo;
1420
1636
  const installedVersion = installedInfo?.version;
1421
1637
 
1422
- // Skip marketplace (auto-updates) and unknown versions
1423
- if (!usingMarketplace && installedVersion && installedVersion !== latestSkillsVersion) {
1638
+ // Skip marketplace (auto-updates); treat unknown versions as outdated
1639
+ if (!usingMarketplace && (!installedVersion || installedVersion !== latestSkillsVersion)) {
1424
1640
  if (debug) {
1425
- console.log(chalk.yellow(` ✓ Added to outdatedSkills (${installedVersion} → ${latestSkillsVersion})`));
1641
+ console.log(chalk.yellow(` ✓ Added to outdatedSkills (${installedVersion || 'unknown'} → ${latestSkillsVersion})`));
1426
1642
  }
1427
1643
  outdatedSkills.push({
1428
1644
  agent: tool,
1429
1645
  displayName: getAgentDisplayName(tool),
1430
1646
  paths: config.skills,
1431
- currentVersion: installedVersion,
1647
+ currentVersion: installedVersion || 'unknown',
1432
1648
  latestVersion: latestSkillsVersion,
1433
1649
  level: userInfo?.installed ? 'user' : 'project',
1434
1650
  path: installedInfo?.path
@@ -1483,16 +1699,16 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion, debug = fa
1483
1699
  console.log(chalk.gray(` latestSkillsVersion: ${latestSkillsVersion}`));
1484
1700
  }
1485
1701
 
1486
- // Check if version differs from latest
1487
- if (installedCmdVersion && installedCmdVersion !== latestSkillsVersion) {
1702
+ // Check if version differs from latest; treat unknown versions as outdated
1703
+ if (!installedCmdVersion || installedCmdVersion !== latestSkillsVersion) {
1488
1704
  if (debug) {
1489
- console.log(chalk.yellow(` ✓ Added to outdatedCommands (${installedCmdVersion} → ${latestSkillsVersion})`));
1705
+ console.log(chalk.yellow(` ✓ Added to outdatedCommands (${installedCmdVersion || 'unknown'} → ${latestSkillsVersion})`));
1490
1706
  }
1491
1707
  outdatedCommands.push({
1492
1708
  agent: tool,
1493
1709
  displayName: getAgentDisplayName(tool),
1494
1710
  paths: config.commands,
1495
- currentVersion: installedCmdVersion,
1711
+ currentVersion: installedCmdVersion || 'unknown',
1496
1712
  latestVersion: latestSkillsVersion,
1497
1713
  level: userCmdInfo?.installed ? 'user' : 'project',
1498
1714
  path: installedCmdInfo?.path
@@ -464,6 +464,7 @@ export const AVAILABLE_COMMANDS = [
464
464
  { name: 'bdd', description: 'Guide BDD workflow (Gherkin, Given-When-Then)' },
465
465
  { name: 'atdd', description: 'Guide ATDD workflow (acceptance criteria)' },
466
466
  { name: 'coverage', description: 'Analyze test coverage (8 dimensions)' },
467
+ { name: 'ac-coverage', description: 'Generate AC traceability matrix and coverage report' },
467
468
 
468
469
  // ═══════════════════════════════════════════════════════════════════════════
469
470
  // Specification and Requirements (Action Skills)
@@ -505,6 +506,21 @@ export const AVAILABLE_COMMANDS = [
505
506
  { name: 'methodology', description: 'Development methodology selection' },
506
507
  { name: 'dev-workflow', description: 'Guide for mapping development phases to UDS commands' },
507
508
 
509
+ // ═══════════════════════════════════════════════════════════════════════════
510
+ // Operations and Infrastructure (Action Skills)
511
+ // ═══════════════════════════════════════════════════════════════════════════
512
+ { name: 'security', description: 'Security review and vulnerability assessment' },
513
+ { name: 'scan', description: 'Automated security scanning and dependency audit' },
514
+ { name: 'api-design', description: 'API design following REST, GraphQL, gRPC best practices' },
515
+ { name: 'database', description: 'Database design, migration planning, and query optimization' },
516
+ { name: 'ci-cd', description: 'CI/CD pipeline design, configuration, and optimization' },
517
+ { name: 'incident', description: 'Incident response, root cause analysis, and post-mortem' },
518
+ { name: 'pr', description: 'Pull request creation, review automation, and merge strategy' },
519
+ { name: 'metrics', description: 'Development metrics, code quality indicators, and project health' },
520
+ { name: 'durable', description: 'Workflow fault recovery with checkpoints, retries, and rollback' },
521
+ { name: 'migrate', description: 'Code migration, framework upgrades, and tech modernization' },
522
+ { name: 'audit', description: 'Audit standards compliance and generate reports' },
523
+
508
524
  // ═══════════════════════════════════════════════════════════════════════════
509
525
  // CLI Management (Commands-only, UDS CLI specific)
510
526
  // ═══════════════════════════════════════════════════════════════════════════
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Workflow Phase Definitions
3
+ *
4
+ * Defines the phase graphs for each workflow type (SDD, TDD, BDD).
5
+ * Used by WorkflowGate to validate phase transitions.
6
+ *
7
+ * @version 1.0.0
8
+ */
9
+
10
+ /**
11
+ * SDD workflow phase graph
12
+ * Each phase lists its allowed predecessors (phases that must have been completed)
13
+ */
14
+ export const SDD_PHASES = {
15
+ discuss: {
16
+ id: 'discuss',
17
+ label: 'Discuss',
18
+ predecessors: [],
19
+ description: 'Capture gray areas, lock scope'
20
+ },
21
+ create: {
22
+ id: 'create',
23
+ label: 'Create',
24
+ predecessors: [], // discuss is recommended but not required
25
+ description: 'Write spec document'
26
+ },
27
+ review: {
28
+ id: 'review',
29
+ label: 'Review',
30
+ predecessors: ['create'],
31
+ description: 'Validate spec with stakeholders'
32
+ },
33
+ approve: {
34
+ id: 'approve',
35
+ label: 'Approve',
36
+ predecessors: ['review'],
37
+ description: 'Sign off on spec'
38
+ },
39
+ implement: {
40
+ id: 'implement',
41
+ label: 'Implement',
42
+ predecessors: ['approve'],
43
+ description: 'Code following approved spec'
44
+ },
45
+ verify: {
46
+ id: 'verify',
47
+ label: 'Verify',
48
+ predecessors: ['implement'],
49
+ description: 'Confirm implementation matches spec'
50
+ }
51
+ };
52
+
53
+ /**
54
+ * TDD workflow phase graph (cyclic)
55
+ */
56
+ export const TDD_PHASES = {
57
+ red: {
58
+ id: 'red',
59
+ label: 'RED',
60
+ predecessors: [], // Entry point, or after refactor
61
+ description: 'Write failing test'
62
+ },
63
+ green: {
64
+ id: 'green',
65
+ label: 'GREEN',
66
+ predecessors: ['red'],
67
+ description: 'Write minimal code to pass'
68
+ },
69
+ refactor: {
70
+ id: 'refactor',
71
+ label: 'REFACTOR',
72
+ predecessors: ['green'],
73
+ description: 'Improve code, keep tests passing'
74
+ }
75
+ };
76
+
77
+ /**
78
+ * BDD workflow phase graph
79
+ */
80
+ export const BDD_PHASES = {
81
+ discovery: {
82
+ id: 'discovery',
83
+ label: 'Discovery',
84
+ predecessors: [],
85
+ description: 'Explore behavior with stakeholders'
86
+ },
87
+ formulation: {
88
+ id: 'formulation',
89
+ label: 'Formulation',
90
+ predecessors: ['discovery'],
91
+ description: 'Write Gherkin scenarios'
92
+ },
93
+ automation: {
94
+ id: 'automation',
95
+ label: 'Automation',
96
+ predecessors: ['formulation'],
97
+ description: 'Implement step definitions'
98
+ },
99
+ living_docs: {
100
+ id: 'living_docs',
101
+ label: 'Living Docs',
102
+ predecessors: ['automation'],
103
+ description: 'Maintain as documentation'
104
+ }
105
+ };
106
+
107
+ /**
108
+ * Phase prerequisite checks — machine-executable validation functions
109
+ * Each check returns { passed, message, guidance }
110
+ */
111
+ export const PHASE_CHECKS = {
112
+ sdd: {
113
+ implement: [
114
+ {
115
+ id: 'spec_exists',
116
+ description: 'At least one spec file exists',
117
+ check: 'ls docs/specs/SPEC-*.md 2>/dev/null | head -1',
118
+ expectedCondition: 'non_empty',
119
+ guidance: 'No spec found. Run `/sdd create` to create one first.'
120
+ },
121
+ {
122
+ id: 'spec_approved',
123
+ description: 'Spec status is Approved',
124
+ check: 'grep -l "^status: Approved" docs/specs/SPEC-*.md 2>/dev/null | head -1',
125
+ expectedCondition: 'non_empty',
126
+ guidance: 'No approved spec found. Run `/sdd approve SPEC-XXX.md` first.'
127
+ }
128
+ ],
129
+ verify: [
130
+ {
131
+ id: 'implementation_exists',
132
+ description: 'Implementation commits exist for the spec',
133
+ check: 'grep -l "^status: Implemented\\|^status: Approved" docs/specs/SPEC-*.md 2>/dev/null | head -1',
134
+ expectedCondition: 'non_empty',
135
+ guidance: 'No implementation found. Run `/sdd implement SPEC-XXX.md` first.'
136
+ }
137
+ ]
138
+ },
139
+ tdd: {
140
+ green: [
141
+ {
142
+ id: 'failing_test_exists',
143
+ description: 'At least one failing test exists',
144
+ guidance: 'No failing test found. Write a test first (RED phase) before writing implementation code.'
145
+ }
146
+ ],
147
+ refactor: [
148
+ {
149
+ id: 'all_tests_passing',
150
+ description: 'All tests must be passing',
151
+ guidance: 'Some tests are still failing. Fix them first (GREEN phase) before refactoring.'
152
+ }
153
+ ]
154
+ },
155
+ bdd: {
156
+ formulation: [
157
+ {
158
+ id: 'examples_collected',
159
+ description: 'Concrete examples from discovery phase exist',
160
+ guidance: 'No examples collected yet. Complete the DISCOVERY phase first to gather concrete examples.'
161
+ }
162
+ ],
163
+ automation: [
164
+ {
165
+ id: 'feature_file_exists',
166
+ description: 'At least one .feature file exists',
167
+ check: 'ls tests/features/*.feature 2>/dev/null | head -1',
168
+ expectedCondition: 'non_empty',
169
+ guidance: 'No .feature file found. Write Gherkin scenarios first (FORMULATION phase).'
170
+ }
171
+ ]
172
+ }
173
+ };
174
+
175
+ /**
176
+ * All workflow definitions indexed by name
177
+ */
178
+ export const WORKFLOW_DEFINITIONS = {
179
+ sdd: { phases: SDD_PHASES, checks: PHASE_CHECKS.sdd },
180
+ tdd: { phases: TDD_PHASES, checks: PHASE_CHECKS.tdd },
181
+ bdd: { phases: BDD_PHASES, checks: PHASE_CHECKS.bdd }
182
+ };
183
+
184
+ export default WORKFLOW_DEFINITIONS;
@@ -330,6 +330,12 @@ export const DEFAULTS = {
330
330
  TEST_LEVELS: [TEST_LEVELS.UNIT_TESTING, TEST_LEVELS.INTEGRATION_TESTING]
331
331
  };
332
332
 
333
+ /**
334
+ * AGENTS.md universal output flag
335
+ * When true, AGENTS.md is generated as a universal summary regardless of tool selection
336
+ */
337
+ export const AGENTS_MD_UNIVERSAL = 'agents-md-universal';
338
+
333
339
  /**
334
340
  * Feature flags (for experimental features)
335
341
  */