universal-dev-standards 5.0.0-rc.8 → 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 +250 -25
  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,34 @@ import {
45
46
  formatPlan,
46
47
  listBackups
47
48
  } from '../reconciler/index.js';
49
+ import { restoreSingleFile } from './check.js';
50
+
51
+ /**
52
+ * Determine the correct target directory for a standard file.
53
+ * Options standards (e.g., options/unit-testing.ai.yaml) go to .standards/options/,
54
+ * all others go to .standards/.
55
+ */
56
+ function getStandardTargetDir(sourcePath) {
57
+ return sourcePath.includes('options/') ? '.standards/options' : '.standards';
58
+ }
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
+ }
48
77
 
49
78
  /**
50
79
  * Compare two semantic versions
@@ -331,11 +360,15 @@ export async function updateCommand(options) {
331
360
  // List files to update
332
361
  console.log(chalk.gray(msg.filesToUpdate));
333
362
  for (const std of manifest.standards) {
334
- 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}`));
335
366
  }
336
367
  for (const ext of manifest.extensions) {
337
368
  if (typeof ext !== 'string') continue;
338
- 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}`));
339
372
  }
340
373
  if (!options.standardsOnly) {
341
374
  for (const int of manifest.integrations) {
@@ -382,7 +415,7 @@ export async function updateCommand(options) {
382
415
 
383
416
  // Update standards
384
417
  for (const std of manifest.standards) {
385
- const result = await copyStandard(std, '.standards', projectPath);
418
+ const result = await copyStandard(std, getStandardTargetDir(std), projectPath);
386
419
  if (result.success) {
387
420
  results.updated.push(std);
388
421
  } else {
@@ -428,7 +461,7 @@ export async function updateCommand(options) {
428
461
  let newCount = 0;
429
462
 
430
463
  for (const ns of newStandards) {
431
- const result = await copyStandard(ns.source, '.standards', projectPath);
464
+ const result = await copyStandard(ns.source, getStandardTargetDir(ns.source), projectPath);
432
465
  if (result.success) {
433
466
  manifest.standards.push(ns.source);
434
467
  results.updated.push(ns.source);
@@ -495,6 +528,27 @@ export async function updateCommand(options) {
495
528
  }
496
529
  }
497
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
+
498
552
  intSpinner.succeed(msg.syncedIntegrations.replace('{count}', results.integrations.length));
499
553
  }
500
554
 
@@ -507,9 +561,9 @@ export async function updateCommand(options) {
507
561
  // Update hashes for standards
508
562
  for (const std of manifest.standards) {
509
563
  const fileName = basename(std);
510
- const relativePath = std.includes('options/')
564
+ const relativePath = (std.includes('options/')
511
565
  ? join('.standards', 'options', fileName)
512
- : join('.standards', fileName);
566
+ : join('.standards', fileName)).replace(/\\/g, '/');
513
567
  const fullPath = join(projectPath, relativePath);
514
568
  const hashInfo = computeFileHash(fullPath);
515
569
  if (hashInfo) {
@@ -521,7 +575,7 @@ export async function updateCommand(options) {
521
575
  for (const ext of manifest.extensions) {
522
576
  if (typeof ext !== 'string') continue;
523
577
  const fileName = basename(ext);
524
- const relativePath = join('.standards', fileName);
578
+ const relativePath = join('.standards', fileName).replace(/\\/g, '/');
525
579
  const fullPath = join(projectPath, relativePath);
526
580
  const hashInfo = computeFileHash(fullPath);
527
581
  if (hashInfo) {
@@ -553,6 +607,27 @@ export async function updateCommand(options) {
553
607
  }
554
608
  }
555
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
+
556
631
  // Update manifest
557
632
  manifest.version = '3.3.0';
558
633
  manifest.upstream.version = latestVersion;
@@ -560,6 +635,74 @@ export async function updateCommand(options) {
560
635
  refreshIntegrationBlockHashes(manifest, projectPath);
561
636
  writeManifest(manifest, projectPath);
562
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
+
563
706
  // Summary
564
707
  console.log();
565
708
  console.log(chalk.green(msg.updateSuccess));
@@ -606,6 +749,17 @@ export async function updateCommand(options) {
606
749
  ...installSkills
607
750
  ];
608
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
+
609
763
  // Update skill hashes for integrity tracking
610
764
  if (skillResult.allFileHashes) {
611
765
  if (!manifest.skillHashes) manifest.skillHashes = {};
@@ -631,6 +785,17 @@ export async function updateCommand(options) {
631
785
  if (!manifest.skills) manifest.skills = {};
632
786
  manifest.skills.version = repoInfo.skills.version;
633
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
+
634
799
  // Update skill hashes for integrity tracking
635
800
  if (updateResult.allFileHashes) {
636
801
  if (!manifest.skillHashes) manifest.skillHashes = {};
@@ -664,7 +829,7 @@ export async function updateCommand(options) {
664
829
  // Update command hashes for integrity tracking
665
830
  if (cmdResult.allFileHashes) {
666
831
  if (!manifest.commandHashes) manifest.commandHashes = {};
667
- Object.assign(manifest.commandHashes, cmdResult.allFileHashes);
832
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, cmdResult.allFileHashes);
668
833
  }
669
834
 
670
835
  if (cmdResult.totalErrors === 0) {
@@ -689,7 +854,7 @@ export async function updateCommand(options) {
689
854
  // Update command hashes for integrity tracking
690
855
  if (updateCmdResult.allFileHashes) {
691
856
  if (!manifest.commandHashes) manifest.commandHashes = {};
692
- Object.assign(manifest.commandHashes, updateCmdResult.allFileHashes);
857
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, updateCmdResult.allFileHashes);
693
858
  }
694
859
 
695
860
  if (updateCmdResult.totalErrors === 0) {
@@ -735,6 +900,15 @@ export async function updateCommand(options) {
735
900
  installCommands.length > 0 || updateCommands.length > 0 ||
736
901
  declinedSkills.length > 0 || declinedCommands.length > 0;
737
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
+
738
912
  refreshIntegrationBlockHashes(manifest, projectPath);
739
913
  writeManifest(manifest, projectPath);
740
914
  }
@@ -795,8 +969,34 @@ export async function updateCommand(options) {
795
969
  console.log(chalk.gray(` ${msg.skillsLatest}: ${skillsVersion}`));
796
970
  console.log();
797
971
 
798
- // Check installation location to provide appropriate update instructions
799
- 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';
800
1000
 
801
1001
  if (location === 'marketplace') {
802
1002
  console.log(chalk.gray(` ${msg.updateViaMarketplace}`));
@@ -891,13 +1091,15 @@ export function regenerateIntegrations(projectPath, manifest) {
891
1091
  if (!manifest.fileHashes) {
892
1092
  manifest.fileHashes = {};
893
1093
  }
894
- manifest.fileHashes[result.path] = { ...hashInfo, installedAt: now };
1094
+ const normalizedPath = result.path.replace(/\\/g, '/');
1095
+ manifest.fileHashes[normalizedPath] = { ...hashInfo, installedAt: now };
895
1096
  }
896
1097
 
897
1098
  // Track integration block hash for UDS content integrity
898
1099
  if (result.blockHashInfo) {
899
1100
  if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
900
- manifest.integrationBlockHashes[result.path] = {
1101
+ const normalizedBlockPath = result.path.replace(/\\/g, '/');
1102
+ manifest.integrationBlockHashes[normalizedBlockPath] = {
901
1103
  ...result.blockHashInfo,
902
1104
  installedAt: now
903
1105
  };
@@ -907,6 +1109,27 @@ export function regenerateIntegrations(projectPath, manifest) {
907
1109
  }
908
1110
  }
909
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
+
910
1133
  return {
911
1134
  success: results.errors.length === 0,
912
1135
  updated: results.updated,
@@ -1052,13 +1275,15 @@ async function syncIntegrationReferences(projectPath, manifest) {
1052
1275
  if (!manifest.fileHashes) {
1053
1276
  manifest.fileHashes = {};
1054
1277
  }
1055
- manifest.fileHashes[integrationPath] = { ...hashInfo, installedAt: now };
1278
+ const normalizedIntPath = integrationPath.replace(/\\/g, '/');
1279
+ manifest.fileHashes[normalizedIntPath] = { ...hashInfo, installedAt: now };
1056
1280
  }
1057
1281
 
1058
1282
  // Track integration block hash for UDS content integrity
1059
1283
  if (result.blockHashInfo) {
1060
1284
  if (!manifest.integrationBlockHashes) manifest.integrationBlockHashes = {};
1061
- manifest.integrationBlockHashes[integrationPath] = {
1285
+ const normalizedIntBlockPath = integrationPath.replace(/\\/g, '/');
1286
+ manifest.integrationBlockHashes[normalizedIntBlockPath] = {
1062
1287
  ...result.blockHashInfo,
1063
1288
  installedAt: now
1064
1289
  };
@@ -1301,7 +1526,7 @@ async function updateCommandsOnly(projectPath, manifest) {
1301
1526
  // Update command hashes for integrity tracking
1302
1527
  if (result.allFileHashes) {
1303
1528
  if (!manifest.commandHashes) manifest.commandHashes = {};
1304
- Object.assign(manifest.commandHashes, result.allFileHashes);
1529
+ replaceCommandHashesForUpdatedAgents(manifest.commandHashes, result.allFileHashes);
1305
1530
  }
1306
1531
 
1307
1532
  writeManifest(manifest, projectPath);
@@ -1410,16 +1635,16 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion, debug = fa
1410
1635
  const installedInfo = userInfo || projectInfo;
1411
1636
  const installedVersion = installedInfo?.version;
1412
1637
 
1413
- // Skip marketplace (auto-updates) and unknown versions
1414
- if (!usingMarketplace && installedVersion && installedVersion !== latestSkillsVersion) {
1638
+ // Skip marketplace (auto-updates); treat unknown versions as outdated
1639
+ if (!usingMarketplace && (!installedVersion || installedVersion !== latestSkillsVersion)) {
1415
1640
  if (debug) {
1416
- console.log(chalk.yellow(` ✓ Added to outdatedSkills (${installedVersion} → ${latestSkillsVersion})`));
1641
+ console.log(chalk.yellow(` ✓ Added to outdatedSkills (${installedVersion || 'unknown'} → ${latestSkillsVersion})`));
1417
1642
  }
1418
1643
  outdatedSkills.push({
1419
1644
  agent: tool,
1420
1645
  displayName: getAgentDisplayName(tool),
1421
1646
  paths: config.skills,
1422
- currentVersion: installedVersion,
1647
+ currentVersion: installedVersion || 'unknown',
1423
1648
  latestVersion: latestSkillsVersion,
1424
1649
  level: userInfo?.installed ? 'user' : 'project',
1425
1650
  path: installedInfo?.path
@@ -1474,16 +1699,16 @@ function checkNewFeatures(projectPath, manifest, latestSkillsVersion, debug = fa
1474
1699
  console.log(chalk.gray(` latestSkillsVersion: ${latestSkillsVersion}`));
1475
1700
  }
1476
1701
 
1477
- // Check if version differs from latest
1478
- if (installedCmdVersion && installedCmdVersion !== latestSkillsVersion) {
1702
+ // Check if version differs from latest; treat unknown versions as outdated
1703
+ if (!installedCmdVersion || installedCmdVersion !== latestSkillsVersion) {
1479
1704
  if (debug) {
1480
- console.log(chalk.yellow(` ✓ Added to outdatedCommands (${installedCmdVersion} → ${latestSkillsVersion})`));
1705
+ console.log(chalk.yellow(` ✓ Added to outdatedCommands (${installedCmdVersion || 'unknown'} → ${latestSkillsVersion})`));
1481
1706
  }
1482
1707
  outdatedCommands.push({
1483
1708
  agent: tool,
1484
1709
  displayName: getAgentDisplayName(tool),
1485
1710
  paths: config.commands,
1486
- currentVersion: installedCmdVersion,
1711
+ currentVersion: installedCmdVersion || 'unknown',
1487
1712
  latestVersion: latestSkillsVersion,
1488
1713
  level: userCmdInfo?.installed ? 'user' : 'project',
1489
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
  */