@bonesofspring/ai-rules 0.2.16 → 0.2.18

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 (525) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +19 -2
  3. package/bin/cli.js +39 -0
  4. package/package.json +3 -1
  5. package/presets/_shared/README.md +3 -3
  6. package/presets/_shared/assets/docs-specs/INDEX.md +9 -0
  7. package/presets/_shared/assets/docs-specs/_templates/feature.md +32 -0
  8. package/presets/_shared/assets/docs-specs/_templates/page.md +47 -0
  9. package/presets/_shared/assets/docs-specs/schemas/frontmatter-v1.schema.json +22 -0
  10. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +3 -0
  11. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +4 -4
  12. package/presets/_shared/core/architecture/feature-delivery-workflow.md +1 -1
  13. package/presets/_shared/core/architecture/product-specs-authoring.md +107 -0
  14. package/presets/_shared/core/architecture/product-specs.md +49 -0
  15. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +4 -2
  16. package/presets/_shared/core/review/mockup-review.md +105 -0
  17. package/presets/_shared/core/review/ux-design.md +97 -0
  18. package/presets/claude/android-kotlin/agents/README.md +2 -2
  19. package/presets/claude/android-kotlin/agents/build-verifier.md +9 -0
  20. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -0
  21. package/presets/claude/android-kotlin/agents/feature-developer.md +13 -0
  22. package/presets/claude/android-kotlin/agents/mockup-reviewer.md +59 -0
  23. package/presets/claude/android-kotlin/agents/task-analyst.md +37 -1
  24. package/presets/claude/android-kotlin/agents/task-router.md +22 -2
  25. package/presets/claude/android-kotlin/agents/tech-writer.md +5 -0
  26. package/presets/claude/android-kotlin/commands/feature-continue.md +4 -0
  27. package/presets/claude/android-kotlin/commands/feature-start.md +8 -0
  28. package/presets/claude/android-kotlin/commands/spec-start.md +29 -0
  29. package/presets/claude/android-kotlin/commands/task-continue.md +11 -6
  30. package/presets/claude/android-kotlin/commands/task.md +2 -0
  31. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +26 -0
  32. package/presets/claude/android-kotlin/rules/README.md +4 -0
  33. package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +6 -0
  34. package/presets/claude/android-kotlin/rules/architecture/product-specs-authoring.md +121 -0
  35. package/presets/claude/android-kotlin/rules/architecture/product-specs.md +62 -0
  36. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
  37. package/presets/claude/android-kotlin/rules/tooling-and-review/mockup-review.md +118 -0
  38. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -3
  39. package/presets/claude/android-kotlin/rules/tooling-and-review/ux-design.md +110 -0
  40. package/presets/claude/android-kotlin/skills/README.md +2 -0
  41. package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +8 -4
  42. package/presets/claude/android-kotlin/skills/mockup-review/SKILL.md +29 -0
  43. package/presets/claude/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
  44. package/presets/claude/android-kotlin/skills/ux-design/SKILL.md +36 -0
  45. package/presets/claude/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
  46. package/presets/claude/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
  47. package/presets/claude/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
  48. package/presets/claude/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  49. package/presets/claude/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
  50. package/presets/claude/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
  51. package/presets/claude/go/MCP.md +1 -1
  52. package/presets/claude/go/agents/build-verifier.md +9 -0
  53. package/presets/claude/go/agents/code-reviewer.md +2 -0
  54. package/presets/claude/go/agents/feature-developer.md +7 -0
  55. package/presets/claude/go/agents/task-analyst.md +19 -0
  56. package/presets/claude/go/agents/task-router.md +12 -1
  57. package/presets/claude/go/agents/tech-writer.md +5 -0
  58. package/presets/claude/go/commands/feature-continue.md +1 -0
  59. package/presets/claude/go/commands/feature-start.md +8 -0
  60. package/presets/claude/go/commands/spec-start.md +29 -0
  61. package/presets/claude/go/commands/task-continue.md +6 -3
  62. package/presets/claude/go/rules/README.md +2 -0
  63. package/presets/claude/go/rules/architecture/feature-delivery.md +4 -0
  64. package/presets/claude/go/rules/architecture/product-specs-authoring.md +121 -0
  65. package/presets/claude/go/rules/architecture/product-specs.md +63 -0
  66. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  67. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  68. package/presets/claude/go/skills/feature-delivery/SKILL.md +5 -4
  69. package/presets/claude/go/skills/spec-authoring/SKILL.md +26 -0
  70. package/presets/claude/ios-swift/agents/README.md +2 -2
  71. package/presets/claude/ios-swift/agents/build-verifier.md +9 -0
  72. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -0
  73. package/presets/claude/ios-swift/agents/feature-developer.md +13 -0
  74. package/presets/claude/ios-swift/agents/mockup-reviewer.md +59 -0
  75. package/presets/claude/ios-swift/agents/task-analyst.md +37 -1
  76. package/presets/claude/ios-swift/agents/task-router.md +22 -2
  77. package/presets/claude/ios-swift/agents/tech-writer.md +2 -15
  78. package/presets/claude/ios-swift/commands/feature-continue.md +4 -0
  79. package/presets/claude/ios-swift/commands/feature-start.md +8 -0
  80. package/presets/claude/ios-swift/commands/spec-start.md +29 -0
  81. package/presets/claude/ios-swift/commands/task-continue.md +11 -6
  82. package/presets/claude/ios-swift/commands/task.md +2 -0
  83. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +26 -0
  84. package/presets/claude/ios-swift/rules/README.md +7 -0
  85. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +6 -0
  86. package/presets/claude/ios-swift/rules/architecture/product-specs-authoring.md +121 -0
  87. package/presets/claude/ios-swift/rules/architecture/product-specs.md +62 -0
  88. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
  89. package/presets/claude/ios-swift/rules/tooling-and-review/mockup-review.md +118 -0
  90. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  91. package/presets/claude/ios-swift/rules/tooling-and-review/ux-design.md +110 -0
  92. package/presets/claude/ios-swift/skills/README.md +2 -0
  93. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +8 -4
  94. package/presets/claude/ios-swift/skills/mockup-review/SKILL.md +29 -0
  95. package/presets/claude/ios-swift/skills/spec-authoring/SKILL.md +26 -0
  96. package/presets/claude/ios-swift/skills/ux-design/SKILL.md +36 -0
  97. package/presets/claude/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
  98. package/presets/claude/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
  99. package/presets/claude/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
  100. package/presets/claude/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  101. package/presets/claude/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
  102. package/presets/claude/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
  103. package/presets/claude/java/agents/build-verifier.md +10 -1
  104. package/presets/claude/java/agents/code-reviewer.md +2 -0
  105. package/presets/claude/java/agents/feature-developer.md +7 -0
  106. package/presets/claude/java/agents/task-analyst.md +19 -0
  107. package/presets/claude/java/agents/task-router.md +12 -1
  108. package/presets/claude/java/agents/tech-writer.md +5 -0
  109. package/presets/claude/java/commands/feature-continue.md +1 -0
  110. package/presets/claude/java/commands/feature-start.md +8 -0
  111. package/presets/claude/java/commands/spec-start.md +29 -0
  112. package/presets/claude/java/commands/task-continue.md +6 -3
  113. package/presets/claude/java/rules/README.md +2 -0
  114. package/presets/claude/java/rules/architecture/feature-delivery.md +4 -0
  115. package/presets/claude/java/rules/architecture/product-specs-authoring.md +121 -0
  116. package/presets/claude/java/rules/architecture/product-specs.md +63 -0
  117. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  118. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  119. package/presets/claude/java/skills/feature-delivery/SKILL.md +5 -4
  120. package/presets/claude/java/skills/spec-authoring/SKILL.md +26 -0
  121. package/presets/claude/mcp-ts/agents/build-verifier.md +10 -1
  122. package/presets/claude/mcp-ts/agents/feature-developer.md +7 -0
  123. package/presets/claude/mcp-ts/agents/task-analyst.md +21 -0
  124. package/presets/claude/mcp-ts/agents/task-router.md +12 -1
  125. package/presets/claude/mcp-ts/commands/feature-continue.md +4 -0
  126. package/presets/claude/mcp-ts/commands/feature-start.md +8 -0
  127. package/presets/claude/mcp-ts/commands/spec-start.md +29 -0
  128. package/presets/claude/mcp-ts/commands/task-continue.md +6 -3
  129. package/presets/claude/mcp-ts/rules/README.md +2 -0
  130. package/presets/claude/mcp-ts/rules/architecture/feature-delivery.md +4 -0
  131. package/presets/claude/mcp-ts/rules/architecture/product-specs-authoring.md +121 -0
  132. package/presets/claude/mcp-ts/rules/architecture/product-specs.md +63 -0
  133. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  134. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  135. package/presets/claude/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
  136. package/presets/claude/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
  137. package/presets/claude/next/agents/README.md +2 -1
  138. package/presets/claude/next/agents/build-verifier.md +9 -0
  139. package/presets/claude/next/agents/code-reviewer.md +1 -0
  140. package/presets/claude/next/agents/feature-developer.md +13 -0
  141. package/presets/claude/next/agents/mockup-reviewer.md +59 -0
  142. package/presets/claude/next/agents/task-analyst.md +37 -1
  143. package/presets/claude/next/agents/task-router.md +23 -3
  144. package/presets/claude/next/agents/tech-writer.md +5 -0
  145. package/presets/claude/next/commands/feature-continue.md +1 -0
  146. package/presets/claude/next/commands/feature-start.md +8 -0
  147. package/presets/claude/next/commands/spec-start.md +29 -0
  148. package/presets/claude/next/commands/task-continue.md +11 -6
  149. package/presets/claude/next/commands/task.md +2 -0
  150. package/presets/claude/next/hooks/chain-team-phases.sh +26 -0
  151. package/presets/claude/next/rules/README.md +8 -1
  152. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +6 -0
  153. package/presets/claude/next/rules/architecture/product-specs-authoring.md +121 -0
  154. package/presets/claude/next/rules/architecture/product-specs.md +63 -0
  155. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
  156. package/presets/claude/next/rules/tooling-and-review/mockup-review.md +118 -0
  157. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  158. package/presets/claude/next/rules/tooling-and-review/ux-design.md +110 -0
  159. package/presets/claude/next/skills/README.md +2 -0
  160. package/presets/claude/next/skills/feature-delivery/SKILL.md +7 -3
  161. package/presets/claude/next/skills/mockup-review/SKILL.md +29 -0
  162. package/presets/claude/next/skills/spec-authoring/SKILL.md +26 -0
  163. package/presets/claude/next/skills/ux-design/SKILL.md +36 -0
  164. package/presets/claude/next/team/fixtures/artifact-manifest.example.json +20 -2
  165. package/presets/claude/next/team/fixtures/feature-with-figma-url.json +17 -0
  166. package/presets/claude/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  167. package/presets/claude/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  168. package/presets/claude/next/team/fixtures/mockup-review-standalone.json +14 -0
  169. package/presets/claude/next/team/fixtures/ux-design-standalone.json +15 -0
  170. package/presets/claude/nuxt/agents/README.md +2 -1
  171. package/presets/claude/nuxt/agents/build-verifier.md +9 -0
  172. package/presets/claude/nuxt/agents/code-reviewer.md +2 -0
  173. package/presets/claude/nuxt/agents/feature-developer.md +13 -0
  174. package/presets/claude/nuxt/agents/mockup-reviewer.md +59 -0
  175. package/presets/claude/nuxt/agents/task-analyst.md +37 -1
  176. package/presets/claude/nuxt/agents/task-router.md +23 -3
  177. package/presets/claude/nuxt/agents/tech-writer.md +5 -0
  178. package/presets/claude/nuxt/commands/feature-continue.md +4 -0
  179. package/presets/claude/nuxt/commands/feature-start.md +8 -0
  180. package/presets/claude/nuxt/commands/spec-start.md +29 -0
  181. package/presets/claude/nuxt/commands/task-continue.md +11 -6
  182. package/presets/claude/nuxt/commands/task.md +2 -0
  183. package/presets/claude/nuxt/hooks/chain-team-phases.sh +26 -0
  184. package/presets/claude/nuxt/rules/README.md +7 -0
  185. package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +6 -0
  186. package/presets/claude/nuxt/rules/architecture/product-specs-authoring.md +121 -0
  187. package/presets/claude/nuxt/rules/architecture/product-specs.md +62 -0
  188. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
  189. package/presets/claude/nuxt/rules/tooling-and-review/mockup-review.md +118 -0
  190. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  191. package/presets/claude/nuxt/rules/tooling-and-review/ux-design.md +110 -0
  192. package/presets/claude/nuxt/skills/README.md +2 -0
  193. package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +7 -3
  194. package/presets/claude/nuxt/skills/mockup-review/SKILL.md +29 -0
  195. package/presets/claude/nuxt/skills/spec-authoring/SKILL.md +26 -0
  196. package/presets/claude/nuxt/skills/ux-design/SKILL.md +36 -0
  197. package/presets/claude/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
  198. package/presets/claude/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
  199. package/presets/claude/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
  200. package/presets/claude/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  201. package/presets/claude/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
  202. package/presets/claude/nuxt/team/fixtures/ux-design-standalone.json +15 -0
  203. package/presets/claude/php-hexagonal/agents/build-verifier.md +10 -1
  204. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -0
  205. package/presets/claude/php-hexagonal/agents/feature-developer.md +7 -0
  206. package/presets/claude/php-hexagonal/agents/task-analyst.md +19 -0
  207. package/presets/claude/php-hexagonal/agents/task-router.md +12 -1
  208. package/presets/claude/php-hexagonal/agents/tech-writer.md +5 -0
  209. package/presets/claude/php-hexagonal/commands/feature-continue.md +1 -0
  210. package/presets/claude/php-hexagonal/commands/feature-start.md +8 -0
  211. package/presets/claude/php-hexagonal/commands/spec-start.md +29 -0
  212. package/presets/claude/php-hexagonal/commands/task-continue.md +6 -3
  213. package/presets/claude/php-hexagonal/rules/README.md +2 -0
  214. package/presets/claude/php-hexagonal/rules/architecture/feature-delivery.md +4 -0
  215. package/presets/claude/php-hexagonal/rules/architecture/product-specs-authoring.md +121 -0
  216. package/presets/claude/php-hexagonal/rules/architecture/product-specs.md +63 -0
  217. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  218. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  219. package/presets/claude/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
  220. package/presets/claude/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
  221. package/presets/claude/php-laravel/agents/build-verifier.md +10 -1
  222. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -0
  223. package/presets/claude/php-laravel/agents/feature-developer.md +7 -0
  224. package/presets/claude/php-laravel/agents/task-analyst.md +19 -0
  225. package/presets/claude/php-laravel/agents/task-router.md +12 -1
  226. package/presets/claude/php-laravel/agents/tech-writer.md +5 -0
  227. package/presets/claude/php-laravel/commands/feature-continue.md +1 -0
  228. package/presets/claude/php-laravel/commands/feature-start.md +8 -0
  229. package/presets/claude/php-laravel/commands/spec-start.md +29 -0
  230. package/presets/claude/php-laravel/commands/task-continue.md +6 -3
  231. package/presets/claude/php-laravel/rules/README.md +2 -0
  232. package/presets/claude/php-laravel/rules/architecture/feature-delivery.md +4 -0
  233. package/presets/claude/php-laravel/rules/architecture/product-specs-authoring.md +121 -0
  234. package/presets/claude/php-laravel/rules/architecture/product-specs.md +63 -0
  235. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
  236. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  237. package/presets/claude/php-laravel/skills/feature-delivery/SKILL.md +5 -4
  238. package/presets/claude/php-laravel/skills/spec-authoring/SKILL.md +26 -0
  239. package/presets/claude/svelte/agents/README.md +2 -1
  240. package/presets/claude/svelte/agents/build-verifier.md +9 -0
  241. package/presets/claude/svelte/agents/code-reviewer.md +2 -0
  242. package/presets/claude/svelte/agents/feature-developer.md +13 -0
  243. package/presets/claude/svelte/agents/mockup-reviewer.md +59 -0
  244. package/presets/claude/svelte/agents/task-analyst.md +37 -1
  245. package/presets/claude/svelte/agents/task-router.md +23 -3
  246. package/presets/claude/svelte/agents/tech-writer.md +5 -0
  247. package/presets/claude/svelte/commands/feature-continue.md +4 -0
  248. package/presets/claude/svelte/commands/feature-start.md +8 -0
  249. package/presets/claude/svelte/commands/spec-start.md +29 -0
  250. package/presets/claude/svelte/commands/task-continue.md +11 -6
  251. package/presets/claude/svelte/commands/task.md +2 -0
  252. package/presets/claude/svelte/hooks/chain-team-phases.sh +26 -0
  253. package/presets/claude/svelte/rules/README.md +7 -0
  254. package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +6 -0
  255. package/presets/claude/svelte/rules/architecture/product-specs-authoring.md +121 -0
  256. package/presets/claude/svelte/rules/architecture/product-specs.md +62 -0
  257. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
  258. package/presets/claude/svelte/rules/tooling-and-review/mockup-review.md +118 -0
  259. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  260. package/presets/claude/svelte/rules/tooling-and-review/ux-design.md +110 -0
  261. package/presets/claude/svelte/skills/README.md +2 -0
  262. package/presets/claude/svelte/skills/feature-delivery/SKILL.md +7 -3
  263. package/presets/claude/svelte/skills/mockup-review/SKILL.md +29 -0
  264. package/presets/claude/svelte/skills/spec-authoring/SKILL.md +26 -0
  265. package/presets/claude/svelte/skills/ux-design/SKILL.md +36 -0
  266. package/presets/claude/svelte/team/fixtures/artifact-manifest.example.json +20 -2
  267. package/presets/claude/svelte/team/fixtures/feature-with-figma-url.json +17 -0
  268. package/presets/claude/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
  269. package/presets/claude/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  270. package/presets/claude/svelte/team/fixtures/mockup-review-standalone.json +14 -0
  271. package/presets/claude/svelte/team/fixtures/ux-design-standalone.json +15 -0
  272. package/presets/cursor/android-kotlin/agents/README.md +2 -2
  273. package/presets/cursor/android-kotlin/agents/build-verifier.md +9 -0
  274. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -0
  275. package/presets/cursor/android-kotlin/agents/feature-developer.md +13 -0
  276. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +60 -0
  277. package/presets/cursor/android-kotlin/agents/task-analyst.md +37 -1
  278. package/presets/cursor/android-kotlin/agents/task-router.md +22 -2
  279. package/presets/cursor/android-kotlin/agents/tech-writer.md +5 -0
  280. package/presets/cursor/android-kotlin/commands/feature-continue.md +4 -0
  281. package/presets/cursor/android-kotlin/commands/feature-start.md +8 -0
  282. package/presets/cursor/android-kotlin/commands/spec-start.md +29 -0
  283. package/presets/cursor/android-kotlin/commands/task-continue.md +11 -6
  284. package/presets/cursor/android-kotlin/commands/task.md +2 -0
  285. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +26 -0
  286. package/presets/cursor/android-kotlin/rules/README.md +7 -0
  287. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +8 -3
  288. package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +6 -0
  289. package/presets/cursor/android-kotlin/rules/mockup-review.mdc +116 -0
  290. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +4 -3
  291. package/presets/cursor/android-kotlin/rules/product-specs-authoring.mdc +123 -0
  292. package/presets/cursor/android-kotlin/rules/product-specs.mdc +64 -0
  293. package/presets/cursor/android-kotlin/rules/ux-design.mdc +108 -0
  294. package/presets/cursor/android-kotlin/skills/README.md +2 -0
  295. package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +8 -4
  296. package/presets/cursor/android-kotlin/skills/mockup-review/SKILL.md +29 -0
  297. package/presets/cursor/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
  298. package/presets/cursor/android-kotlin/skills/ux-design/SKILL.md +36 -0
  299. package/presets/cursor/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
  300. package/presets/cursor/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
  301. package/presets/cursor/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
  302. package/presets/cursor/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  303. package/presets/cursor/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
  304. package/presets/cursor/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
  305. package/presets/cursor/go/MCP.md +1 -1
  306. package/presets/cursor/go/agents/build-verifier.md +9 -0
  307. package/presets/cursor/go/agents/code-reviewer.md +2 -0
  308. package/presets/cursor/go/agents/feature-developer.md +7 -0
  309. package/presets/cursor/go/agents/task-analyst.md +19 -0
  310. package/presets/cursor/go/agents/task-router.md +12 -1
  311. package/presets/cursor/go/agents/tech-writer.md +5 -0
  312. package/presets/cursor/go/commands/feature-continue.md +4 -0
  313. package/presets/cursor/go/commands/feature-start.md +8 -0
  314. package/presets/cursor/go/commands/spec-start.md +29 -0
  315. package/presets/cursor/go/commands/task-continue.md +6 -3
  316. package/presets/cursor/go/rules/README.md +4 -1
  317. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +2 -0
  318. package/presets/cursor/go/rules/feature-delivery-workflow.mdc +4 -0
  319. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +4 -2
  320. package/presets/cursor/go/rules/product-specs-authoring.mdc +123 -0
  321. package/presets/cursor/go/rules/product-specs.mdc +65 -0
  322. package/presets/cursor/go/skills/feature-delivery/SKILL.md +5 -4
  323. package/presets/cursor/go/skills/spec-authoring/SKILL.md +26 -0
  324. package/presets/cursor/ios-swift/agents/README.md +2 -2
  325. package/presets/cursor/ios-swift/agents/build-verifier.md +9 -0
  326. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -0
  327. package/presets/cursor/ios-swift/agents/feature-developer.md +13 -0
  328. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +60 -0
  329. package/presets/cursor/ios-swift/agents/task-analyst.md +37 -1
  330. package/presets/cursor/ios-swift/agents/task-router.md +22 -2
  331. package/presets/cursor/ios-swift/agents/tech-writer.md +2 -15
  332. package/presets/cursor/ios-swift/commands/feature-continue.md +4 -0
  333. package/presets/cursor/ios-swift/commands/feature-start.md +8 -0
  334. package/presets/cursor/ios-swift/commands/spec-start.md +29 -0
  335. package/presets/cursor/ios-swift/commands/task-continue.md +11 -6
  336. package/presets/cursor/ios-swift/commands/task.md +2 -0
  337. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +26 -0
  338. package/presets/cursor/ios-swift/rules/README.md +8 -1
  339. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +8 -3
  340. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +6 -0
  341. package/presets/cursor/ios-swift/rules/mockup-review.mdc +116 -0
  342. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +4 -2
  343. package/presets/cursor/ios-swift/rules/product-specs-authoring.mdc +123 -0
  344. package/presets/cursor/ios-swift/rules/product-specs.mdc +64 -0
  345. package/presets/cursor/ios-swift/rules/ux-design.mdc +108 -0
  346. package/presets/cursor/ios-swift/skills/README.md +2 -0
  347. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +8 -4
  348. package/presets/cursor/ios-swift/skills/mockup-review/SKILL.md +29 -0
  349. package/presets/cursor/ios-swift/skills/spec-authoring/SKILL.md +26 -0
  350. package/presets/cursor/ios-swift/skills/ux-design/SKILL.md +36 -0
  351. package/presets/cursor/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
  352. package/presets/cursor/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
  353. package/presets/cursor/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
  354. package/presets/cursor/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  355. package/presets/cursor/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
  356. package/presets/cursor/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
  357. package/presets/cursor/java/agents/build-verifier.md +10 -1
  358. package/presets/cursor/java/agents/code-reviewer.md +2 -0
  359. package/presets/cursor/java/agents/feature-developer.md +7 -0
  360. package/presets/cursor/java/agents/task-analyst.md +19 -0
  361. package/presets/cursor/java/agents/task-router.md +12 -1
  362. package/presets/cursor/java/agents/tech-writer.md +5 -0
  363. package/presets/cursor/java/commands/feature-continue.md +4 -0
  364. package/presets/cursor/java/commands/feature-start.md +8 -0
  365. package/presets/cursor/java/commands/spec-start.md +29 -0
  366. package/presets/cursor/java/commands/task-continue.md +6 -3
  367. package/presets/cursor/java/rules/README.md +4 -1
  368. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +2 -0
  369. package/presets/cursor/java/rules/feature-delivery-workflow.mdc +4 -0
  370. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +4 -2
  371. package/presets/cursor/java/rules/product-specs-authoring.mdc +123 -0
  372. package/presets/cursor/java/rules/product-specs.mdc +65 -0
  373. package/presets/cursor/java/skills/feature-delivery/SKILL.md +5 -4
  374. package/presets/cursor/java/skills/spec-authoring/SKILL.md +26 -0
  375. package/presets/cursor/mcp-ts/agents/build-verifier.md +10 -1
  376. package/presets/cursor/mcp-ts/agents/feature-developer.md +7 -0
  377. package/presets/cursor/mcp-ts/agents/task-analyst.md +21 -0
  378. package/presets/cursor/mcp-ts/agents/task-router.md +12 -1
  379. package/presets/cursor/mcp-ts/commands/feature-continue.md +4 -0
  380. package/presets/cursor/mcp-ts/commands/feature-start.md +8 -0
  381. package/presets/cursor/mcp-ts/commands/spec-start.md +29 -0
  382. package/presets/cursor/mcp-ts/commands/task-continue.md +6 -3
  383. package/presets/cursor/mcp-ts/rules/README.md +2 -0
  384. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +2 -0
  385. package/presets/cursor/mcp-ts/rules/feature-delivery-workflow.mdc +4 -0
  386. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +4 -2
  387. package/presets/cursor/mcp-ts/rules/product-specs-authoring.mdc +123 -0
  388. package/presets/cursor/mcp-ts/rules/product-specs.mdc +65 -0
  389. package/presets/cursor/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
  390. package/presets/cursor/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
  391. package/presets/cursor/next/agents/README.md +2 -1
  392. package/presets/cursor/next/agents/build-verifier.md +9 -0
  393. package/presets/cursor/next/agents/code-reviewer.md +1 -0
  394. package/presets/cursor/next/agents/feature-developer.md +13 -0
  395. package/presets/cursor/next/agents/mockup-reviewer.md +60 -0
  396. package/presets/cursor/next/agents/task-analyst.md +37 -1
  397. package/presets/cursor/next/agents/task-router.md +23 -3
  398. package/presets/cursor/next/agents/tech-writer.md +5 -0
  399. package/presets/cursor/next/commands/feature-continue.md +4 -0
  400. package/presets/cursor/next/commands/feature-start.md +8 -0
  401. package/presets/cursor/next/commands/spec-start.md +29 -0
  402. package/presets/cursor/next/commands/task-continue.md +11 -6
  403. package/presets/cursor/next/commands/task.md +2 -0
  404. package/presets/cursor/next/hooks/chain-team-phases.sh +26 -0
  405. package/presets/cursor/next/rules/README.md +5 -1
  406. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +8 -3
  407. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +6 -0
  408. package/presets/cursor/next/rules/mockup-review.mdc +116 -0
  409. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +4 -2
  410. package/presets/cursor/next/rules/product-specs-authoring.mdc +123 -0
  411. package/presets/cursor/next/rules/product-specs.mdc +65 -0
  412. package/presets/cursor/next/rules/ux-design.mdc +108 -0
  413. package/presets/cursor/next/skills/README.md +2 -0
  414. package/presets/cursor/next/skills/feature-delivery/SKILL.md +7 -3
  415. package/presets/cursor/next/skills/mockup-review/SKILL.md +29 -0
  416. package/presets/cursor/next/skills/spec-authoring/SKILL.md +26 -0
  417. package/presets/cursor/next/skills/ux-design/SKILL.md +36 -0
  418. package/presets/cursor/next/team/fixtures/artifact-manifest.example.json +20 -2
  419. package/presets/cursor/next/team/fixtures/feature-with-figma-url.json +17 -0
  420. package/presets/cursor/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  421. package/presets/cursor/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  422. package/presets/cursor/next/team/fixtures/mockup-review-standalone.json +14 -0
  423. package/presets/cursor/next/team/fixtures/ux-design-standalone.json +15 -0
  424. package/presets/cursor/nuxt/agents/README.md +2 -1
  425. package/presets/cursor/nuxt/agents/build-verifier.md +9 -0
  426. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -0
  427. package/presets/cursor/nuxt/agents/feature-developer.md +13 -0
  428. package/presets/cursor/nuxt/agents/mockup-reviewer.md +60 -0
  429. package/presets/cursor/nuxt/agents/task-analyst.md +37 -1
  430. package/presets/cursor/nuxt/agents/task-router.md +23 -3
  431. package/presets/cursor/nuxt/agents/tech-writer.md +5 -0
  432. package/presets/cursor/nuxt/commands/feature-continue.md +4 -0
  433. package/presets/cursor/nuxt/commands/feature-start.md +8 -0
  434. package/presets/cursor/nuxt/commands/spec-start.md +29 -0
  435. package/presets/cursor/nuxt/commands/task-continue.md +11 -6
  436. package/presets/cursor/nuxt/commands/task.md +2 -0
  437. package/presets/cursor/nuxt/hooks/chain-team-phases.sh +26 -0
  438. package/presets/cursor/nuxt/rules/README.md +5 -1
  439. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +8 -3
  440. package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +6 -0
  441. package/presets/cursor/nuxt/rules/mockup-review.mdc +116 -0
  442. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +4 -2
  443. package/presets/cursor/nuxt/rules/product-specs-authoring.mdc +123 -0
  444. package/presets/cursor/nuxt/rules/product-specs.mdc +64 -0
  445. package/presets/cursor/nuxt/rules/ux-design.mdc +108 -0
  446. package/presets/cursor/nuxt/skills/README.md +2 -0
  447. package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +7 -3
  448. package/presets/cursor/nuxt/skills/mockup-review/SKILL.md +29 -0
  449. package/presets/cursor/nuxt/skills/spec-authoring/SKILL.md +26 -0
  450. package/presets/cursor/nuxt/skills/ux-design/SKILL.md +36 -0
  451. package/presets/cursor/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
  452. package/presets/cursor/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
  453. package/presets/cursor/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
  454. package/presets/cursor/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  455. package/presets/cursor/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
  456. package/presets/cursor/nuxt/team/fixtures/ux-design-standalone.json +15 -0
  457. package/presets/cursor/php-hexagonal/agents/build-verifier.md +10 -1
  458. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -0
  459. package/presets/cursor/php-hexagonal/agents/feature-developer.md +7 -0
  460. package/presets/cursor/php-hexagonal/agents/task-analyst.md +19 -0
  461. package/presets/cursor/php-hexagonal/agents/task-router.md +12 -1
  462. package/presets/cursor/php-hexagonal/agents/tech-writer.md +5 -0
  463. package/presets/cursor/php-hexagonal/commands/feature-continue.md +4 -0
  464. package/presets/cursor/php-hexagonal/commands/feature-start.md +8 -0
  465. package/presets/cursor/php-hexagonal/commands/spec-start.md +29 -0
  466. package/presets/cursor/php-hexagonal/commands/task-continue.md +6 -3
  467. package/presets/cursor/php-hexagonal/rules/README.md +4 -1
  468. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +2 -0
  469. package/presets/cursor/php-hexagonal/rules/feature-delivery-workflow.mdc +4 -0
  470. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +4 -2
  471. package/presets/cursor/php-hexagonal/rules/product-specs-authoring.mdc +123 -0
  472. package/presets/cursor/php-hexagonal/rules/product-specs.mdc +65 -0
  473. package/presets/cursor/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
  474. package/presets/cursor/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
  475. package/presets/cursor/php-laravel/agents/build-verifier.md +10 -1
  476. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -0
  477. package/presets/cursor/php-laravel/agents/feature-developer.md +7 -0
  478. package/presets/cursor/php-laravel/agents/task-analyst.md +19 -0
  479. package/presets/cursor/php-laravel/agents/task-router.md +12 -1
  480. package/presets/cursor/php-laravel/agents/tech-writer.md +5 -0
  481. package/presets/cursor/php-laravel/commands/feature-continue.md +4 -0
  482. package/presets/cursor/php-laravel/commands/feature-start.md +8 -0
  483. package/presets/cursor/php-laravel/commands/spec-start.md +29 -0
  484. package/presets/cursor/php-laravel/commands/task-continue.md +6 -3
  485. package/presets/cursor/php-laravel/rules/README.md +4 -1
  486. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +2 -0
  487. package/presets/cursor/php-laravel/rules/feature-delivery-workflow.mdc +4 -0
  488. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +4 -2
  489. package/presets/cursor/php-laravel/rules/product-specs-authoring.mdc +123 -0
  490. package/presets/cursor/php-laravel/rules/product-specs.mdc +65 -0
  491. package/presets/cursor/php-laravel/skills/feature-delivery/SKILL.md +5 -4
  492. package/presets/cursor/php-laravel/skills/spec-authoring/SKILL.md +26 -0
  493. package/presets/cursor/svelte/agents/README.md +2 -1
  494. package/presets/cursor/svelte/agents/build-verifier.md +9 -0
  495. package/presets/cursor/svelte/agents/code-reviewer.md +2 -0
  496. package/presets/cursor/svelte/agents/feature-developer.md +13 -0
  497. package/presets/cursor/svelte/agents/mockup-reviewer.md +60 -0
  498. package/presets/cursor/svelte/agents/task-analyst.md +37 -1
  499. package/presets/cursor/svelte/agents/task-router.md +23 -3
  500. package/presets/cursor/svelte/agents/tech-writer.md +5 -0
  501. package/presets/cursor/svelte/commands/feature-continue.md +4 -0
  502. package/presets/cursor/svelte/commands/feature-start.md +8 -0
  503. package/presets/cursor/svelte/commands/spec-start.md +29 -0
  504. package/presets/cursor/svelte/commands/task-continue.md +11 -6
  505. package/presets/cursor/svelte/commands/task.md +2 -0
  506. package/presets/cursor/svelte/hooks/chain-team-phases.sh +26 -0
  507. package/presets/cursor/svelte/rules/README.md +5 -1
  508. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +8 -3
  509. package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +6 -0
  510. package/presets/cursor/svelte/rules/mockup-review.mdc +116 -0
  511. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +4 -2
  512. package/presets/cursor/svelte/rules/product-specs-authoring.mdc +123 -0
  513. package/presets/cursor/svelte/rules/product-specs.mdc +64 -0
  514. package/presets/cursor/svelte/rules/ux-design.mdc +108 -0
  515. package/presets/cursor/svelte/skills/README.md +2 -0
  516. package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +7 -3
  517. package/presets/cursor/svelte/skills/mockup-review/SKILL.md +29 -0
  518. package/presets/cursor/svelte/skills/spec-authoring/SKILL.md +26 -0
  519. package/presets/cursor/svelte/skills/ux-design/SKILL.md +36 -0
  520. package/presets/cursor/svelte/team/fixtures/artifact-manifest.example.json +20 -2
  521. package/presets/cursor/svelte/team/fixtures/feature-with-figma-url.json +17 -0
  522. package/presets/cursor/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
  523. package/presets/cursor/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  524. package/presets/cursor/svelte/team/fixtures/mockup-review-standalone.json +14 -0
  525. package/presets/cursor/svelte/team/fixtures/ux-design-standalone.json +15 -0
@@ -6,10 +6,11 @@ description: Delivers iOS Swift/SwiftUI features end-to-end across Domain, Data,
6
6
  # Feature Delivery (iOS)
7
7
 
8
8
  1. Read task brief, acceptance criteria, and decomposition if present.
9
- 2. Read `feature-delivery-workflow.mdc` and `reference-features.mdc`Domain Data ViewModel View tests; mirror the closest Feature.
10
- 3. Wire DI in `App/` composition root; keep Views thin; keep DTOs out of ViewModels.
11
- 4. Add or update focused XCTest for mappers / use cases / ViewModels (`tests-unit.mdc`).
12
- 5. After Swift edits: **invoke** `post-change-build.mdc` (+ `xcode-tooling.mdc`). Pipeline: scoped build OK if next step is `build-verifier`.
9
+ 2. If `docs/specs/INDEX.md` exists **or** brief/handoff lists approved generated specs, resolve via **`product-specs`** and treat approved specs as behavior SoT before layer work (soft-fail on miss do not invent behavior). If generation was requested but not yet approved, stop for human gate — do not implement against draft-only gaps.
10
+ 3. Read `feature-delivery-workflow.mdc` and `reference-features.mdc` Domain Data → ViewModel → View → tests; mirror the closest Feature.
11
+ 4. Wire DI in `App/` composition root; keep Views thin; keep DTOs out of ViewModels.
12
+ 5. Add or update focused XCTest for mappers / use cases / ViewModels (`tests-unit.mdc`).
13
+ 6. After Swift edits: **invoke** `post-change-build.mdc` (+ `xcode-tooling.mdc`). Pipeline: scoped build OK if next step is `build-verifier`.
13
14
 
14
15
  ## Do / Don't
15
16
 
@@ -18,6 +19,9 @@ description: Delivers iOS Swift/SwiftUI features end-to-end across Domain, Data,
18
19
  - **Don't** introduce TCA/SwiftData/etc. unless the repo already uses them.
19
20
  - **Don't** use yarn, Playwright, or `app/src` paths — wrong stack.
20
21
 
22
+ - If the prompt or brief contains a `figma.com` URL, load requestable skill `mockup-review` and do not start UI work until the mockup-reviewer step is completed or the user continued past FAIL/`BLOCKED_MCP`.
23
+ - When required-signal (user asked UX, AC require flows/states, or spec-gen page/feature) and **no** `figma.com` URL: `ux-design.md` must exist on the analysis manifest entry (verdict not `INCOMPLETE`) before UI work. If missing, **blocked** — hand back to `task-analyst`. Parallel to the mockup gate when Figma exists.
24
+
21
25
  ## Scope discipline
22
26
 
23
27
  Implement only the current AC / decomposition task. Clarify ambiguity before coding; do not add unrelated hardening, polish, or drive-by refactors. See `feature-developer` → **Zero improvisation**.
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: mockup-review
3
+ description: Reviews a Figma mockup for design-system compliance, feature coverage, and viewport matrix via Figma MCP. Use for standalone mockup-review intent or when a feature/refactor/spike/spec-gen task includes a figma.com URL.
4
+ ---
5
+
6
+ # Mockup review
7
+
8
+ Requestable procedure for agent `mockup-reviewer`. Checklist lives in rule `mockup-review` — do not duplicate it here.
9
+
10
+ ## When to run
11
+
12
+ - Standalone `/task` intent `mockup-review` (report-only; profile `light`; steps only `mockup-reviewer`).
13
+ - Embedded: `feature` / `refactor` / `spike` / `spec-gen` whose prompt or `brief.md` contains a `figma.com` URL on a UI stack — after `task-analyst` (when present), before architect and developer.
14
+
15
+ ## MCP OAuth preflight
16
+
17
+ Confirm Figma MCP is configured (see `MCP.md`). Do not ship secrets. If MCP is down or auth fails, write `mockup-review.md` with verdict `BLOCKED_MCP` and receipt `blocked`. Do not invent DS claims. Embedded skip-forward is `/task-continue` (explicit «proceed without MCP»).
18
+
19
+ ## Plugin skills
20
+
21
+ If plugin skills `figma-design-to-code` / `figma-use` are installed, load them for MCP invocation recipes; do not paste their bodies; do not run design-to-code. Preset owns the checklist, agent, and routing; plugin owns MCP recipes.
22
+
23
+ ## Load the checklist
24
+
25
+ Load requestable rule `mockup-review` and follow its review dimensions, node caps, and report headings.
26
+
27
+ ## Output
28
+
29
+ Write `.cursor/team/tasks/<slug>/mockup-review.md` and upsert manifest entry id `mockup-review` (producer `mockup-reviewer`). Receipt mapping is in the agent prompt.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: spec-authoring
3
+ description: Author or bootstrap consumer docs/specs (INDEX, page/feature templates, frontmatter v1). Use with task-analyst author mode, /spec-start, or when brief AC requests Generate/Bootstrap.
4
+ ---
5
+
6
+ # Spec authoring
7
+
8
+ Requestable — not always-on. Load **`product-specs`** + **`product-specs-authoring`** first.
9
+
10
+ ## Steps
11
+
12
+ 1. **Resolve mode** — Generate (tree exists) vs Bootstrap (create INDEX + templates + first spec). Refuse inventing INDEX without explicit intent/AC/`/spec-start`.
13
+ 2. **Ensure templates** — if consumer `docs/specs/_templates/` missing, copy from package SoT `presets/_shared/assets/docs-specs/_templates/` (or seeded init assets).
14
+ 3. **Fill frontmatter v1** — all array keys present (may be `[]`); prefer `type: feature` on backend/MCP; default `status: draft`.
15
+ 4. **Fill required body headings** — page: Overview, Entry/actors, Primary flows, States, Acceptance criteria; feature: Overview, Shared behavior/constraints, Related pages. Use `N/A` explicitly when needed.
16
+ 5. **Update INDEX** in the **same change set** (columns: id, type, domain, title, path, optional routes/aliases/status).
17
+ 6. **Self-check** against `product-specs-authoring` checklist; put blockers in `open_questions`.
18
+ 7. **Handoff** — list created/updated paths + INDEX diff for human gate (`after:task-analyst`). Approve before feature-developer.
19
+
20
+ ## Sources
21
+
22
+ Cite AC / user / Figma / labeled code inference. Do not invent product behavior.
23
+
24
+ ## mcp-ts
25
+
26
+ Analyst-only path (no tech-writer). `routes` = tool names; `ui`/`store` = `[]`.
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: ux-design
3
+ description: Behavioral UX synthesis and review for task-analyst. Modes synthesize|review. Standalone intent ux-design or embedded required-signal / advisory UI AC. No Figma MCP; no DESIGN.md.
4
+ ---
5
+
6
+ # UX design
7
+
8
+ Requestable procedure for **task-analyst** (not a pipeline agent). Checklist lives in rule `ux-design` — do not duplicate it here.
9
+
10
+ **Not** a Figma workflow: do not call Figma MCP; do not write `DESIGN.md`. Visual/DS/viewport audit stays with `mockup-reviewer` / skill `mockup-review`.
11
+
12
+ ## When to run
13
+
14
+ - Standalone `/task` intent `ux-design` (report-only; profile `light`; steps only `task-analyst`; modes `synthesize` | `review`; `humanGates: []`).
15
+ - Embedded: `feature` / `refactor` / `spike` / `spec-gen` on a UI stack when required-signal or advisory UI AC fires — inside the analyst step (no new pipeline agent). Required-signal: user asked UX, or AC require flows/states, or spec-gen page/feature.
16
+
17
+ ## Modes
18
+
19
+ - `synthesize` — elicit IA, named primary flows, empty/error/loading matrix from the brief/AC.
20
+ - `review` — critique a brief/wireframe/description **without** Figma. A `figma.com` URL with review-not-implement language is intent `mockup-review`, not this skill.
21
+
22
+ ## Order
23
+
24
+ UX synthesis **before** skill `spec-authoring` / author mode when both apply. Analyst remains the only INDEX writer. Map headings via the rule's Spec feed table; do not paste the whole UX file into `docs/specs`.
25
+
26
+ ## Forbidden Figma MCP
27
+
28
+ Do not call `get_metadata`, `get_design_context`, `get_screenshot`, `search_design_system`, `get_variable_defs`, `use_figma`, `create_new_file`, `generate_*`. Only `mockup-reviewer` reads Figma.
29
+
30
+ ## Load the checklist
31
+
32
+ Load requestable rule `ux-design` and follow its required-signal vs advisory rules, forbidden MCP list, verdicts, surface-closure, and report headings.
33
+
34
+ ## Output
35
+
36
+ Write `.cursor/team/tasks/<slug>/ux-design.md` and append that path to the **`analysis`** manifest entry (`authoritativePaths` / `evidencePaths`). Do **not** create a new producer row. Receipt stays on `analysis`: required `INCOMPLETE` (missing primary flows or empty/error/loading matrix) → DoR not met; advisory `INCOMPLETE` → notes only. Never copy the mockup FAIL-only hook.
@@ -0,0 +1,25 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "slug": "example-mockup-review",
4
+ "updatedAt": "2026-07-31T12:05:45.000Z",
5
+ "artifacts": [
6
+ {
7
+ "id": "mockup-review",
8
+ "producer": "mockup-reviewer",
9
+ "status": "completed",
10
+ "authoritativePaths": ["mockup-review.md"],
11
+ "acceptanceCriteriaIds": ["AC-4", "AC-5", "AC-6", "AC-7", "AC-8"],
12
+ "taskIds": [],
13
+ "timestamps": {
14
+ "createdAt": "2026-07-31T12:05:30.000Z",
15
+ "updatedAt": "2026-07-31T12:05:45.000Z",
16
+ "completedAt": "2026-07-31T12:05:45.000Z"
17
+ },
18
+ "receipt": {
19
+ "outcome": "completed",
20
+ "summary": "Mockup review completed with verdict PASS_WITH_NOTES.",
21
+ "evidencePaths": ["mockup-review.md"]
22
+ }
23
+ }
24
+ ]
25
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "slug": "example-feature-with-figma",
3
+ "intent": "feature",
4
+ "profile": "full",
5
+ "summary": "Feature with Figma mockup URL — mockup-reviewer after analyst, before architect and developer",
6
+ "steps": [
7
+ { "agent": "task-analyst", "label": "Clarify and decompose" },
8
+ { "agent": "mockup-reviewer", "label": "Figma mockup review", "model": "strong" },
9
+ { "agent": "solution-architect", "label": "Design boundaries", "model": "strong" },
10
+ { "agent": "feature-developer", "label": "Implement" },
11
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
12
+ { "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
13
+ ],
14
+ "humanGates": ["after:task-analyst"],
15
+ "autoChain": true,
16
+ "skipped": []
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "slug": "example-feature-with-ux-no-figma",
3
+ "intent": "feature",
4
+ "profile": "standard",
5
+ "summary": "Feature with required-signal UX and no Figma URL — task-analyst loads skill ux-design; no mockup-reviewer step",
6
+ "steps": [
7
+ { "agent": "task-analyst", "label": "Clarify, UX design, decompose" },
8
+ { "agent": "feature-developer", "label": "Implement" },
9
+ { "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
10
+ { "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
11
+ ],
12
+ "humanGates": ["after:task-analyst"],
13
+ "autoChain": true,
14
+ "skipped": [
15
+ { "agent": "mockup-reviewer", "reason": "No figma.com URL; analyst skill ux-design covers behavioral UX" }
16
+ ]
17
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "slug": "example-mockup-fail-gate",
3
+ "state": "awaiting_approval",
4
+ "currentAgent": "mockup-reviewer",
5
+ "awaitingHumanGate": true,
6
+ "retryAfterFix": null,
7
+ "note": "Embedded mockup FAIL: hook must NOT set retryAfterFix to feature-developer. Resume only via /task-continue."
8
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "slug": "example-mockup-review-standalone",
3
+ "intent": "mockup-review",
4
+ "profile": "light",
5
+ "summary": "Standalone Figma mockup review (report-only)",
6
+ "steps": [
7
+ { "agent": "mockup-reviewer", "label": "Figma mockup review", "model": "strong" }
8
+ ],
9
+ "humanGates": [],
10
+ "autoChain": true,
11
+ "skipped": [
12
+ { "agent": "feature-developer", "reason": "Standalone mockup-review is report-only" }
13
+ ]
14
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "slug": "example-ux-design-standalone",
3
+ "intent": "ux-design",
4
+ "profile": "light",
5
+ "summary": "Standalone behavioral UX design (analyst + skill ux-design; report-only; no developer)",
6
+ "steps": [
7
+ { "agent": "task-analyst", "label": "UX design (skill ux-design)" }
8
+ ],
9
+ "humanGates": [],
10
+ "autoChain": true,
11
+ "skipped": [
12
+ { "agent": "feature-developer", "reason": "Standalone ux-design is report-only" },
13
+ { "agent": "mockup-reviewer", "reason": "No figma.com URL; not a mockup review" }
14
+ ]
15
+ }
@@ -31,7 +31,7 @@ Hard gates for the **java** stack:
31
31
  |------|-----------|
32
32
  | **twin-map** | `java` missing from `STACKS`, or Cursor↔Claude orphan/missing twins |
33
33
  | **token-budget** | Cursor `alwaysApply` ≠ 3 or Claude session-start (excl. README) ≠ 3, or trio body sum > 140 |
34
- | **leakage** | `JAVA_FORBIDDEN_*` hits (Playwright/XCUITest/`lint:js`/`accessibility-reviewer` as required handoffs) |
34
+ | **leakage** | `JAVA_FORBIDDEN_*` hits (Playwright/XCUITest/`lint:js`/`accessibility-reviewer` / `mockup-reviewer` as required handoffs) |
35
35
  | **chain fork** | `hooks/chain-team-phases.sh` byte-identical to **next**, **ios-swift**, **go**, **mcp-ts**, **php-hexagonal**, or **php-laravel** (same platform) |
36
36
 
37
37
  Also document:
@@ -44,9 +44,18 @@ Also document:
44
44
 
45
45
  Document PASS/FAIL in `validation-report.md`.
46
46
 
47
+
48
+ **Forbidden mockup-reviewer:** agent file `agents/mockup-reviewer.md` or required `AGENT_HANDOFF` / pipeline handoff for `mockup-reviewer` → **FAIL** (no UI mockup reviewer).
49
+
50
+ **Forbidden ux-designer / ux-design:** agent file `agents/ux-designer.md` or required `skills/ux-design` / `rules/ux-design` / pipeline handoff stem `ux-design` → **FAIL** (no UI UX surface).
51
+
52
+
47
53
  ## Artifact contract
48
54
 
49
55
  - **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for brief/decomposition, implementation evidence, pipeline scope, and changed files.
50
56
  - **Owned outputs:** `validation-report.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign entries.
51
57
  - **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
52
58
  - **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
59
+
60
+ 13. **Product-specs assets (FAIL):** package must ship `presets/_shared/assets/docs-specs/INDEX.md`, `_templates/page.md`, `_templates/feature.md`. Cursor+Claude twins for `product-specs` and `product-specs-authoring` must embed matching shared-core markers; both stems **requestable** (`alwaysApply: false` / Claude `paths: docs/specs/**`) — never session-start.
61
+ 14. **Optional consumer check (WARN default):** `scripts/check-product-specs.sh` + schema stub may exist for opt-in consumer CI; **FAIL** only with `--strict` or AC that requires named specs — do not force consumer CI.
@@ -18,6 +18,8 @@ Apply skill `code-review` and `code-review-mr.mdc`. Weigh `architecture-boundari
18
18
 
19
19
  ## Review focus (Java hexagonal)
20
20
 
21
+ - If the MR touches `docs/specs/**`, load **`product-specs`** (+ **`product-specs-authoring`** when new/changed specs): **WARN** code/spec drift; **FAIL** broken INDEX `path` link or missing required frontmatter keys/arrays on touched spec files; required body headings missing → **FAIL** on touched files. Do not invent missing product behavior.
22
+
21
23
  - **Layers:** domain has no HTTP/SQL/framework imports; application defines ports and has no concrete adapters; handlers map DTO↔domain at the edge only.
22
24
  - **DI:** composition root in `configuration/` / `*Application.java` — no business logic in wiring.
23
25
  - **Errors / context:** `%w` wrapping; `context.Context` on I/O boundaries; no swallowed errors.
@@ -46,6 +46,13 @@ Update `.cursor/team/tasks/<slug>/implementation.md` and the owned implementatio
46
46
 
47
47
  - When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
48
48
 
49
+ ## Product specs (docs/specs)
50
+
51
+ When work touches a page/feature/route/alias: if `docs/specs/INDEX.md` exists (or brief lists approved specs), load **`product-specs`** and treat **approved** specs from brief/handoff as **behavior SoT**. Soft-fail on miss (`open_questions` + code / `.ai/context` fallback); **never invent** product behavior.
52
+
53
+ Mechanical INDEX/frontmatter fixes only when implementation renames routes/ids. Substantive behavior edits → hand back to task-analyst (or tech-writer where present). If INDEX is absent and generation was not approved, treat specs as optional (greenfield).
54
+
55
+
49
56
  ## Artifact contract
50
57
 
51
58
  - **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
@@ -24,6 +24,25 @@ Emit an analysis receipt; the runtime applies any configured human gate.
24
24
 
25
25
  - Optional: Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit — only when decomposing refactor/architecture tasks (not default).
26
26
 
27
+ ## Product specs (docs/specs)
28
+
29
+ **Consume (default):** When work touches a page/feature/route/alias and `docs/specs/INDEX.md` exists, load **`product-specs`**, resolve the linked page/feature spec, and cite it under **Related specs** in `brief.md`. Soft-fail on miss (`open_questions` + code / `.ai/context` fallback); **never invent** product behavior. If INDEX is absent, treat specs as optional unless author mode applies.
30
+
31
+ **Author mode (Generate / Bootstrap):** When the user runs `/spec-start`, router intent is `spec-gen` / bootstrap, or brief/AC requests generation: load **`product-specs`** + **`product-specs-authoring`** and skill **`spec-authoring`**. You are the **primary author** (INDEX bootstrap included). Follow frontmatter v1 + required headings; update INDEX in the **same change set**; default `status: draft`. Block handoff via `open_questions` until the authoring self-check passes.
32
+
33
+ ### Brief sections (when author mode or INDEX exists)
34
+
35
+ Add to `brief.md`:
36
+
37
+ ```markdown
38
+ ## Related specs
39
+ - path or id (or N/A)
40
+
41
+ ## Spec gaps / generation requested
42
+ - [ ] none | generate | bootstrap — sources: …
43
+ ```
44
+
45
+
27
46
  ## Artifact contract
28
47
 
29
48
  - **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
@@ -31,7 +31,7 @@ You are a task router for a **Java hexagonal backend** agent team. You **do not*
31
31
  | `spike` | «исследуй» (explore), "spike", proof of concept | task-analyst → solution-architect | <!-- i18n-keep: E4 -->
32
32
  | `retro` | «ретро» (retro), "postmortem" | (orchestrator → `/technical-retro`) | <!-- i18n-keep: E4 -->
33
33
 
34
- **Never schedule** Playwright (`playwright-test-*`), XCUITest (`xcuitest-test-*`), or `accessibility-reviewer`. Put them in `skipped` with reason "Java backend uses integration-test trio".
34
+ **Never schedule** Playwright (`playwright-test-*`), XCUITest (`xcuitest-test-*`), or `accessibility-reviewer` / `mockup-reviewer`. Put them in `skipped` with reason "Java backend uses integration-test trio".
35
35
 
36
36
  ## Pipeline profiles
37
37
 
@@ -89,6 +89,17 @@ Write `.cursor/team/tasks/<slug>/pipeline.json` and initialize the routing entry
89
89
 
90
90
  Intent + steps table + skipped + gates → invoke `steps[0].agent` (unless retro).
91
91
 
92
+ ## Spec generation intents
93
+
94
+ Detect and set routing reasons when the user asks to **generate / bootstrap product specs**, mentions `docs/specs`, or runs `/spec-start`:
95
+
96
+ | Signal | Intent | Steps |
97
+ |--------|--------|-------|
98
+ | `/spec-start`, "bootstrap docs/specs", "generate product spec" | `spec-gen` | task-analyst (**author mode**) → human gate → stop (or continue to feature-developer only if implement-after) |
99
+ | Feature/task with AC "generate specs" / missing INDEX + bootstrap AC | `spec-gen` inside feature profile | task-analyst author mode first; **not** a separate agent step |
100
+
101
+ Do **not** add a dedicated `spec-author` agent. Do not require solution-architect for routine spec authoring.
102
+
92
103
  ## Runtime initialization
93
104
 
94
105
  Return the routing receipt to the orchestrator. The orchestration runtime/hook exclusively initializes and updates `status.json`, `metrics.json`, attempt identities, and gate lifecycle; the router does not write those shared runtime files.
@@ -13,3 +13,8 @@ Write documentation from task artifacts (brief, architecture, implementation, re
13
13
  - For ai-rules preset tasks: update PRESET-CONTRIBUTION / package README as scoped — docs only.
14
14
 
15
15
  Do not change production `.java` business logic.
16
+
17
+ ## Product specs (docs/specs)
18
+
19
+ Post-delivery: when behavior or public docs changed and `docs/specs/` is in play, load **`product-specs`** (+ **`product-specs-authoring`** if updating specs). Sync page/feature specs + INDEX in the **same change set**. **Never invent** product behavior without AC/code source; label inferred lines `status: draft`. Soft-fail on miss; no-op if INDEX absent and sync not requested.
20
+
@@ -17,3 +17,7 @@ Continue after a human gate. Full logic lives in **`task-continue.md`**.
17
17
  4. The hook continues the chain when `autoChain: true`.
18
18
 
19
19
  See `task-continue.md` for details and the handoff table.
20
+
21
+ ## Product specs (docs/specs)
22
+
23
+ When the next agent is **feature-developer** (or other implementer): if `docs/specs/INDEX.md` exists, instruct them to load **`product-specs`** and honor **Related specs** from `brief.md` (behavior SoT). Soft-fail on miss; never invent product behavior. No-op if INDEX is absent.
@@ -19,11 +19,19 @@ Starts the **analysis phase** without the router. The parent agent acts as orche
19
19
  6. Invoke subagent **task-analyst** (Task tool) with the full task description and artifact paths.
20
20
  7. Wait for the analyst to finish. **Do not invoke developer** at this stage.
21
21
 
22
+ ## Product specs (docs/specs)
23
+
24
+ When invoking **task-analyst**: if `docs/specs/INDEX.md` exists, instruct consume via **`product-specs`** and cite **Related specs**. Soft-fail on miss; never invent behavior.
25
+
26
+ If the user/AC requests generation or bootstrap, or INDEX is missing **with** bootstrap AC / `/spec-start` intent: instruct **author mode** inside the same analyst step — load **`product-specs-authoring`** + skill **`spec-authoring`**. Authoring is **not** a separate pipeline agent. Handoff must list created paths + INDEX diff; human gate must approve generated specs before feature-developer.
27
+
28
+
22
29
  ## Human gate
23
30
 
24
31
  After the analyst:
25
32
 
26
33
  - Show the user links to `brief.md` and `decomposition.md`.
34
+ - Also ask them to check **Related specs** in `brief.md` when `docs/specs/INDEX.md` exists.
27
35
  - Ask them to review and approve or send edits.
28
36
  - To continue: `/task-continue <slug>` or `/feature-continue <slug>`.
29
37
 
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: spec-start
3
+ description: Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate.
4
+ ---
5
+
6
+ # Spec start — generate / bootstrap product specs
7
+
8
+ Routes intent **`spec-gen`** (or bootstrap) → **task-analyst** in **author mode** → human gate (`after:task-analyst`) → stop, or continue to feature-developer if the user asked to implement after.
9
+
10
+ ## What to do
11
+
12
+ 1. Extract description from arguments after `/spec-start` (domain, page/feature ids, sources).
13
+ 2. Generate a **slug** (kebab-case, ≤48 chars), e.g. `spec-<domain>-<id>`.
14
+ 3. Ensure `.cursor/team/tasks/<slug>/` exists (Write artifacts; not Shell mkdir).
15
+ 4. Write `.cursor/team/active-task.json` → `{ "slug": "<slug>" }`.
16
+ 5. Write minimal `pipeline.json`: task-analyst → (optional stop) → feature-developer only if user asked implement-after. **No separate spec-author agent.**
17
+ 6. Invoke **task-analyst** with: author mode; load **`product-specs`** + **`product-specs-authoring`** + skill **`spec-authoring`**; Bootstrap if `docs/specs/` absent, else Generate.
18
+ 7. Wait for analyst. **Do not** invoke feature-developer until human gate passes.
19
+
20
+ ## Human gate
21
+
22
+ - Show created/updated spec paths and INDEX diff.
23
+ - Ask user to approve drafts (`status: draft` → promote) or send edits.
24
+ - Continue: `/task-continue <slug>` only after approval when implementation follows; otherwise stop after docs.
25
+
26
+ ## Notes
27
+
28
+ - Greenfield invent of INDEX is allowed **only** via this command, explicit ask, or AC bootstrap language.
29
+ - mcp-ts: analyst-only author/sync (no tech-writer).
@@ -40,11 +40,14 @@ printf '%s\n' '{"status":"completed","action":"end_human_gate","activateNext":tr
40
40
 
41
41
  | Agent | Read |
42
42
  |-------|------|
43
- | feature-developer | brief.md, decomposition.md, validation-report.md (if retry), review.md (if retry), architecture.md |
43
+ | feature-developer | brief.md (incl. **Related specs**), decomposition.md, validation-report.md (if retry), review.md (if retry), architecture.md; if `docs/specs/INDEX.md` exists → load **`product-specs`** |
44
44
  | build-verifier | git diff, decomposition.md |
45
45
  | code-reviewer | brief.md, validation-report.md, git diff |
46
46
  | qa-tester | brief.md, decomposition.md, scope from pipeline step |
47
47
 
48
- ## Metrics
48
+ ## Product specs (docs/specs)
49
+
50
+ When the next agent is **feature-developer** (or other implementer): if `docs/specs/INDEX.md` exists or brief lists approved specs, instruct them to load **`product-specs`** and honor **Related specs** / approved generated specs as behavior SoT. Soft-fail on miss; never invent product behavior.
51
+
52
+ If analyst ran **author mode**, confirm human approved drafts before developer. Pass spec paths + INDEX diff in the handoff. No-op if INDEX is absent and no approved specs.
49
53
 
50
- On human-gate resume, the hook action above appends `human_gate_ended` under the per-task lock **before** any new `attempt_started`. Agents must not calculate durations.
@@ -19,7 +19,7 @@
19
19
  ## Loading strategy
20
20
 
21
21
  - **`alwaysApply: true`** (Cursor) / **without `paths:`** (Claude) — base invariants only (**3**): `java-app-core`, `architecture-boundaries`, `code-quality-and-refactoring`
22
- - **On-demand / requestable** — `post-change-test`, `java-tooling`, `agent-team-intake`, `agent-team-orchestrator`, hexagonal domain/adapters, tests, feature-delivery-workflow, reference-features, `design-guidance`, `anti-sycophancy-discipline`, `technical-retro`
22
+ - **On-demand / requestable** — `post-change-test`, `java-tooling`, `agent-team-intake`, `agent-team-orchestrator`, hexagonal domain/adapters, tests, feature-delivery-workflow, reference-features, product-specs, product-specs-authoring, `design-guidance`, `anti-sycophancy-discipline`, `technical-retro`
23
23
  - **Preset author meta** (globs `packages/ai-rules/presets/**`, never alwaysApply): `preset-layering`, `preset-twin-sync`, `preset-token-budget`, `preset-pr-checklist`, `preset-no-cross-stack-leakage`
24
24
  - **Skills** — Phase C (deferred): `feature-delivery`, `code-review`, `integration-testing`, …
25
25
 
@@ -47,6 +47,8 @@ SoT prose: `packages/ai-rules/presets/_shared/core/**` (see `_shared/README.md`)
47
47
  | `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | embed | thin alias |
48
48
  | `architecture/feature-delivery-workflow.md` | `feature-delivery-workflow.mdc` | lineage | Java hexagonal checklist |
49
49
  | `architecture/reference-features.template.md` | `reference-features.mdc` | lineage | `src/main/java/**` path table |
50
+ | `architecture/product-specs.md` | `product-specs.mdc` | INDEX discovery; Stack notes field semantics |
51
+ | `architecture/product-specs-authoring.md` | `product-specs-authoring.mdc` | Generate/Bootstrap contract; requestable |
50
52
  | `review/code-review-mr.md` | `code-review-mr.mdc` | embed | Java checklist |
51
53
  | `review/technical-retro.md` | `technical-retro.mdc` | embed | thin alias |
52
54
  | `meta/preset-*.md` | `preset-*.mdc` | embed | author-only globs (incl. `preset-no-cross-stack-leakage`) |
@@ -64,6 +66,7 @@ Claude twins + Cursor→Claude map: `presets/claude/java/rules/README.md`. Cross
64
66
  | `design-guidance` | full | requestable embed; Java Stack notes |
65
67
  | `feature-delivery-workflow` | full | Java hexagonal checklist + matrix |
66
68
  | `reference-features` | full | Java path table filled |
69
+ | `product-specs` | full | requestable embed — docs/specs INDEX |
67
70
  | `agent-team-orchestrator` | full | Roles table (21) + Java handoffs / `integration-test-*` |
68
71
  | `code-review-mr` | full | Java Stack notes checklist |
69
72
  | `preset-*` (×5) | full | author meta |
@@ -200,3 +200,5 @@ When the work edits `packages/ai-rules/presets/**` (or dogfood `.cursor/` sync o
200
200
  - After Java code changes, pipeline includes **build-verifier** with `mvn test` / `./gradlew test` + `post-change-test` / `java-tooling` (static analysis only if repo/CI already configures it).
201
201
  - Chain hook handoffs: `integration-test-*`, `post-change-test`, `java-tooling` — never `lint:js`, Playwright, XCUITest, or `xcodebuild`.
202
202
  - Skills: `feature-delivery`, `unit-testing`, `integration-testing`, `ci-investigation`, `debug-investigation`, `code-review`, `technical-retro`, `write-adr`.
203
+
204
+ **Product specs:** When `/task`, `/feature-start`, or `/spec-start` touches pages/features/`docs/specs`: if INDEX exists and no generate intent → instruct next agent to load requestable **`product-specs`** (consume; soft-fail; never invent). If generate/bootstrap/`spec-gen` → load **`product-specs-authoring`** + skill **`spec-authoring`** inside **task-analyst** (not a separate pipeline step); pass created spec paths + INDEX diff in handoff; human gate must approve before feature-developer. No-op if INDEX absent and no author intent.
@@ -45,3 +45,7 @@ flowchart LR
45
45
  - **Ubiquitous language:** Domain names/boundaries reflect the feature domain — do not mix transport/framework terms into domain without need.
46
46
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
47
47
  - Spring Boot is the default edge; plain Java / Quarkus / Micronaut keep the same layer order with different wiring.
48
+
49
+ ## Related
50
+
51
+ - Product behavior discovery: requestable **`product-specs`** (`docs/specs/INDEX.md`) — do not paste the discovery algorithm here.
@@ -70,7 +70,8 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
70
70
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
71
71
  - Positive yarn recipes `lint:js` / `lint:css`
72
72
  - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
73
- - Agent file `accessibility-reviewer` (no UI surface)
73
+ - Agent files `accessibility-reviewer`, `mockup-reviewer`, `ux-designer` (no UI surface)
74
+ - Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
74
75
 
75
76
  Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
76
77
 
@@ -82,7 +83,8 @@ Same UI/mobile bans as backend stacks, plus:
82
83
  - Positive yarn recipes `lint:js` / `lint:css` as required gates
83
84
  - `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
84
85
  - Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
85
- - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
86
+ - Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`, `mockup-reviewer`, `ux-designer`
87
+ - Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
86
88
 
87
89
  Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
88
90
 
@@ -0,0 +1,123 @@
1
+ ---
2
+ description: Author/generate product specs (docs/specs) — modes, INDEX/frontmatter, checklist
3
+ globs:
4
+ - docs/specs/**/*
5
+ alwaysApply: false
6
+ ---
7
+
8
+ <!-- shared-core: architecture/product-specs-authoring.md -->
9
+
10
+ # Product specs authoring
11
+
12
+ Load when **Generate** or **Bootstrap** is requested (`/spec-start`, router `spec-gen`, brief AC, or analyst author mode). Discovery-only work stays on **`product-specs`**.
13
+
14
+ ## Modes
15
+
16
+ 1. **Consume** — default; never invent INDEX/specs (see `product-specs`).
17
+ 2. **Generate** — create/update page/feature specs + INDEX rows from brief AC, user intent, Figma, or code archaeology. Inventing *product* behavior is forbidden without a stated source (AC / user / UI copy / code-observed behavior labeled `status: draft` or `inferred`).
18
+ 3. **Bootstrap** — create `INDEX.md` + `_templates/` copies + first domain spec under greenfield policy.
19
+
20
+ ## Greenfield policy
21
+
22
+ Agents **may** create INDEX + first specs **only when** one of:
23
+
24
+ 1. User runs `/spec-start` or explicitly asks to bootstrap `docs/specs`.
25
+ 2. Brief/AC includes generation or bootstrap language.
26
+ 3. Router detects `spec-gen` intent.
27
+
28
+ Otherwise: missing INDEX → optional tree; do **not** invent INDEX merely because discovery loaded.
29
+
30
+ ## Conflict precedence
31
+
32
+ 1. **Human gate** decision (approved brief/spec edits).
33
+ 2. **Current task `brief.md` AC** — if AC contradicts an existing spec, analyst must reconcile (update spec as `draft` or revise AC) before developer; no silent contradiction.
34
+ 3. **Approved `docs/specs/**`** — behavior SoT for feature-developer once gate passed.
35
+ 4. **Code / `.ai/context`** — discovery evidence only; never override approved spec without gate.
36
+
37
+ Label inferred-from-code lines with `status: draft` until human promotes.
38
+
39
+ ## INDEX.md contract (v1)
40
+
41
+ | Column | Required | Notes |
42
+ |--------|----------|-------|
43
+ | `id` | yes | Stable kebab/id matching frontmatter `id` |
44
+ | `type` | yes | `page` \| `feature` |
45
+ | `domain` | yes | Domain folder under `docs/specs/domains/<domain>/` |
46
+ | `title` | yes | Human label |
47
+ | `path` | yes | Repo-relative path to markdown file |
48
+ | `routes` | no | Summary; may duplicate frontmatter |
49
+ | `aliases` | no | Comma-separated PageName / deep-link aliases |
50
+ | `status` | no | `draft` \| `active` \| `deprecated` |
51
+
52
+ Layout: `docs/specs/domains/<domain>/<id>.md` (page) and optional `docs/specs/domains/<domain>/feature.md`. Adding/renaming/removing a linked file **must** update INDEX in the **same change set**.
53
+
54
+ ## Frontmatter v1
55
+
56
+ | Field | Type | Required | Notes |
57
+ |-------|------|----------|-------|
58
+ | `id` | string | yes | Unique; matches INDEX |
59
+ | `type` | enum `page` \| `feature` | yes | Backend/MCP: prefer `feature` |
60
+ | `domain` | string | yes | |
61
+ | `routes` | string[] | yes (may be `[]`) | Web: URL paths; mobile: deep links/screens; backend: HTTP paths; mcp-ts: tool names |
62
+ | `ui` | string[] | yes (may be `[]`) | Component/screen refs; empty on backend/mcp |
63
+ | `store` | string[] | yes (may be `[]`) | Slice/module refs; empty when N/A |
64
+ | `api` | string[] | yes (may be `[]`) | Services/ports/tools |
65
+ | `aliases` | string[] | yes (may be `[]`) | |
66
+ | `e2e` | string[] | yes (may be `[]`) | Stack-appropriate test paths |
67
+ | `status` | enum | no | default `draft` on agent generate |
68
+ | `owners` | string[] | no | |
69
+ | `related` | string[] | no | Spec ids or paths |
70
+
71
+ Arrays are **always present** (empty allowed). Do not omit keys for N/A stacks.
72
+
73
+ ## Body headings (minimum)
74
+
75
+ **`page` required:** Overview; Entry / actors; Primary flows; States (loading / empty / error / success as applicable — mark N/A explicitly); Acceptance criteria (links or bullets to brief AC / product source).
76
+
77
+ **`page` optional:** Analytics, Accessibility, Edge cases, Related specs.
78
+
79
+ **`feature` required:** Overview; Shared behavior / constraints; Related pages (links).
80
+
81
+ **`feature` optional:** Cross-cutting states, Analytics.
82
+
83
+ Compliant = valid frontmatter + all required headings present (non-empty prose or explicit `N/A`) + INDEX row with resolvable `path`.
84
+
85
+ ## Templates & assets
86
+
87
+ **Package SoT:** `packages/ai-rules/presets/_shared/assets/docs-specs/` (`INDEX.md` stub, `_templates/page.md`, `_templates/feature.md`; optional `schemas/frontmatter-v1.schema.json`).
88
+
89
+ **CLI `init`:** when consumer `docs/specs/` is **absent**, copy INDEX stub + `_templates/*` (idempotent; **never overwrite** existing INDEX). When the tree already exists, skip seed entirely.
90
+
91
+ **Skill fallback:** if consumer `_templates/` missing during author mode, copy from package/skill assets before authoring.
92
+
93
+ ## Author roles
94
+
95
+ | Role | Responsibility |
96
+ |------|----------------|
97
+ | **task-analyst** | Primary author (Generate + Bootstrap); INDEX bootstrap; brief **Related specs** + **Spec gaps / generation requested**; loads this stem + skill `spec-authoring` |
98
+ | **tech-writer** | Post-delivery sync where present; never invent product behavior without AC/code source |
99
+ | **feature-developer** | Consumes approved specs as SoT; mechanical INDEX/frontmatter fixes only on renames |
100
+ | **mcp-ts** | No tech-writer — author + post-sync via **task-analyst** only |
101
+
102
+ ## Self-check before handoff (soft block)
103
+
104
+ Block handoff via `open_questions` until fixed:
105
+
106
+ - [ ] Required frontmatter keys present; arrays always present (may be `[]`)
107
+ - [ ] Required body headings present (or explicit `N/A`)
108
+ - [ ] INDEX row added/updated with resolvable `path` in the **same change set**
109
+ - [ ] Sources cited; invented product behavior absent (or labeled `draft` / `inferred`)
110
+ - [ ] Conflict with brief AC reconciled or flagged
111
+
112
+ ## Related
113
+
114
+ - `product-specs` — discovery / consume
115
+ - Skill `spec-authoring` — procedural checklist
116
+ - Optional consumer script `scripts/check-product-specs.sh` (WARN default; `--strict` FAIL)
117
+
118
+
119
+ ## Stack notes
120
+
121
+ - Author via skill `spec-authoring`; prefer `type: feature`; `ui`/`store` usually `[]`.
122
+ - **Forbidden:** web UI / Playwright path recipes.
123
+ - Requestable — not always-on / session-start.