@bonesofspring/ai-rules 0.2.18 → 0.2.20

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 (697) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +5 -3
  3. package/bin/cli.js +111 -4
  4. package/package.json +6 -3
  5. package/presets/_shared/README.md +3 -3
  6. package/presets/_shared/assets/docs-specs/schemas/frontmatter-v1.schema.json +1 -1
  7. package/presets/_shared/core/agent-team/agent-artifact-contracts.md +38 -0
  8. package/presets/_shared/core/agent-team/agent-team-orchestrator.md +1 -0
  9. package/presets/_shared/core/agent-team/task-classification.md +21 -0
  10. package/presets/_shared/core/architecture/feature-delivery-workflow.md +2 -1
  11. package/presets/_shared/core/architecture/product-specs-authoring.md +6 -3
  12. package/presets/_shared/core/architecture/product-specs.md +8 -3
  13. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +1 -0
  14. package/presets/_shared/core/quality/anti-sycophancy-discipline.md +1 -1
  15. package/presets/_shared/core/quality/code-quality-and-refactoring.md +1 -1
  16. package/presets/_shared/core/quality/debug-investigation.md +24 -0
  17. package/presets/_shared/core/quality/mcp-usage.md +84 -0
  18. package/presets/_shared/core/quality/verification-before-completion.md +25 -0
  19. package/presets/_shared/core/review/receiving-code-review.md +24 -0
  20. package/presets/claude/android-kotlin/MCP.md +20 -1
  21. package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +6 -0
  22. package/presets/claude/android-kotlin/agents/build-verifier.md +6 -0
  23. package/presets/claude/android-kotlin/agents/ci-investigator.md +9 -0
  24. package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -0
  25. package/presets/claude/android-kotlin/agents/debugger.md +13 -0
  26. package/presets/claude/android-kotlin/agents/feature-developer.md +30 -0
  27. package/presets/claude/android-kotlin/agents/migration-specialist.md +6 -0
  28. package/presets/claude/android-kotlin/agents/performance-auditor.md +6 -0
  29. package/presets/claude/android-kotlin/agents/solution-architect.md +6 -0
  30. package/presets/claude/android-kotlin/agents/task-analyst.md +27 -0
  31. package/presets/claude/android-kotlin/agents/task-router.md +20 -0
  32. package/presets/claude/android-kotlin/commands/spec-start.md +1 -1
  33. package/presets/claude/android-kotlin/mcp.json +1 -1
  34. package/presets/claude/android-kotlin/rules/README.md +1 -0
  35. package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +3 -1
  36. package/presets/claude/android-kotlin/rules/architecture/product-specs-authoring.md +6 -4
  37. package/presets/claude/android-kotlin/rules/architecture/product-specs.md +8 -4
  38. package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  39. package/presets/claude/android-kotlin/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  40. package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +1 -1
  41. package/presets/claude/android-kotlin/rules/tooling-and-review/mcp-usage.md +100 -0
  42. package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +2 -0
  43. package/presets/claude/android-kotlin/skills/README.md +2 -0
  44. package/presets/claude/android-kotlin/skills/ci-investigation/SKILL.md +8 -0
  45. package/presets/claude/android-kotlin/skills/code-review/SKILL.md +6 -0
  46. package/presets/claude/android-kotlin/skills/debug-investigation/SKILL.md +40 -4
  47. package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +6 -0
  48. package/presets/claude/android-kotlin/skills/spec-discovery/SKILL.md +58 -0
  49. package/presets/claude/android-kotlin/team/README.md +8 -0
  50. package/presets/claude/android-kotlin/team/fixtures/feature-full.json +1 -0
  51. package/presets/claude/android-kotlin/team/fixtures/memlog.example.md +9 -0
  52. package/presets/claude/go/MCP.md +22 -1
  53. package/presets/claude/go/agents/build-verifier.md +6 -0
  54. package/presets/claude/go/agents/ci-investigator.md +9 -0
  55. package/presets/claude/go/agents/code-reviewer.md +2 -0
  56. package/presets/claude/go/agents/debugger.md +15 -0
  57. package/presets/claude/go/agents/feature-developer.md +30 -0
  58. package/presets/claude/go/agents/migration-specialist.md +6 -0
  59. package/presets/claude/go/agents/performance-auditor.md +6 -0
  60. package/presets/claude/go/agents/solution-architect.md +6 -0
  61. package/presets/claude/go/agents/task-analyst.md +27 -0
  62. package/presets/claude/go/agents/task-router.md +20 -0
  63. package/presets/claude/go/commands/feature-continue.md +11 -40
  64. package/presets/claude/go/commands/spec-start.md +1 -1
  65. package/presets/claude/go/mcp.json +1 -1
  66. package/presets/claude/go/rules/README.md +2 -1
  67. package/presets/claude/go/rules/architecture/feature-delivery.md +2 -1
  68. package/presets/claude/go/rules/architecture/product-specs-authoring.md +6 -4
  69. package/presets/claude/go/rules/architecture/product-specs.md +8 -4
  70. package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  71. package/presets/claude/go/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  72. package/presets/claude/go/rules/tooling-and-review/code-quality.md +1 -1
  73. package/presets/claude/go/rules/tooling-and-review/mcp-usage.md +99 -0
  74. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  75. package/presets/claude/go/skills/README.md +1 -1
  76. package/presets/claude/go/skills/ci-investigation/SKILL.md +7 -0
  77. package/presets/claude/go/skills/code-review/SKILL.md +7 -0
  78. package/presets/claude/go/skills/debug-investigation/SKILL.md +38 -2
  79. package/presets/claude/go/skills/feature-delivery/SKILL.md +7 -1
  80. package/presets/claude/go/skills/spec-discovery/SKILL.md +58 -0
  81. package/presets/claude/go/team/README.md +8 -0
  82. package/presets/claude/go/team/fixtures/feature-full.json +46 -10
  83. package/presets/claude/go/team/fixtures/memlog.example.md +9 -0
  84. package/presets/claude/ios-swift/MCP.md +20 -1
  85. package/presets/claude/ios-swift/agents/accessibility-reviewer.md +7 -10
  86. package/presets/claude/ios-swift/agents/api-contract-reviewer.md +2 -11
  87. package/presets/claude/ios-swift/agents/build-verifier.md +6 -0
  88. package/presets/claude/ios-swift/agents/ci-investigator.md +11 -11
  89. package/presets/claude/ios-swift/agents/code-reviewer.md +2 -0
  90. package/presets/claude/ios-swift/agents/debugger.md +15 -11
  91. package/presets/claude/ios-swift/agents/feature-developer.md +30 -0
  92. package/presets/claude/ios-swift/agents/migration-specialist.md +8 -11
  93. package/presets/claude/ios-swift/agents/performance-auditor.md +8 -11
  94. package/presets/claude/ios-swift/agents/qa-tester.md +2 -11
  95. package/presets/claude/ios-swift/agents/security-reviewer.md +2 -11
  96. package/presets/claude/ios-swift/agents/solution-architect.md +6 -0
  97. package/presets/claude/ios-swift/agents/task-analyst.md +27 -0
  98. package/presets/claude/ios-swift/agents/task-router.md +20 -0
  99. package/presets/claude/ios-swift/agents/unit-test-generator.md +2 -11
  100. package/presets/claude/ios-swift/agents/unit-test-healer.md +2 -11
  101. package/presets/claude/ios-swift/agents/unit-test-planner.md +2 -11
  102. package/presets/claude/ios-swift/agents/xcuitest-test-generator.md +1 -11
  103. package/presets/claude/ios-swift/agents/xcuitest-test-healer.md +1 -11
  104. package/presets/claude/ios-swift/agents/xcuitest-test-planner.md +1 -13
  105. package/presets/claude/ios-swift/commands/spec-start.md +1 -1
  106. package/presets/claude/ios-swift/mcp.json +1 -1
  107. package/presets/claude/ios-swift/rules/README.md +3 -1
  108. package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +2 -1
  109. package/presets/claude/ios-swift/rules/architecture/product-specs-authoring.md +6 -4
  110. package/presets/claude/ios-swift/rules/architecture/product-specs.md +8 -4
  111. package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  112. package/presets/claude/ios-swift/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  113. package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +1 -1
  114. package/presets/claude/ios-swift/rules/tooling-and-review/mcp-usage.md +100 -0
  115. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  116. package/presets/claude/ios-swift/skills/README.md +2 -0
  117. package/presets/claude/ios-swift/skills/ci-investigation/SKILL.md +8 -0
  118. package/presets/claude/ios-swift/skills/code-review/SKILL.md +7 -1
  119. package/presets/claude/ios-swift/skills/debug-investigation/SKILL.md +41 -5
  120. package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +7 -1
  121. package/presets/claude/ios-swift/skills/spec-discovery/SKILL.md +58 -0
  122. package/presets/claude/ios-swift/team/README.md +8 -0
  123. package/presets/claude/ios-swift/team/fixtures/feature-full.json +39 -9
  124. package/presets/claude/ios-swift/team/fixtures/memlog.example.md +9 -0
  125. package/presets/claude/java/CLAUDE.md +1 -1
  126. package/presets/claude/java/MCP.md +21 -0
  127. package/presets/claude/java/agents/build-verifier.md +6 -0
  128. package/presets/claude/java/agents/ci-investigator.md +9 -0
  129. package/presets/claude/java/agents/code-reviewer.md +2 -0
  130. package/presets/claude/java/agents/debugger.md +15 -0
  131. package/presets/claude/java/agents/feature-developer.md +30 -0
  132. package/presets/claude/java/agents/migration-specialist.md +6 -0
  133. package/presets/claude/java/agents/performance-auditor.md +6 -0
  134. package/presets/claude/java/agents/solution-architect.md +6 -0
  135. package/presets/claude/java/agents/task-analyst.md +27 -0
  136. package/presets/claude/java/agents/task-router.md +20 -0
  137. package/presets/claude/java/commands/feature-continue.md +11 -40
  138. package/presets/claude/java/commands/spec-start.md +1 -1
  139. package/presets/claude/java/mcp.json +1 -1
  140. package/presets/claude/java/rules/README.md +1 -0
  141. package/presets/claude/java/rules/architecture/feature-delivery.md +2 -1
  142. package/presets/claude/java/rules/architecture/product-specs-authoring.md +6 -4
  143. package/presets/claude/java/rules/architecture/product-specs.md +8 -4
  144. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  145. package/presets/claude/java/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  146. package/presets/claude/java/rules/tooling-and-review/code-quality.md +1 -1
  147. package/presets/claude/java/rules/tooling-and-review/mcp-usage.md +98 -0
  148. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  149. package/presets/claude/java/skills/README.md +1 -1
  150. package/presets/claude/java/skills/ci-investigation/SKILL.md +7 -0
  151. package/presets/claude/java/skills/code-review/SKILL.md +7 -0
  152. package/presets/claude/java/skills/debug-investigation/SKILL.md +38 -2
  153. package/presets/claude/java/skills/feature-delivery/SKILL.md +7 -1
  154. package/presets/claude/java/skills/spec-discovery/SKILL.md +58 -0
  155. package/presets/claude/java/team/README.md +8 -0
  156. package/presets/claude/java/team/fixtures/feature-full.json +46 -10
  157. package/presets/claude/java/team/fixtures/memlog.example.md +9 -0
  158. package/presets/claude/mcp-ts/MCP.md +20 -1
  159. package/presets/claude/mcp-ts/agents/build-verifier.md +6 -0
  160. package/presets/claude/mcp-ts/agents/feature-developer.md +30 -0
  161. package/presets/claude/mcp-ts/agents/solution-architect.md +5 -0
  162. package/presets/claude/mcp-ts/agents/task-analyst.md +27 -0
  163. package/presets/claude/mcp-ts/agents/task-router.md +20 -0
  164. package/presets/claude/mcp-ts/commands/spec-start.md +1 -1
  165. package/presets/claude/mcp-ts/mcp.json +1 -1
  166. package/presets/claude/mcp-ts/rules/README.md +1 -0
  167. package/presets/claude/mcp-ts/rules/architecture/feature-delivery.md +3 -1
  168. package/presets/claude/mcp-ts/rules/architecture/product-specs-authoring.md +6 -4
  169. package/presets/claude/mcp-ts/rules/architecture/product-specs.md +8 -4
  170. package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  171. package/presets/claude/mcp-ts/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  172. package/presets/claude/mcp-ts/rules/tooling-and-review/code-quality.md +1 -1
  173. package/presets/claude/mcp-ts/rules/tooling-and-review/mcp-usage.md +99 -0
  174. package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  175. package/presets/claude/mcp-ts/skills/README.md +2 -0
  176. package/presets/claude/mcp-ts/skills/code-review/SKILL.md +7 -0
  177. package/presets/claude/mcp-ts/skills/debug-investigation/SKILL.md +36 -1
  178. package/presets/claude/mcp-ts/skills/feature-delivery/SKILL.md +7 -1
  179. package/presets/claude/mcp-ts/skills/spec-discovery/SKILL.md +58 -0
  180. package/presets/claude/mcp-ts/team/README.md +7 -0
  181. package/presets/claude/mcp-ts/team/fixtures/feature-full.json +5 -2
  182. package/presets/claude/mcp-ts/team/fixtures/memlog.example.md +9 -0
  183. package/presets/claude/next/MCP.md +22 -0
  184. package/presets/claude/next/agents/accessibility-reviewer.md +8 -0
  185. package/presets/claude/next/agents/build-verifier.md +6 -0
  186. package/presets/claude/next/agents/ci-investigator.md +9 -0
  187. package/presets/claude/next/agents/code-reviewer.md +2 -0
  188. package/presets/claude/next/agents/debugger.md +17 -0
  189. package/presets/claude/next/agents/feature-developer.md +32 -0
  190. package/presets/claude/next/agents/migration-specialist.md +6 -0
  191. package/presets/claude/next/agents/performance-auditor.md +8 -0
  192. package/presets/claude/next/agents/playwright-test-generator.md +11 -1
  193. package/presets/claude/next/agents/playwright-test-healer.md +8 -1
  194. package/presets/claude/next/agents/solution-architect.md +6 -0
  195. package/presets/claude/next/agents/task-analyst.md +28 -1
  196. package/presets/claude/next/agents/task-router.md +20 -0
  197. package/presets/claude/next/commands/feature-continue.md +11 -40
  198. package/presets/claude/next/commands/spec-start.md +1 -1
  199. package/presets/claude/next/mcp.json +3 -3
  200. package/presets/claude/next/rules/README.md +5 -3
  201. package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +2 -1
  202. package/presets/claude/next/rules/architecture/product-specs-authoring.md +6 -4
  203. package/presets/claude/next/rules/architecture/product-specs.md +8 -4
  204. package/presets/claude/next/rules/testing/tests-unit.md +5 -0
  205. package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  206. package/presets/claude/next/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  207. package/presets/claude/next/rules/tooling-and-review/code-quality.md +1 -1
  208. package/presets/claude/next/rules/tooling-and-review/mcp-usage.md +101 -0
  209. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  210. package/presets/claude/next/skills/README.md +2 -0
  211. package/presets/claude/next/skills/ci-investigation/SKILL.md +8 -0
  212. package/presets/claude/next/skills/code-review/SKILL.md +7 -1
  213. package/presets/claude/next/skills/debug-investigation/SKILL.md +39 -12
  214. package/presets/claude/next/skills/feature-delivery/SKILL.md +9 -1
  215. package/presets/claude/next/skills/spec-discovery/SKILL.md +58 -0
  216. package/presets/claude/next/team/README.md +11 -0
  217. package/presets/claude/next/team/fixtures/feature-full.json +43 -9
  218. package/presets/claude/next/team/fixtures/memlog.example.md +9 -0
  219. package/presets/claude/nuxt/MCP.md +22 -0
  220. package/presets/claude/nuxt/agents/accessibility-reviewer.md +8 -0
  221. package/presets/claude/nuxt/agents/build-verifier.md +6 -0
  222. package/presets/claude/nuxt/agents/ci-investigator.md +9 -0
  223. package/presets/claude/nuxt/agents/code-reviewer.md +2 -0
  224. package/presets/claude/nuxt/agents/debugger.md +17 -0
  225. package/presets/claude/nuxt/agents/feature-developer.md +32 -0
  226. package/presets/claude/nuxt/agents/migration-specialist.md +6 -0
  227. package/presets/claude/nuxt/agents/performance-auditor.md +8 -0
  228. package/presets/claude/nuxt/agents/playwright-test-generator.md +11 -1
  229. package/presets/claude/nuxt/agents/playwright-test-healer.md +8 -1
  230. package/presets/claude/nuxt/agents/solution-architect.md +6 -0
  231. package/presets/claude/nuxt/agents/task-analyst.md +28 -1
  232. package/presets/claude/nuxt/agents/task-router.md +24 -4
  233. package/presets/claude/nuxt/commands/spec-start.md +1 -1
  234. package/presets/claude/nuxt/mcp.json +3 -3
  235. package/presets/claude/nuxt/rules/README.md +2 -0
  236. package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +2 -1
  237. package/presets/claude/nuxt/rules/architecture/product-specs-authoring.md +6 -4
  238. package/presets/claude/nuxt/rules/architecture/product-specs.md +8 -4
  239. package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  240. package/presets/claude/nuxt/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  241. package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +1 -1
  242. package/presets/claude/nuxt/rules/tooling-and-review/mcp-usage.md +106 -0
  243. package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  244. package/presets/claude/nuxt/skills/README.md +2 -0
  245. package/presets/claude/nuxt/skills/ci-investigation/SKILL.md +8 -0
  246. package/presets/claude/nuxt/skills/code-review/SKILL.md +7 -1
  247. package/presets/claude/nuxt/skills/debug-investigation/SKILL.md +41 -12
  248. package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +9 -1
  249. package/presets/claude/nuxt/skills/spec-discovery/SKILL.md +58 -0
  250. package/presets/claude/nuxt/team/README.md +11 -0
  251. package/presets/claude/nuxt/team/fixtures/feature-full.json +43 -9
  252. package/presets/claude/nuxt/team/fixtures/memlog.example.md +9 -0
  253. package/presets/claude/php-hexagonal/CLAUDE.md +1 -1
  254. package/presets/claude/php-hexagonal/MCP.md +20 -1
  255. package/presets/claude/php-hexagonal/agents/build-verifier.md +6 -0
  256. package/presets/claude/php-hexagonal/agents/ci-investigator.md +9 -0
  257. package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -0
  258. package/presets/claude/php-hexagonal/agents/debugger.md +15 -0
  259. package/presets/claude/php-hexagonal/agents/feature-developer.md +30 -0
  260. package/presets/claude/php-hexagonal/agents/migration-specialist.md +6 -0
  261. package/presets/claude/php-hexagonal/agents/performance-auditor.md +6 -0
  262. package/presets/claude/php-hexagonal/agents/solution-architect.md +6 -0
  263. package/presets/claude/php-hexagonal/agents/task-analyst.md +27 -0
  264. package/presets/claude/php-hexagonal/agents/task-router.md +20 -0
  265. package/presets/claude/php-hexagonal/commands/feature-continue.md +11 -40
  266. package/presets/claude/php-hexagonal/commands/spec-start.md +1 -1
  267. package/presets/claude/php-hexagonal/mcp.json +1 -1
  268. package/presets/claude/php-hexagonal/rules/README.md +1 -0
  269. package/presets/claude/php-hexagonal/rules/architecture/feature-delivery.md +2 -1
  270. package/presets/claude/php-hexagonal/rules/architecture/product-specs-authoring.md +6 -4
  271. package/presets/claude/php-hexagonal/rules/architecture/product-specs.md +8 -4
  272. package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  273. package/presets/claude/php-hexagonal/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  274. package/presets/claude/php-hexagonal/rules/tooling-and-review/code-quality.md +1 -1
  275. package/presets/claude/php-hexagonal/rules/tooling-and-review/mcp-usage.md +98 -0
  276. package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  277. package/presets/claude/php-hexagonal/skills/README.md +1 -1
  278. package/presets/claude/php-hexagonal/skills/ci-investigation/SKILL.md +7 -0
  279. package/presets/claude/php-hexagonal/skills/code-review/SKILL.md +7 -0
  280. package/presets/claude/php-hexagonal/skills/debug-investigation/SKILL.md +38 -2
  281. package/presets/claude/php-hexagonal/skills/feature-delivery/SKILL.md +7 -1
  282. package/presets/claude/php-hexagonal/skills/spec-discovery/SKILL.md +58 -0
  283. package/presets/claude/php-hexagonal/team/README.md +8 -0
  284. package/presets/claude/php-hexagonal/team/fixtures/feature-full.json +46 -10
  285. package/presets/claude/php-hexagonal/team/fixtures/memlog.example.md +9 -0
  286. package/presets/claude/php-laravel/MCP.md +21 -0
  287. package/presets/claude/php-laravel/agents/build-verifier.md +6 -0
  288. package/presets/claude/php-laravel/agents/ci-investigator.md +9 -0
  289. package/presets/claude/php-laravel/agents/code-reviewer.md +2 -0
  290. package/presets/claude/php-laravel/agents/debugger.md +15 -0
  291. package/presets/claude/php-laravel/agents/feature-developer.md +30 -0
  292. package/presets/claude/php-laravel/agents/migration-specialist.md +6 -0
  293. package/presets/claude/php-laravel/agents/performance-auditor.md +6 -0
  294. package/presets/claude/php-laravel/agents/solution-architect.md +6 -0
  295. package/presets/claude/php-laravel/agents/task-analyst.md +27 -0
  296. package/presets/claude/php-laravel/agents/task-router.md +20 -0
  297. package/presets/claude/php-laravel/commands/feature-continue.md +11 -40
  298. package/presets/claude/php-laravel/commands/spec-start.md +1 -1
  299. package/presets/claude/php-laravel/mcp.json +1 -1
  300. package/presets/claude/php-laravel/rules/README.md +1 -0
  301. package/presets/claude/php-laravel/rules/architecture/feature-delivery.md +3 -1
  302. package/presets/claude/php-laravel/rules/architecture/product-specs-authoring.md +6 -4
  303. package/presets/claude/php-laravel/rules/architecture/product-specs.md +8 -4
  304. package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +1 -0
  305. package/presets/claude/php-laravel/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  306. package/presets/claude/php-laravel/rules/tooling-and-review/code-quality.md +1 -1
  307. package/presets/claude/php-laravel/rules/tooling-and-review/mcp-usage.md +98 -0
  308. package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  309. package/presets/claude/php-laravel/skills/README.md +1 -1
  310. package/presets/claude/php-laravel/skills/ci-investigation/SKILL.md +7 -0
  311. package/presets/claude/php-laravel/skills/code-review/SKILL.md +7 -0
  312. package/presets/claude/php-laravel/skills/debug-investigation/SKILL.md +38 -2
  313. package/presets/claude/php-laravel/skills/feature-delivery/SKILL.md +7 -1
  314. package/presets/claude/php-laravel/skills/spec-discovery/SKILL.md +58 -0
  315. package/presets/claude/php-laravel/team/README.md +7 -0
  316. package/presets/claude/php-laravel/team/fixtures/feature-full.json +38 -9
  317. package/presets/claude/php-laravel/team/fixtures/memlog.example.md +9 -0
  318. package/presets/claude/svelte/MCP.md +22 -0
  319. package/presets/claude/svelte/agents/accessibility-reviewer.md +8 -0
  320. package/presets/claude/svelte/agents/build-verifier.md +6 -0
  321. package/presets/claude/svelte/agents/ci-investigator.md +9 -0
  322. package/presets/claude/svelte/agents/code-reviewer.md +2 -0
  323. package/presets/claude/svelte/agents/debugger.md +17 -0
  324. package/presets/claude/svelte/agents/feature-developer.md +32 -0
  325. package/presets/claude/svelte/agents/migration-specialist.md +6 -0
  326. package/presets/claude/svelte/agents/performance-auditor.md +8 -0
  327. package/presets/claude/svelte/agents/playwright-test-generator.md +11 -1
  328. package/presets/claude/svelte/agents/playwright-test-healer.md +8 -1
  329. package/presets/claude/svelte/agents/solution-architect.md +6 -0
  330. package/presets/claude/svelte/agents/task-analyst.md +28 -1
  331. package/presets/claude/svelte/agents/task-router.md +20 -0
  332. package/presets/claude/svelte/commands/spec-start.md +1 -1
  333. package/presets/claude/svelte/mcp.json +3 -3
  334. package/presets/claude/svelte/rules/README.md +2 -0
  335. package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +2 -1
  336. package/presets/claude/svelte/rules/architecture/product-specs-authoring.md +6 -4
  337. package/presets/claude/svelte/rules/architecture/product-specs.md +8 -4
  338. package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +2 -1
  339. package/presets/claude/svelte/rules/tooling-and-review/anti-sycophancy-discipline.md +1 -1
  340. package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +1 -1
  341. package/presets/claude/svelte/rules/tooling-and-review/mcp-usage.md +101 -0
  342. package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -0
  343. package/presets/claude/svelte/skills/README.md +2 -0
  344. package/presets/claude/svelte/skills/ci-investigation/SKILL.md +8 -0
  345. package/presets/claude/svelte/skills/code-review/SKILL.md +7 -1
  346. package/presets/claude/svelte/skills/debug-investigation/SKILL.md +41 -12
  347. package/presets/claude/svelte/skills/feature-delivery/SKILL.md +9 -1
  348. package/presets/claude/svelte/skills/spec-discovery/SKILL.md +58 -0
  349. package/presets/claude/svelte/team/README.md +11 -0
  350. package/presets/claude/svelte/team/fixtures/feature-full.json +43 -9
  351. package/presets/claude/svelte/team/fixtures/memlog.example.md +9 -0
  352. package/presets/cursor/android-kotlin/MCP.md +20 -1
  353. package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +6 -0
  354. package/presets/cursor/android-kotlin/agents/build-verifier.md +6 -0
  355. package/presets/cursor/android-kotlin/agents/ci-investigator.md +9 -0
  356. package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -0
  357. package/presets/cursor/android-kotlin/agents/debugger.md +13 -0
  358. package/presets/cursor/android-kotlin/agents/feature-developer.md +30 -0
  359. package/presets/cursor/android-kotlin/agents/migration-specialist.md +6 -0
  360. package/presets/cursor/android-kotlin/agents/performance-auditor.md +6 -0
  361. package/presets/cursor/android-kotlin/agents/solution-architect.md +6 -0
  362. package/presets/cursor/android-kotlin/agents/task-analyst.md +27 -0
  363. package/presets/cursor/android-kotlin/agents/task-router.md +20 -0
  364. package/presets/cursor/android-kotlin/commands/spec-start.md +1 -1
  365. package/presets/cursor/android-kotlin/mcp.json +1 -1
  366. package/presets/cursor/android-kotlin/rules/README.md +2 -0
  367. package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +2 -1
  368. package/presets/cursor/android-kotlin/rules/anti-sycophancy-discipline.mdc +1 -1
  369. package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +1 -1
  370. package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +3 -1
  371. package/presets/cursor/android-kotlin/rules/mcp-usage.mdc +99 -0
  372. package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +3 -1
  373. package/presets/cursor/android-kotlin/rules/product-specs-authoring.mdc +6 -4
  374. package/presets/cursor/android-kotlin/rules/product-specs.mdc +8 -4
  375. package/presets/cursor/android-kotlin/skills/README.md +2 -0
  376. package/presets/cursor/android-kotlin/skills/ci-investigation/SKILL.md +8 -0
  377. package/presets/cursor/android-kotlin/skills/code-review/SKILL.md +6 -0
  378. package/presets/cursor/android-kotlin/skills/debug-investigation/SKILL.md +40 -4
  379. package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +6 -0
  380. package/presets/cursor/android-kotlin/skills/spec-discovery/SKILL.md +58 -0
  381. package/presets/cursor/android-kotlin/team/README.md +8 -0
  382. package/presets/cursor/android-kotlin/team/fixtures/feature-full.json +1 -0
  383. package/presets/cursor/android-kotlin/team/fixtures/memlog.example.md +9 -0
  384. package/presets/cursor/go/MCP.md +22 -1
  385. package/presets/cursor/go/agents/build-verifier.md +6 -0
  386. package/presets/cursor/go/agents/ci-investigator.md +9 -0
  387. package/presets/cursor/go/agents/code-reviewer.md +2 -0
  388. package/presets/cursor/go/agents/debugger.md +15 -0
  389. package/presets/cursor/go/agents/feature-developer.md +30 -0
  390. package/presets/cursor/go/agents/migration-specialist.md +6 -0
  391. package/presets/cursor/go/agents/performance-auditor.md +6 -0
  392. package/presets/cursor/go/agents/solution-architect.md +6 -0
  393. package/presets/cursor/go/agents/task-analyst.md +27 -0
  394. package/presets/cursor/go/agents/task-router.md +20 -0
  395. package/presets/cursor/go/commands/spec-start.md +1 -1
  396. package/presets/cursor/go/mcp.json +1 -1
  397. package/presets/cursor/go/rules/README.md +2 -1
  398. package/presets/cursor/go/rules/agent-team-orchestrator.mdc +1 -0
  399. package/presets/cursor/go/rules/anti-sycophancy-discipline.mdc +1 -1
  400. package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +1 -1
  401. package/presets/cursor/go/rules/feature-delivery-workflow.mdc +2 -1
  402. package/presets/cursor/go/rules/mcp-usage.mdc +98 -0
  403. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +1 -0
  404. package/presets/cursor/go/rules/product-specs-authoring.mdc +6 -4
  405. package/presets/cursor/go/rules/product-specs.mdc +8 -4
  406. package/presets/cursor/go/skills/README.md +1 -1
  407. package/presets/cursor/go/skills/ci-investigation/SKILL.md +7 -0
  408. package/presets/cursor/go/skills/code-review/SKILL.md +7 -0
  409. package/presets/cursor/go/skills/debug-investigation/SKILL.md +38 -2
  410. package/presets/cursor/go/skills/feature-delivery/SKILL.md +7 -1
  411. package/presets/cursor/go/skills/spec-discovery/SKILL.md +58 -0
  412. package/presets/cursor/go/team/README.md +8 -0
  413. package/presets/cursor/go/team/fixtures/feature-full.json +46 -10
  414. package/presets/cursor/go/team/fixtures/memlog.example.md +9 -0
  415. package/presets/cursor/ios-swift/MCP.md +20 -1
  416. package/presets/cursor/ios-swift/agents/accessibility-reviewer.md +7 -10
  417. package/presets/cursor/ios-swift/agents/api-contract-reviewer.md +2 -11
  418. package/presets/cursor/ios-swift/agents/build-verifier.md +6 -0
  419. package/presets/cursor/ios-swift/agents/ci-investigator.md +11 -11
  420. package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -0
  421. package/presets/cursor/ios-swift/agents/debugger.md +15 -11
  422. package/presets/cursor/ios-swift/agents/feature-developer.md +30 -0
  423. package/presets/cursor/ios-swift/agents/migration-specialist.md +8 -11
  424. package/presets/cursor/ios-swift/agents/performance-auditor.md +8 -11
  425. package/presets/cursor/ios-swift/agents/qa-tester.md +2 -11
  426. package/presets/cursor/ios-swift/agents/security-reviewer.md +2 -11
  427. package/presets/cursor/ios-swift/agents/solution-architect.md +6 -0
  428. package/presets/cursor/ios-swift/agents/task-analyst.md +27 -0
  429. package/presets/cursor/ios-swift/agents/task-router.md +20 -0
  430. package/presets/cursor/ios-swift/agents/unit-test-generator.md +2 -11
  431. package/presets/cursor/ios-swift/agents/unit-test-healer.md +2 -11
  432. package/presets/cursor/ios-swift/agents/unit-test-planner.md +2 -11
  433. package/presets/cursor/ios-swift/agents/xcuitest-test-generator.md +1 -11
  434. package/presets/cursor/ios-swift/agents/xcuitest-test-healer.md +1 -11
  435. package/presets/cursor/ios-swift/agents/xcuitest-test-planner.md +1 -13
  436. package/presets/cursor/ios-swift/commands/spec-start.md +1 -1
  437. package/presets/cursor/ios-swift/mcp.json +1 -1
  438. package/presets/cursor/ios-swift/rules/README.md +2 -0
  439. package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +2 -1
  440. package/presets/cursor/ios-swift/rules/anti-sycophancy-discipline.mdc +1 -1
  441. package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +1 -1
  442. package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +2 -1
  443. package/presets/cursor/ios-swift/rules/mcp-usage.mdc +99 -0
  444. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +1 -0
  445. package/presets/cursor/ios-swift/rules/product-specs-authoring.mdc +6 -4
  446. package/presets/cursor/ios-swift/rules/product-specs.mdc +8 -4
  447. package/presets/cursor/ios-swift/skills/README.md +2 -0
  448. package/presets/cursor/ios-swift/skills/ci-investigation/SKILL.md +8 -0
  449. package/presets/cursor/ios-swift/skills/code-review/SKILL.md +7 -1
  450. package/presets/cursor/ios-swift/skills/debug-investigation/SKILL.md +41 -5
  451. package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +7 -1
  452. package/presets/cursor/ios-swift/skills/spec-discovery/SKILL.md +58 -0
  453. package/presets/cursor/ios-swift/team/README.md +8 -0
  454. package/presets/cursor/ios-swift/team/fixtures/feature-full.json +39 -9
  455. package/presets/cursor/ios-swift/team/fixtures/memlog.example.md +9 -0
  456. package/presets/cursor/java/AGENTS.md +1 -1
  457. package/presets/cursor/java/MCP.md +20 -1
  458. package/presets/cursor/java/agents/build-verifier.md +6 -0
  459. package/presets/cursor/java/agents/ci-investigator.md +9 -0
  460. package/presets/cursor/java/agents/code-reviewer.md +2 -0
  461. package/presets/cursor/java/agents/debugger.md +15 -0
  462. package/presets/cursor/java/agents/feature-developer.md +30 -0
  463. package/presets/cursor/java/agents/migration-specialist.md +6 -0
  464. package/presets/cursor/java/agents/performance-auditor.md +6 -0
  465. package/presets/cursor/java/agents/solution-architect.md +6 -0
  466. package/presets/cursor/java/agents/task-analyst.md +27 -0
  467. package/presets/cursor/java/agents/task-router.md +20 -0
  468. package/presets/cursor/java/commands/spec-start.md +1 -1
  469. package/presets/cursor/java/mcp.json +1 -1
  470. package/presets/cursor/java/rules/README.md +2 -1
  471. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +1 -0
  472. package/presets/cursor/java/rules/anti-sycophancy-discipline.mdc +1 -1
  473. package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +1 -1
  474. package/presets/cursor/java/rules/feature-delivery-workflow.mdc +2 -1
  475. package/presets/cursor/java/rules/mcp-usage.mdc +97 -0
  476. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +1 -0
  477. package/presets/cursor/java/rules/product-specs-authoring.mdc +6 -4
  478. package/presets/cursor/java/rules/product-specs.mdc +8 -4
  479. package/presets/cursor/java/skills/README.md +1 -1
  480. package/presets/cursor/java/skills/ci-investigation/SKILL.md +7 -0
  481. package/presets/cursor/java/skills/code-review/SKILL.md +7 -0
  482. package/presets/cursor/java/skills/debug-investigation/SKILL.md +38 -2
  483. package/presets/cursor/java/skills/feature-delivery/SKILL.md +7 -1
  484. package/presets/cursor/java/skills/spec-discovery/SKILL.md +58 -0
  485. package/presets/cursor/java/team/README.md +8 -0
  486. package/presets/cursor/java/team/fixtures/feature-full.json +46 -10
  487. package/presets/cursor/java/team/fixtures/memlog.example.md +9 -0
  488. package/presets/cursor/mcp-ts/MCP.md +20 -1
  489. package/presets/cursor/mcp-ts/agents/build-verifier.md +6 -0
  490. package/presets/cursor/mcp-ts/agents/feature-developer.md +30 -0
  491. package/presets/cursor/mcp-ts/agents/solution-architect.md +5 -0
  492. package/presets/cursor/mcp-ts/agents/task-analyst.md +27 -0
  493. package/presets/cursor/mcp-ts/agents/task-router.md +20 -0
  494. package/presets/cursor/mcp-ts/commands/spec-start.md +1 -1
  495. package/presets/cursor/mcp-ts/mcp.json +1 -1
  496. package/presets/cursor/mcp-ts/rules/README.md +3 -2
  497. package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +1 -0
  498. package/presets/cursor/mcp-ts/rules/anti-sycophancy-discipline.mdc +1 -1
  499. package/presets/cursor/mcp-ts/rules/code-quality-and-refactoring.mdc +1 -1
  500. package/presets/cursor/mcp-ts/rules/feature-delivery-workflow.mdc +2 -1
  501. package/presets/cursor/mcp-ts/rules/mcp-usage.mdc +98 -0
  502. package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +1 -0
  503. package/presets/cursor/mcp-ts/rules/product-specs-authoring.mdc +6 -4
  504. package/presets/cursor/mcp-ts/rules/product-specs.mdc +8 -4
  505. package/presets/cursor/mcp-ts/skills/README.md +2 -0
  506. package/presets/cursor/mcp-ts/skills/code-review/SKILL.md +7 -0
  507. package/presets/cursor/mcp-ts/skills/debug-investigation/SKILL.md +36 -1
  508. package/presets/cursor/mcp-ts/skills/feature-delivery/SKILL.md +7 -1
  509. package/presets/cursor/mcp-ts/skills/spec-discovery/SKILL.md +58 -0
  510. package/presets/cursor/mcp-ts/team/README.md +7 -0
  511. package/presets/cursor/mcp-ts/team/fixtures/feature-full.json +5 -2
  512. package/presets/cursor/mcp-ts/team/fixtures/memlog.example.md +9 -0
  513. package/presets/cursor/next/MCP.md +21 -1
  514. package/presets/cursor/next/agents/accessibility-reviewer.md +8 -0
  515. package/presets/cursor/next/agents/build-verifier.md +6 -0
  516. package/presets/cursor/next/agents/ci-investigator.md +9 -0
  517. package/presets/cursor/next/agents/code-reviewer.md +2 -0
  518. package/presets/cursor/next/agents/debugger.md +17 -0
  519. package/presets/cursor/next/agents/feature-developer.md +32 -0
  520. package/presets/cursor/next/agents/migration-specialist.md +6 -0
  521. package/presets/cursor/next/agents/performance-auditor.md +8 -0
  522. package/presets/cursor/next/agents/playwright-test-generator.md +9 -1
  523. package/presets/cursor/next/agents/playwright-test-healer.md +9 -1
  524. package/presets/cursor/next/agents/playwright-test-planner.md +1 -1
  525. package/presets/cursor/next/agents/solution-architect.md +6 -0
  526. package/presets/cursor/next/agents/task-analyst.md +28 -1
  527. package/presets/cursor/next/agents/task-router.md +20 -0
  528. package/presets/cursor/next/commands/spec-start.md +1 -1
  529. package/presets/cursor/next/mcp.json +3 -3
  530. package/presets/cursor/next/rules/README.md +3 -2
  531. package/presets/cursor/next/rules/agent-team-orchestrator.mdc +2 -1
  532. package/presets/cursor/next/rules/anti-sycophancy-discipline.mdc +1 -1
  533. package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +1 -1
  534. package/presets/cursor/next/rules/feature-delivery-workflow.mdc +2 -1
  535. package/presets/cursor/next/rules/mcp-usage.mdc +100 -0
  536. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +1 -0
  537. package/presets/cursor/next/rules/product-specs-authoring.mdc +6 -4
  538. package/presets/cursor/next/rules/product-specs.mdc +8 -4
  539. package/presets/cursor/next/rules/tests-unit.mdc +5 -0
  540. package/presets/cursor/next/skills/README.md +2 -0
  541. package/presets/cursor/next/skills/ci-investigation/SKILL.md +8 -0
  542. package/presets/cursor/next/skills/code-review/SKILL.md +7 -1
  543. package/presets/cursor/next/skills/debug-investigation/SKILL.md +39 -12
  544. package/presets/cursor/next/skills/feature-delivery/SKILL.md +9 -1
  545. package/presets/cursor/next/skills/spec-discovery/SKILL.md +58 -0
  546. package/presets/cursor/next/team/README.md +11 -0
  547. package/presets/cursor/next/team/fixtures/feature-full.json +1 -0
  548. package/presets/cursor/next/team/fixtures/memlog.example.md +9 -0
  549. package/presets/cursor/nuxt/MCP.md +21 -1
  550. package/presets/cursor/nuxt/agents/accessibility-reviewer.md +8 -0
  551. package/presets/cursor/nuxt/agents/build-verifier.md +6 -0
  552. package/presets/cursor/nuxt/agents/ci-investigator.md +9 -0
  553. package/presets/cursor/nuxt/agents/code-reviewer.md +2 -0
  554. package/presets/cursor/nuxt/agents/debugger.md +17 -0
  555. package/presets/cursor/nuxt/agents/feature-developer.md +32 -0
  556. package/presets/cursor/nuxt/agents/migration-specialist.md +6 -0
  557. package/presets/cursor/nuxt/agents/performance-auditor.md +8 -0
  558. package/presets/cursor/nuxt/agents/playwright-test-generator.md +9 -1
  559. package/presets/cursor/nuxt/agents/playwright-test-healer.md +9 -1
  560. package/presets/cursor/nuxt/agents/playwright-test-planner.md +1 -1
  561. package/presets/cursor/nuxt/agents/solution-architect.md +6 -0
  562. package/presets/cursor/nuxt/agents/task-analyst.md +28 -1
  563. package/presets/cursor/nuxt/agents/task-router.md +20 -0
  564. package/presets/cursor/nuxt/commands/spec-start.md +1 -1
  565. package/presets/cursor/nuxt/mcp.json +3 -3
  566. package/presets/cursor/nuxt/rules/README.md +2 -1
  567. package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +2 -1
  568. package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +1 -1
  569. package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +1 -1
  570. package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +2 -1
  571. package/presets/cursor/nuxt/rules/mcp-usage.mdc +100 -0
  572. package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +1 -0
  573. package/presets/cursor/nuxt/rules/product-specs-authoring.mdc +6 -4
  574. package/presets/cursor/nuxt/rules/product-specs.mdc +8 -4
  575. package/presets/cursor/nuxt/skills/README.md +2 -0
  576. package/presets/cursor/nuxt/skills/ci-investigation/SKILL.md +8 -0
  577. package/presets/cursor/nuxt/skills/code-review/SKILL.md +7 -1
  578. package/presets/cursor/nuxt/skills/debug-investigation/SKILL.md +41 -12
  579. package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +9 -1
  580. package/presets/cursor/nuxt/skills/spec-discovery/SKILL.md +58 -0
  581. package/presets/cursor/nuxt/team/README.md +11 -0
  582. package/presets/cursor/nuxt/team/fixtures/feature-full.json +43 -9
  583. package/presets/cursor/nuxt/team/fixtures/memlog.example.md +9 -0
  584. package/presets/cursor/php-hexagonal/AGENTS.md +1 -1
  585. package/presets/cursor/php-hexagonal/MCP.md +20 -1
  586. package/presets/cursor/php-hexagonal/agents/build-verifier.md +6 -0
  587. package/presets/cursor/php-hexagonal/agents/ci-investigator.md +9 -0
  588. package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -0
  589. package/presets/cursor/php-hexagonal/agents/debugger.md +15 -0
  590. package/presets/cursor/php-hexagonal/agents/feature-developer.md +30 -0
  591. package/presets/cursor/php-hexagonal/agents/migration-specialist.md +6 -0
  592. package/presets/cursor/php-hexagonal/agents/performance-auditor.md +6 -0
  593. package/presets/cursor/php-hexagonal/agents/solution-architect.md +6 -0
  594. package/presets/cursor/php-hexagonal/agents/task-analyst.md +27 -0
  595. package/presets/cursor/php-hexagonal/agents/task-router.md +20 -0
  596. package/presets/cursor/php-hexagonal/commands/spec-start.md +1 -1
  597. package/presets/cursor/php-hexagonal/mcp.json +1 -1
  598. package/presets/cursor/php-hexagonal/rules/README.md +2 -1
  599. package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +1 -0
  600. package/presets/cursor/php-hexagonal/rules/anti-sycophancy-discipline.mdc +1 -1
  601. package/presets/cursor/php-hexagonal/rules/code-quality-and-refactoring.mdc +1 -1
  602. package/presets/cursor/php-hexagonal/rules/feature-delivery-workflow.mdc +2 -1
  603. package/presets/cursor/php-hexagonal/rules/mcp-usage.mdc +97 -0
  604. package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +1 -0
  605. package/presets/cursor/php-hexagonal/rules/product-specs-authoring.mdc +6 -4
  606. package/presets/cursor/php-hexagonal/rules/product-specs.mdc +8 -4
  607. package/presets/cursor/php-hexagonal/skills/README.md +1 -1
  608. package/presets/cursor/php-hexagonal/skills/ci-investigation/SKILL.md +7 -0
  609. package/presets/cursor/php-hexagonal/skills/code-review/SKILL.md +7 -0
  610. package/presets/cursor/php-hexagonal/skills/debug-investigation/SKILL.md +38 -2
  611. package/presets/cursor/php-hexagonal/skills/feature-delivery/SKILL.md +7 -1
  612. package/presets/cursor/php-hexagonal/skills/spec-discovery/SKILL.md +58 -0
  613. package/presets/cursor/php-hexagonal/team/README.md +8 -0
  614. package/presets/cursor/php-hexagonal/team/fixtures/feature-full.json +46 -10
  615. package/presets/cursor/php-hexagonal/team/fixtures/memlog.example.md +9 -0
  616. package/presets/cursor/php-laravel/AGENTS.md +1 -1
  617. package/presets/cursor/php-laravel/MCP.md +21 -0
  618. package/presets/cursor/php-laravel/agents/build-verifier.md +6 -0
  619. package/presets/cursor/php-laravel/agents/ci-investigator.md +9 -0
  620. package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -0
  621. package/presets/cursor/php-laravel/agents/debugger.md +15 -0
  622. package/presets/cursor/php-laravel/agents/feature-developer.md +30 -0
  623. package/presets/cursor/php-laravel/agents/migration-specialist.md +6 -0
  624. package/presets/cursor/php-laravel/agents/performance-auditor.md +6 -0
  625. package/presets/cursor/php-laravel/agents/solution-architect.md +6 -0
  626. package/presets/cursor/php-laravel/agents/task-analyst.md +27 -0
  627. package/presets/cursor/php-laravel/agents/task-router.md +20 -0
  628. package/presets/cursor/php-laravel/commands/spec-start.md +1 -1
  629. package/presets/cursor/php-laravel/mcp.json +1 -1
  630. package/presets/cursor/php-laravel/rules/README.md +2 -1
  631. package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +1 -0
  632. package/presets/cursor/php-laravel/rules/anti-sycophancy-discipline.mdc +1 -1
  633. package/presets/cursor/php-laravel/rules/code-quality-and-refactoring.mdc +1 -1
  634. package/presets/cursor/php-laravel/rules/feature-delivery-workflow.mdc +2 -1
  635. package/presets/cursor/php-laravel/rules/mcp-usage.mdc +97 -0
  636. package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +1 -0
  637. package/presets/cursor/php-laravel/rules/product-specs-authoring.mdc +6 -4
  638. package/presets/cursor/php-laravel/rules/product-specs.mdc +8 -4
  639. package/presets/cursor/php-laravel/skills/README.md +1 -1
  640. package/presets/cursor/php-laravel/skills/ci-investigation/SKILL.md +7 -0
  641. package/presets/cursor/php-laravel/skills/code-review/SKILL.md +7 -0
  642. package/presets/cursor/php-laravel/skills/debug-investigation/SKILL.md +38 -2
  643. package/presets/cursor/php-laravel/skills/feature-delivery/SKILL.md +7 -1
  644. package/presets/cursor/php-laravel/skills/spec-discovery/SKILL.md +58 -0
  645. package/presets/cursor/php-laravel/team/README.md +7 -0
  646. package/presets/cursor/php-laravel/team/fixtures/feature-full.json +38 -9
  647. package/presets/cursor/php-laravel/team/fixtures/memlog.example.md +9 -0
  648. package/presets/cursor/svelte/MCP.md +21 -1
  649. package/presets/cursor/svelte/agents/accessibility-reviewer.md +8 -0
  650. package/presets/cursor/svelte/agents/build-verifier.md +6 -0
  651. package/presets/cursor/svelte/agents/ci-investigator.md +9 -0
  652. package/presets/cursor/svelte/agents/code-reviewer.md +2 -0
  653. package/presets/cursor/svelte/agents/debugger.md +17 -0
  654. package/presets/cursor/svelte/agents/feature-developer.md +32 -0
  655. package/presets/cursor/svelte/agents/migration-specialist.md +6 -0
  656. package/presets/cursor/svelte/agents/performance-auditor.md +8 -0
  657. package/presets/cursor/svelte/agents/playwright-test-generator.md +9 -1
  658. package/presets/cursor/svelte/agents/playwright-test-healer.md +9 -1
  659. package/presets/cursor/svelte/agents/playwright-test-planner.md +1 -1
  660. package/presets/cursor/svelte/agents/solution-architect.md +6 -0
  661. package/presets/cursor/svelte/agents/task-analyst.md +28 -1
  662. package/presets/cursor/svelte/agents/task-router.md +20 -0
  663. package/presets/cursor/svelte/commands/spec-start.md +1 -1
  664. package/presets/cursor/svelte/mcp.json +3 -3
  665. package/presets/cursor/svelte/rules/README.md +2 -1
  666. package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +2 -1
  667. package/presets/cursor/svelte/rules/anti-sycophancy-discipline.mdc +1 -1
  668. package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +1 -1
  669. package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +2 -1
  670. package/presets/cursor/svelte/rules/mcp-usage.mdc +100 -0
  671. package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +1 -0
  672. package/presets/cursor/svelte/rules/product-specs-authoring.mdc +6 -4
  673. package/presets/cursor/svelte/rules/product-specs.mdc +8 -4
  674. package/presets/cursor/svelte/skills/README.md +2 -0
  675. package/presets/cursor/svelte/skills/ci-investigation/SKILL.md +8 -0
  676. package/presets/cursor/svelte/skills/code-review/SKILL.md +7 -1
  677. package/presets/cursor/svelte/skills/debug-investigation/SKILL.md +41 -12
  678. package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +9 -1
  679. package/presets/cursor/svelte/skills/spec-discovery/SKILL.md +58 -0
  680. package/presets/cursor/svelte/team/README.md +11 -0
  681. package/presets/cursor/svelte/team/fixtures/feature-full.json +43 -9
  682. package/presets/cursor/svelte/team/fixtures/memlog.example.md +9 -0
  683. package/scripts/aggregate-agent-task-metrics.mjs +212 -0
  684. package/scripts/check-hook-only-lifecycle.sh +46 -0
  685. package/scripts/check-preset-i18n.sh +61 -0
  686. package/scripts/check-preset-leakage.sh +450 -0
  687. package/scripts/check-preset-structure.sh +70 -0
  688. package/scripts/check-preset-token-budget.sh +139 -0
  689. package/scripts/check-preset-twin-map.sh +122 -0
  690. package/scripts/check-product-specs.sh +90 -0
  691. package/scripts/check-rule-eval.mjs +149 -0
  692. package/scripts/check-shared-core-drift.sh +154 -0
  693. package/scripts/close-agent-task-human-gate.mjs +61 -0
  694. package/scripts/sync-dogfood-cursor.sh +70 -0
  695. package/scripts/sync-shared-core-embeds.sh +114 -0
  696. package/scripts/test-agent-task-metrics-hooks.mjs +895 -0
  697. package/scripts/test-cli-mcp-merge.mjs +137 -0
@@ -0,0 +1,450 @@
1
+ #!/usr/bin/env bash
2
+ # FAIL on cross-stack leakage in hooks (hard) and agent filenames (hard).
3
+ # Agent body: positive forbidden mentions → FAIL; explicit negation → silent
4
+ # (counted in summary); build-verifier packaging refs without negation → WARN.
5
+ # Exit 0 on OK; exit 1 on any FAIL.
6
+ set -euo pipefail
7
+
8
+ ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
9
+ export AI_RULES_PRESETS_ROOT="$ROOT/packages/ai-rules/presets"
10
+
11
+ python3 <<'PY'
12
+ from __future__ import annotations
13
+
14
+ import json
15
+ import os
16
+ import re
17
+ import sys
18
+ from pathlib import Path
19
+
20
+ presets = Path(os.environ["AI_RULES_PRESETS_ROOT"])
21
+ PLATFORMS = ("cursor", "claude")
22
+ STACKS = ("next", "nuxt", "svelte", "ios-swift", "android-kotlin", "go", "java", "mcp-ts", "php-hexagonal", "php-laravel")
23
+
24
+ NEGATION_RE = re.compile(
25
+ r"(?i)\b("
26
+ r"never|do\s+not|don't|must\s+not|forbidden|ban(?:ned)?|avoid|"
27
+ r"instead|not\s+require|no\s+playwright|without\s+playwright|"
28
+ r"iOS\s+uses|Go\s+backend|≠|not\s+be\s+byte|leakage|soft\s*/\s*document"
29
+ r")\b"
30
+ )
31
+
32
+ def pats(*exprs: str) -> list[re.Pattern[str]]:
33
+ return [re.compile(e) for e in exprs]
34
+
35
+ IOS_FORBIDDEN_IN_CHAIN = pats(
36
+ r"playwright-test-",
37
+ r"playwright-agents",
38
+ r"playwright-e2e",
39
+ r"user-playwright",
40
+ r"instrumentation-test-",
41
+ r"app/__tests__/e2e",
42
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
43
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
44
+ )
45
+ NEXT_FORBIDDEN_IN_CHAIN = pats(
46
+ r"xcuitest-test-",
47
+ r"instrumentation-test-",
48
+ r"(?i)\bxcodebuild\b",
49
+ r"(?i)\bSwiftLint\b",
50
+ )
51
+ GO_FORBIDDEN_IN_CHAIN = pats(
52
+ r"playwright-test-",
53
+ r"playwright-agents",
54
+ r"playwright-e2e",
55
+ r"user-playwright",
56
+ r"app/__tests__/e2e",
57
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
58
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
59
+ r"xcuitest-test-",
60
+ r"instrumentation-test-",
61
+ r"(?i)\bxcodebuild\b",
62
+ r"(?i)\bSwiftLint\b",
63
+ )
64
+
65
+ IOS_FORBIDDEN_AGENT_STEMS = (
66
+ "playwright-test-planner",
67
+ "playwright-test-generator",
68
+ "playwright-test-healer",
69
+
70
+ "instrumentation-test-planner",
71
+ "instrumentation-test-generator",
72
+ "instrumentation-test-healer",
73
+ "storybook-reviewer",
74
+ )
75
+ NEXT_FORBIDDEN_AGENT_STEMS = (
76
+ "xcuitest-test-planner",
77
+ "xcuitest-test-generator",
78
+ "xcuitest-test-healer",
79
+
80
+ "instrumentation-test-planner",
81
+ "instrumentation-test-generator",
82
+ "instrumentation-test-healer",
83
+ )
84
+ GO_FORBIDDEN_AGENT_STEMS = (
85
+ "playwright-test-planner",
86
+ "playwright-test-generator",
87
+ "playwright-test-healer",
88
+ "xcuitest-test-planner",
89
+ "xcuitest-test-generator",
90
+ "xcuitest-test-healer",
91
+ "accessibility-reviewer",
92
+ "mockup-reviewer",
93
+ "storybook-reviewer",
94
+
95
+ "instrumentation-test-planner",
96
+ "instrumentation-test-generator",
97
+ "instrumentation-test-healer",
98
+ )
99
+
100
+ IOS_SOFT = list(IOS_FORBIDDEN_IN_CHAIN)
101
+ NEXT_SOFT = list(NEXT_FORBIDDEN_IN_CHAIN)
102
+
103
+ NUXT_FORBIDDEN_IN_CHAIN = list(NEXT_FORBIDDEN_IN_CHAIN)
104
+ NUXT_FORBIDDEN_AGENT_STEMS = NEXT_FORBIDDEN_AGENT_STEMS
105
+ NUXT_SOFT = list(NEXT_FORBIDDEN_IN_CHAIN)
106
+
107
+ SVELTE_FORBIDDEN_IN_CHAIN = list(NEXT_FORBIDDEN_IN_CHAIN)
108
+ SVELTE_FORBIDDEN_AGENT_STEMS = NEXT_FORBIDDEN_AGENT_STEMS
109
+ SVELTE_SOFT = list(NEXT_FORBIDDEN_IN_CHAIN)
110
+ GO_SOFT = list(GO_FORBIDDEN_IN_CHAIN)
111
+
112
+ JAVA_FORBIDDEN_IN_CHAIN = pats(
113
+ r"playwright-test-",
114
+ r"playwright-agents",
115
+ r"playwright-e2e",
116
+ r"user-playwright",
117
+ r"app/__tests__/e2e",
118
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
119
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
120
+ r"xcuitest-test-",
121
+ r"instrumentation-test-",
122
+ r"(?i)\bxcodebuild\b",
123
+ r"(?i)\bSwiftLint\b",
124
+ )
125
+ JAVA_FORBIDDEN_AGENT_STEMS = (
126
+ "playwright-test-planner",
127
+ "playwright-test-generator",
128
+ "playwright-test-healer",
129
+ "xcuitest-test-planner",
130
+ "xcuitest-test-generator",
131
+ "xcuitest-test-healer",
132
+ "accessibility-reviewer",
133
+ "mockup-reviewer",
134
+ "storybook-reviewer",
135
+
136
+ "instrumentation-test-planner",
137
+ "instrumentation-test-generator",
138
+ "instrumentation-test-healer",
139
+ )
140
+ JAVA_SOFT = list(JAVA_FORBIDDEN_IN_CHAIN)
141
+
142
+ PHP_FORBIDDEN_IN_CHAIN = pats(
143
+ r"playwright-test-",
144
+ r"playwright-agents",
145
+ r"playwright-e2e",
146
+ r"user-playwright",
147
+ r"app/__tests__/e2e",
148
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
149
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
150
+ r"xcuitest-test-",
151
+ r"instrumentation-test-",
152
+ r"(?i)\bxcodebuild\b",
153
+ r"(?i)\bSwiftLint\b",
154
+ )
155
+ PHP_FORBIDDEN_AGENT_STEMS = (
156
+ "playwright-test-planner",
157
+ "playwright-test-generator",
158
+ "playwright-test-healer",
159
+ "xcuitest-test-planner",
160
+ "xcuitest-test-generator",
161
+ "xcuitest-test-healer",
162
+ "accessibility-reviewer",
163
+ "mockup-reviewer",
164
+ "storybook-reviewer",
165
+
166
+ "instrumentation-test-planner",
167
+ "instrumentation-test-generator",
168
+ "instrumentation-test-healer",
169
+ )
170
+ PHP_SOFT = list(PHP_FORBIDDEN_IN_CHAIN)
171
+
172
+ MCP_TS_FORBIDDEN_IN_CHAIN = pats(
173
+ r"playwright-test-",
174
+ r"playwright-agents",
175
+ r"playwright-e2e",
176
+ r"user-playwright",
177
+ r"app/__tests__/e2e",
178
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
179
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
180
+ r"xcuitest-test-",
181
+ r"instrumentation-test-",
182
+ r"(?i)\bxcodebuild\b",
183
+ r"(?i)\bSwiftLint\b",
184
+ r"(?i)(?:\brun\s+|`|\b)go\s+test\b",
185
+ r"(?i)(?:\brun\s+|`|\b)go\s+vet\b",
186
+ r"(?i)\bgolangci-lint\b",
187
+ )
188
+ MCP_TS_FORBIDDEN_AGENT_STEMS = (
189
+ "playwright-test-planner",
190
+ "playwright-test-generator",
191
+ "playwright-test-healer",
192
+ "xcuitest-test-planner",
193
+ "xcuitest-test-generator",
194
+ "xcuitest-test-healer",
195
+ "integration-test-planner",
196
+ "integration-test-generator",
197
+ "integration-test-healer",
198
+ "accessibility-reviewer",
199
+ "mockup-reviewer",
200
+ "storybook-reviewer",
201
+
202
+ "instrumentation-test-planner",
203
+ "instrumentation-test-generator",
204
+ "instrumentation-test-healer",
205
+ )
206
+ MCP_TS_SOFT = list(MCP_TS_FORBIDDEN_IN_CHAIN)
207
+
208
+
209
+ ANDROID_FORBIDDEN_IN_CHAIN = pats(
210
+ r"playwright-test-",
211
+ r"playwright-agents",
212
+ r"playwright-e2e",
213
+ r"user-playwright",
214
+ r"app/__tests__/e2e",
215
+ r"(?i)(?:\brun\s+|`|\b)lint:js\b",
216
+ r"(?i)(?:\brun\s+|`|\b)lint:css\b",
217
+ r"xcuitest-test-",
218
+ r"(?i)\bxcodebuild\b",
219
+ r"(?i)\bSwiftLint\b",
220
+ )
221
+ ANDROID_FORBIDDEN_AGENT_STEMS = (
222
+ "playwright-test-planner",
223
+ "playwright-test-generator",
224
+ "playwright-test-healer",
225
+ "xcuitest-test-planner",
226
+ "xcuitest-test-generator",
227
+ "xcuitest-test-healer",
228
+ "integration-test-planner",
229
+ "integration-test-generator",
230
+ "integration-test-healer",
231
+ "storybook-reviewer",
232
+ )
233
+ ANDROID_SOFT = list(ANDROID_FORBIDDEN_IN_CHAIN)
234
+
235
+ STACK_CFG = {
236
+ "next": (NEXT_FORBIDDEN_IN_CHAIN, NEXT_SOFT, NEXT_FORBIDDEN_AGENT_STEMS),
237
+ "nuxt": (NUXT_FORBIDDEN_IN_CHAIN, NUXT_SOFT, NUXT_FORBIDDEN_AGENT_STEMS),
238
+ "svelte": (SVELTE_FORBIDDEN_IN_CHAIN, SVELTE_SOFT, SVELTE_FORBIDDEN_AGENT_STEMS),
239
+ "ios-swift": (IOS_FORBIDDEN_IN_CHAIN, IOS_SOFT, IOS_FORBIDDEN_AGENT_STEMS),
240
+ "android-kotlin": (ANDROID_FORBIDDEN_IN_CHAIN, ANDROID_SOFT, ANDROID_FORBIDDEN_AGENT_STEMS),
241
+ "go": (GO_FORBIDDEN_IN_CHAIN, GO_SOFT, GO_FORBIDDEN_AGENT_STEMS),
242
+ "java": (JAVA_FORBIDDEN_IN_CHAIN, JAVA_SOFT, JAVA_FORBIDDEN_AGENT_STEMS),
243
+ "mcp-ts": (MCP_TS_FORBIDDEN_IN_CHAIN, MCP_TS_SOFT, MCP_TS_FORBIDDEN_AGENT_STEMS),
244
+ "php-hexagonal": (PHP_FORBIDDEN_IN_CHAIN, PHP_SOFT, PHP_FORBIDDEN_AGENT_STEMS),
245
+ "php-laravel": (PHP_FORBIDDEN_IN_CHAIN, PHP_SOFT, PHP_FORBIDDEN_AGENT_STEMS),
246
+ }
247
+
248
+
249
+ def iter_hook_scripts(stack: str, platform: str) -> list[Path]:
250
+ hooks = presets / platform / stack / "hooks"
251
+ if not hooks.is_dir():
252
+ return []
253
+ return sorted(p for p in hooks.rglob("*.sh") if p.is_file())
254
+
255
+
256
+ def iter_agent_files(stack: str, platform: str) -> list[Path]:
257
+ agents = presets / platform / stack / "agents"
258
+ if not agents.is_dir():
259
+ return []
260
+ return sorted(
261
+ p for p in agents.iterdir() if p.is_file() and p.suffix == ".md" and p.name != "README.md"
262
+ )
263
+
264
+
265
+ def iter_fixture_files(stack: str, platform: str) -> list[Path]:
266
+ fixtures = presets / platform / stack / "team" / "fixtures"
267
+ if not fixtures.is_dir():
268
+ return []
269
+ return sorted(p for p in fixtures.glob("*.json") if p.is_file())
270
+
271
+
272
+ def normalize_prose(line: str) -> str:
273
+ return re.sub(r"[*_`]+", "", line)
274
+
275
+
276
+ def line_is_negation(line: str) -> bool:
277
+ return bool(NEGATION_RE.search(normalize_prose(line)))
278
+
279
+
280
+ def is_forbidden_agent(name: str, bad_stems: tuple[str, ...]) -> bool:
281
+ return name in bad_stems or any(name.startswith(s) for s in bad_stems)
282
+
283
+
284
+ def collect_step_agents(steps) -> list[str]:
285
+ """Flatten pipeline steps[].agent (string or parallel array)."""
286
+ names: list[str] = []
287
+ if not isinstance(steps, list):
288
+ return names
289
+ for step in steps:
290
+ if not isinstance(step, dict):
291
+ continue
292
+ agent = step.get("agent")
293
+ if isinstance(agent, str):
294
+ names.append(agent)
295
+ elif isinstance(agent, list):
296
+ names.extend(a for a in agent if isinstance(a, str))
297
+ return names
298
+
299
+
300
+ def collect_skipped_agents(skipped) -> set[str]:
301
+ names: set[str] = set()
302
+ if not isinstance(skipped, list):
303
+ return names
304
+ for entry in skipped:
305
+ if isinstance(entry, dict) and isinstance(entry.get("agent"), str):
306
+ names.add(entry["agent"])
307
+ return names
308
+
309
+
310
+ failed = 0
311
+ warned = 0
312
+ negation_suppressed = 0
313
+ fixture_skipped_ok = 0
314
+
315
+ print("Preset cross-stack leakage scan")
316
+ print(f"Presets: {presets}")
317
+ print()
318
+
319
+ for stack in STACKS:
320
+ print(f"=== {stack} ===")
321
+ hard_patterns, soft_patterns, bad_stems = STACK_CFG[stack]
322
+ stack_negation = 0
323
+ stack_fixture_skipped = 0
324
+
325
+ for platform in PLATFORMS:
326
+ for script in iter_hook_scripts(stack, platform):
327
+ text = script.read_text(encoding="utf-8")
328
+ for pat in hard_patterns:
329
+ if pat.search(text):
330
+ print(
331
+ f"FAIL: [{platform}/{stack}] {script.name} matches "
332
+ f"/{pat.pattern}/"
333
+ )
334
+ failed += 1
335
+
336
+ for agent in iter_agent_files(stack, platform):
337
+ stem = agent.stem
338
+ if is_forbidden_agent(stem, bad_stems):
339
+ print(
340
+ f"FAIL: [{platform}/{stack}] forbidden agent file: {agent.name}"
341
+ )
342
+ failed += 1
343
+ continue
344
+
345
+ text = agent.read_text(encoding="utf-8")
346
+ for i, line in enumerate(text.splitlines(), 1):
347
+ for pat in soft_patterns:
348
+ if not pat.search(line):
349
+ continue
350
+ if line_is_negation(line):
351
+ # Documented bans are expected — do not soft-WARN per line.
352
+ stack_negation += 1
353
+ negation_suppressed += 1
354
+ elif agent.stem == "build-verifier":
355
+ print(
356
+ f"WARN: [{platform}/{stack}] {agent.name}:{i} "
357
+ f"mentions /{pat.pattern}/ (verifier packaging — soft)"
358
+ )
359
+ warned += 1
360
+ else:
361
+ print(
362
+ f"FAIL: [{platform}/{stack}] {agent.name}:{i} "
363
+ f"positive forbidden mention /{pat.pattern}/"
364
+ )
365
+ print(f" {line.strip()[:120]}")
366
+ failed += 1
367
+
368
+ # team/fixtures: forbidden stems in active steps[] → FAIL;
369
+ # same stems under skipped[] are intentional anti-patterns → OK.
370
+ for fixture in iter_fixture_files(stack, platform):
371
+ try:
372
+ data = json.loads(fixture.read_text(encoding="utf-8"))
373
+ except json.JSONDecodeError as exc:
374
+ print(
375
+ f"FAIL: [{platform}/{stack}] {fixture.name} invalid JSON: {exc}"
376
+ )
377
+ failed += 1
378
+ continue
379
+ if not isinstance(data, dict):
380
+ print(
381
+ f"FAIL: [{platform}/{stack}] {fixture.name} root must be object"
382
+ )
383
+ failed += 1
384
+ continue
385
+ for name in collect_step_agents(data.get("steps")):
386
+ if is_forbidden_agent(name, bad_stems):
387
+ print(
388
+ f"FAIL: [{platform}/{stack}] {fixture.name} steps[] "
389
+ f"schedules forbidden agent {name!r}"
390
+ )
391
+ failed += 1
392
+ for name in collect_skipped_agents(data.get("skipped")):
393
+ if is_forbidden_agent(name, bad_stems):
394
+ stack_fixture_skipped += 1
395
+ fixture_skipped_ok += 1
396
+
397
+ if stack_negation:
398
+ print(
399
+ f"INFO: [{stack}] suppressed {stack_negation} negation mention(s) "
400
+ f"(not a merge blocker)"
401
+ )
402
+ if stack_fixture_skipped:
403
+ print(
404
+ f"INFO: [{stack}] fixtures skipped[] documents "
405
+ f"{stack_fixture_skipped} forbidden agent stem(s) "
406
+ f"(intentional anti-pattern — OK)"
407
+ )
408
+ print()
409
+
410
+ # --- Chain fork: pairwise among stacks that have chain scripts ---
411
+ print("=== chain fork ===")
412
+ for platform in PLATFORMS:
413
+ chains: dict[str, Path] = {}
414
+ for stack in STACKS:
415
+ p = presets / platform / stack / "hooks" / "chain-team-phases.sh"
416
+ if p.is_file():
417
+ chains[stack] = p
418
+ names = sorted(chains)
419
+ if len(names) < 2:
420
+ print(f"WARN: [{platform}] fewer than 2 chain scripts — skip")
421
+ warned += 1
422
+ continue
423
+ for i, a in enumerate(names):
424
+ for b in names[i + 1 :]:
425
+ if chains[a].read_bytes() == chains[b].read_bytes():
426
+ print(
427
+ f"FAIL: [{platform}] {a} chain-team-phases.sh is byte-identical to {b}"
428
+ )
429
+ failed += 1
430
+ else:
431
+ print(f"OK: [{platform}] {a} chain ≠ {b} chain")
432
+
433
+ print()
434
+ print(f"WARN count: {warned} (build-verifier packaging refs / chain skips)")
435
+ print(
436
+ f"Negation mentions suppressed: {negation_suppressed} "
437
+ f"(documented bans — not a merge blocker)"
438
+ )
439
+ print(
440
+ f"Fixture skipped[] anti-patterns allowed: {fixture_skipped_ok} "
441
+ f"(forbidden stems only in skipped — not a merge blocker)"
442
+ )
443
+
444
+ if failed:
445
+ print(f"Result: FAIL ({failed} issue(s))")
446
+ sys.exit(1)
447
+
448
+ print("Result: OK")
449
+ sys.exit(0)
450
+ PY
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env bash
2
+ # Orchestrator: twin map + token budget + leakage + hook-only lifecycle + shared-core drift + i18n (hard).
3
+ # All gates exit non-zero on FAIL.
4
+ set -euo pipefail
5
+
6
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
7
+ ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)"
8
+ export AI_RULES_PRESETS_ROOT="$ROOT/packages/ai-rules/presets"
9
+
10
+ echo "========================================"
11
+ echo "Preset structure checks"
12
+ echo "ROOT=$ROOT"
13
+ echo "========================================"
14
+ echo
15
+
16
+ status=0
17
+
18
+ run_gate() {
19
+ local label="$1"
20
+ local script="$2"
21
+ shift 2
22
+ echo ">>> $label"
23
+ if env "$@" bash "$script"; then
24
+ echo "<<< $label: OK"
25
+ else
26
+ echo "<<< $label: FAIL"
27
+ status=1
28
+ fi
29
+ echo
30
+ }
31
+
32
+ run_gate "twin-map" "$SCRIPT_DIR/check-preset-twin-map.sh"
33
+ run_gate "token-budget" "$SCRIPT_DIR/check-preset-token-budget.sh"
34
+ run_gate "leakage" "$SCRIPT_DIR/check-preset-leakage.sh"
35
+ run_gate "hook-only-lifecycle" "$SCRIPT_DIR/check-hook-only-lifecycle.sh"
36
+ run_gate "shared-core-drift" "$SCRIPT_DIR/check-shared-core-drift.sh" AI_RULES_DRIFT_FAIL=1
37
+ run_gate "i18n" "$SCRIPT_DIR/check-preset-i18n.sh" AI_RULES_I18N_FAIL=1 AI_RULES_I18N_SOFT=0
38
+
39
+ echo ">>> cli-mcp-merge"
40
+ if node "$SCRIPT_DIR/test-cli-mcp-merge.mjs"; then
41
+ echo "<<< cli-mcp-merge: OK"
42
+ else
43
+ echo "<<< cli-mcp-merge: FAIL"
44
+ status=1
45
+ fi
46
+ echo
47
+
48
+ # Soft WARN: dogfood product-specs (never fails the orchestrator).
49
+ # Default check-product-specs exits 0 even when issues are found unless --strict.
50
+ # Use --strict here only to surface problems as WARN in logs; do not flip status.
51
+ DOGFOOD_SPECS_ROOT="$(cd "$SCRIPT_DIR/../../.." && pwd)/dogfood/mcp-ts-sample"
52
+ echo ">>> product-specs (dogfood soft WARN)"
53
+ if [[ -d "$DOGFOOD_SPECS_ROOT/docs/specs" ]]; then
54
+ if bash "$SCRIPT_DIR/check-product-specs.sh" --strict "$DOGFOOD_SPECS_ROOT"; then
55
+ echo "<<< product-specs (dogfood soft WARN): OK"
56
+ else
57
+ echo "<<< product-specs (dogfood soft WARN): WARN (issues logged; not a hard gate — re-run with yarn check:product-specs:dogfood -- --strict locally)"
58
+ fi
59
+ else
60
+ echo "<<< product-specs (dogfood soft WARN): SKIP (no $DOGFOOD_SPECS_ROOT/docs/specs)"
61
+ fi
62
+ echo
63
+
64
+ if [[ "$status" -ne 0 ]]; then
65
+ echo "Result: FAIL (one or more hard gates)"
66
+ exit 1
67
+ fi
68
+
69
+ echo "Result: OK (all hard gates passed)"
70
+ exit 0
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env bash
2
+ # FAIL if session-start / alwaysApply budget invariants break (Option A).
3
+ # Exit 0 on OK; exit 1 on any FAIL.
4
+ set -euo pipefail
5
+
6
+ ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
7
+ export AI_RULES_PRESETS_ROOT="$ROOT/packages/ai-rules/presets"
8
+
9
+ python3 <<'PY'
10
+ from __future__ import annotations
11
+
12
+ import os
13
+ import re
14
+ import sys
15
+ from pathlib import Path
16
+
17
+ presets = Path(os.environ["AI_RULES_PRESETS_ROOT"])
18
+ STACKS = ("next", "nuxt", "svelte", "ios-swift", "android-kotlin", "go", "java", "mcp-ts", "php-hexagonal", "php-laravel")
19
+ BODY_CAP = 140
20
+ MARKER_LINE_RE = re.compile(r"^<!--\s*shared-core:\s*[^>]+?\s*-->\s*$")
21
+ ALWAYS_APPLY_RE = re.compile(r"(?m)^alwaysApply:\s*true\s*$")
22
+ PATHS_RE = re.compile(r"(?m)^paths:\s*")
23
+
24
+
25
+ def strip_frontmatter(text: str) -> tuple[str, str]:
26
+ """Return (frontmatter_or_empty, body)."""
27
+ if not text.startswith("---\n"):
28
+ return "", text
29
+ end = text.find("\n---\n", 4)
30
+ if end < 0:
31
+ return "", text
32
+ return text[4:end], text[end + 5 :]
33
+
34
+
35
+ def body_nonempty_lines(body: str) -> int:
36
+ n = 0
37
+ for line in body.splitlines():
38
+ if MARKER_LINE_RE.match(line.strip()):
39
+ continue
40
+ if line.strip():
41
+ n += 1
42
+ return n
43
+
44
+
45
+ def cursor_always_apply(rules_dir: Path) -> list[Path]:
46
+ out: list[Path] = []
47
+ for path in sorted(rules_dir.glob("*.mdc")):
48
+ text = path.read_text(encoding="utf-8")
49
+ fm, _ = strip_frontmatter(text)
50
+ if ALWAYS_APPLY_RE.search(fm):
51
+ out.append(path)
52
+ return out
53
+
54
+
55
+ def claude_session_start(rules_dir: Path) -> list[Path]:
56
+ """Rules without paths:, excluding **/README.md (Option A)."""
57
+ out: list[Path] = []
58
+ for path in sorted(rules_dir.rglob("*.md")):
59
+ if path.name == "README.md":
60
+ continue
61
+ text = path.read_text(encoding="utf-8")
62
+ fm, _ = strip_frontmatter(text)
63
+ if PATHS_RE.search(fm):
64
+ continue
65
+ out.append(path)
66
+ return out
67
+
68
+
69
+ failed = 0
70
+
71
+ print("Preset token / session-start budget (Option A)")
72
+ print(f"Presets: {presets}")
73
+ print(f"Body line cap (trio sum): {BODY_CAP}")
74
+ print()
75
+
76
+ for stack in STACKS:
77
+ print(f"=== {stack} ===")
78
+ cursor_rules = presets / "cursor" / stack / "rules"
79
+ claude_rules = presets / "claude" / stack / "rules"
80
+
81
+ # --- Cursor alwaysApply ---
82
+ always = cursor_always_apply(cursor_rules)
83
+ print(f" Cursor alwaysApply: {len(always)}")
84
+ for p in always:
85
+ print(f" - {p.name}")
86
+ if p.stem.startswith("preset-"):
87
+ print(f"FAIL: meta preset-* must not be alwaysApply: {p.name}")
88
+ failed += 1
89
+
90
+ if len(always) != 3:
91
+ print(f"FAIL: Cursor alwaysApply count is {len(always)}, expected exactly 3")
92
+ failed += 1
93
+
94
+ # --- Claude no-paths (excl README) ---
95
+ session = claude_session_start(claude_rules)
96
+ print(f" Claude no-paths (excl README): {len(session)}")
97
+ for p in session:
98
+ rel = p.relative_to(claude_rules).as_posix()
99
+ print(f" - {rel}")
100
+ if p.stem.startswith("preset-") or "/preset-" in f"/{rel}":
101
+ print(f"FAIL: meta preset-* must not be session-start: {rel}")
102
+ failed += 1
103
+
104
+ if len(session) != 3:
105
+ print(
106
+ f"FAIL: Claude session-start count is {len(session)}, "
107
+ "expected exactly 3 (Option A excludes **/README.md)"
108
+ )
109
+ failed += 1
110
+
111
+ # --- Body sum of intended trio (Cursor alwaysApply + Claude session) ---
112
+ # Prefer Cursor trio for budget; also check Claude trio independently.
113
+ for label, files in (("Cursor", always), ("Claude", session)):
114
+ if len(files) != 3:
115
+ continue
116
+ total = 0
117
+ for path in files:
118
+ text = path.read_text(encoding="utf-8")
119
+ _, body = strip_frontmatter(text)
120
+ n = body_nonempty_lines(body)
121
+ total += n
122
+ name = path.name if label == "Cursor" else path.relative_to(claude_rules).as_posix()
123
+ print(f" {label} body lines {name}: {n}")
124
+ print(f" {label} trio body sum: {total}")
125
+ if total > BODY_CAP:
126
+ print(
127
+ f"FAIL: {label} session-start body sum {total} > {BODY_CAP} ({stack})"
128
+ )
129
+ failed += 1
130
+
131
+ print()
132
+
133
+ if failed:
134
+ print(f"Result: FAIL ({failed} issue(s))")
135
+ sys.exit(1)
136
+
137
+ print("Result: OK")
138
+ sys.exit(0)
139
+ PY