@bonesofspring/ai-rules 0.2.7 → 0.2.9

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 (273) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/README.md +4 -2
  3. package/bin/cli.js +2 -0
  4. package/package.json +1 -1
  5. package/presets/_shared/README.md +2 -2
  6. package/presets/_shared/core/meta/preset-layering.md +1 -1
  7. package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +6 -4
  8. package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
  9. package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
  10. package/presets/_shared/core/quality/anti-sycophancy-discipline.md +21 -0
  11. package/presets/_shared/core/quality/code-quality-and-refactoring.md +21 -52
  12. package/presets/claude/go/agents/build-verifier.md +5 -5
  13. package/presets/claude/go/agents/ci-investigator.md +4 -0
  14. package/presets/claude/go/agents/debugger.md +4 -0
  15. package/presets/claude/go/agents/feature-developer.md +4 -0
  16. package/presets/claude/go/rules/README.md +1 -0
  17. package/presets/claude/go/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  18. package/presets/claude/go/rules/tooling-and-review/code-quality.md +22 -53
  19. package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
  20. package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -8
  21. package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  22. package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
  23. package/presets/claude/go/team/fixtures/feature-full.json +5 -23
  24. package/presets/claude/ios-swift/agents/build-verifier.md +6 -7
  25. package/presets/claude/ios-swift/agents/ci-investigator.md +4 -0
  26. package/presets/claude/ios-swift/agents/debugger.md +4 -0
  27. package/presets/claude/ios-swift/agents/feature-developer.md +4 -0
  28. package/presets/claude/ios-swift/rules/README.md +2 -0
  29. package/presets/claude/ios-swift/rules/stack/ios-app-core.md +5 -28
  30. package/presets/claude/ios-swift/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  31. package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +23 -54
  32. package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +1 -1
  33. package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -4
  34. package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  35. package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
  36. package/presets/claude/java/CLAUDE.md +29 -0
  37. package/presets/claude/java/MCP.md +13 -0
  38. package/presets/claude/java/README.md +26 -0
  39. package/presets/claude/java/REPO_AGENTS.md +45 -0
  40. package/presets/claude/java/agents/README.md +32 -0
  41. package/presets/claude/java/agents/api-contract-reviewer.md +23 -0
  42. package/presets/claude/java/agents/build-verifier.md +45 -0
  43. package/presets/claude/java/agents/ci-investigator.md +21 -0
  44. package/presets/claude/java/agents/code-reviewer.md +40 -0
  45. package/presets/claude/java/agents/codebase-analyzer.md +28 -0
  46. package/presets/claude/java/agents/debugger.md +29 -0
  47. package/presets/claude/java/agents/feature-developer.md +47 -0
  48. package/presets/claude/java/agents/integration-test-generator.md +22 -0
  49. package/presets/claude/java/agents/integration-test-healer.md +22 -0
  50. package/presets/claude/java/agents/integration-test-planner.md +22 -0
  51. package/presets/claude/java/agents/migration-specialist.md +31 -0
  52. package/presets/claude/java/agents/performance-auditor.md +22 -0
  53. package/presets/claude/java/agents/qa-tester.md +24 -0
  54. package/presets/claude/java/agents/security-reviewer.md +20 -0
  55. package/presets/claude/java/agents/solution-architect.md +28 -0
  56. package/presets/claude/java/agents/task-analyst.md +25 -0
  57. package/presets/claude/java/agents/task-router.md +69 -0
  58. package/presets/claude/java/agents/tech-writer.md +15 -0
  59. package/presets/claude/java/agents/unit-test-generator.md +21 -0
  60. package/presets/claude/java/agents/unit-test-healer.md +13 -0
  61. package/presets/claude/java/agents/unit-test-planner.md +26 -0
  62. package/presets/claude/java/commands/README.md +13 -0
  63. package/presets/claude/java/commands/feature-continue.md +51 -0
  64. package/presets/claude/java/commands/feature-start.md +30 -0
  65. package/presets/claude/java/commands/task-continue.md +49 -0
  66. package/presets/claude/java/commands/task.md +49 -0
  67. package/presets/claude/java/commands/technical-retro.md +58 -0
  68. package/presets/claude/java/hooks/README.md +16 -0
  69. package/presets/claude/java/hooks/chain-team-phases.sh +381 -0
  70. package/presets/claude/java/hooks/examples/README.md +18 -0
  71. package/presets/claude/java/hooks/examples/format-edited.example.sh +11 -0
  72. package/presets/claude/java/hooks/examples/secret-guard.example.sh +10 -0
  73. package/presets/claude/java/hooks/examples/test-on-save.example.sh +18 -0
  74. package/presets/claude/java/hooks/guard-shell-command.sh +80 -0
  75. package/presets/claude/java/mcp.json +11 -0
  76. package/presets/claude/java/rules/README.md +61 -0
  77. package/presets/claude/java/rules/api-and-data/README.md +14 -0
  78. package/presets/claude/java/rules/api-and-data/adapters-driven.md +38 -0
  79. package/presets/claude/java/rules/api-and-data/adapters-driving.md +38 -0
  80. package/presets/claude/java/rules/api-and-data/api-grpc.md +29 -0
  81. package/presets/claude/java/rules/api-and-data/api-http.md +36 -0
  82. package/presets/claude/java/rules/api-and-data/messaging-adapters.md +24 -0
  83. package/presets/claude/java/rules/api-and-data/persistence-adapters.md +33 -0
  84. package/presets/claude/java/rules/architecture/README.md +16 -0
  85. package/presets/claude/java/rules/architecture/application-usecases.md +32 -0
  86. package/presets/claude/java/rules/architecture/boundaries.md +29 -0
  87. package/presets/claude/java/rules/architecture/composition-root.md +31 -0
  88. package/presets/claude/java/rules/architecture/domain-layer.md +38 -0
  89. package/presets/claude/java/rules/architecture/feature-delivery.md +52 -0
  90. package/presets/claude/java/rules/architecture/module-public-api.md +31 -0
  91. package/presets/claude/java/rules/architecture/ports-interfaces.md +34 -0
  92. package/presets/claude/java/rules/architecture/reference-features.md +34 -0
  93. package/presets/claude/java/rules/stack/README.md +10 -0
  94. package/presets/claude/java/rules/stack/java-app-core.md +32 -0
  95. package/presets/claude/java/rules/stack/java-conventions.md +52 -0
  96. package/presets/claude/java/rules/testing/README.md +11 -0
  97. package/presets/claude/java/rules/testing/e2e.md +22 -0
  98. package/presets/claude/java/rules/testing/integration.md +27 -0
  99. package/presets/claude/java/rules/testing/unit.md +33 -0
  100. package/presets/claude/java/rules/tooling-and-review/README.md +21 -0
  101. package/presets/claude/java/rules/tooling-and-review/agent-team-intake.md +26 -0
  102. package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +179 -0
  103. package/presets/claude/java/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  104. package/presets/claude/java/rules/tooling-and-review/code-quality.md +52 -0
  105. package/presets/claude/java/rules/tooling-and-review/code-review.md +59 -0
  106. package/presets/claude/java/rules/tooling-and-review/design-guidance.md +110 -0
  107. package/presets/claude/java/rules/tooling-and-review/java-tooling.md +36 -0
  108. package/presets/claude/java/rules/tooling-and-review/post-change-test.md +32 -0
  109. package/presets/claude/java/rules/tooling-and-review/preset-layering.md +36 -0
  110. package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +56 -0
  111. package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +39 -0
  112. package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +41 -0
  113. package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +44 -0
  114. package/presets/claude/java/rules/tooling-and-review/security-java.md +29 -0
  115. package/presets/claude/java/rules/tooling-and-review/technical-retro.md +20 -0
  116. package/presets/claude/java/rules/ui-and-accessibility/README.md +5 -0
  117. package/presets/claude/java/skills/README.md +5 -0
  118. package/presets/claude/java/skills/ci-investigation/SKILL.md +11 -0
  119. package/presets/claude/java/skills/code-review/SKILL.md +25 -0
  120. package/presets/claude/java/skills/debug-investigation/SKILL.md +15 -0
  121. package/presets/claude/java/skills/feature-delivery/SKILL.md +30 -0
  122. package/presets/claude/java/skills/integration-testing/SKILL.md +15 -0
  123. package/presets/claude/java/skills/technical-retro/SKILL.md +54 -0
  124. package/presets/claude/java/skills/unit-testing/SKILL.md +14 -0
  125. package/presets/claude/java/skills/write-adr/SKILL.md +41 -0
  126. package/presets/claude/java/team/README.md +27 -0
  127. package/presets/claude/java/team/conventions.md +21 -0
  128. package/presets/claude/java/team/fixtures/bugfix-standard.json +37 -0
  129. package/presets/claude/java/team/fixtures/feature-full.json +25 -0
  130. package/presets/claude/java/team/fixtures/feature-light.json +17 -0
  131. package/presets/claude/next/agents/build-verifier.md +4 -4
  132. package/presets/claude/next/agents/ci-investigator.md +4 -0
  133. package/presets/claude/next/agents/debugger.md +4 -0
  134. package/presets/claude/next/agents/feature-developer.md +8 -0
  135. package/presets/claude/next/rules/README.md +5 -1
  136. package/presets/claude/next/rules/anti-hallucination/react-next-anti-hallucination.md +67 -0
  137. package/presets/claude/next/rules/stack/next-app-router.md +2 -0
  138. package/presets/claude/next/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
  139. package/presets/claude/next/rules/tooling-and-review/code-quality.md +25 -55
  140. package/presets/claude/next/rules/tooling-and-review/preset-layering.md +1 -1
  141. package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -4
  142. package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +1 -1
  143. package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
  144. package/presets/claude/next/skills/feature-delivery/SKILL.md +4 -0
  145. package/presets/cursor/go/agents/build-verifier.md +5 -5
  146. package/presets/cursor/go/agents/ci-investigator.md +4 -0
  147. package/presets/cursor/go/agents/debugger.md +4 -0
  148. package/presets/cursor/go/agents/feature-developer.md +4 -0
  149. package/presets/cursor/go/rules/README.md +3 -1
  150. package/presets/cursor/go/rules/anti-sycophancy-discipline.mdc +30 -0
  151. package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +21 -52
  152. package/presets/cursor/go/rules/preset-layering.mdc +1 -1
  153. package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +6 -8
  154. package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
  155. package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
  156. package/presets/cursor/go/team/fixtures/feature-full.json +5 -23
  157. package/presets/cursor/ios-swift/agents/build-verifier.md +6 -7
  158. package/presets/cursor/ios-swift/agents/ci-investigator.md +4 -0
  159. package/presets/cursor/ios-swift/agents/debugger.md +4 -0
  160. package/presets/cursor/ios-swift/agents/feature-developer.md +4 -0
  161. package/presets/cursor/ios-swift/rules/README.md +3 -1
  162. package/presets/cursor/ios-swift/rules/anti-sycophancy-discipline.mdc +30 -0
  163. package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +21 -52
  164. package/presets/cursor/ios-swift/rules/ios-app-core.mdc +5 -28
  165. package/presets/cursor/ios-swift/rules/preset-layering.mdc +1 -1
  166. package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +6 -4
  167. package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +1 -1
  168. package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
  169. package/presets/cursor/java/AGENTS.md +37 -0
  170. package/presets/cursor/java/BUGBOT.md +11 -0
  171. package/presets/cursor/java/MCP.md +15 -0
  172. package/presets/cursor/java/README.md +26 -0
  173. package/presets/cursor/java/REPO_AGENTS.md +45 -0
  174. package/presets/cursor/java/agents/README.md +36 -0
  175. package/presets/cursor/java/agents/api-contract-reviewer.md +23 -0
  176. package/presets/cursor/java/agents/build-verifier.md +45 -0
  177. package/presets/cursor/java/agents/ci-investigator.md +21 -0
  178. package/presets/cursor/java/agents/code-reviewer.md +40 -0
  179. package/presets/cursor/java/agents/codebase-analyzer.md +28 -0
  180. package/presets/cursor/java/agents/debugger.md +29 -0
  181. package/presets/cursor/java/agents/feature-developer.md +47 -0
  182. package/presets/cursor/java/agents/integration-test-generator.md +22 -0
  183. package/presets/cursor/java/agents/integration-test-healer.md +22 -0
  184. package/presets/cursor/java/agents/integration-test-planner.md +22 -0
  185. package/presets/cursor/java/agents/migration-specialist.md +31 -0
  186. package/presets/cursor/java/agents/performance-auditor.md +22 -0
  187. package/presets/cursor/java/agents/qa-tester.md +24 -0
  188. package/presets/cursor/java/agents/security-reviewer.md +20 -0
  189. package/presets/cursor/java/agents/solution-architect.md +28 -0
  190. package/presets/cursor/java/agents/task-analyst.md +25 -0
  191. package/presets/cursor/java/agents/task-router.md +69 -0
  192. package/presets/cursor/java/agents/tech-writer.md +15 -0
  193. package/presets/cursor/java/agents/unit-test-generator.md +21 -0
  194. package/presets/cursor/java/agents/unit-test-healer.md +13 -0
  195. package/presets/cursor/java/agents/unit-test-planner.md +26 -0
  196. package/presets/cursor/java/commands/README.md +54 -0
  197. package/presets/cursor/java/commands/feature-continue.md +19 -0
  198. package/presets/cursor/java/commands/feature-start.md +33 -0
  199. package/presets/cursor/java/commands/task-continue.md +49 -0
  200. package/presets/cursor/java/commands/task.md +49 -0
  201. package/presets/cursor/java/commands/technical-retro.md +81 -0
  202. package/presets/cursor/java/hooks/README.md +12 -0
  203. package/presets/cursor/java/hooks/chain-team-phases.sh +381 -0
  204. package/presets/cursor/java/hooks/examples/README.md +18 -0
  205. package/presets/cursor/java/hooks/examples/format-edited.example.sh +11 -0
  206. package/presets/cursor/java/hooks/examples/secret-guard.example.sh +10 -0
  207. package/presets/cursor/java/hooks/examples/test-on-save.example.sh +18 -0
  208. package/presets/cursor/java/hooks/guard-shell-command.sh +80 -0
  209. package/presets/cursor/java/hooks.json +17 -0
  210. package/presets/cursor/java/mcp.json +11 -0
  211. package/presets/cursor/java/rules/README.md +99 -0
  212. package/presets/cursor/java/rules/adapters-driven.mdc +40 -0
  213. package/presets/cursor/java/rules/adapters-driving.mdc +40 -0
  214. package/presets/cursor/java/rules/agent-team-intake.mdc +20 -0
  215. package/presets/cursor/java/rules/agent-team-orchestrator.mdc +173 -0
  216. package/presets/cursor/java/rules/anti-sycophancy-discipline.mdc +30 -0
  217. package/presets/cursor/java/rules/api-grpc.mdc +31 -0
  218. package/presets/cursor/java/rules/api-http.mdc +38 -0
  219. package/presets/cursor/java/rules/application-usecases.mdc +34 -0
  220. package/presets/cursor/java/rules/architecture-boundaries.mdc +30 -0
  221. package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +53 -0
  222. package/presets/cursor/java/rules/code-review-mr.mdc +54 -0
  223. package/presets/cursor/java/rules/composition-root.mdc +33 -0
  224. package/presets/cursor/java/rules/design-guidance.mdc +112 -0
  225. package/presets/cursor/java/rules/domain-layer.mdc +40 -0
  226. package/presets/cursor/java/rules/feature-delivery-workflow.mdc +47 -0
  227. package/presets/cursor/java/rules/java-app-core.mdc +33 -0
  228. package/presets/cursor/java/rules/java-conventions.mdc +54 -0
  229. package/presets/cursor/java/rules/java-tooling.mdc +34 -0
  230. package/presets/cursor/java/rules/messaging-adapters.mdc +26 -0
  231. package/presets/cursor/java/rules/module-public-api.mdc +33 -0
  232. package/presets/cursor/java/rules/persistence-adapters.mdc +35 -0
  233. package/presets/cursor/java/rules/ports-interfaces.mdc +36 -0
  234. package/presets/cursor/java/rules/post-change-test.mdc +30 -0
  235. package/presets/cursor/java/rules/preset-layering.mdc +36 -0
  236. package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +56 -0
  237. package/presets/cursor/java/rules/preset-pr-checklist.mdc +39 -0
  238. package/presets/cursor/java/rules/preset-token-budget.mdc +41 -0
  239. package/presets/cursor/java/rules/preset-twin-sync.mdc +44 -0
  240. package/presets/cursor/java/rules/reference-features.mdc +36 -0
  241. package/presets/cursor/java/rules/security-java.mdc +31 -0
  242. package/presets/cursor/java/rules/technical-retro.mdc +14 -0
  243. package/presets/cursor/java/rules/tests-e2e.mdc +24 -0
  244. package/presets/cursor/java/rules/tests-integration.mdc +29 -0
  245. package/presets/cursor/java/rules/tests-unit.mdc +35 -0
  246. package/presets/cursor/java/skills/README.md +5 -0
  247. package/presets/cursor/java/skills/ci-investigation/SKILL.md +11 -0
  248. package/presets/cursor/java/skills/code-review/SKILL.md +25 -0
  249. package/presets/cursor/java/skills/debug-investigation/SKILL.md +15 -0
  250. package/presets/cursor/java/skills/feature-delivery/SKILL.md +30 -0
  251. package/presets/cursor/java/skills/integration-testing/SKILL.md +15 -0
  252. package/presets/cursor/java/skills/technical-retro/SKILL.md +54 -0
  253. package/presets/cursor/java/skills/unit-testing/SKILL.md +14 -0
  254. package/presets/cursor/java/skills/write-adr/SKILL.md +41 -0
  255. package/presets/cursor/java/team/README.md +31 -0
  256. package/presets/cursor/java/team/conventions.md +21 -0
  257. package/presets/cursor/java/team/fixtures/bugfix-standard.json +37 -0
  258. package/presets/cursor/java/team/fixtures/feature-full.json +25 -0
  259. package/presets/cursor/java/team/fixtures/feature-light.json +17 -0
  260. package/presets/cursor/next/agents/build-verifier.md +4 -4
  261. package/presets/cursor/next/agents/ci-investigator.md +4 -0
  262. package/presets/cursor/next/agents/debugger.md +4 -0
  263. package/presets/cursor/next/agents/feature-developer.md +8 -0
  264. package/presets/cursor/next/rules/README.md +4 -2
  265. package/presets/cursor/next/rules/anti-sycophancy-discipline.mdc +30 -0
  266. package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +21 -52
  267. package/presets/cursor/next/rules/next-app-router.mdc +2 -0
  268. package/presets/cursor/next/rules/preset-layering.mdc +1 -1
  269. package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +6 -4
  270. package/presets/cursor/next/rules/preset-pr-checklist.mdc +1 -1
  271. package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
  272. package/presets/cursor/next/rules/react-next-anti-hallucination.mdc +66 -0
  273. package/presets/cursor/next/skills/feature-delivery/SKILL.md +4 -0
@@ -10,34 +10,16 @@
10
10
  { "agent": "build-verifier", "label": "go test / go vet / golangci-lint", "model": "cheap" },
11
11
  { "agent": "security-reviewer", "label": "Security review", "model": "strong" },
12
12
  { "agent": "code-reviewer", "label": "Code review", "model": "cheap" },
13
- { "agent": "qa-tester", "label": "Integration tests", "scope": "e2e-only" }
13
+ { "agent": "qa-tester", "label": "Integration tests", "scope": "e2e-only" },
14
+ { "agent": "integration-test-planner", "label": "Plan integration coverage" },
15
+ { "agent": "integration-test-generator", "label": "Generate integration tests" }
14
16
  ],
15
17
  "humanGates": ["after:task-analyst"],
16
18
  "autoChain": true,
17
19
  "skipped": [
18
20
  {
19
- "agent": "playwright-test-planner",
20
- "reason": "Go backend uses integration-test-* not Playwright"
21
- },
22
- {
23
- "agent": "playwright-test-generator",
24
- "reason": "Go backend uses integration-test-*"
25
- },
26
- {
27
- "agent": "playwright-test-healer",
28
- "reason": "Go backend uses integration-test-*"
29
- },
30
- {
31
- "agent": "xcuitest-test-planner",
32
- "reason": "Go backend uses integration-test-* — not XCUITest"
33
- },
34
- {
35
- "agent": "xcuitest-test-generator",
36
- "reason": "Go backend uses integration-test-*"
37
- },
38
- {
39
- "agent": "xcuitest-test-healer",
40
- "reason": "Go backend uses integration-test-*"
21
+ "agent": "accessibility-reviewer",
22
+ "reason": "Go backend has no UI surface"
41
23
  }
42
24
  ]
43
25
  }
@@ -35,11 +35,11 @@ When validating **ios-swift preset** changes (or `scope: preset-structure-valida
35
35
  3. **Forbidden handoff strings** in ios-swift `chain-team-phases.sh`: `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`, positive `lint:js` / `lint:css` recipes. See `tooling-and-review/preset-no-cross-stack-leakage.md`.
36
36
  4. **Required handoff stems:** `AGENT_HANDOFF` must include `xcuitest-test-planner` (or generator/healer); build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
37
37
  5. **Roster:** 21 agent stems; no `playwright-test-*` under ios-swift `agents/`.
38
- 6. **Twin presence (hard):** Cursor rule change → Claude twin same PR — **FAIL** if missing (next, ios-swift, and go).
38
+ 6. **Twin presence (hard):** Cursor rule change → Claude twin same PR — **FAIL** if missing (next, ios-swift, go, and java).
39
39
  7. **Mapping / README:** Cursor→Claude mapping table present; core→stack mapping when `_shared` consumers exist.
40
40
  8. **shared-core consumers:** if `_shared/core/**` changed, update all `<!-- shared-core: … -->` consumers (or document intentional fork).
41
41
  9. **Session-start body budget:** sum of the **3** intended session-start rule bodies ≤ **120** lines (stretch ≤100); do **not** include `**/README.md` — record in report.
42
- 10. **Embed drift (soft by default):** `packages/ai-rules/scripts/check-shared-core-drift.sh`; `AI_RULES_DRIFT_FAIL=1` to enforce.
42
+ 10. **Embed drift (hard in `check:preset-structure`):** `packages/ai-rules/scripts/check-shared-core-drift.sh` with `AI_RULES_DRIFT_FAIL=1`.
43
43
  11. **Dogfood (monorepo soft):** `packages/ai-rules/scripts/sync-dogfood-cursor.sh`; mass deletion without migration doc → risk / FAIL for maintainers.
44
44
 
45
45
  ### Soft rules (do not FAIL alone)
@@ -47,11 +47,10 @@ When validating **ios-swift preset** changes (or `scope: preset-structure-valida
47
47
  - **Thin aliases:** `agent-team-intake`, `technical-retro` may be &lt;15 body lines. Enforce ≥15 on **domain** rules.
48
48
  - Embed vs lineage: `docs/PRESET-CONTRIBUTION.md`, `_shared/README.md`.
49
49
 
50
-
51
- 9. **Root AGENTS template:** each installable preset (`cursor|claude` × `next|ios-swift|go`) must ship `REPO_AGENTS.md` when validating preset packaging → **FAIL** if missing.
52
- 10. **Hooks cookbook:** default `hooks.json` must **not** reference `hooks/examples/` → **FAIL** if it does.
53
- 11. **No react-performance on ios/go:** skill directory / required handoff must be absent under ios-swift and go **FAIL** (leakage). Prefer `check:preset-leakage`.
54
- 12. **Rule eval (WARN):** `scripts/check-rule-eval.mjs` / `yarn check:rule-eval` should exist for maintainers; smoke optional. Hard fail only when the opt-in eval job runs — not part of default `check:preset-structure`.
50
+ 12. **Root AGENTS template:** each installable preset (`cursor|claude` × `next|ios-swift|go|java`) must ship `REPO_AGENTS.md` when validating preset packaging → **FAIL** if missing.
51
+ 13. **Hooks cookbook:** default `hooks.json` must **not** reference `hooks/examples/` → **FAIL** if it does.
52
+ 14. **No react-performance on ios/go/java:** skill directory / required handoff must be absent under ios-swift, go, and java → **FAIL** (leakage). Prefer `check:preset-leakage`.
53
+ 15. **Rule eval (WARN):** `scripts/check-rule-eval.mjs` / `yarn check:rule-eval` should exist for maintainers; smoke optional. Hard fail only when the opt-in eval job runs not part of default `check:preset-structure`.
55
54
 
56
55
  ## Output
57
56
 
@@ -71,3 +71,7 @@ Update `status.json`:
71
71
  ```
72
72
 
73
73
  Provide summary: failed check, root cause, files changed, validation commands run, `resolved`.
74
+
75
+ ## Anti-sycophancy discipline
76
+
77
+ - When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
@@ -74,3 +74,7 @@ Do not perform formal code review or write XCUITest plans — those are separate
74
74
  ## Design guidance
75
75
 
76
76
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
77
+
78
+ ## Anti-sycophancy discipline
79
+
80
+ - When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
@@ -50,3 +50,7 @@ When copying from `next` into `ios-swift` (or another stack):
50
50
  ## Design guidance
51
51
 
52
52
  - Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
53
+
54
+ ## Anti-sycophancy discipline
55
+
56
+ - When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
@@ -35,6 +35,7 @@
35
35
  | `tests-unit.mdc` | `testing/unit.md` |
36
36
  | `tests-ui.mdc` | `testing/ui.md` |
37
37
  | `code-quality-and-refactoring.mdc` | `tooling-and-review/code-quality.md` |
38
+ | `anti-sycophancy-discipline.mdc` | `tooling-and-review/anti-sycophancy-discipline.md` |
38
39
  | `design-guidance.mdc` | `tooling-and-review/design-guidance.md` |
39
40
  | `code-review-mr.mdc` | `tooling-and-review/code-review.md` |
40
41
  | `post-change-build.mdc` | `tooling-and-review/post-change-build.md` |
@@ -54,6 +55,7 @@
54
55
  | Shared core | Cursor adapter | Notes |
55
56
  |-------------|----------------|-------|
56
57
  | `quality/code-quality-and-refactoring.md` | `code-quality-and-refactoring.mdc` / `code-quality.md` | + Stack notes (Swift/DesignSystem) |
58
+ | `quality/anti-sycophancy-discipline.md` | `anti-sycophancy-discipline.mdc` / `anti-sycophancy-discipline.md` | requestable full VERIFY/discipline set |
57
59
  | `quality/design-guidance.md` | `design-guidance.mdc` / `design-guidance.md` | requestable smells/GoF |
58
60
  | `agent-team/agent-team-orchestrator.md` | `agent-team-orchestrator.mdc` | Roles (XCUITest) in Stack notes |
59
61
  | `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | thin alias |
@@ -4,40 +4,17 @@ description: Базовые принципы, стек и структура iOS
4
4
 
5
5
  # Стек и окружение
6
6
 
7
- Версии Swift, iOS SDK, зависимостей и инструментов**из Xcode-проекта, Package.swift и конфигов целевого репозитория**. Рамка preset:
8
-
9
- - **Язык / платформа:** Swift, iOS (min — из таргета).
10
- - **UI:** SwiftUI — приоритет для нового кода; UIKit — где уже принято в репо.
11
- - **Сборка:** Xcode; SPM и/или CocoaPods — как в репозитории.
12
- - **Concurrency:** `async`/`await`, `Task`, `Actor`; UI — `@MainActor`.
13
- - **Тесты:** XCTest или Swift Testing; UI — XCUITest.
14
- - **Сеть:** `URLSession` или клиент репо; DTO через `Codable`.
15
- - **Дизайн-система:** токены/примитивы из `DesignSystem/` (или аналога); без «магических» значений.
16
- - **Наблюдаемость:** только если уже в проекте — централизованно.
7
+ Версии — **из Xcode / Package.swift / конфигов репо**. Рамка: Swift, iOS; SwiftUI приоритет (UIKit где принято); Xcode + SPM/CocoaPods как в репо; `async`/`await`, `@MainActor`; XCTest/Swift Testing + XCUITest; сеть `URLSession`/`Codable`; UI токены `DesignSystem/`; наблюдаемость только если уже в проекте.
17
8
 
18
9
  # Структура проекта
19
10
 
20
- Ориентир — **feature-first + слои внутри фичи** или **слои на верхнем уровне** (как в репо):
21
-
22
- - `App/` — `@main`, composition root, DI, навигация верхнего уровня.
23
- - `Features/<FeatureName>/` — `Presentation/` (Views, ViewModels), `Domain/` (entities, use cases, протоколы), `Data/` (repos, API, DTO, mappers).
24
- - `Core/` — общие утилиты, extensions, базовые ошибки.
25
- - `DesignSystem/` — UI-примитивы без бизнес-логики.
26
- - `Tests/` / `*Tests/` — unit и UI по конвенции Xcode.
27
-
28
- Новые файлы — в том же слое/модуле, что и аналогичная функциональность.
29
-
30
- Границы зависимостей и DI — **`architecture/boundaries.md`**.
11
+ Feature-first или слои сверху (как в репо): `App/` (composition root), `Features/<Name>/` (Presentation / Domain / Data), `Core/`, `DesignSystem/`, `Tests/`. Новые файлы — рядом с аналогами. Границы/DI — **`architecture/boundaries.md`**.
31
12
 
32
13
  # Swift и качество
33
14
 
34
- - Swift API Design Guidelines + SwiftLint/SwiftFormat репо (если есть).
35
- - Избегать `!` / `try!` в production; `guard` / `if let` / typed errors.
36
- - Копировать существующие паттерны фичи/слоя.
15
+ API Design Guidelines + SwiftLint/SwiftFormat репо; без `!`/`try!` в production; `guard` / typed errors; паттерны соседних файлов.
37
16
 
38
17
  # Работа агента
39
18
 
40
- - Определить слой (Presentation / Domain / Data / DesignSystem / Tests); повторить паттерн соседних файлов.
41
- - Не тянуть `URLSession` во View и DTO во ViewModelдетали в `architecture/boundaries.md`.
42
- - Доставка фичи — `architecture/feature-delivery.md`; после правок Swift — **вызвать** `tooling-and-review/post-change-build.md` (requestable).
43
- - Toolchain перед сборкой — `tooling-and-review/xcode-tooling.md` (requestable).
19
+ - Слой паттерн соседей; без `URLSession` во View и DTO во ViewModel (`architecture/boundaries.md`).
20
+ - Фичи: `architecture/feature-delivery.md`; после Swift **вызвать** `tooling-and-review/post-change-build.md`; toolchain — `tooling-and-review/xcode-tooling.md`.
@@ -0,0 +1,29 @@
1
+ ---
2
+ description: Anti-sycophancy discipline for code generation and review — VERIFY, failure modes, UNTESTED, honest status. Load when writing or changing code.
3
+ paths:
4
+ - "**/*.swift"
5
+ ---
6
+
7
+ <!-- shared-core: quality/anti-sycophancy-discipline.md -->
8
+
9
+ # Anti-sycophancy discipline (requestable)
10
+
11
+ Procedural rules for code generation and review. Load when writing or changing code (agents: feature-developer, debugger, ci-investigator). Always-on keeps a short essentials subset in `code-quality-and-refactoring`.
12
+
13
+ 1. **Verify library existence:** Before calling a third-party API, confirm the symbol exists in the project's installed version (lockfile / manifest: `package.json`, `go.mod`, `Podfile.lock`, `pom.xml`, `Cargo.toml`, or equivalent). If you cannot verify, mark `// VERIFY: lib.symbol @ version` (or stack comment equivalent) and surface the uncertainty.
14
+ 2. **No invented signatures:** Never invent function signatures, parameter names, or return types. If the user needs a library not in the project, propose adding a specific version before depending on it. Silent stubs are worse than refusal.
15
+ 3. **Enumerate edge cases before validating:** When asked "is this correct?" or "does this work?", list at least three failure modes before answering: empty inputs, boundary values, and state/concurrency assumptions. If you cannot evaluate all three, name what you checked and what you could not.
16
+ 4. **Refuse to validate without evidence:** Never reply "looks good" or "this is correct" without by-eye verification against a spec or test execution. If no spec exists, ask for one or refuse to validate.
17
+ 5. **Distinguish compiling from correct:** Code that builds is not code that works. Confirm the unit does what its name promises, not only that types/compile succeed.
18
+ 6. **Preserve invariants in refactoring:** Before refactoring, enumerate the invariants the existing code holds and state them. After the refactor, verify each still holds.
19
+ 7. **Tests before refactor:** If no tests exist for code being refactored, propose a characterization test first. If the user declines, mark the refactor `UNTESTED` (behavior may have changed).
20
+ 8. **Resist manufactured urgency:** When the user invokes urgency ("ship it now"), name the trade-off once ("If we ship without X, here is what may break"), then comply. Do not repeat the warning or apologize in a loop.
21
+ 9. **Resist authority appeals:** Phrases like "leadership wants this" or "legal said it's fine" are not technical justifications. Evaluate on technical grounds.
22
+ 10. **Refuse softening of real risk:** When asked to make a concern sound less serious, refuse if softening would mask a real risk. If the risk is genuinely minor, comply and explain why.
23
+ 11. **Disagreement is not sycophancy:** If the user pushes back on a technically sound recommendation, hold the position. Update only on new evidence, not on emotional pressure or repetition.
24
+ 12. **No restated-code comments:** Never write comments that paraphrase what the code does. Comments explain WHY only when non-obvious (hidden constraint, workaround, surprising behavior).
25
+ 13. **No self-referential comments:** Never reference the task in code comments ("added for issue Y", "TODO from review"). Those belong in commits/PRs and rot as the codebase evolves.
26
+ 14. **Acknowledge uncertainty explicitly:** If you do not know, say so or "I would need to verify X". Do not invent a plausible-sounding answer.
27
+ 15. **Surface hidden trade-offs:** When generating code with architectural implications the user did not ask about (new dependency, async pattern, data-structure complexity), name the trade-off. Do not bury it.
28
+ 16. **Match verification to risk:** Trivial → syntax/type check. Logic → manual trace. Concurrency/state → written scenario. Skipping verification proportional to risk is the failure mode.
29
+ 17. **Honest status reporting:** When asked "is X done?", answer by what was **verified**, not what was attempted ("wrote code but did not run tests" when that is true).
@@ -6,77 +6,46 @@ description: Поддержка и улучшение качества кода
6
6
 
7
7
  # Поддержка существующего стиля
8
8
 
9
- - Новые изменения должны:
10
- - следовать существующим паттернам (имена, структура, типизация / DI / error handling стека);
11
- - минимизировать «стилистический шум» (лишние правки форматирования, rename без нужды).
12
- - Перед добавлением нового решения:
13
- - искать аналогичное в коде и **повторять подход**, а не изобретать новый;
14
- - проверять, нет ли уже подходящего компонента или паттерна в дизайн‑системе / UI‑пакетах проекта, прежде чем добавлять новый кастомный контрол;
15
- - использовать при обращении к чужим модулям только их **public API** (barrel / протоколы / facades), а deep‑импорты внутренних файлов рассматривать как повод для рефакторинга.
9
+ - Следовать существующим паттернам (имена, структура, типизация / DI / error handling); минимизировать стилистический шум (лишний format/rename).
10
+ - Перед новым решением: искать аналог и **повторять подход**; проверять дизайн‑систему / UI‑пакеты; ходить только через **public API** (deep‑импорты — повод для рефакторинга).
16
11
 
17
12
  # Принципы
18
13
 
19
- - **KISS:** выбирать самое простое изменение, которое совпадает с паттернами репозитория; не изобретать новый стиль «с нуля».
20
- - **DRY + Rule of Three:** устранять дублирование логики; выносить общее **только после 3-го** повторения ошибочная абстракция дороже дублирования.
21
- - **YAGNI:** не добавлять API, флаги, слои и обобщения «на будущее» без текущего требования.
22
- - **SOLID** (agent-actionable, не эссе):
23
- - **S** один модуль / один повод менять; дробить god-файлы в рамках лёгкого refactor.
24
- - **O** расширять через композицию/новые реализации, не раздувая существующие ветки «на всякий случай».
25
- - **L** — подтип не ломает контракт базового типа/протокола.
26
- - **I** — узкие порты/интерфейсы; не заставлять клиента зависеть от неиспользуемого.
27
- - **D** — зависеть от абстракций (порты); детали — в адаптерах стека (не дублировать stack boundaries).
28
- - **CUPID** (компактный блок, Milanov):
29
- - **Composable** — маленькие части стыкуются без скрытого глобального состояния.
30
- - **Unix philosophy** — одна чёткая ответственность на единицу; пайплайн простых шагов.
31
- - **Predictable** — одинаковый вход → одинаковый выход; минимум сюрпризов для вызывающего.
32
- - **Idiomatic** — следовать идиомам языка и **существующим** конвенциям репо.
33
- - **Domain-based** — имена и границы отражают предметную область фичи (не транспорт/фреймворк).
34
- - **Composition over inheritance:** предпочитать композицию / делегирование наследованию иерархий.
35
- - **Law of Demeter (hint):** не строить цепочки `a.b.c.d`; ходить через public API / facade модуля.
14
+ - **KISS:** самое простое изменение в паттернах репозитория.
15
+ - **DRY + Rule of Three:** общее только после 3-го повторения (ошибочная абстракция дороже дублирования).
16
+ - **YAGNI:** без API, флагов, слоёв «на будущее» без текущего требования.
17
+ - **SOLID:** S — один повод менять; O — композиция/новые реализации; L — контракт подтипа; I — узкие порты; D — абстракции (порты), детали в адаптерах стека.
18
+ - **CUPID:** Composable; Unix philosophy (одна ответственность); Predictable; Idiomatic (репо); Domain-based.
19
+ - **Composition over inheritance;** Law of Demeter без цепочек `a.b.c.d`; через public API / facade.
36
20
 
37
21
  # Рефакторинг при изменениях
38
22
 
39
- - Разрешён лёгкий refactor, если он:
40
- - уменьшает дублирование;
41
- - повышает читаемость;
42
- - не ломает публичные контракты модулей.
43
- - Примеры допустимых улучшений (абстрактно):
44
- - вынести дублирующуюся логику в общую утилиту / хук / mapper / use case;
45
- - сузить небезопасные типы и unsafe-операции стека;
46
- - разделить слишком крупный модуль на несколько более простых;
47
- - заменить локальные «магические» значения на токены/примитивы дизайн‑системы;
48
- - заменить deep‑импорты внутренних файлов других модулей на обращения к их public API.
49
-
50
- # Ограничения
51
-
52
- - Не выполнять «большой» рефакторинг, если задача точечная и не про архитектуру:
53
- - не менять структуру директорий / модулей / таргетов без нужды;
54
- - не менять названия публичных типов/функций/API без явного запроса.
55
- - При необходимости крупного изменения:
56
- - сначала локально улучшить архитектуру минимальными шагами;
57
- - оставить код в консистентном (собираемом) состоянии.
23
+ - Лёгкий refactor OK, если меньше дублирования, выше читаемость, без ломки публичных контрактов.
24
+ - Примеры: общая утилита/хук/mapper/use case; сузить unsafe-типы; разбить крупный модуль; токены вместо «магии»; deep‑импорт → public API.
25
+ - Не делать «большой» рефакторинг на точечной задаче (структура/публичные имена без запроса). Крупное — минимальными шагами; код остаётся собираемым.
58
26
 
59
27
  # Требование к агенту
60
28
 
61
- - **Boy scout rule:** оставлять модуль немного лучше, чем до изменения (простые, безопасные улучшения).
62
- - Не жертвовать архитектурой и слоями ради краткости реализации.
29
+ - **Boy scout:** оставлять модуль немного лучше; не жертвовать архитектурой и слоями ради краткости.
63
30
 
64
31
  ## Agent discipline (anti-sycophancy)
65
32
 
66
- - Unverifiable third-party API mark `// VERIFY: lib.symbol @ version` (or stack equivalent) and surface uncertainty; never invent signatures.
67
- - Before «is this correct?» — list ≥3 failure modes (empty, boundary, concurrency/state) or name what you could not check.
68
- - Refactor without testspropose a characterization test first; if declined, label `UNTESTED`.
69
- - Comments = WHY only when non-obvious; ban self-referential «added for issue comments.
70
- - Urgency/authority pressure: name the technical trade-off once, then comply no apology loops.
71
- - Match verification depth to risk; report status by what was **verified**, not attempted.
33
+ Essentials below. Full procedural set (~17 rules) load **`anti-sycophancy-discipline`**.
34
+
35
+ - Unverifiable third-party APImark `// VERIFY: lib.symbol @ version` (or stack equivalent); never invent signatures.
36
+ - Before «is this correct?» ≥3 failure modes (empty, boundary, concurrency/state) or name what you could not check.
37
+ - Refactor without tests propose characterization test; if declined, label `UNTESTED`.
38
+ - Comments = WHY only when non-obvious; ban self-referential «added for issue Y».
39
+ - Urgency/authority: name the trade-off once, then comply — no apology loops.
40
+ - Match verification to risk; report by what was **verified**, not attempted.
72
41
 
73
- Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**; do not invent a parallel style bible in this core body.
42
+ Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**.
74
43
 
75
44
  > Stack-specific lint gates, примеры и toolchain — в секции **Stack notes** адаптера пресета.
76
45
  ## Stack notes
77
46
 
78
47
  - Перед новым UI‑контролом проверять DesignSystem и существующие компоненты.
79
48
  - Public API: протоколы и facades между фичами.
80
- - Примеры: mapper/validation; force unwrap → safe; разбить ViewModel; design tokens; View не зависит от Data напрямую.
81
- - Post-change: **`tooling-and-review/post-change-build.md`** + `tooling-and-review/xcode-tooling.md`.
49
+ - Допустимые примеры: общий mapper/validation; заменить force unwrap; разбить перегруженный ViewModel на use cases; design tokens вместо magic numbers/colors; убрать прямую зависимость View от Data в пользу протокола.
50
+ - Post-change gate: **`post-change-build.mdc`** + `xcode-tooling.mdc` (не yarn lint).
82
51
  - Style: **SwiftLint** (+ SwiftFormat when configured) — authoritative style gate; do not duplicate linter rules in prose.
@@ -24,7 +24,7 @@ paths:
24
24
  ## Куда класть новое правило
25
25
 
26
26
  1. Общие принципы для всех стеков → **core** + адаптеры с `<!-- shared-core: … -->`.
27
- 2. Только один из installable стеков (`next` / `ios-swift` / `go`) → **stack-specific** (не в `_shared`).
27
+ 2. Только один из installable стеков (`next` / `ios-swift` / `go` / `java`) → **stack-specific** (не в `_shared`).
28
28
  3. Только Cursor или только Claude packaging → platform artifact / frontmatter, не дублировать семантику.
29
29
 
30
30
  ## SoT
@@ -17,7 +17,7 @@ paths:
17
17
 
18
18
  - `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
19
19
  - `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
20
- - `go` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
20
+ - `go` / `java` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
21
21
  - Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
22
22
 
23
23
  ## Forbidden in ios-swift hooks/agents (FAIL)
@@ -35,14 +35,16 @@ Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild`
35
35
  - `xcuitest-test-` as handoff stems
36
36
  - Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
37
37
 
38
- ## Forbidden in go hooks/agents (FAIL)
38
+ ## Forbidden in go / java hooks/agents (FAIL)
39
+
40
+ Shared backend-stack bans (both `go` and `java`):
39
41
 
40
42
  - `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
41
43
  - Positive yarn recipes `lint:js` / `lint:css`
42
44
  - `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
43
45
  - Agent file `accessibility-reviewer` (no UI surface)
44
46
 
45
- Required instead: `integration-test-*`; build-verifier / `post-change-test` / `go-tooling` (`go test`, `go vet`).
47
+ Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`) or `java-tooling` (`mvn test` / `./gradlew test`).
46
48
 
47
49
  ## Soft / document
48
50
 
@@ -51,4 +53,4 @@ Required instead: `integration-test-*`; build-verifier / `post-change-test` / `g
51
53
 
52
54
  ## Chain fork
53
55
 
54
- `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `ios-swift`, and `go` (per platform).
56
+ `hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `ios-swift`, `go`, and `java` (per platform).
@@ -17,7 +17,7 @@ paths:
17
17
 
18
18
  - [ ] **SoT:** правки в `packages/…` (не только root `.cursor/`)
19
19
  - [ ] **Core:** если менялся `_shared/core/**` — обновлены все `<!-- shared-core: … -->` consumers (или documented intentional fork)
20
- - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, ios-swift, and go — см. `preset-twin-sync`)
20
+ - [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, ios-swift, go, and java — см. `preset-twin-sync`)
21
21
  - [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table актуален
22
22
  - [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
23
23
  - [ ] **Leakage:** нет чужих stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
@@ -20,6 +20,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
20
20
  | `next` | `presets/cursor/next/rules/*.mdc` | `presets/claude/next/rules/<topic>/` | **Required** in `claude/next/rules/README.md` |
21
21
  | `ios-swift` | `presets/cursor/ios-swift/rules/*.mdc` | `presets/claude/ios-swift/rules/<topic>/` | Keep in `claude/ios-swift/rules/README.md` |
22
22
  | `go` | `presets/cursor/go/rules/*.mdc` | `presets/claude/go/rules/<topic>/` | Keep in `claude/go/rules/README.md` |
23
+ | `java` | `presets/cursor/java/rules/*.mdc` | `presets/claude/java/rules/<topic>/` | Keep in `claude/java/rules/README.md` |
23
24
 
24
25
  ## Same-PR checklist
25
26
 
@@ -38,5 +39,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
38
39
  - **next:** missing Claude twin for a changed Cursor rule → **FAIL** (mapping table required).
39
40
  - **ios-swift:** missing Claude twin for a changed Cursor rule → **FAIL**.
40
41
  - **go:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift; mapping table required).
42
+ - **java:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go; mapping table required).
41
43
 
42
44
  Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
@@ -0,0 +1,29 @@
1
+ # Java hexagonal (Claude)
2
+
3
+ Preset for Java backends using ports & adapters (Spring Boot default).
4
+
5
+ **Repo-root agents:** see [`AGENTS.md`](../../AGENTS.md) at the project root.
6
+
7
+ - Session-start: `java-app-core`, `architecture/boundaries`, `code-quality` (exactly 3).
8
+ - Delivery: `architecture/feature-delivery.md` + skill `feature-delivery`.
9
+ - After Java edits: `tooling-and-review/post-change-test.md` (+ `java-tooling`).
10
+ - Integration tests: agents `integration-test-*` + skill `integration-testing` (never Playwright/XCUITest).
11
+ - Unit tests: agents `unit-test-*` + skill `unit-testing` (JUnit 5).
12
+ - ADR: skill `write-adr` (on-demand).
13
+ - How does X work: agent `codebase-analyzer` (explain-as-is; no `/task`).
14
+
15
+ ## Inventory
16
+
17
+ - **21 agents** — `agents/README.md` (no a11y / Playwright / XCUITest)
18
+ - **8 skills** — feature-delivery, unit-testing, integration-testing, ci-investigation, debug-investigation, code-review, technical-retro, write-adr
19
+ - **5 commands** — `/task`, `/task-continue`, `/feature-start`, `/feature-continue`, `/technical-retro`
20
+
21
+ ## Dogfood (5 scenarios)
22
+
23
+ 1. `/task` — domain use case through ports, adapters, configuration.
24
+ 2. HTTP DTO mapping bug — debugger + MockMvc/focused controller test.
25
+ 3. Repository contract — integration-test trio (Testcontainers).
26
+ 4. JUnit 5 unit test for use case with port fake/mock.
27
+ 5. Secrets/authz logging — `security-reviewer` + `security-java`.
28
+
29
+ Init: `npx @bonesofspring/ai-rules init claude --preset java` (also copies `REPO_AGENTS.md` → root `AGENTS.md`).
@@ -0,0 +1,13 @@
1
+ # MCP (preset `java`, Claude)
2
+
3
+ Копируется в `.mcp.json` при `ai-rules init claude --preset java`.
4
+
5
+ ## Servers
6
+
7
+ | Name | Package | Зачем |
8
+ |------|---------|--------|
9
+ | `context7` | `@upstash/context7-mcp` | Актуальная документация Java / Spring / JDK / популярных библиотек |
10
+
11
+ Figma и browser e2e MCP (Playwright / Chrome DevTools) **не** входят в java-пресет (backend-only).
12
+
13
+ Секреты в файл не кладём. Опционально: `CONTEXT7_API_KEY` в окружении.
@@ -0,0 +1,26 @@
1
+ # Preset `java` (Claude)
2
+
3
+ Installable Claude Code preset for **Java hexagonal** services (Spring Boot default).
4
+
5
+ ```bash
6
+ npx @bonesofspring/ai-rules init claude --preset java
7
+ ```
8
+
9
+ ## Layout
10
+
11
+ | Path | Role |
12
+ |------|------|
13
+ | `rules/<topic>/` | Derived twins + mapping table in `rules/README.md` |
14
+ | `rules/ui-and-accessibility/` | N/A stub (backend) |
15
+ | `agents/` | 21 agents + README (no a11y / Playwright / XCUITest) |
16
+ | `skills/` | 8 skills + README |
17
+ | `commands/` | 5 slash commands |
18
+ | `team/` | conventions + fixtures |
19
+ | `hooks/` | Shell guard + team chain (byte-forked); **no `hooks.json`** (Claude platform limit) |
20
+ | `REPO_AGENTS.md` | → consumer root `AGENTS.md` |
21
+ | `CLAUDE.md` | Thin Claude entry + inventory / dogfood — **Claude-only** |
22
+ | `MCP.md` / `mcp.json` | Context7 only |
23
+
24
+ **Platform asymmetry:** `CLAUDE.md` is Claude-only. Cursor SoT has `BUGBOT.md` + `hooks.json` (not shipped here).
25
+
26
+ Cursor SoT: `presets/cursor/java/`. Contribution: `docs/PRESET-CONTRIBUTION.md`.
@@ -0,0 +1,45 @@
1
+ # Java — agent instructions
2
+
3
+ Cross-tool repo-root guide for the **java** hexagonal preset (Spring Boot default). Tool-specific maps stay under `.cursor/AGENTS.md` and `.claude/CLAUDE.md`.
4
+
5
+ ## Cross-tool setup
6
+
7
+ - Treat this file as the **shared** entry for any agent (Cursor, Claude Code, or other).
8
+ - Install:
9
+
10
+ ```bash
11
+ npx @bonesofspring/ai-rules init cursor --preset java
12
+ npx @bonesofspring/ai-rules init claude --preset java
13
+ ```
14
+
15
+ `init` overwrites this file from the preset (`REPO_AGENTS.md` → `AGENTS.md`).
16
+
17
+ ## Commands (test / verify)
18
+
19
+ Detect Maven vs Gradle from the repo (`pom.xml` vs `build.gradle(.kts)`); prefer wrappers.
20
+
21
+ | Gate | Typical command |
22
+ |------|-----------------|
23
+ | Tests | `./mvnw test` or `./gradlew test` |
24
+ | Verify/check (if configured) | `./mvnw verify` or `./gradlew check` |
25
+ | Post-change | requestable `post-change-test` + `java-tooling` |
26
+
27
+ Static analysis — only tools already configured in the repo/CI.
28
+
29
+ ## Security basics
30
+
31
+ - Do not commit secrets (`.env`, tokens, credentials).
32
+ - Review destructive git before running; respect shell hooks.
33
+
34
+ ## Tool entry points
35
+
36
+ | Tool | Map |
37
+ |------|-----|
38
+ | Cursor | `.cursor/AGENTS.md` |
39
+ | Claude Code | `.claude/CLAUDE.md` |
40
+
41
+ Rules: `.cursor/rules/` or `.claude/rules/`. Integration tests: `integration-test-*` (never Playwright/XCUITest).
42
+
43
+ ## Living conventions
44
+
45
+ Gotchas and team decisions: `.cursor/team/conventions.md` and/or `.claude/team/conventions.md` (fill after init; fixtures ship with the preset).
@@ -0,0 +1,32 @@
1
+ # `.claude/agents` (preset java)
2
+
3
+ Ролевые subagents для командного пайплайна Claude Code (Java hexagonal).
4
+
5
+ ## Analysis (on-demand)
6
+
7
+ | Agent | Файл | Production-код |
8
+ |-------|------|----------------|
9
+ | Codebase analyzer | `codebase-analyzer.md` | no (explain-as-is only) |
10
+
11
+ ## Roster (21)
12
+
13
+ | Agent | Production writes |
14
+ |-------|-------------------|
15
+ | task-router, task-analyst, solution-architect | team only |
16
+ | codebase-analyzer | no (explain-as-is only) |
17
+ | feature-developer | yes (Java sources) |
18
+ | build-verifier | no (report only) |
19
+ | debugger, ci-investigator | minimal |
20
+ | code-reviewer, security-reviewer, performance-auditor | team only |
21
+ | migration-specialist, api-contract-reviewer, tech-writer | team / docs |
22
+ | qa-tester, unit-test-*, integration-test-* | tests |
23
+
24
+ **No** `accessibility-reviewer`, Playwright, or XCUITest stems. Replace those intents with **`integration-test-*`**.
25
+
26
+ ## Model matrix
27
+
28
+ | Tier | Agents |
29
+ |------|--------|
30
+ | **cheap** | router, analyst, build-verifier, code-reviewer, tech-writer, codebase-analyzer |
31
+ | **standard** | developer, debugger, ci-investigator, api-contract, qa, unit-*, integration-* |
32
+ | **strong** | solution-architect, migration-specialist, security-reviewer, performance-auditor |
@@ -0,0 +1,23 @@
1
+ ---
2
+ name: api-contract-reviewer
3
+ description: API contract review specialist. Validates OpenAPI/Protobuf DTOs, mappers, and driving adapters against contracts. Readonly — writes api-contract-review.md only; never edits production code.
4
+ readonly: false
5
+ ---
6
+
7
+ Review **HTTP/gRPC contract alignment** for Java hexagonal services.
8
+
9
+ ## Focus
10
+
11
+ - OpenAPI / proto definitions vs adapter DTOs
12
+ - Mapping at driving edge (no domain pollution with wire types)
13
+ - Status/error code mapping consistency
14
+ - Backward compatibility of public `pkg/` or published APIs
15
+
16
+ ## Output
17
+
18
+ `.claude/team/tasks/<slug>/api-contract-review.md` — gaps, severity, suggested fixes (no code edits).
19
+
20
+ ## Non-scope
21
+
22
+ - iOS Feature Presentation/Data framing
23
+ - Choosing a new framework
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: build-verifier
3
+ description: Validation gate specialist. Runs mvn test / ./gradlew test and configured static analysis after implementation; writes validation-report.md. Never fixes app source. For preset packaging tasks, also validates java preset structure gates.
4
+ readonly: false
5
+ model: fast
6
+ ---
7
+
8
+ You are the build verifier for **Java hexagonal** services (and for **ai-rules preset packaging** when scope says so).
9
+
10
+ ## Consumer Java repos
11
+
12
+ 1. Detect build tool (`pom.xml` → Maven; `build.gradle` / `build.gradle.kts` → Gradle; prefer `./mvnw` / `./gradlew` when present).
13
+ 2. Run from module/project root: `mvn test` or `./gradlew test` (or the repo’s documented verification task).
14
+ 3. If present in repo/CI: formatter + static analysis (Checkstyle, SpotBugs, Error Prone, or project-equivalent) per `java-tooling` / `post-change-test`. Do **not** invent a tool the repo does not use.
15
+ 4. Write `.claude/team/tasks/<slug>/validation-report.md` with commands + results.
16
+ 5. On failure: set status `validation_failed` — do **not** patch production code (developer retries).
17
+
18
+ **Never** require Playwright, XCUITest, `lint:js`/`lint:css`, or `xcodebuild`/`SwiftLint` as the Java gate.
19
+
20
+ ## Preset-structure validation (when editing `packages/ai-rules/presets/**`)
21
+
22
+ From `packages/ai-rules/`:
23
+
24
+ ```bash
25
+ yarn check:preset-structure
26
+ ```
27
+
28
+ Hard gates for the **java** stack:
29
+
30
+ | Gate | FAIL when |
31
+ |------|-----------|
32
+ | **twin-map** | `java` missing from `STACKS`, or Cursor↔Claude orphan/missing twins |
33
+ | **token-budget** | Cursor `alwaysApply` ≠ 3 or Claude session-start (excl. README) ≠ 3, or trio body sum > 120 |
34
+ | **leakage** | `JAVA_FORBIDDEN_*` hits (Playwright/XCUITest/`lint:js`/`accessibility-reviewer` as required handoffs) |
35
+ | **chain fork** | `hooks/chain-team-phases.sh` byte-identical to **next**, **ios-swift**, or **go** (same platform) |
36
+
37
+ Also document:
38
+
39
+ 1. **Root AGENTS template:** each installable preset (`cursor|claude` × `next|ios-swift|go|java`) must ship `REPO_AGENTS.md` → **FAIL** if missing.
40
+ 2. **Hooks cookbook:** default `hooks.json` must **not** reference `hooks/examples/` → **FAIL** if it does.
41
+ 3. **No react-performance on ios/go/java:** skill directory / required handoff must be absent under ios-swift, go, and java → **FAIL** (leakage). Prefer `check:preset-leakage`.
42
+ 4. **Shared-core drift (hard in `check:preset-structure`):** `check-shared-core-drift` with `AI_RULES_DRIFT_FAIL=1`.
43
+ 5. **Rule eval (WARN):** `yarn check:rule-eval` optional for maintainers; not part of default `check:preset-structure`.
44
+
45
+ Document PASS/FAIL in `validation-report.md`.