@bonesofspring/ai-rules 0.2.17 → 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 (292) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +1 -1
  3. package/package.json +1 -1
  4. package/presets/_shared/README.md +1 -1
  5. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +3 -0
  6. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +4 -4
  7. package/presets/_shared/core/architecture/feature-delivery-workflow.md +1 -1
  8. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +4 -2
  9. package/presets/_shared/core/review/mockup-review.md +105 -0
  10. package/presets/_shared/core/review/ux-design.md +97 -0
  11. package/presets/claude/android-kotlin/agents/README.md +2 -2
  12. package/presets/claude/android-kotlin/agents/build-verifier.md +6 -0
  13. package/presets/claude/android-kotlin/agents/feature-developer.md +6 -0
  14. package/presets/claude/android-kotlin/agents/mockup-reviewer.md +59 -0
  15. package/presets/claude/android-kotlin/agents/task-analyst.md +18 -1
  16. package/presets/claude/android-kotlin/agents/task-router.md +11 -2
  17. package/presets/claude/android-kotlin/commands/task-continue.md +6 -4
  18. package/presets/claude/android-kotlin/commands/task.md +2 -0
  19. package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +26 -0
  20. package/presets/claude/android-kotlin/rules/README.md +2 -0
  21. package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +2 -0
  22. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +6 -3
  23. package/presets/claude/android-kotlin/rules/tooling-and-review/mockup-review.md +118 -0
  24. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -3
  25. package/presets/claude/android-kotlin/rules/tooling-and-review/ux-design.md +110 -0
  26. package/presets/claude/android-kotlin/skills/README.md +2 -0
  27. package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +3 -0
  28. package/presets/claude/android-kotlin/skills/mockup-review/SKILL.md +29 -0
  29. package/presets/claude/android-kotlin/skills/ux-design/SKILL.md +36 -0
  30. package/presets/claude/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
  31. package/presets/claude/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
  32. package/presets/claude/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
  33. package/presets/claude/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  34. package/presets/claude/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
  35. package/presets/claude/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
  36. package/presets/claude/go/MCP.md +1 -1
  37. package/presets/claude/go/agents/build-verifier.md +6 -0
  38. package/presets/claude/go/agents/task-router.md +1 -1
  39. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  40. package/presets/claude/ios-swift/agents/README.md +2 -2
  41. package/presets/claude/ios-swift/agents/build-verifier.md +6 -0
  42. package/presets/claude/ios-swift/agents/feature-developer.md +6 -0
  43. package/presets/claude/ios-swift/agents/mockup-reviewer.md +59 -0
  44. package/presets/claude/ios-swift/agents/task-analyst.md +18 -1
  45. package/presets/claude/ios-swift/agents/task-router.md +11 -2
  46. package/presets/claude/ios-swift/commands/task-continue.md +6 -4
  47. package/presets/claude/ios-swift/commands/task.md +2 -0
  48. package/presets/claude/ios-swift/hooks/chain-team-phases.sh +26 -0
  49. package/presets/claude/ios-swift/rules/README.md +4 -0
  50. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +2 -0
  51. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +6 -3
  52. package/presets/claude/ios-swift/rules/tooling-and-review/mockup-review.md +118 -0
  53. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  54. package/presets/claude/ios-swift/rules/tooling-and-review/ux-design.md +110 -0
  55. package/presets/claude/ios-swift/skills/README.md +2 -0
  56. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +3 -0
  57. package/presets/claude/ios-swift/skills/mockup-review/SKILL.md +29 -0
  58. package/presets/claude/ios-swift/skills/ux-design/SKILL.md +36 -0
  59. package/presets/claude/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
  60. package/presets/claude/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
  61. package/presets/claude/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
  62. package/presets/claude/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  63. package/presets/claude/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
  64. package/presets/claude/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
  65. package/presets/claude/java/agents/build-verifier.md +7 -1
  66. package/presets/claude/java/agents/task-router.md +1 -1
  67. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  68. package/presets/claude/mcp-ts/agents/build-verifier.md +7 -1
  69. package/presets/claude/mcp-ts/agents/task-router.md +1 -1
  70. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  71. package/presets/claude/next/agents/README.md +2 -1
  72. package/presets/claude/next/agents/build-verifier.md +6 -0
  73. package/presets/claude/next/agents/feature-developer.md +6 -0
  74. package/presets/claude/next/agents/mockup-reviewer.md +59 -0
  75. package/presets/claude/next/agents/task-analyst.md +18 -1
  76. package/presets/claude/next/agents/task-router.md +12 -3
  77. package/presets/claude/next/commands/task-continue.md +6 -4
  78. package/presets/claude/next/commands/task.md +2 -0
  79. package/presets/claude/next/hooks/chain-team-phases.sh +26 -0
  80. package/presets/claude/next/rules/README.md +5 -1
  81. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +2 -0
  82. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +6 -3
  83. package/presets/claude/next/rules/tooling-and-review/mockup-review.md +118 -0
  84. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  85. package/presets/claude/next/rules/tooling-and-review/ux-design.md +110 -0
  86. package/presets/claude/next/skills/README.md +2 -0
  87. package/presets/claude/next/skills/feature-delivery/SKILL.md +3 -0
  88. package/presets/claude/next/skills/mockup-review/SKILL.md +29 -0
  89. package/presets/claude/next/skills/ux-design/SKILL.md +36 -0
  90. package/presets/claude/next/team/fixtures/artifact-manifest.example.json +20 -2
  91. package/presets/claude/next/team/fixtures/feature-with-figma-url.json +17 -0
  92. package/presets/claude/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  93. package/presets/claude/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  94. package/presets/claude/next/team/fixtures/mockup-review-standalone.json +14 -0
  95. package/presets/claude/next/team/fixtures/ux-design-standalone.json +15 -0
  96. package/presets/claude/nuxt/agents/README.md +2 -1
  97. package/presets/claude/nuxt/agents/build-verifier.md +6 -0
  98. package/presets/claude/nuxt/agents/feature-developer.md +6 -0
  99. package/presets/claude/nuxt/agents/mockup-reviewer.md +59 -0
  100. package/presets/claude/nuxt/agents/task-analyst.md +18 -1
  101. package/presets/claude/nuxt/agents/task-router.md +12 -3
  102. package/presets/claude/nuxt/commands/task-continue.md +6 -4
  103. package/presets/claude/nuxt/commands/task.md +2 -0
  104. package/presets/claude/nuxt/hooks/chain-team-phases.sh +26 -0
  105. package/presets/claude/nuxt/rules/README.md +4 -0
  106. package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +2 -0
  107. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +6 -3
  108. package/presets/claude/nuxt/rules/tooling-and-review/mockup-review.md +118 -0
  109. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  110. package/presets/claude/nuxt/rules/tooling-and-review/ux-design.md +110 -0
  111. package/presets/claude/nuxt/skills/README.md +2 -0
  112. package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +3 -0
  113. package/presets/claude/nuxt/skills/mockup-review/SKILL.md +29 -0
  114. package/presets/claude/nuxt/skills/ux-design/SKILL.md +36 -0
  115. package/presets/claude/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
  116. package/presets/claude/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
  117. package/presets/claude/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
  118. package/presets/claude/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  119. package/presets/claude/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
  120. package/presets/claude/nuxt/team/fixtures/ux-design-standalone.json +15 -0
  121. package/presets/claude/php-hexagonal/agents/build-verifier.md +7 -1
  122. package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
  123. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  124. package/presets/claude/php-laravel/agents/build-verifier.md +7 -1
  125. package/presets/claude/php-laravel/agents/task-router.md +1 -1
  126. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  127. package/presets/claude/svelte/agents/README.md +2 -1
  128. package/presets/claude/svelte/agents/build-verifier.md +6 -0
  129. package/presets/claude/svelte/agents/feature-developer.md +6 -0
  130. package/presets/claude/svelte/agents/mockup-reviewer.md +59 -0
  131. package/presets/claude/svelte/agents/task-analyst.md +18 -1
  132. package/presets/claude/svelte/agents/task-router.md +12 -3
  133. package/presets/claude/svelte/commands/task-continue.md +6 -4
  134. package/presets/claude/svelte/commands/task.md +2 -0
  135. package/presets/claude/svelte/hooks/chain-team-phases.sh +26 -0
  136. package/presets/claude/svelte/rules/README.md +4 -0
  137. package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +2 -0
  138. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +6 -3
  139. package/presets/claude/svelte/rules/tooling-and-review/mockup-review.md +118 -0
  140. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
  141. package/presets/claude/svelte/rules/tooling-and-review/ux-design.md +110 -0
  142. package/presets/claude/svelte/skills/README.md +2 -0
  143. package/presets/claude/svelte/skills/feature-delivery/SKILL.md +3 -0
  144. package/presets/claude/svelte/skills/mockup-review/SKILL.md +29 -0
  145. package/presets/claude/svelte/skills/ux-design/SKILL.md +36 -0
  146. package/presets/claude/svelte/team/fixtures/artifact-manifest.example.json +20 -2
  147. package/presets/claude/svelte/team/fixtures/feature-with-figma-url.json +17 -0
  148. package/presets/claude/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
  149. package/presets/claude/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  150. package/presets/claude/svelte/team/fixtures/mockup-review-standalone.json +14 -0
  151. package/presets/claude/svelte/team/fixtures/ux-design-standalone.json +15 -0
  152. package/presets/cursor/android-kotlin/agents/README.md +2 -2
  153. package/presets/cursor/android-kotlin/agents/build-verifier.md +6 -0
  154. package/presets/cursor/android-kotlin/agents/feature-developer.md +6 -0
  155. package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +60 -0
  156. package/presets/cursor/android-kotlin/agents/task-analyst.md +18 -1
  157. package/presets/cursor/android-kotlin/agents/task-router.md +11 -2
  158. package/presets/cursor/android-kotlin/commands/task-continue.md +6 -4
  159. package/presets/cursor/android-kotlin/commands/task.md +2 -0
  160. package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +26 -0
  161. package/presets/cursor/android-kotlin/rules/README.md +4 -0
  162. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +6 -3
  163. package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +2 -0
  164. package/presets/cursor/android-kotlin/rules/mockup-review.mdc +116 -0
  165. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +4 -3
  166. package/presets/cursor/android-kotlin/rules/ux-design.mdc +108 -0
  167. package/presets/cursor/android-kotlin/skills/README.md +2 -0
  168. package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +3 -0
  169. package/presets/cursor/android-kotlin/skills/mockup-review/SKILL.md +29 -0
  170. package/presets/cursor/android-kotlin/skills/ux-design/SKILL.md +36 -0
  171. package/presets/cursor/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
  172. package/presets/cursor/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
  173. package/presets/cursor/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
  174. package/presets/cursor/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  175. package/presets/cursor/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
  176. package/presets/cursor/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
  177. package/presets/cursor/go/MCP.md +1 -1
  178. package/presets/cursor/go/agents/build-verifier.md +6 -0
  179. package/presets/cursor/go/agents/task-router.md +1 -1
  180. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +4 -2
  181. package/presets/cursor/ios-swift/agents/README.md +2 -2
  182. package/presets/cursor/ios-swift/agents/build-verifier.md +6 -0
  183. package/presets/cursor/ios-swift/agents/feature-developer.md +6 -0
  184. package/presets/cursor/ios-swift/agents/mockup-reviewer.md +60 -0
  185. package/presets/cursor/ios-swift/agents/task-analyst.md +18 -1
  186. package/presets/cursor/ios-swift/agents/task-router.md +11 -2
  187. package/presets/cursor/ios-swift/commands/task-continue.md +6 -4
  188. package/presets/cursor/ios-swift/commands/task.md +2 -0
  189. package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +26 -0
  190. package/presets/cursor/ios-swift/rules/README.md +5 -1
  191. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +6 -3
  192. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +2 -0
  193. package/presets/cursor/ios-swift/rules/mockup-review.mdc +116 -0
  194. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +4 -2
  195. package/presets/cursor/ios-swift/rules/ux-design.mdc +108 -0
  196. package/presets/cursor/ios-swift/skills/README.md +2 -0
  197. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +3 -0
  198. package/presets/cursor/ios-swift/skills/mockup-review/SKILL.md +29 -0
  199. package/presets/cursor/ios-swift/skills/ux-design/SKILL.md +36 -0
  200. package/presets/cursor/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
  201. package/presets/cursor/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
  202. package/presets/cursor/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
  203. package/presets/cursor/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  204. package/presets/cursor/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
  205. package/presets/cursor/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
  206. package/presets/cursor/java/agents/build-verifier.md +7 -1
  207. package/presets/cursor/java/agents/task-router.md +1 -1
  208. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +4 -2
  209. package/presets/cursor/mcp-ts/agents/build-verifier.md +7 -1
  210. package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
  211. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +4 -2
  212. package/presets/cursor/next/agents/README.md +2 -1
  213. package/presets/cursor/next/agents/build-verifier.md +6 -0
  214. package/presets/cursor/next/agents/feature-developer.md +6 -0
  215. package/presets/cursor/next/agents/mockup-reviewer.md +60 -0
  216. package/presets/cursor/next/agents/task-analyst.md +18 -1
  217. package/presets/cursor/next/agents/task-router.md +12 -3
  218. package/presets/cursor/next/commands/task-continue.md +6 -4
  219. package/presets/cursor/next/commands/task.md +2 -0
  220. package/presets/cursor/next/hooks/chain-team-phases.sh +26 -0
  221. package/presets/cursor/next/rules/README.md +3 -1
  222. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +6 -3
  223. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +2 -0
  224. package/presets/cursor/next/rules/mockup-review.mdc +116 -0
  225. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +4 -2
  226. package/presets/cursor/next/rules/ux-design.mdc +108 -0
  227. package/presets/cursor/next/skills/README.md +2 -0
  228. package/presets/cursor/next/skills/feature-delivery/SKILL.md +3 -0
  229. package/presets/cursor/next/skills/mockup-review/SKILL.md +29 -0
  230. package/presets/cursor/next/skills/ux-design/SKILL.md +36 -0
  231. package/presets/cursor/next/team/fixtures/artifact-manifest.example.json +20 -2
  232. package/presets/cursor/next/team/fixtures/feature-with-figma-url.json +17 -0
  233. package/presets/cursor/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
  234. package/presets/cursor/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  235. package/presets/cursor/next/team/fixtures/mockup-review-standalone.json +14 -0
  236. package/presets/cursor/next/team/fixtures/ux-design-standalone.json +15 -0
  237. package/presets/cursor/nuxt/agents/README.md +2 -1
  238. package/presets/cursor/nuxt/agents/build-verifier.md +6 -0
  239. package/presets/cursor/nuxt/agents/feature-developer.md +6 -0
  240. package/presets/cursor/nuxt/agents/mockup-reviewer.md +60 -0
  241. package/presets/cursor/nuxt/agents/task-analyst.md +18 -1
  242. package/presets/cursor/nuxt/agents/task-router.md +12 -3
  243. package/presets/cursor/nuxt/commands/task-continue.md +6 -4
  244. package/presets/cursor/nuxt/commands/task.md +2 -0
  245. package/presets/cursor/nuxt/hooks/chain-team-phases.sh +26 -0
  246. package/presets/cursor/nuxt/rules/README.md +3 -1
  247. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +6 -3
  248. package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +2 -0
  249. package/presets/cursor/nuxt/rules/mockup-review.mdc +116 -0
  250. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +4 -2
  251. package/presets/cursor/nuxt/rules/ux-design.mdc +108 -0
  252. package/presets/cursor/nuxt/skills/README.md +2 -0
  253. package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +3 -0
  254. package/presets/cursor/nuxt/skills/mockup-review/SKILL.md +29 -0
  255. package/presets/cursor/nuxt/skills/ux-design/SKILL.md +36 -0
  256. package/presets/cursor/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
  257. package/presets/cursor/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
  258. package/presets/cursor/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
  259. package/presets/cursor/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  260. package/presets/cursor/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
  261. package/presets/cursor/nuxt/team/fixtures/ux-design-standalone.json +15 -0
  262. package/presets/cursor/php-hexagonal/agents/build-verifier.md +7 -1
  263. package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
  264. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +4 -2
  265. package/presets/cursor/php-laravel/agents/build-verifier.md +7 -1
  266. package/presets/cursor/php-laravel/agents/task-router.md +1 -1
  267. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +4 -2
  268. package/presets/cursor/svelte/agents/README.md +2 -1
  269. package/presets/cursor/svelte/agents/build-verifier.md +6 -0
  270. package/presets/cursor/svelte/agents/feature-developer.md +6 -0
  271. package/presets/cursor/svelte/agents/mockup-reviewer.md +60 -0
  272. package/presets/cursor/svelte/agents/task-analyst.md +18 -1
  273. package/presets/cursor/svelte/agents/task-router.md +12 -3
  274. package/presets/cursor/svelte/commands/task-continue.md +6 -4
  275. package/presets/cursor/svelte/commands/task.md +2 -0
  276. package/presets/cursor/svelte/hooks/chain-team-phases.sh +26 -0
  277. package/presets/cursor/svelte/rules/README.md +3 -1
  278. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +6 -3
  279. package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +2 -0
  280. package/presets/cursor/svelte/rules/mockup-review.mdc +116 -0
  281. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +4 -2
  282. package/presets/cursor/svelte/rules/ux-design.mdc +108 -0
  283. package/presets/cursor/svelte/skills/README.md +2 -0
  284. package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +3 -0
  285. package/presets/cursor/svelte/skills/mockup-review/SKILL.md +29 -0
  286. package/presets/cursor/svelte/skills/ux-design/SKILL.md +36 -0
  287. package/presets/cursor/svelte/team/fixtures/artifact-manifest.example.json +20 -2
  288. package/presets/cursor/svelte/team/fixtures/feature-with-figma-url.json +17 -0
  289. package/presets/cursor/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
  290. package/presets/cursor/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
  291. package/presets/cursor/svelte/team/fixtures/mockup-review-standalone.json +14 -0
  292. package/presets/cursor/svelte/team/fixtures/ux-design-standalone.json +15 -0
@@ -23,6 +23,8 @@ You are a task router for a Nuxt 3 frontend agent team. You **do not** implement
23
23
  | `migration` | «миграция» (migration), «upgrade», «обнови Nuxt» (upgrade Nuxt), «переход на» (move to), major version | task-analyst → migration-specialist → feature-developer → build-verifier → code-reviewer → qa-tester (regression) | <!-- i18n-keep: E4 -->
24
24
  | `perf-audit` | «производительность» (performance), «perf», «bundle», «LCP», «медленно» (slow), «waterfall» | performance-auditor | <!-- i18n-keep: E4 -->
25
25
  | `a11y` | «a11y», «доступность» (accessibility), «accessibility», «WCAG», «screen reader», «клавиатура» (keyboard) | task-analyst → feature-developer → build-verifier → accessibility-reviewer → code-reviewer | <!-- i18n-keep: E4 -->
26
+ | `mockup-review` | «ревью макета» (mockup review), «mockup review», «проверь Figma» (check Figma), «figma review», «макет» (mockup) + review verb, `figma.com` + review-not-implement | mockup-reviewer | <!-- i18n-keep: E4 -->
27
+ | `ux-design` | «разработай UX» (design UX), «спроектируй» (design/plan) flows, «journey», «IA», «state matrix», «ревью UX» (UX review) without Figma | task-analyst | <!-- i18n-keep: E4 -->
26
28
  | `review-only` | «ревью» (review), «review MR», «проверь diff» (check diff), «code review» | code-reviewer | <!-- i18n-keep: E4 -->
27
29
  | `test-only` | «покрой тестами» (cover with tests), «напиши тесты» (write tests) (mixed unit+e2e, no impl) | task-analyst → qa-tester | <!-- i18n-keep: E4 -->
28
30
  | `unit-only` | «unit», «юнит» (unit), «mapper tests», «покрой маппер» (cover mapper), «почини unit» (fix unit) | unit-test-planner → unit-test-generator, or unit-test-healer | <!-- i18n-keep: E4 -->
@@ -34,7 +36,7 @@ You are a task router for a Nuxt 3 frontend agent team. You **do not** implement
34
36
 
35
37
  ## Pipeline profiles
36
38
 
37
- Set optional top-level `"profile": "full" | "standard" | "light"` in `pipeline.json`. Default when omitted: **`standard`** for `feature`/`refactor`/`bugfix`; **`light`** for `review-only`, `perf-audit`; **`full`** when cross-layer or e2e AC required.
39
+ Set optional top-level `"profile": "full" | "standard" | "light"` in `pipeline.json`. Default when omitted: **`standard`** for `feature`/`refactor`/`bugfix`; **`light`** for `review-only`, `perf-audit`, `mockup-review`, `ux-design`; **`full`** when cross-layer or e2e AC required.
38
40
 
39
41
  | Profile | When | Typical `feature` steps |
40
42
  |---------|------|------------------------|
@@ -51,6 +53,8 @@ Set optional top-level `"profile": "full" | "standard" | "light"` in `pipeline.j
51
53
  | `feature` | developer → build-verifier |
52
54
  | `bugfix` | debugger → build-verifier (`skipIf: debugger.fixed` on developer) |
53
55
  | `review-only` | code-reviewer |
56
+ | `mockup-review` | mockup-reviewer |
57
+ | `ux-design` | task-analyst |
54
58
  | `docs-only` | tech-writer (skip analyst if brief exists) |
55
59
  | `ci-fix` | ci-investigator → build-verifier (`skipIf: ci-investigator.resolved`) |
56
60
 
@@ -79,6 +83,9 @@ Keep top-level `profile` and emit this top-level object in every new `pipeline.j
79
83
 
80
84
  ## Adjust steps (when context is clear)
81
85
 
86
+ - If prompt or `brief.md` contains `figma.com` on `feature` / `refactor` / `spike` / `spec-gen`, insert **mockup-reviewer** after **task-analyst** (when present) and before **solution-architect** and **feature-developer**. Set `model: "strong"` on that step. Do not add static `humanGates: ["after:mockup-reviewer"]` (FAIL-only hook exception). Never put `mockup-reviewer` in a `parallel: true` step (FAIL-only gate is serial).
87
+ - Classify intent `mockup-review` **before** `ux-design` **before** `review-only`. A `figma.com` URL with review-not-implement language is `mockup-review` even without the word «макет», including when the user said «ревью UX». <!-- i18n-keep: E4 -->
88
+ - If UI stack and (required-signal or advisory UI AC), instruct **task-analyst** to load skill `ux-design` (no new pipeline step; analyst default model, not `strong`). Required-signal: user asked UX, or AC require flows/states, or spec-gen page/feature.
82
89
  - Skip **task-analyst** if AC/scope fully specified → document in `skipped`.
83
90
  - Add **solution-architect** for cross-layer / new public APIs — after analyst, before developer.
84
91
  - Add **api-contract-reviewer** for new/changed backend contracts — before developer.
@@ -93,11 +100,11 @@ Optional per-step field: `"model": "cheap" | "standard" | "strong"`. Omit → ag
93
100
 
94
101
  | When | What to write |
95
102
  |------|----------------|
96
- | `profile: light` | set `cheap` on **all** steps (exception: unclear bug root cause on `debugger` → `strong`) |
103
+ | `profile: light` | set `cheap` on **all** steps (exceptions: unclear bug root cause on `debugger` → `strong`; `mockup-reviewer` always `strong`) |
97
104
  | `profile: standard` | omit (frontmatter defaults) |
98
105
  | `profile: full` | set `strong` on `solution-architect`, `migration-specialist`, `security-reviewer`, `performance-auditor` when present; omit others |
99
106
  | `intent: spike` | set `strong` on `solution-architect` (and analyst may stay default/`cheap`) |
100
- | `intent: perf-audit` / security-heavy feature | `strong` on auditor/reviewer step |
107
+ | `intent: perf-audit` / `mockup-review` / security-heavy feature | `strong` on auditor/reviewer step (`mockup-reviewer` never `cheap`) |
101
108
  | Always | **never** `strong` on `build-verifier`, `tech-writer`, `task-router` |
102
109
 
103
110
  Cursor mapping when orchestrator invokes Task: `cheap` → pass `model: "fast"` if the tool accepts it; `standard`/`strong` → **do not** pass `fast` (rely on agent frontmatter pin / inherit).
@@ -114,6 +121,8 @@ Cursor mapping when orchestrator invokes Task: `cheap` → pass `model: "fast"`
114
121
  | `bugfix`, `review-only`, `ci-fix` | `[]` |
115
122
  | `spike` | `["after:solution-architect"]` |
116
123
  | `perf-audit` | `[]` |
124
+ | `mockup-review` | `[]` |
125
+ | `ux-design` | `[]` |
117
126
 
118
127
  ## Output
119
128
 
@@ -32,17 +32,19 @@ printf '%s\n' '{"status":"completed","action":"end_human_gate","activateNext":tr
32
32
 
33
33
  3. Re-read `status.json` (and the hook `followup_message`).
34
34
  4. Invoke the subagent named in `status.currentAgent` / followup — do **not** advance the pipeline a second time.
35
- 3. **Review `changes_requested`** (not a human gate): set `currentAgent` to `feature-developer` (same index / find developer in steps), `state: in_progress`, then invoke developer. Do **not** call `end_human_gate` unless `activeHumanGateEventId` is set.
36
- 4. **Other resume**: restore `pipelineIndex` / `currentAgent` from status and invoke that agent.
37
- 5. After the invoked agent completes, `chain-team-phases.sh` on `subagentStop` continues the chain when `autoChain: true`.
35
+ 3. **Review `changes_requested`** (not a human gate): if `currentAgent` is **`mockup-reviewer`**, this is the FAIL-only mockup gate — do **not** retry `feature-developer`. Read `mockup-review.md` and resume via the human-gate path (`end_human_gate` / `activateNext`). Otherwise: set `currentAgent` to `feature-developer` (same index / find developer in steps), `state: in_progress`, then invoke developer. Do **not** call `end_human_gate` unless `activeHumanGateEventId` is set.
36
+ 4. **`blocked` + `currentAgent: mockup-reviewer`** (`BLOCKED_MCP`): skip-forward via the same `end_human_gate`/`activateNext` path (explicit «proceed without MCP»). Do not invent DS claims.
37
+ 5. **Other resume**: restore `pipelineIndex` / `currentAgent` from status and invoke that agent.
38
+ 6. After the invoked agent completes, `chain-team-phases.sh` on `subagentStop` continues the chain when `autoChain: true`.
38
39
 
39
40
  ## Artifacts for handoff
40
41
 
41
42
  | Agent | Read |
42
43
  |-------|------|
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
+ | feature-developer | brief.md (incl. **Related specs**), decomposition.md, ux-design.md (if present), mockup-review.md (if present), validation-report.md (if retry), review.md (if retry), architecture.md; if `docs/specs/INDEX.md` exists → load **`product-specs`** |
44
45
  | build-verifier | git diff, decomposition.md |
45
46
  | code-reviewer | brief.md, validation-report.md, git diff |
47
+ | mockup-reviewer | mockup-review.md |
46
48
  | qa-tester | brief.md, decomposition.md, scope from pipeline step |
47
49
 
48
50
  ## Product specs (docs/specs)
@@ -22,6 +22,8 @@ Examples:
22
22
  - `/task Write a changelog for the filters release`
23
23
  - `/task Review my changes in store/orders`
24
24
  - `/task Write e2e for the payment scenario`
25
+ - `/task Review mockup https://figma.com/design/...`
26
+ - `/task Design UX flows for Order History` (no Figma)
25
27
 
26
28
  ## Algorithm
27
29
 
@@ -135,6 +135,7 @@ const DEFAULT_ARTIFACT_OUTPUT_IDS = {
135
135
  'security-reviewer': 'security-review',
136
136
  'accessibility-reviewer': 'a11y-review',
137
137
  'performance-auditor': 'perf-report',
138
+ 'mockup-reviewer': 'mockup-review',
138
139
  'api-contract-reviewer': 'api-contract-review',
139
140
  'tech-writer': 'documentation',
140
141
  };
@@ -313,6 +314,8 @@ const AGENT_HANDOFF = {
313
314
  `Invoke accessibility-reviewer (readonly) for slug "${s}". Review UI diff; write a11y-review.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
314
315
  'performance-auditor': (s) =>
315
316
  `Invoke performance-auditor (readonly) for slug "${s}". Write perf-report.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
317
+ 'mockup-reviewer': (s) =>
318
+ `Invoke mockup-reviewer (readonly) for slug "${s}". Write mockup-review.md. Load requestable mockup-review skill/rule. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
316
319
  'code-reviewer': (s) =>
317
320
  `Invoke code-reviewer subagent (readonly) for slug "${s}". Review git diff vs brief.md per code-review-mr.mdc. ` +
318
321
  `Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
@@ -600,6 +603,18 @@ if (currentStep?.parallel && stepAgents.length > 1) {
600
603
  }
601
604
 
602
605
  const retryReviewer = stepAgents.find((agent) => outcomes[agent]?.outcome === 'changes_requested');
606
+ if (retryReviewer === 'mockup-reviewer') {
607
+ beginHumanGate();
608
+ writeStatus({
609
+ awaitingHumanGate: true,
610
+ state: 'awaiting_approval',
611
+ currentAgent: 'mockup-reviewer',
612
+ parallelCompleted: [],
613
+ parallelOutcomes: {},
614
+ });
615
+ out(`Mockup review FAIL for slug "${slug}". Read mockup-review.md. Resume only via /task-continue. Do not retry feature-developer.`);
616
+ process.exit(0);
617
+ }
603
618
  if (retryReviewer) {
604
619
  const retryAfterFixStepIndex = idx;
605
620
  const predecessor = outcomes[retryReviewer]
@@ -632,6 +647,17 @@ if (status.state === 'blocked') {
632
647
  process.exit(0);
633
648
  }
634
649
 
650
+ if (status.state === 'changes_requested' && (completedAgent === 'mockup-reviewer' || status.currentAgent === 'mockup-reviewer')) {
651
+ beginHumanGate();
652
+ writeStatus({
653
+ awaitingHumanGate: true,
654
+ state: 'awaiting_approval',
655
+ currentAgent: 'mockup-reviewer',
656
+ });
657
+ out(`Mockup review FAIL for slug "${slug}". Read mockup-review.md. Resume only via /task-continue. Do not retry feature-developer.`);
658
+ process.exit(0);
659
+ }
660
+
635
661
  if (status.state === 'changes_requested') {
636
662
  const reviewer = status.currentAgent || finishedAttempt?.entry?.agent;
637
663
  if (!reviewer) {
@@ -21,7 +21,7 @@ Special Cursor Rule format:
21
21
 
22
22
  - **`alwaysApply: true`** (Cursor) / **without `paths:`** (Claude) — base invariants only (**3**):
23
23
  - `nuxt-app-core`, `package-manager`, `code-quality-and-refactoring`
24
- - **On-demand / requestable** — `post-change-lint` (**required after code edits**, not always-on), `agent-team-intake` (via orchestrator/commands), `agent-team-orchestrator`, architecture, imports, UI, tests, feature-delivery-workflow, `design-guidance`, `anti-sycophancy-discipline`, `vue-nuxt-anti-hallucination`, reference-features, product-specs, product-specs-authoring, nuxt-pages-routing, `security-nuxt`, vue-a11y-coding, `technical-retro`
24
+ - **On-demand / requestable** — `post-change-lint` (**required after code edits**, not always-on), `agent-team-intake` (via orchestrator/commands), `agent-team-orchestrator`, architecture, imports, UI, tests, feature-delivery-workflow, `design-guidance`, `anti-sycophancy-discipline`, `vue-nuxt-anti-hallucination`, reference-features, product-specs, product-specs-authoring, nuxt-pages-routing, `security-nuxt`, vue-a11y-coding, `technical-retro`, `mockup-review`, `ux-design`
25
25
  - **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`
26
26
  - **Skills** — long procedures (`feature-delivery`, `code-review`, …)
27
27
 
@@ -42,6 +42,8 @@ SoT prose: `packages/ai-rules/presets/_shared/core/**` (see `_shared/README.md`)
42
42
  | `architecture/product-specs-authoring.md` | `product-specs-authoring.mdc` | Generate/Bootstrap contract; requestable |
43
43
  | `review/code-review-mr.md` | `code-review-mr.mdc` | Nuxt checklist refs |
44
44
  | `review/technical-retro.md` | `technical-retro.mdc` | thin alias |
45
+ | `review/mockup-review.md` | `mockup-review.mdc` | Stack notes breakpoints; requestable |
46
+ | `review/ux-design.md` | `ux-design.mdc` | Stack notes form-factor; requestable |
45
47
  | `meta/preset-*.md` | `preset-*.mdc` | author-only globs |
46
48
 
47
49
  Claude twins + Cursor→Claude map: `presets/claude/nuxt/rules/README.md`.
@@ -28,7 +28,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
28
28
  | Agent | App / prod writes | Typical intent |
29
29
  |-------|-------------------|----------------|
30
30
  | `task-router` | no (team only) | Every `/task` — writes `pipeline.json` |
31
- | `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration |
31
+ | `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration, ux-design |
32
32
  | `solution-architect` | no (team only) | spike, complex cross-layer feature |
33
33
  | `migration-specialist` | no (team only) | migration — phased upgrade plan |
34
34
  | `api-contract-reviewer` | no (team only) | new/changed backend API contracts |
@@ -38,6 +38,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
38
38
  | `build-verifier` | no (team only) | lint/typecheck/unit gate after developer; preset-structure when editing presets |
39
39
  | `accessibility-reviewer` | no (team only) | a11y, UI-heavy feature |
40
40
  | `performance-auditor` | no (team only) | perf-audit, perf-sensitive feature |
41
+ | `mockup-reviewer` | no (team only) | mockup-review, feature/refactor/spike/spec-gen with `figma.com` |
41
42
  | `code-reviewer` | no (team only) | most pipelines, review-only |
42
43
  | `security-reviewer` | no (team only) | auth, forms, sensitive data |
43
44
  | `qa-tester` | tests only | feature, bugfix, test-only |
@@ -53,6 +54,8 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
53
54
 
54
55
  Full prompts: `.cursor/agents/*.md`. Artifact conventions: `.cursor/team/README.md`; schema SoT: **agent-artifact-contracts**.
55
56
 
57
+ **Behavioral UX:** `task-analyst` loads requestable skill `ux-design` for standalone intent `ux-design` and embedded required-signal / advisory UI AC. No `ux-designer` agent in v1.
58
+
56
59
  **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.
57
60
 
58
61
  When editing `packages/ai-rules/presets/**`, follow **`preset-pr-checklist.mdc`** (+ twin-sync / layering / token-budget / leakage meta-rules).
@@ -147,8 +150,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
147
150
  2. Read `pipeline.json` before every subagent invocation.
148
151
  3. One role per Task call — **except** parallel steps: multiple Task calls in one message.
149
152
  4. **Never** skip `humanGates` without `/task-continue` or explicit user approval.
150
- 5. Persist handoffs to disk and update the producer-owned terminal receipt in `artifact-manifest.json`; Markdown remains detailed evidence.
151
- 6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer.
153
+ 5. Persist handoffs to disk (including `mockup-review.md` and `ux-design.md` when those producers ran) and update the producer-owned terminal receipt in `artifact-manifest.json`; Markdown remains detailed evidence.
154
+ 6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer. Exception: embedded `mockup-reviewer` FAIL → `awaiting_approval` / `/task-continue` only — do **not** retry `feature-developer`.
152
155
  7. On `validation_failed` from `build-verifier`: hook sets `retryAfterFix: build-verifier` → developer → build-verifier.
153
156
  8. When all steps complete, suggest `/technical-retro <slug>`.
154
157
  9. If `autoChain: false` in pipeline, do not rely on hook — manual step only.
@@ -9,6 +9,8 @@ alwaysApply: false
9
9
 
10
10
  ## Stack notes
11
11
 
12
+ When the prompt or `brief.md` contains a `figma.com` URL, **mockup review** (`mockup-reviewer` / skill `mockup-review`) must complete — or the user must continue past FAIL/`BLOCKED_MCP` via `/task-continue` — **before UI implementation**. Non-UI tasks no-op this gate. When required-signal and **no** `figma.com`, **`ux-design.md`** (on the analysis manifest entry) must exist and not be `INCOMPLETE` before UI work — else **blocked**, hand back to `task-analyst`. Parallel to the mockup gate.
13
+
12
14
  Typical feature with backend data and shared state. Layer details — `architecture-boundaries.mdc`, `nuxt-app-core.mdc`.
13
15
 
14
16
  ## Checklist (work order)
@@ -0,0 +1,116 @@
1
+ ---
2
+ description: Figma mockup review checklist (DS, coverage, viewports). On-demand — load via mockup-reviewer / skill mockup-review.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ <!-- shared-core: review/mockup-review.md -->
7
+
8
+ # Mockup review checklist
9
+
10
+ On-demand reviewer checklist for Figma mockups. **Procedure:** skill `mockup-review`. **Agent:** `mockup-reviewer`. Do not inline this checklist into the agent prompt.
11
+
12
+ Stack-agnostic: no app-source globs, Playwright, or `xcodebuild`. Breakpoint **examples** live in adapter **Stack notes** only — do not FAIL on exact pixels.
13
+
14
+ ## When to load
15
+
16
+ - Pipeline step `mockup-reviewer` (standalone intent `mockup-review` or embedded after analyst)
17
+ - Prompt or `brief.md` contains a `figma.com` URL on a UI-capable stack
18
+ - User asks to review a mockup / Figma file (not a code MR)
19
+
20
+ ## Inputs
21
+
22
+ 1. Task `artifact-manifest.json`, then prompt Figma URL(s); `brief.md` / `decomposition.md` when present
23
+ 2. Skill `mockup-review` + this rule
24
+ 3. If plugin skills `figma-use` / `figma-design-to-code` are installed: **reference** them for URL parse and MCP invocation only — do not copy their bodies; do not run design-to-code
25
+
26
+ ## MCP-first
27
+
28
+ Required when MCP is up: `get_metadata`, `get_design_context`, `search_design_system`, `get_variable_defs`, `get_screenshot`. Optional: `get_libraries`, `get_code_connect_map`.
29
+
30
+ **Forbidden:** `use_figma`, `create_new_file`, `generate_*`, `weave_*`, `upload_assets`, `send_code_connect_mappings`. FigJam URL → `BLOCKED_MCP` / out of scope (do not call `get_figjam` unless the URL is a FigJam board — then still `BLOCKED_MCP`).
31
+
32
+ Cite `fileKey` + node IDs. Screenshots are supporting evidence, not a second reviewer. No screenshot-only path.
33
+
34
+ **Node caps:** ≤12 screen-level frames; `get_metadata` depth ≤3 named-frame levels; ≤3 screenshots (prefer one per small/medium/large). `search_design_system` once; `get_variable_defs` once per file. No node-id on URL: pick top-level frames matching the feature name; if still unbounded → `BLOCKED_MCP` (or `PASS_WITH_NOTES` only if MCP returned a tiny file) — do not dump the whole file.
35
+
36
+ **Degradation:** MCP unavailable or OAuth fail → verdict `BLOCKED_MCP`. Do **not** invent DS compliance claims.
37
+
38
+ ## Review dimensions
39
+
40
+ ### DS components (AC-4)
41
+
42
+ When an attached library is detectable (`search_design_system` / `get_metadata`): list **library component instances vs custom frames** with file/node references. Flag substitutions where a DS equivalent exists.
43
+
44
+ - Critical DS reimplementation (custom frame where an attached-library component exists) → **FAIL**
45
+ - One-off frame, no DS equivalent; mixed/unpublished library → WARN or notes (`PASS_WITH_NOTES`)
46
+ - No attached library detectable → notes only; do not invent DS claims (`PASS_WITH_NOTES`)
47
+
48
+ Confidence: `high` (MCP library match) / `low` (unpublished or mixed) — prefer `PASS_WITH_NOTES` over FAIL when confidence is low.
49
+
50
+ ### Tokens (AC-5)
51
+
52
+ When variables/styles are available (`get_variable_defs`, style metadata): flag fills, strokes, spacing, or typography that use raw values instead of bound variables/styles.
53
+
54
+ - Isolated unbound values → **WARN** (`PASS_WITH_NOTES`)
55
+ - Wholesale token ignore on a library-attached file (systemic; treat as critical DS with AC-4) → **FAIL**
56
+
57
+ ### Quality (AC-6)
58
+
59
+ Cover at minimum, each item PASS / WARN / FAIL eligible:
60
+
61
+ - Layer/frame naming hygiene
62
+ - Auto-layout vs absolute positioning for responsive regions
63
+ - Text style usage
64
+ - Component variant/property correctness
65
+ - Detached or orphaned component instances
66
+
67
+ Naming hygiene, minor detached instances, text-style drift → **WARN**. Detached **core** DS component that is a substitution → **FAIL** (same as AC-4 critical). Absolute layout on a region that is the only «responsive» evidence → WARN unless it also fails viewports.
68
+
69
+ ### Feature coverage (AC-7)
70
+
71
+ Map **flows → screens/frames**, **actions → interactive elements**, and **states** (empty, loading, error, success, disabled/validation). List explicit **missing** items. Label scope **`inferred`** when only a URL is provided (no brief AC).
72
+
73
+ - Missing **core** flow or primary action from brief AC (or labeled `inferred` primary flow from the URL) → **FAIL**
74
+ - Missing empty/loading/error/success on a form/list called out in AC → **FAIL**
75
+ - Missing secondary states (disabled/validation) not in AC → **WARN**
76
+
77
+ ### Viewports (AC-8)
78
+
79
+ Verify **≥3 viewport representations** (small / medium / large) via dedicated frames, Figma viewport presets, or responsive component variants.
80
+
81
+ - Fewer than 3 → **FAIL**
82
+ - 3 exist but sizes ≠ stack example buckets → **WARN** only (no exact pixel enforcement in core)
83
+
84
+ ## Severity (v1)
85
+
86
+ Isolated **WARN** never blocks. Overall verdict = worst FAIL > BLOCKED_MCP > PASS_WITH_NOTES > PASS. Multiple WARNs without FAIL → `PASS_WITH_NOTES`, not FAIL.
87
+
88
+ ## Report headings
89
+
90
+ Write `mockup-review.md` with these headings (must match the agent template):
91
+
92
+ ```markdown
93
+ # Mockup review: <slug>
94
+
95
+ ## Verdict
96
+ PASS | PASS_WITH_NOTES | FAIL | BLOCKED_MCP
97
+
98
+ ## Scope
99
+ - Figma fileKey / node IDs
100
+ - MCP: available | unavailable (reason)
101
+ - Feature scope source: brief AC | prompt | inferred
102
+
103
+ ## Critical (must fix)
104
+ ## Warnings (should fix)
105
+ ## Suggestions
106
+ ## DS compliance (AC-4, AC-5)
107
+ ## Quality (AC-6)
108
+ ## Feature coverage (AC-7)
109
+ ## Viewport matrix (AC-8)
110
+ ## AC coverage
111
+ | Criterion | Status | Notes |
112
+ ```
113
+
114
+ ## Stack notes
115
+
116
+ Illustrative web buckets (not enforced pixels): ~375 / ~768 / ~1280 mapped to small / medium / large.
@@ -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,108 @@
1
+ ---
2
+ description: Behavioral UX design checklist (IA, flows, states). On-demand — load via task-analyst / skill ux-design.
3
+ alwaysApply: false
4
+ ---
5
+
6
+ <!-- shared-core: review/ux-design.md -->
7
+
8
+ # UX design checklist
9
+
10
+ On-demand behavioral UX checklist (IA, named flows, state matrix). **Procedure:** skill `ux-design`. **Producer:** `task-analyst` (not a pipeline agent). Do not inline this checklist into the analyst prompt.
11
+
12
+ Stack-agnostic: no app-source globs, Playwright, or `xcodebuild`. Form-factor **examples** live in adapter **Stack notes** only.
13
+
14
+ ## When to load
15
+
16
+ - Standalone `/task` intent `ux-design` (modes `synthesize` | `review`; profile `light`; steps only `task-analyst`)
17
+ - Embedded on a UI-capable stack when **required-signal** or advisory UI AC fires on `feature` / `refactor` / `spike` / `spec-gen`
18
+ - Required-signal (any one): the user asked for UX, **or** AC explicitly require flows/states, **or** intent is `spec-gen` / `/spec-start` for a **page/feature**. Else **advisory** (notes only; skip if no UI surface)
19
+ - **Do not** load for backend-only AC even on a UI stack. Classify `mockup-review` (Figma) before `ux-design` before `review-only`
20
+
21
+ ## Inputs
22
+
23
+ 1. Task `artifact-manifest.json`, then prompt / `brief.md` / `decomposition.md` when present
24
+ 2. Skill `ux-design` + this rule
25
+ 3. Approved `docs/specs` only as product-behavior SoT **after** UX synthesis maps via Spec feed — do not write INDEX here
26
+
27
+ ## Forbidden Figma MCP
28
+
29
+ Do **not** call Figma MCP. Only `mockup-reviewer` reads Figma. Forbidden by name: `get_metadata`, `get_design_context`, `get_screenshot`, `search_design_system`, `get_variable_defs`, `use_figma`, `create_new_file`, `generate_*`.
30
+
31
+ When `figma.com` is present and required-signal fires, emit a **thin** `ux-design.md` from AC only (IA/flows the mockup must cover; no visual or DS claims). If the user only pasted a URL and AC are visual, the UX file may be omitted; `mockup-review.md` coverage stands.
32
+
33
+ Do **not** write BMAD-style `DESIGN.md` or a second visual spine. One experience artifact: `ux-design.md`.
34
+
35
+ ## Modes
36
+
37
+ | Mode | When |
38
+ |------|------|
39
+ | `synthesize` | Design UX from a brief/AC (standalone «разработай UX» / embedded required-signal) | <!-- i18n-keep: E4 -->
40
+ | `review` | Critique a brief/wireframe/description **without** Figma («ревью UX»). Figma + review-not-implement remains intent `mockup-review` | <!-- i18n-keep: E4 -->
41
+
42
+ ## Required vs advisory
43
+
44
+ - **Required** when required-signal fires (user-asked-ux / ac-requires-flows-states / spec-gen-page-feature)
45
+ - **Advisory** otherwise (UI AC without those signals). Advisory `INCOMPLETE` → notes only; DoR may complete
46
+ - Skip the skill when there is no UI surface or the prompt is empty of UX-relevant AC
47
+
48
+ ## Verdicts
49
+
50
+ `PASS` | `PASS_WITH_NOTES` | `INCOMPLETE`. Never copy the mockup FAIL-only hook (`changes_requested` + do-not-retry-developer). Incomplete UX is an analyst/DoR problem.
51
+
52
+ | Verdict | Required step | Advisory step | Standalone intent `ux-design` |
53
+ |---------|---------------|---------------|-------------------------------|
54
+ | `PASS` / `PASS_WITH_NOTES` | Analysis may complete DoR | Analysis may complete | `completed` |
55
+ | `INCOMPLETE` | DoR **not** met: `open_questions` / blocked analysis; existing `after:task-analyst` gate | Notes only; DoR may complete | `completed` (report-only) |
56
+
57
+ **Block (`INCOMPLETE` as DoR failure) only when the step was required and primary flows *or* the empty/error/loading matrix are missing.** Isolated missing microcopy or optional protagonist names never block.
58
+
59
+ ## Surface-closure
60
+
61
+ Each stated need → a surface; each surface → a flow that lands there. If closure fails, list probes under **Open probes** — **do not invent** screens, flows, or copy to fill gaps.
62
+
63
+ ## Spec feed
64
+
65
+ Analyst remains the **only** writer of `docs/specs` INDEX and page/feature files. Map `ux-design.md` → templates **after** UX synthesis (UX before `spec-authoring` author mode):
66
+
67
+ | `ux-design.md` heading | Page template | Feature template |
68
+ |------------------------|---------------|------------------|
69
+ | Scope + IA | **Overview** | **Overview** |
70
+ | Entry / actors | **Entry / actors** | — (page-level) |
71
+ | Primary flows | **Primary flows** | **Shared behavior / constraints** when a flow is cross-page |
72
+ | States | **States** (loading/empty/error/success) | **Cross-cutting states** when shared |
73
+ | Interaction notes + microcopy direction | Inform **Acceptance criteria**; leftover → **Edge cases** | Shared constraints |
74
+ | Accessibility floor (behavioral) | Testable AC without pixels; else Edge cases | Shared constraints |
75
+ | Surface-closure probes | Analyst `open_questions` — **do not** invent spec rows | Same |
76
+
77
+ ## Manifest
78
+
79
+ When produced, append `ux-design.md` to the **`analysis`** entry `authoritativePaths` and `evidencePaths`. Do **not** add a new default producer row for v1 (`ux-designer` is deferred).
80
+
81
+ ## Report headings
82
+
83
+ Write `ux-design.md` with these headings (must match the architecture artifact contract):
84
+
85
+ ```markdown
86
+ # UX design: <slug>
87
+ ## Mode
88
+ synthesize | review
89
+ ## Verdict
90
+ PASS | PASS_WITH_NOTES | INCOMPLETE
91
+ ## Scope
92
+ - Form factor: web | ios | android | mixed
93
+ - Figma present: yes | no
94
+ - Required-signal: user-asked-ux | ac-requires-flows-states | spec-gen-page-feature | advisory
95
+ ## Information architecture
96
+ ## Entry / actors
97
+ ## Primary flows
98
+ ## States
99
+ ## Interaction notes
100
+ ## Microcopy direction
101
+ ## Accessibility floor (behavioral)
102
+ ## Spec feed
103
+ ## Open probes
104
+ ```
105
+
106
+ ## Stack notes
107
+
108
+ Form-factor **web**: browser chrome, responsive layout, pointer + keyboard. Do not FAIL on exact pixels; name surfaces (page, modal, drawer) as in the product.
@@ -5,6 +5,8 @@ Project skills for Cursor. They keep long workflows out of always-on rules while
5
5
  | Skill | When to use |
6
6
  |-------|-------------|
7
7
  | `feature-delivery` | End-to-end feature work across types, API, store, UI, tests |
8
+ | `mockup-review` | Figma mockup review: DS, coverage, viewports (standalone or embedded) |
9
+ | `ux-design` | Behavioral UX synthesis/review via task-analyst (standalone or embedded; no Figma MCP) |
8
10
  | `code-review` | MR/diff review using project architecture and test standards |
9
11
  | `debug-investigation` | Reproducing and fixing bugs with root-cause evidence |
10
12
  | `ci-investigation` | Diagnosing and fixing failing CI checks on PRs/branches |
@@ -11,6 +11,9 @@ description: Delivers Nuxt 3 frontend features end-to-end across domain types, A
11
11
  4. Add or update focused tests for changed behavior.
12
12
  5. Validation from repository root: **invoke** **`post-change-lint.mdc`** after code edits (requestable, not always-on — but **must** when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
13
13
 
14
+ - 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`.
15
+ - 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.
16
+
14
17
  ## Scope discipline
15
18
 
16
19
  Implement only the current AC / decomposition task. Clarify ambiguity before coding; do not add unrelated hardening, polish, or 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,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.
@@ -25,7 +25,7 @@
25
25
  "id": "analysis",
26
26
  "producer": "task-analyst",
27
27
  "status": "completed",
28
- "authoritativePaths": ["brief.md", "decomposition.md"],
28
+ "authoritativePaths": ["brief.md", "decomposition.md", "ux-design.md"],
29
29
  "acceptanceCriteriaIds": ["AC-1", "AC-2"],
30
30
  "taskIds": ["T1", "T2"],
31
31
  "timestamps": {
@@ -36,7 +36,7 @@
36
36
  "receipt": {
37
37
  "outcome": "completed",
38
38
  "summary": "The acceptance criteria and implementation tasks are ready.",
39
- "evidencePaths": ["brief.md", "decomposition.md"]
39
+ "evidencePaths": ["brief.md", "decomposition.md", "ux-design.md"]
40
40
  }
41
41
  },
42
42
  {
@@ -56,6 +56,24 @@
56
56
  "summary": "Implementation and focused unit coverage are complete.",
57
57
  "evidencePaths": ["implementation.md"]
58
58
  }
59
+ },
60
+ {
61
+ "id": "mockup-review",
62
+ "producer": "mockup-reviewer",
63
+ "status": "completed",
64
+ "authoritativePaths": ["mockup-review.md"],
65
+ "acceptanceCriteriaIds": ["AC-4", "AC-5", "AC-6", "AC-7", "AC-8"],
66
+ "taskIds": [],
67
+ "timestamps": {
68
+ "createdAt": "2026-07-31T12:05:30.000Z",
69
+ "updatedAt": "2026-07-31T12:05:45.000Z",
70
+ "completedAt": "2026-07-31T12:05:45.000Z"
71
+ },
72
+ "receipt": {
73
+ "outcome": "completed",
74
+ "summary": "Mockup review completed with verdict PASS_WITH_NOTES.",
75
+ "evidencePaths": ["mockup-review.md"]
76
+ }
59
77
  }
60
78
  ]
61
79
  }
@@ -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
+ }