hatch3r 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/README.md +68 -178
  2. package/dist/cli/index.js +26966 -15942
  3. package/{agents → dist/content/agents}/hatch3r-architect.md +39 -9
  4. package/dist/content/agents/hatch3r-brownfield-spec.md +254 -0
  5. package/{agents → dist/content/agents}/hatch3r-ci-watcher.md +10 -3
  6. package/{agents → dist/content/agents}/hatch3r-context-rules.md +24 -6
  7. package/{agents → dist/content/agents}/hatch3r-creator.md +78 -39
  8. package/dist/content/agents/hatch3r-dependency-drafter.md +162 -0
  9. package/{agents → dist/content/agents}/hatch3r-devops.md +14 -4
  10. package/{agents → dist/content/agents}/hatch3r-docs-writer.md +11 -1
  11. package/dist/content/agents/hatch3r-edge-case-analyst.md +134 -0
  12. package/dist/content/agents/hatch3r-enhancability.md +192 -0
  13. package/{agents → dist/content/agents}/hatch3r-fixer.md +61 -10
  14. package/dist/content/agents/hatch3r-greenfield-spec.md +256 -0
  15. package/{agents → dist/content/agents}/hatch3r-handoff-loader.md +40 -14
  16. package/{agents → dist/content/agents}/hatch3r-handoff-preparer.md +17 -8
  17. package/dist/content/agents/hatch3r-implementer.md +409 -0
  18. package/dist/content/agents/hatch3r-incident-responder.md +96 -0
  19. package/dist/content/agents/hatch3r-learnings-loader.md +377 -0
  20. package/{agents → dist/content/agents}/hatch3r-lint-fixer.md +16 -4
  21. package/dist/content/agents/hatch3r-maintainability.md +183 -0
  22. package/dist/content/agents/hatch3r-pack-installer.md +113 -0
  23. package/dist/content/agents/hatch3r-performance.md +179 -0
  24. package/dist/content/agents/hatch3r-reliability.md +193 -0
  25. package/{agents → dist/content/agents}/hatch3r-researcher.md +30 -7
  26. package/dist/content/agents/hatch3r-reviewer.md +364 -0
  27. package/dist/content/agents/hatch3r-scalability.md +162 -0
  28. package/dist/content/agents/hatch3r-security.md +197 -0
  29. package/dist/content/agents/hatch3r-testability.md +204 -0
  30. package/dist/content/agents/hatch3r-ui.md +175 -0
  31. package/dist/content/agents/hatch3r-ux.md +160 -0
  32. package/{agents → dist/content/agents}/modes/requirements-elicitation.md +1 -1
  33. package/{agents → dist/content/agents}/modes/user-flows.md +2 -2
  34. package/dist/content/agents/shared/clarification-default-block.md +44 -0
  35. package/dist/content/agents/shared/confidence-gate.md +42 -0
  36. package/dist/content/agents/shared/cq-specialist-roster.md +26 -0
  37. package/{agents → dist/content/agents}/shared/efficiency-patterns.md +32 -1
  38. package/{agents → dist/content/agents}/shared/external-knowledge.md +1 -1
  39. package/{agents → dist/content/agents}/shared/injection-patterns.md +19 -8
  40. package/dist/content/agents/shared/principles.md +60 -0
  41. package/{agents → dist/content/agents}/shared/prompt-structure.md +7 -1
  42. package/{agents → dist/content/agents}/shared/quality-charter.md +73 -9
  43. package/dist/content/agents/shared/quality-specialist-frame.md +141 -0
  44. package/dist/content/agents/shared/rigor-contract.md +151 -0
  45. package/dist/content/agents/shared/severity-mapping.md +92 -0
  46. package/dist/content/agents/shared/triage-vocabulary.md +46 -0
  47. package/{agents → dist/content/agents}/shared/user-content-templates.md +40 -14
  48. package/dist/content/agents/shared/user-question-protocol.md +139 -0
  49. package/{checks → dist/content/checks}/README.md +5 -0
  50. package/{checks → dist/content/checks}/accessibility.md +14 -7
  51. package/{checks → dist/content/checks}/code-quality.md +1 -1
  52. package/{checks → dist/content/checks}/performance.md +7 -4
  53. package/{checks → dist/content/checks}/security.md +6 -6
  54. package/{checks → dist/content/checks}/testing.md +1 -1
  55. package/{commands → dist/content/commands}/board/pickup-azure-devops.md +1 -1
  56. package/{commands → dist/content/commands}/board/pickup-delegation-multi.md +41 -14
  57. package/{commands → dist/content/commands}/board/pickup-delegation.md +10 -8
  58. package/{commands → dist/content/commands}/board/pickup-github.md +1 -1
  59. package/{commands → dist/content/commands}/board/pickup-gitlab.md +1 -1
  60. package/{commands → dist/content/commands}/board/pickup-modes.md +1 -0
  61. package/{commands → dist/content/commands}/board/pickup-post-impl.md +2 -2
  62. package/{commands → dist/content/commands}/board/shared-azure-devops.md +1 -1
  63. package/{commands → dist/content/commands}/board/shared-github.md +2 -2
  64. package/{commands → dist/content/commands}/board/shared-gitlab.md +1 -1
  65. package/{commands → dist/content/commands}/hatch3r-api-spec.md +80 -3
  66. package/dist/content/commands/hatch3r-auth-scaffold.md +250 -0
  67. package/{commands → dist/content/commands}/hatch3r-benchmark.md +91 -8
  68. package/{commands → dist/content/commands}/hatch3r-board-fill.md +104 -18
  69. package/{commands → dist/content/commands}/hatch3r-board-pickup.md +99 -15
  70. package/dist/content/commands/hatch3r-bug-pipeline.md +240 -0
  71. package/{commands → dist/content/commands}/hatch3r-bug-plan.md +84 -8
  72. package/{commands → dist/content/commands}/hatch3r-codebase-map.md +82 -6
  73. package/{commands → dist/content/commands}/hatch3r-create.md +116 -18
  74. package/{commands → dist/content/commands}/hatch3r-debug.md +112 -24
  75. package/dist/content/commands/hatch3r-diagnose.md +238 -0
  76. package/{commands → dist/content/commands}/hatch3r-feature-plan.md +130 -10
  77. package/dist/content/commands/hatch3r-handoff.md +213 -0
  78. package/{commands → dist/content/commands}/hatch3r-healthcheck.md +106 -6
  79. package/dist/content/commands/hatch3r-incident-response.md +228 -0
  80. package/{commands → dist/content/commands}/hatch3r-migration-plan.md +81 -5
  81. package/{commands → dist/content/commands}/hatch3r-onboard.md +100 -9
  82. package/dist/content/commands/hatch3r-pack-install.md +243 -0
  83. package/{commands → dist/content/commands}/hatch3r-pr-resolve.md +114 -31
  84. package/{commands → dist/content/commands}/hatch3r-project-spec.md +85 -9
  85. package/{commands → dist/content/commands}/hatch3r-quick-change.md +115 -20
  86. package/{commands → dist/content/commands}/hatch3r-refactor-plan.md +82 -6
  87. package/dist/content/commands/hatch3r-release.md +401 -0
  88. package/{commands → dist/content/commands}/hatch3r-revision.md +104 -18
  89. package/{commands → dist/content/commands}/hatch3r-roadmap.md +94 -12
  90. package/{commands → dist/content/commands}/hatch3r-security-audit.md +107 -7
  91. package/dist/content/commands/hatch3r-slo-scaffold.md +246 -0
  92. package/dist/content/commands/hatch3r-spec.md +216 -0
  93. package/{commands → dist/content/commands}/hatch3r-test-plan.md +90 -14
  94. package/dist/content/commands/hatch3r-workflow.md +628 -0
  95. package/{commands → dist/content/commands}/revision/revision-delegation.md +8 -7
  96. package/{commands → dist/content/commands}/revision/revision-modes.md +49 -4
  97. package/{commands → dist/content/commands}/revision/revision-quality.md +12 -9
  98. package/dist/content/commands/shared/orchestration-frame.md +119 -0
  99. package/{github-agents → dist/content/github-agents}/hatch3r-docs-agent.md +22 -2
  100. package/dist/content/github-agents/hatch3r-lint-agent.md +66 -0
  101. package/{github-agents → dist/content/github-agents}/hatch3r-security-agent.md +22 -2
  102. package/{github-agents → dist/content/github-agents}/hatch3r-test-agent.md +22 -2
  103. package/{hooks → dist/content/hooks}/hatch3r-ci-failure.md +3 -3
  104. package/{hooks → dist/content/hooks}/hatch3r-file-save.md +4 -4
  105. package/{hooks → dist/content/hooks}/hatch3r-post-merge.md +1 -1
  106. package/{hooks → dist/content/hooks}/hatch3r-pre-commit.md +1 -1
  107. package/{hooks → dist/content/hooks}/hatch3r-pre-push.md +7 -7
  108. package/dist/content/hooks/hatch3r-review-loop-cap.md +52 -0
  109. package/{hooks → dist/content/hooks}/hatch3r-session-start.md +3 -3
  110. package/{mcp → dist/content/mcp}/mcp.json +7 -5
  111. package/{rules → dist/content/rules}/hatch3r-accessibility-standards.md +16 -3
  112. package/{rules → dist/content/rules}/hatch3r-accessibility-standards.mdc +13 -1
  113. package/dist/content/rules/hatch3r-agent-orchestration-detail.md +250 -0
  114. package/dist/content/rules/hatch3r-agent-orchestration-detail.mdc +245 -0
  115. package/dist/content/rules/hatch3r-agent-orchestration.md +250 -0
  116. package/dist/content/rules/hatch3r-agent-orchestration.mdc +245 -0
  117. package/{rules → dist/content/rules}/hatch3r-ai-evals.md +7 -5
  118. package/{rules → dist/content/rules}/hatch3r-ai-evals.mdc +5 -4
  119. package/{rules → dist/content/rules}/hatch3r-ai-ux-patterns.md +7 -3
  120. package/{rules → dist/content/rules}/hatch3r-ai-ux-patterns.mdc +4 -1
  121. package/dist/content/rules/hatch3r-android-patterns.md +107 -0
  122. package/dist/content/rules/hatch3r-android-patterns.mdc +102 -0
  123. package/dist/content/rules/hatch3r-anti-duplication.md +115 -0
  124. package/dist/content/rules/hatch3r-anti-duplication.mdc +115 -0
  125. package/{rules → dist/content/rules}/hatch3r-api-design.md +5 -1
  126. package/{rules → dist/content/rules}/hatch3r-api-design.mdc +3 -0
  127. package/{rules → dist/content/rules}/hatch3r-api-versioning.md +3 -1
  128. package/{rules → dist/content/rules}/hatch3r-api-versioning.mdc +1 -0
  129. package/{rules → dist/content/rules}/hatch3r-auth-patterns.md +5 -2
  130. package/{rules → dist/content/rules}/hatch3r-auth-patterns.mdc +2 -0
  131. package/{rules → dist/content/rules}/hatch3r-browser-verification.md +8 -10
  132. package/{rules → dist/content/rules}/hatch3r-browser-verification.mdc +8 -10
  133. package/dist/content/rules/hatch3r-capability-matrix.md +108 -0
  134. package/dist/content/rules/hatch3r-capability-matrix.mdc +108 -0
  135. package/{rules → dist/content/rules}/hatch3r-ci-cd.md +9 -1
  136. package/{rules → dist/content/rules}/hatch3r-ci-cd.mdc +7 -0
  137. package/dist/content/rules/hatch3r-clarification-default.md +73 -0
  138. package/dist/content/rules/hatch3r-clarification-default.mdc +73 -0
  139. package/{rules → dist/content/rules}/hatch3r-code-standards.md +23 -47
  140. package/{rules → dist/content/rules}/hatch3r-code-standards.mdc +22 -46
  141. package/{rules → dist/content/rules}/hatch3r-component-conventions.md +4 -1
  142. package/{rules → dist/content/rules}/hatch3r-component-conventions.mdc +3 -0
  143. package/{rules → dist/content/rules}/hatch3r-container-hardening.md +13 -3
  144. package/{rules → dist/content/rules}/hatch3r-container-hardening.mdc +10 -1
  145. package/{rules → dist/content/rules}/hatch3r-contract-testing.md +3 -1
  146. package/{rules → dist/content/rules}/hatch3r-contract-testing.mdc +1 -0
  147. package/dist/content/rules/hatch3r-cost-visibility.md +135 -0
  148. package/dist/content/rules/hatch3r-cost-visibility.mdc +135 -0
  149. package/dist/content/rules/hatch3r-cq-rule-frame.md +54 -0
  150. package/dist/content/rules/hatch3r-cq-rule-frame.mdc +49 -0
  151. package/{rules → dist/content/rules}/hatch3r-data-classification.md +5 -2
  152. package/{rules → dist/content/rules}/hatch3r-data-classification.mdc +3 -1
  153. package/{rules → dist/content/rules}/hatch3r-deep-context.md +14 -14
  154. package/{rules → dist/content/rules}/hatch3r-deep-context.mdc +13 -13
  155. package/{rules → dist/content/rules}/hatch3r-dependency-management.md +18 -4
  156. package/{rules → dist/content/rules}/hatch3r-dependency-management.mdc +16 -3
  157. package/{rules → dist/content/rules}/hatch3r-design-system-detection.md +4 -2
  158. package/{rules → dist/content/rules}/hatch3r-design-system-detection.mdc +1 -0
  159. package/dist/content/rules/hatch3r-dotnet-patterns.md +104 -0
  160. package/dist/content/rules/hatch3r-dotnet-patterns.mdc +99 -0
  161. package/dist/content/rules/hatch3r-edge-case-discipline.md +65 -0
  162. package/dist/content/rules/hatch3r-edge-case-discipline.mdc +65 -0
  163. package/dist/content/rules/hatch3r-enhancability.md +147 -0
  164. package/dist/content/rules/hatch3r-enhancability.mdc +142 -0
  165. package/{rules → dist/content/rules}/hatch3r-event-schema-evolution.md +3 -1
  166. package/{rules → dist/content/rules}/hatch3r-event-schema-evolution.mdc +1 -0
  167. package/dist/content/rules/hatch3r-fan-out-discipline.md +91 -0
  168. package/dist/content/rules/hatch3r-fan-out-discipline.mdc +91 -0
  169. package/{rules → dist/content/rules}/hatch3r-feature-flags.md +2 -0
  170. package/{rules → dist/content/rules}/hatch3r-feature-flags.mdc +2 -0
  171. package/dist/content/rules/hatch3r-flutter-patterns.md +88 -0
  172. package/dist/content/rules/hatch3r-flutter-patterns.mdc +83 -0
  173. package/{rules → dist/content/rules}/hatch3r-git-conventions.md +5 -2
  174. package/{rules → dist/content/rules}/hatch3r-git-conventions.mdc +2 -0
  175. package/dist/content/rules/hatch3r-go-patterns.md +98 -0
  176. package/dist/content/rules/hatch3r-go-patterns.mdc +93 -0
  177. package/{rules → dist/content/rules}/hatch3r-handoff-readiness.md +14 -4
  178. package/{rules → dist/content/rules}/hatch3r-handoff-readiness.mdc +13 -3
  179. package/{rules → dist/content/rules}/hatch3r-i18n.md +3 -1
  180. package/{rules → dist/content/rules}/hatch3r-i18n.mdc +2 -0
  181. package/dist/content/rules/hatch3r-iteration-summary.md +108 -0
  182. package/dist/content/rules/hatch3r-iteration-summary.mdc +108 -0
  183. package/dist/content/rules/hatch3r-learning-system.md +202 -0
  184. package/dist/content/rules/hatch3r-learning-system.mdc +202 -0
  185. package/dist/content/rules/hatch3r-maintainability.md +157 -0
  186. package/dist/content/rules/hatch3r-maintainability.mdc +152 -0
  187. package/{rules → dist/content/rules}/hatch3r-migrations.md +4 -2
  188. package/{rules → dist/content/rules}/hatch3r-migrations.mdc +1 -0
  189. package/{rules → dist/content/rules}/hatch3r-observability-logging.md +2 -1
  190. package/{rules → dist/content/rules}/hatch3r-observability-logging.mdc +1 -0
  191. package/{rules → dist/content/rules}/hatch3r-observability-metrics.md +2 -1
  192. package/{rules → dist/content/rules}/hatch3r-observability-metrics.mdc +1 -0
  193. package/{rules → dist/content/rules}/hatch3r-observability-tracing.md +46 -36
  194. package/{rules → dist/content/rules}/hatch3r-observability-tracing.mdc +45 -35
  195. package/{rules → dist/content/rules}/hatch3r-operability.md +3 -1
  196. package/{rules → dist/content/rules}/hatch3r-operability.mdc +1 -0
  197. package/{rules → dist/content/rules}/hatch3r-passkey-server.md +4 -2
  198. package/{rules → dist/content/rules}/hatch3r-passkey-server.mdc +1 -0
  199. package/{rules → dist/content/rules}/hatch3r-performance-budgets.md +3 -1
  200. package/{rules → dist/content/rules}/hatch3r-performance-budgets.mdc +3 -1
  201. package/dist/content/rules/hatch3r-php-laravel-patterns.md +109 -0
  202. package/dist/content/rules/hatch3r-php-laravel-patterns.mdc +104 -0
  203. package/{rules → dist/content/rules}/hatch3r-progressive-delivery.md +5 -1
  204. package/{rules → dist/content/rules}/hatch3r-progressive-delivery.mdc +3 -0
  205. package/dist/content/rules/hatch3r-proof-model.md +131 -0
  206. package/dist/content/rules/hatch3r-proof-model.mdc +131 -0
  207. package/dist/content/rules/hatch3r-python-patterns.md +70 -0
  208. package/dist/content/rules/hatch3r-python-patterns.mdc +65 -0
  209. package/dist/content/rules/hatch3r-react-native-patterns.md +83 -0
  210. package/dist/content/rules/hatch3r-react-native-patterns.mdc +78 -0
  211. package/{rules → dist/content/rules}/hatch3r-resilience-patterns.md +3 -1
  212. package/{rules → dist/content/rules}/hatch3r-resilience-patterns.mdc +1 -0
  213. package/dist/content/rules/hatch3r-reviewer-calibration.md +84 -0
  214. package/dist/content/rules/hatch3r-reviewer-calibration.mdc +84 -0
  215. package/dist/content/rules/hatch3r-right-sizing.md +68 -0
  216. package/dist/content/rules/hatch3r-right-sizing.mdc +66 -0
  217. package/dist/content/rules/hatch3r-ruby-rails-patterns.md +111 -0
  218. package/dist/content/rules/hatch3r-ruby-rails-patterns.mdc +106 -0
  219. package/dist/content/rules/hatch3r-rust-patterns.md +107 -0
  220. package/dist/content/rules/hatch3r-rust-patterns.mdc +102 -0
  221. package/dist/content/rules/hatch3r-scalability.md +137 -0
  222. package/dist/content/rules/hatch3r-scalability.mdc +132 -0
  223. package/{rules → dist/content/rules}/hatch3r-secrets-management.md +12 -2
  224. package/{rules → dist/content/rules}/hatch3r-secrets-management.mdc +9 -0
  225. package/{rules → dist/content/rules}/hatch3r-security-patterns.md +38 -35
  226. package/{rules → dist/content/rules}/hatch3r-security-patterns.mdc +36 -34
  227. package/dist/content/rules/hatch3r-security.md +97 -0
  228. package/dist/content/rules/hatch3r-security.mdc +92 -0
  229. package/dist/content/rules/hatch3r-swiftui-patterns.md +98 -0
  230. package/dist/content/rules/hatch3r-swiftui-patterns.mdc +93 -0
  231. package/dist/content/rules/hatch3r-testability.md +115 -0
  232. package/dist/content/rules/hatch3r-testability.mdc +110 -0
  233. package/{rules → dist/content/rules}/hatch3r-testing.md +6 -2
  234. package/{rules → dist/content/rules}/hatch3r-testing.mdc +3 -0
  235. package/{rules → dist/content/rules}/hatch3r-theming.md +3 -1
  236. package/{rules → dist/content/rules}/hatch3r-theming.mdc +2 -0
  237. package/dist/content/rules/hatch3r-tool-currency.md +91 -0
  238. package/dist/content/rules/hatch3r-tool-currency.mdc +86 -0
  239. package/{rules → dist/content/rules}/hatch3r-tooling-hierarchy.md +30 -32
  240. package/{rules → dist/content/rules}/hatch3r-tooling-hierarchy.mdc +28 -31
  241. package/dist/content/rules/hatch3r-typescript-patterns.md +58 -0
  242. package/dist/content/rules/hatch3r-typescript-patterns.mdc +53 -0
  243. package/{rules → dist/content/rules}/hatch3r-ux-states-and-flows.md +13 -5
  244. package/{rules → dist/content/rules}/hatch3r-ux-states-and-flows.mdc +10 -3
  245. package/{skills → dist/content/skills}/hatch3r-a11y-audit/SKILL.md +11 -9
  246. package/{skills → dist/content/skills}/hatch3r-a11y-audit/references/manual-audit-checklist.md +7 -5
  247. package/dist/content/skills/hatch3r-adhoc-orchestrate/SKILL.md +131 -0
  248. package/{skills → dist/content/skills}/hatch3r-ai-feature/SKILL.md +4 -6
  249. package/{skills → dist/content/skills}/hatch3r-api-spec/SKILL.md +27 -2
  250. package/{skills → dist/content/skills}/hatch3r-architecture-review/SKILL.md +5 -8
  251. package/{commands/hatch3r-board-groom.md → dist/content/skills/hatch3r-board-groom/SKILL.md} +16 -18
  252. package/{commands/hatch3r-board-init.md → dist/content/skills/hatch3r-board-init/SKILL.md} +34 -31
  253. package/{commands/hatch3r-board-refresh.md → dist/content/skills/hatch3r-board-refresh/SKILL.md} +17 -19
  254. package/{commands/hatch3r-board-shared.md → dist/content/skills/hatch3r-board-shared/SKILL.md} +45 -15
  255. package/dist/content/skills/hatch3r-browser-verify/SKILL.md +307 -0
  256. package/{skills → dist/content/skills}/hatch3r-bug-fix/SKILL.md +16 -3
  257. package/{skills → dist/content/skills}/hatch3r-ci-pipeline/SKILL.md +17 -7
  258. package/{skills → dist/content/skills}/hatch3r-cli-fd/SKILL.md +34 -2
  259. package/{skills → dist/content/skills}/hatch3r-cli-fzf/SKILL.md +34 -2
  260. package/dist/content/skills/hatch3r-cli-gh/SKILL.md +139 -0
  261. package/{skills → dist/content/skills}/hatch3r-cli-jq/SKILL.md +43 -9
  262. package/{skills → dist/content/skills}/hatch3r-cli-ripgrep/SKILL.md +36 -4
  263. package/dist/content/skills/hatch3r-cli-toolbox/SKILL.md +376 -0
  264. package/dist/content/skills/hatch3r-containerize/SKILL.md +157 -0
  265. package/{skills → dist/content/skills}/hatch3r-context-health/SKILL.md +27 -9
  266. package/dist/content/skills/hatch3r-cost-tracking/SKILL.md +164 -0
  267. package/{skills → dist/content/skills}/hatch3r-customize/SKILL.md +9 -13
  268. package/{skills → dist/content/skills}/hatch3r-dep-audit/SKILL.md +29 -9
  269. package/{skills → dist/content/skills}/hatch3r-design-system-detect/SKILL.md +4 -8
  270. package/dist/content/skills/hatch3r-docs-writing/SKILL.md +159 -0
  271. package/dist/content/skills/hatch3r-enhancability-verify/SKILL.md +152 -0
  272. package/{skills → dist/content/skills}/hatch3r-feature/SKILL.md +54 -4
  273. package/dist/content/skills/hatch3r-feedback/SKILL.md +103 -0
  274. package/{skills → dist/content/skills}/hatch3r-gh-agentic-workflows/SKILL.md +14 -12
  275. package/{skills → dist/content/skills}/hatch3r-gh-agentic-workflows/references/azure-devops.md +2 -2
  276. package/{skills → dist/content/skills}/hatch3r-gh-agentic-workflows/references/gitlab-ci.md +1 -1
  277. package/{skills → dist/content/skills}/hatch3r-handoff-prepare/SKILL.md +12 -15
  278. package/{skills → dist/content/skills}/hatch3r-handoff-resume/SKILL.md +5 -8
  279. package/{commands/hatch3r-hooks.md → dist/content/skills/hatch3r-hooks/SKILL.md} +59 -148
  280. package/dist/content/skills/hatch3r-incident-response/SKILL.md +174 -0
  281. package/{skills → dist/content/skills}/hatch3r-issue-workflow/SKILL.md +15 -4
  282. package/dist/content/skills/hatch3r-learn/SKILL.md +317 -0
  283. package/{skills → dist/content/skills}/hatch3r-logical-refactor/SKILL.md +6 -7
  284. package/dist/content/skills/hatch3r-maintainability-verify/SKILL.md +146 -0
  285. package/{skills → dist/content/skills}/hatch3r-migration/SKILL.md +9 -8
  286. package/{skills → dist/content/skills}/hatch3r-observability-verify/SKILL.md +17 -13
  287. package/{skills → dist/content/skills}/hatch3r-perf-audit/SKILL.md +14 -10
  288. package/{skills → dist/content/skills}/hatch3r-pr-creation/SKILL.md +8 -11
  289. package/{skills → dist/content/skills}/hatch3r-qa-validation/SKILL.md +8 -7
  290. package/dist/content/skills/hatch3r-recipe/SKILL.md +174 -0
  291. package/{skills → dist/content/skills}/hatch3r-refactor/SKILL.md +7 -8
  292. package/dist/content/skills/hatch3r-release/SKILL.md +265 -0
  293. package/{skills → dist/content/skills}/hatch3r-reliability-verify/SKILL.md +9 -5
  294. package/{commands/hatch3r-report.md → dist/content/skills/hatch3r-report/SKILL.md} +21 -18
  295. package/dist/content/skills/hatch3r-scalability-verify/SKILL.md +145 -0
  296. package/dist/content/skills/hatch3r-security-verify/SKILL.md +144 -0
  297. package/dist/content/skills/hatch3r-team-convention-author/SKILL.md +126 -0
  298. package/dist/content/skills/hatch3r-testability-verify/SKILL.md +147 -0
  299. package/{skills → dist/content/skills}/hatch3r-ui-ux-verify/SKILL.md +20 -12
  300. package/{skills → dist/content/skills}/hatch3r-visual-refactor/SKILL.md +12 -8
  301. package/package.json +53 -46
  302. package/agents/hatch3r-a11y-auditor.md +0 -159
  303. package/agents/hatch3r-dependency-auditor.md +0 -219
  304. package/agents/hatch3r-implementer.md +0 -278
  305. package/agents/hatch3r-learnings-loader.md +0 -343
  306. package/agents/hatch3r-perf-profiler.md +0 -166
  307. package/agents/hatch3r-reviewer.md +0 -314
  308. package/agents/hatch3r-security-auditor.md +0 -180
  309. package/agents/hatch3r-test-writer.md +0 -171
  310. package/agents/shared/user-question-protocol.md +0 -95
  311. package/commands/hatch3r-agent-customize.md +0 -201
  312. package/commands/hatch3r-command-customize.md +0 -113
  313. package/commands/hatch3r-context-health.md +0 -147
  314. package/commands/hatch3r-cost-tracking.md +0 -163
  315. package/commands/hatch3r-dep-audit.md +0 -188
  316. package/commands/hatch3r-handoff.md +0 -133
  317. package/commands/hatch3r-learn.md +0 -312
  318. package/commands/hatch3r-recipe.md +0 -194
  319. package/commands/hatch3r-release.md +0 -350
  320. package/commands/hatch3r-rule-customize.md +0 -133
  321. package/commands/hatch3r-skill-customize.md +0 -112
  322. package/commands/hatch3r-workflow.md +0 -504
  323. package/dist/cli/index.d.ts +0 -2
  324. package/dist/cli/index.js.map +0 -1
  325. package/github-agents/hatch3r-lint-agent.md +0 -46
  326. package/prompts/hatch3r-bug-triage.md +0 -158
  327. package/prompts/hatch3r-code-review.md +0 -134
  328. package/prompts/hatch3r-pr-description.md +0 -176
  329. package/rules/hatch3r-agent-orchestration-detail.md +0 -211
  330. package/rules/hatch3r-agent-orchestration-detail.mdc +0 -206
  331. package/rules/hatch3r-agent-orchestration.md +0 -376
  332. package/rules/hatch3r-agent-orchestration.mdc +0 -371
  333. package/rules/hatch3r-iteration-summary.md +0 -90
  334. package/rules/hatch3r-iteration-summary.mdc +0 -85
  335. package/rules/hatch3r-learning-consult.md +0 -42
  336. package/rules/hatch3r-learning-consult.mdc +0 -38
  337. package/rules/hatch3r-observability-tracing-detail.md +0 -20
  338. package/rules/hatch3r-observability-tracing-detail.mdc +0 -14
  339. package/rules/hatch3r-observability.md +0 -20
  340. package/rules/hatch3r-observability.mdc +0 -14
  341. package/skills/hatch3r-agent-customize/SKILL.md +0 -23
  342. package/skills/hatch3r-cli-aichat/SKILL.md +0 -84
  343. package/skills/hatch3r-cli-ast-grep/SKILL.md +0 -85
  344. package/skills/hatch3r-cli-az-devops/SKILL.md +0 -89
  345. package/skills/hatch3r-cli-bat/SKILL.md +0 -85
  346. package/skills/hatch3r-cli-comby/SKILL.md +0 -85
  347. package/skills/hatch3r-cli-csvkit/SKILL.md +0 -84
  348. package/skills/hatch3r-cli-delta/SKILL.md +0 -86
  349. package/skills/hatch3r-cli-difftastic/SKILL.md +0 -84
  350. package/skills/hatch3r-cli-docker/SKILL.md +0 -89
  351. package/skills/hatch3r-cli-duckdb/SKILL.md +0 -84
  352. package/skills/hatch3r-cli-gh/SKILL.md +0 -90
  353. package/skills/hatch3r-cli-glab/SKILL.md +0 -89
  354. package/skills/hatch3r-cli-lazygit/SKILL.md +0 -78
  355. package/skills/hatch3r-cli-llm/SKILL.md +0 -84
  356. package/skills/hatch3r-cli-miller/SKILL.md +0 -84
  357. package/skills/hatch3r-cli-mods/SKILL.md +0 -84
  358. package/skills/hatch3r-cli-overview/SKILL.md +0 -60
  359. package/skills/hatch3r-cli-playwright/SKILL.md +0 -89
  360. package/skills/hatch3r-cli-podman/SKILL.md +0 -84
  361. package/skills/hatch3r-cli-qsv/SKILL.md +0 -91
  362. package/skills/hatch3r-cli-rtk/SKILL.md +0 -91
  363. package/skills/hatch3r-cli-sd/SKILL.md +0 -85
  364. package/skills/hatch3r-cli-stagehand/SKILL.md +0 -111
  365. package/skills/hatch3r-cli-taplo/SKILL.md +0 -84
  366. package/skills/hatch3r-cli-yq/SKILL.md +0 -85
  367. package/skills/hatch3r-cli-zstd/SKILL.md +0 -85
  368. package/skills/hatch3r-command-customize/SKILL.md +0 -23
  369. package/skills/hatch3r-cost-tracking/SKILL.md +0 -92
  370. package/skills/hatch3r-incident-response/SKILL.md +0 -115
  371. package/skills/hatch3r-recipe/SKILL.md +0 -91
  372. package/skills/hatch3r-release/SKILL.md +0 -120
  373. package/skills/hatch3r-rule-customize/SKILL.md +0 -23
  374. package/skills/hatch3r-skill-customize/SKILL.md +0 -23
  375. /package/{agents → dist/content/agents}/modes/architecture.md +0 -0
  376. /package/{agents → dist/content/agents}/modes/boundary-analysis.md +0 -0
  377. /package/{agents → dist/content/agents}/modes/codebase-impact.md +0 -0
  378. /package/{agents → dist/content/agents}/modes/complexity-risk.md +0 -0
  379. /package/{agents → dist/content/agents}/modes/coverage-analysis.md +0 -0
  380. /package/{agents → dist/content/agents}/modes/current-state.md +0 -0
  381. /package/{agents → dist/content/agents}/modes/feature-design.md +0 -0
  382. /package/{agents → dist/content/agents}/modes/impact-analysis.md +0 -0
  383. /package/{agents → dist/content/agents}/modes/library-docs.md +0 -0
  384. /package/{agents → dist/content/agents}/modes/migration-path.md +0 -0
  385. /package/{agents → dist/content/agents}/modes/prior-art.md +0 -0
  386. /package/{agents → dist/content/agents}/modes/refactoring-strategy.md +0 -0
  387. /package/{agents → dist/content/agents}/modes/regression.md +0 -0
  388. /package/{agents → dist/content/agents}/modes/risk-assessment.md +0 -0
  389. /package/{agents → dist/content/agents}/modes/risk-prioritization.md +0 -0
  390. /package/{agents → dist/content/agents}/modes/root-cause.md +0 -0
  391. /package/{agents → dist/content/agents}/modes/similar-implementation.md +0 -0
  392. /package/{agents → dist/content/agents}/modes/symptom-trace.md +0 -0
  393. /package/{agents → dist/content/agents}/modes/test-pattern.md +0 -0
  394. /package/{commands → dist/content/commands}/board/shared-board-overview.md +0 -0
  395. /package/{commands → dist/content/commands}/revision/revision-board-integration.md +0 -0
  396. /package/{skills → dist/content/skills}/hatch3r-issue-workflow/references/delegation-patterns.md +0 -0
@@ -0,0 +1,102 @@
1
+ ---
2
+ description: Android Kotlin conventions covering Jetpack Compose, coroutines + Flow, Hilt DI, Room, modular Gradle, AGP 8.x, target SDK 35, and Compose testing
3
+ globs: ["**/*.kt", "**/*.kts", "**/build.gradle", "**/build.gradle.kts", "**/settings.gradle", "**/settings.gradle.kts", "**/gradle.properties", "**/AndroidManifest.xml", "**/proguard-rules.pro", "**/app/src/**", "**/android/app/**", "**/libs.versions.toml"]
4
+ alwaysApply: false
5
+ ---
6
+ # Android Patterns
7
+
8
+ **Pillars:** P2 (Scientific & Practical Quality), CQ8 (Maintainability Quality)
9
+
10
+ > Applies when the project ships an Android app or Kotlin library. Detection signals: `build.gradle` / `build.gradle.kts`, `AndroidManifest.xml`, `app/` module, or any `*.kt` file paired with Gradle wrapper. Native Android takes precedence over Flutter/React-Native cross-platform shells.
11
+
12
+ ## Kotlin Language Floor
13
+
14
+ - Target Kotlin 2.0+ with K2 compiler (`kotlin.experimental.tryK2=true`). Treat warnings as errors in CI.
15
+ - Use `data class` for value-equality types, `sealed class` / `sealed interface` for closed-set hierarchies (UI state, events, errors). Exhaust `when` over sealed types — the compiler enforces it.
16
+ - Coroutines + Flow for concurrency. Never use `Thread` directly. Wrap legacy callback APIs with `suspendCancellableCoroutine` at the boundary.
17
+ - Nullability: explicit `?` for nullable types; avoid `!!` (force-unwrap) outside test fixtures. Platform types from Java interop annotated with `@Nullable` / `@NonNull` where possible.
18
+
19
+ ## Build Tooling
20
+
21
+ - Android Gradle Plugin (AGP) 8.7+ with Gradle 8.10+. Use the version catalog (`gradle/libs.versions.toml`) for every dependency — no hard-coded versions in `build.gradle.kts`.
22
+ - Kotlin DSL (`build.gradle.kts`) for new modules. Migrate Groovy scripts during regular refactors; do not mix dialects in a single module's chain.
23
+ - Target SDK 35 (Android 15) — Google Play requires `targetSdk = 35` for new apps and updates in 2025. Set `compileSdk = 35` alongside.
24
+ - Min SDK: 24 (Android 7.0) covers >97% of active devices per Android Distribution Dashboard. Going below 24 means losing modern Kotlin stdlib calls that require API 24.
25
+
26
+ ## Architecture
27
+
28
+ - Pick ONE app-architecture pattern per app and document it in `docs/architecture.md`:
29
+ - **MVI / Unidirectional Data Flow with Compose + ViewModel + StateFlow** — recommended default.
30
+ - **MVVM with LiveData** — only for legacy apps that haven't migrated to Compose.
31
+ - Modular Gradle structure: `app/` (entry point), `feature:<name>/` (feature modules), `core:<network|database|design-system>/` (shared modules). Cross-feature imports go through `core:` interfaces.
32
+ - Composition root in `app/` wires Hilt graphs. Feature modules expose `@Module @InstallIn(SingletonComponent::class)` providers; they never instantiate dependencies directly.
33
+
34
+ ## Dependency Injection
35
+
36
+ - Use Hilt for runtime DI (annotation-processor based, sits on top of Dagger). Configure `@HiltAndroidApp` on the `Application` class and `@AndroidEntryPoint` on Activities, Fragments, Services.
37
+ - Constructor injection for ViewModels via `@HiltViewModel` + `@Inject constructor`. Do not use `ViewModelProvider.Factory` manually unless integrating with a non-Hilt host.
38
+ - Scoped bindings: `@SingletonComponent` for app-wide singletons, `@ViewModelScoped` for per-ViewModel instances. Never share `@SingletonComponent` state with UI lifecycle.
39
+
40
+ ## Jetpack Compose
41
+
42
+ - Compose is the UI floor for new screens. Migrate XML views during regular refactors; do not mix `ConstraintLayout` XML with Compose for a single screen.
43
+ - State hoisting: `@Composable` functions are stateless by default. Hoist `MutableState` to the ViewModel; pass values + lambdas down.
44
+ - Use `collectAsStateWithLifecycle()` on Flow → State conversions inside composables. Plain `collectAsState()` ignores lifecycle and leaks during backgrounded screens.
45
+ - Recompose discipline: stable types only as composable parameters. Use `@Stable` / `@Immutable` annotations or `kotlinx-collections-immutable` for lists. `MutableList<T>` parameters force every consumer to recompose on any mutation.
46
+ - Material 3 (`androidx.compose.material3`) is the design system floor for Compose. Material 2 is legacy.
47
+
48
+ ## Coroutines & Flow
49
+
50
+ - Structured concurrency: every coroutine launched in a `CoroutineScope` tied to a lifecycle. Use `viewModelScope` (auto-cancels on `onCleared()`), `lifecycleScope` (auto-cancels on lifecycle destroy), and `WorkManager` for background tasks.
51
+ - Never launch from `GlobalScope`. Never call `runBlocking` on the main thread.
52
+ - Cold flows (`flow { }`, `flowOf`) for one-shot streams; hot flows (`MutableStateFlow`, `MutableSharedFlow`) for UI state and event buses. `LiveData` is legacy — use `StateFlow` for new code.
53
+ - Use `Dispatchers.IO` for blocking I/O, `Dispatchers.Default` for CPU-bound work. The main dispatcher is for UI updates only; no blocking work there.
54
+
55
+ ## Persistence
56
+
57
+ - Room is the SQL persistence floor. Define `@Entity`, `@Dao`, and a `@Database` class with a versioned schema. Migration paths via `Migration` objects committed to VCS.
58
+ - DataStore (Preferences or Proto) for key-value and structured preferences. SharedPreferences is legacy — do not adopt for new code.
59
+ - For network sync: WorkManager with `Constraints` (network, charging, battery) + exponential backoff. Never use `JobScheduler` directly — WorkManager wraps it and handles edge cases.
60
+ - Bind Room DAOs and DataStore to coroutines / Flow — suspend functions for one-shot queries, `Flow<T>` for observed reads.
61
+
62
+ ## Networking
63
+
64
+ - Use Retrofit 2.11+ with kotlinx-serialization-converter or Moshi (Gson is in maintenance — prefer one of the modern serializers). Configure OkHttp logging interceptor only in debug builds.
65
+ - Ktor Client is the alternative when the app shares a multi-platform stack with Kotlin Multiplatform.
66
+ - Configure timeouts on every OkHttp client: connect (10s), read (30s), write (15s). Default timeouts are unbounded — production apps must override.
67
+ - Certificate pinning (`CertificatePinner`) for high-security endpoints. Always include a backup pin and a rotation schedule.
68
+
69
+ ## Testing
70
+
71
+ - Unit tests with JUnit 5 (`org.junit.jupiter:junit-jupiter`) + MockK for mocking. JUnit 4 + Mockito is legacy — do not add for new modules.
72
+ - Coroutine tests with `kotlinx-coroutines-test` (`runTest`, `TestDispatcher`). Never use `Thread.sleep` to wait for async work.
73
+ - Compose UI tests with `androidx.compose.ui:ui-test-junit4`. Use semantics-based matchers (`hasContentDescription`, `hasTestTag`) — avoid text matchers for resilience.
74
+ - Instrumented tests via `androidTest/` source set on emulators or Firebase Test Lab matrices. Configure `testCoverage` in the AGP block; floor 80% line coverage in `feature:` modules.
75
+ - Screenshot tests via Paparazzi (host-side, no emulator needed) or Roborazzi. Update goldens through PR review.
76
+
77
+ ## Accessibility
78
+
79
+ - Every interactive composable has `Modifier.semantics { contentDescription = "..." }` or uses Material 3 widgets that provide semantics by default.
80
+ - TalkBack tested on every PR touching UI. The TalkBack-on screenshot test in Paparazzi catches regressions automatically.
81
+ - Dynamic font scaling: respect `MaterialTheme.typography` and avoid hard-coded `.sp` values in layouts. Test with the largest accessibility font size in the system settings.
82
+ - Touch targets: minimum 48dp × 48dp per Material 3 guidelines. `Modifier.minimumInteractiveComponentSize()` enforces this when composables are below 48dp.
83
+
84
+ ## Distribution
85
+
86
+ - Sign release builds with Play App Signing — Google holds the upload key, you hold the signing key in escrow. Configure via Play Console.
87
+ - App Bundle (`*.aab`) for Play Store, APK only for sideload / direct distribution. Enable `bundle { language { enableSplit = true } }`.
88
+ - ProGuard / R8 on release builds (`isMinifyEnabled = true`, `isShrinkResources = true`). Maintain `proguard-rules.pro` per module; verify post-shrink builds in CI before publishing.
89
+ - Use Crashlytics or Sentry for crash reporting. Symbolicate native crashes via NDK symbol upload in CI.
90
+
91
+ ## References
92
+
93
+ - AGP 8.x release notes: https://developer.android.com/build/releases/gradle-plugin (accessed 2026-05-27, official-docs)
94
+ - Jetpack Compose: https://developer.android.com/jetpack/compose (accessed 2026-05-27, official-docs)
95
+ - Coroutines + Flow: https://kotlinlang.org/docs/coroutines-overview.html (accessed 2026-05-27, official-docs)
96
+ - Google Play target SDK 35 requirement: https://developer.android.com/google/play/requirements/target-sdk (accessed 2026-05-27, official-docs)
97
+
98
+ ## Cross-References
99
+
100
+ - `rules/hatch3r-component-conventions.md` — four-state surface contract maps to Compose `StateFlow<UiState>` patterns.
101
+ - `rules/hatch3r-testing.md` — coverage thresholds and determinism rules apply to JUnit / Compose tests.
102
+ - `rules/hatch3r-accessibility-standards.md` — WCAG mapping for Compose `semantics { ... }` modifiers.
@@ -0,0 +1,115 @@
1
+ ---
2
+ id: hatch3r-anti-duplication
3
+ type: rule
4
+ description: Pre-implementation discovery gate (codebase pattern search) + post-write duplication scan (jscpd threshold per maturity tier). Silent duplication is a P4 violation.
5
+ tags: [anti-duplication, code-quality, floor:content-quality]
6
+ precedence: high
7
+ scope: always
8
+ ---
9
+ # hatch3r Anti-Duplication
10
+
11
+ **Pillars:** P4 (Comprehensive Lean Coverage), CQ8 (Maintainability Quality)
12
+
13
+ ## Pre-Implementation Discovery Gate
14
+
15
+ Before writing any new function, type, or pattern:
16
+
17
+ 1. **Grep existing surface** for similar function names: `grep -rn "function.*<similar-name>" src/`
18
+ 2. **Grep existing surface** for similar type shapes: `grep -rn "type.*<similar-shape>" src/`
19
+ 3. **Grep existing surface** for similar comment headers: `grep -rn "// <similar-purpose>" src/`
20
+ 4. **Read closest existing match** end-to-end to confirm it does NOT cover the new requirement.
21
+
22
+ If a similar artifact exists with ≥80% scope overlap, do one of:
23
+
24
+ - Extend the existing artifact with the additional case.
25
+ - Refactor into a shared abstraction consumed by both.
26
+ - Document the distinct scope as an ADR before authoring the new artifact.
27
+
28
+ Report findings of the discovery scan in the iteration summary §Files Mutated section.
29
+
30
+ ## Post-Write Duplication Scan
31
+
32
+ After every implementation:
33
+
34
+ 1. Run `npx jscpd <changed-dirs>` (or equivalent: PMD CPD, simian, sonar-scanner).
35
+ 2. Flag any block matching ≥30 lines OR ≥80% similarity with existing code.
36
+ 3. Refactor or justify before merge.
37
+
38
+ Tools accepted as equivalent: `jscpd` (Node), `PMD CPD` (Java/multi-lang), `simian` (multi-lang), `sonar-scanner` duplication module. Pick by toolchain; the threshold below is tool-agnostic.
39
+
40
+ ## Tunable Thresholds Per Maturity Tier
41
+
42
+ Per `hatch3r config maturity=<tier>`:
43
+
44
+ - **solo** — jscpd threshold ≤10% (relaxed for early-stage exploration)
45
+ - **team** — jscpd threshold ≤7%
46
+ - **scaleup** — jscpd threshold ≤5%
47
+ - **enterprise** — jscpd threshold ≤3%
48
+
49
+ Tier set via `hatch3r config maturity=<tier>` per CONSTITUTION §6 Decision #16 (Decision 4 in fresh-session-prompt mapping). Threshold breach blocks merge until the offending block is refactored or justified with an inline ADR comment.
50
+
51
+ ## Silent Duplication Violation
52
+
53
+ Per CONSTITUTION §2 P4: Single Source of Truth. Silent duplication (no ADR, no refactor) is a P4 violation surfaced by D16 Compound System audit + D22 Content Architecture audit (after authoring).
54
+
55
+ Per CONSTITUTION §2 P5 Silent Failure Contract: a duplication scan that finds matches but emits no warning to the caller is itself a contract violation — the scan must surface findings via the iteration summary or a CI gate.
56
+
57
+ ## Discovery Gate Output Schema
58
+
59
+ Report from the pre-implementation grep step lands in the iteration summary as:
60
+
61
+ ```
62
+ discovery_scan:
63
+ greps_run: <integer>
64
+ candidate_matches: <integer>
65
+ closest_match_path: <relative-path>
66
+ overlap_assessment: none | partial | high (≥80%)
67
+ decision: new-artifact | extend-existing | refactor-shared | adr-distinct
68
+ ```
69
+
70
+ `overlap_assessment: high` without `decision: extend-existing | refactor-shared | adr-distinct` is a P4 violation — author is creating a duplicate.
71
+
72
+ ## Worked Example
73
+
74
+ Task: add a function that formats an ISO-8601 timestamp for a CLI log line.
75
+
76
+ 1. Discovery grep: `grep -rn "function format.*Date\|function format.*Time\|function format.*Timestamp" src/`.
77
+ 2. Closest match found: `src/cli/util/format.ts::formatLocalTime(date: Date): string` — 11 lines, formats `HH:mm:ss` only.
78
+ 3. Overlap assessment: `partial` — same domain (date formatting) but distinct output shape (timestamp vs time-of-day).
79
+ 4. Decision: `extend-existing` — add a `format: "iso" | "local"` parameter to `formatLocalTime`, rename to `formatTime`, update 3 callers.
80
+ 5. Post-write scan: `npx jscpd src/cli/util/` reports 0% duplication on the change. Merge.
81
+
82
+ The discovery step took ~30 seconds; it prevented a parallel `formatIsoTimestamp` function and a forked test file.
83
+
84
+ ## Skip Conditions
85
+
86
+ The discovery + scan procedure binds every code-writing turn EXCEPT:
87
+
88
+ - Single-line edits to existing functions (bug fix, typo, error-message wording).
89
+ - Frontmatter-only edits to canonical content artifacts.
90
+ - Test-file edits that mirror an existing source-file change (the test mirrors a function the discovery step already ran on).
91
+ - Cosmetic edits (whitespace, comment wording, import sorting).
92
+
93
+ When skipped, declare `discovery_scan: skipped (reason: <reason>)` in the iteration summary. Skipping without declaration is itself a P5 silent-failure violation per CONSTITUTION §2 P5 Silent Failure Contract.
94
+
95
+ ## Enforcement
96
+
97
+ - `agents/shared/quality-charter.md` §12 binds every agent to this procedure.
98
+ - `agents/hatch3r-implementer.md` runs the discovery gate before writing.
99
+ - `agents/hatch3r-reviewer.md` runs the duplication scan in review.
100
+ - The compound-system and content-architecture audit domains audit duplication at cycle time.
101
+
102
+ ## Pillar Service
103
+
104
+ - P4 — every artifact earns its existence; no redundant code or content.
105
+ - CQ8 — generated code carries the same anti-duplication discipline (jscpd ≤5% per CONSTITUTION §2 CQ8 Measurement).
106
+
107
+ ## References
108
+
109
+ - CONSTITUTION §6 Decision #21 (pre-implementation discovery + post-write duplication scan).
110
+ - CONSTITUTION §6 Decision #16 (maturity tier `solo|team|scaleup|enterprise`).
111
+ - CONSTITUTION §2 P4 (Single Source of Truth).
112
+ - CONSTITUTION §2 CQ8 (Maintainability Measurement — jscpd ≤5% per cycle).
113
+ - `agents/shared/quality-charter.md` §12 (Anti-Duplication Procedure).
114
+ - The compound-system audit domain (duplication candidate threshold SA 16.3).
115
+ - The content-architecture audit domain (content-corpus duplication audit; authored in subsequent cycle).
@@ -0,0 +1,115 @@
1
+ ---
2
+ id: hatch3r-anti-duplication
3
+ type: rule
4
+ description: Pre-implementation discovery gate (codebase pattern search) + post-write duplication scan (jscpd threshold per maturity tier). Silent duplication is a P4 violation.
5
+ tags: [anti-duplication, code-quality, floor:content-quality]
6
+ precedence: high
7
+ alwaysApply: true
8
+ ---
9
+ # hatch3r Anti-Duplication
10
+
11
+ **Pillars:** P4 (Comprehensive Lean Coverage), CQ8 (Maintainability Quality)
12
+
13
+ ## Pre-Implementation Discovery Gate
14
+
15
+ Before writing any new function, type, or pattern:
16
+
17
+ 1. **Grep existing surface** for similar function names: `grep -rn "function.*<similar-name>" src/`
18
+ 2. **Grep existing surface** for similar type shapes: `grep -rn "type.*<similar-shape>" src/`
19
+ 3. **Grep existing surface** for similar comment headers: `grep -rn "// <similar-purpose>" src/`
20
+ 4. **Read closest existing match** end-to-end to confirm it does NOT cover the new requirement.
21
+
22
+ If a similar artifact exists with ≥80% scope overlap, do one of:
23
+
24
+ - Extend the existing artifact with the additional case.
25
+ - Refactor into a shared abstraction consumed by both.
26
+ - Document the distinct scope as an ADR before authoring the new artifact.
27
+
28
+ Report findings of the discovery scan in the iteration summary §Files Mutated section.
29
+
30
+ ## Post-Write Duplication Scan
31
+
32
+ After every implementation:
33
+
34
+ 1. Run `npx jscpd <changed-dirs>` (or equivalent: PMD CPD, simian, sonar-scanner).
35
+ 2. Flag any block matching ≥30 lines OR ≥80% similarity with existing code.
36
+ 3. Refactor or justify before merge.
37
+
38
+ Tools accepted as equivalent: `jscpd` (Node), `PMD CPD` (Java/multi-lang), `simian` (multi-lang), `sonar-scanner` duplication module. Pick by toolchain; the threshold below is tool-agnostic.
39
+
40
+ ## Tunable Thresholds Per Maturity Tier
41
+
42
+ Per `hatch3r config maturity=<tier>`:
43
+
44
+ - **solo** — jscpd threshold ≤10% (relaxed for early-stage exploration)
45
+ - **team** — jscpd threshold ≤7%
46
+ - **scaleup** — jscpd threshold ≤5%
47
+ - **enterprise** — jscpd threshold ≤3%
48
+
49
+ Tier set via `hatch3r config maturity=<tier>` per CONSTITUTION §6 Decision #16 (Decision 4 in fresh-session-prompt mapping). Threshold breach blocks merge until the offending block is refactored or justified with an inline ADR comment.
50
+
51
+ ## Silent Duplication Violation
52
+
53
+ Per CONSTITUTION §2 P4: Single Source of Truth. Silent duplication (no ADR, no refactor) is a P4 violation surfaced by D16 Compound System audit + D22 Content Architecture audit (after authoring).
54
+
55
+ Per CONSTITUTION §2 P5 Silent Failure Contract: a duplication scan that finds matches but emits no warning to the caller is itself a contract violation — the scan must surface findings via the iteration summary or a CI gate.
56
+
57
+ ## Discovery Gate Output Schema
58
+
59
+ Report from the pre-implementation grep step lands in the iteration summary as:
60
+
61
+ ```
62
+ discovery_scan:
63
+ greps_run: <integer>
64
+ candidate_matches: <integer>
65
+ closest_match_path: <relative-path>
66
+ overlap_assessment: none | partial | high (≥80%)
67
+ decision: new-artifact | extend-existing | refactor-shared | adr-distinct
68
+ ```
69
+
70
+ `overlap_assessment: high` without `decision: extend-existing | refactor-shared | adr-distinct` is a P4 violation — author is creating a duplicate.
71
+
72
+ ## Worked Example
73
+
74
+ Task: add a function that formats an ISO-8601 timestamp for a CLI log line.
75
+
76
+ 1. Discovery grep: `grep -rn "function format.*Date\|function format.*Time\|function format.*Timestamp" src/`.
77
+ 2. Closest match found: `src/cli/util/format.ts::formatLocalTime(date: Date): string` — 11 lines, formats `HH:mm:ss` only.
78
+ 3. Overlap assessment: `partial` — same domain (date formatting) but distinct output shape (timestamp vs time-of-day).
79
+ 4. Decision: `extend-existing` — add a `format: "iso" | "local"` parameter to `formatLocalTime`, rename to `formatTime`, update 3 callers.
80
+ 5. Post-write scan: `npx jscpd src/cli/util/` reports 0% duplication on the change. Merge.
81
+
82
+ The discovery step took ~30 seconds; it prevented a parallel `formatIsoTimestamp` function and a forked test file.
83
+
84
+ ## Skip Conditions
85
+
86
+ The discovery + scan procedure binds every code-writing turn EXCEPT:
87
+
88
+ - Single-line edits to existing functions (bug fix, typo, error-message wording).
89
+ - Frontmatter-only edits to canonical content artifacts.
90
+ - Test-file edits that mirror an existing source-file change (the test mirrors a function the discovery step already ran on).
91
+ - Cosmetic edits (whitespace, comment wording, import sorting).
92
+
93
+ When skipped, declare `discovery_scan: skipped (reason: <reason>)` in the iteration summary. Skipping without declaration is itself a P5 silent-failure violation per CONSTITUTION §2 P5 Silent Failure Contract.
94
+
95
+ ## Enforcement
96
+
97
+ - `agents/shared/quality-charter.md` §12 binds every agent to this procedure.
98
+ - `agents/hatch3r-implementer.md` runs the discovery gate before writing.
99
+ - `agents/hatch3r-reviewer.md` runs the duplication scan in review.
100
+ - The compound-system and content-architecture audit domains audit duplication at cycle time.
101
+
102
+ ## Pillar Service
103
+
104
+ - P4 — every artifact earns its existence; no redundant code or content.
105
+ - CQ8 — generated code carries the same anti-duplication discipline (jscpd ≤5% per CONSTITUTION §2 CQ8 Measurement).
106
+
107
+ ## References
108
+
109
+ - CONSTITUTION §6 Decision #21 (pre-implementation discovery + post-write duplication scan).
110
+ - CONSTITUTION §6 Decision #16 (maturity tier `solo|team|scaleup|enterprise`).
111
+ - CONSTITUTION §2 P4 (Single Source of Truth).
112
+ - CONSTITUTION §2 CQ8 (Maintainability Measurement — jscpd ≤5% per cycle).
113
+ - `agents/shared/quality-charter.md` §12 (Anti-Duplication Procedure).
114
+ - The compound-system audit domain (duplication candidate threshold SA 16.3).
115
+ - The content-architecture audit domain (content-corpus duplication audit; authored in subsequent cycle).
@@ -2,13 +2,17 @@
2
2
  id: hatch3r-api-design
3
3
  type: rule
4
4
  description: REST, GraphQL, and gRPC contract patterns covering versioning, auth, CORS, pagination, webhooks, rate limiting, and security headers
5
- scope: "**/api/**,**/routes/**,**/controllers/**,**/endpoints/**,**/*route*,**/*controller*,**/*endpoint*,**/*handler*,**/graphql/**,**/trpc/**"
5
+ scope: conditional
6
+ globs: "**/api/**,**/routes/**,**/controllers/**,**/endpoints/**,**/*route*,**/*controller*,**/*endpoint*,**/*handler*,**/graphql/**,**/trpc/**"
6
7
  tags: [planning]
8
+ precedence: high
7
9
  quality_charter: agents/shared/quality-charter.md
8
10
  cache_friendly: true
9
11
  ---
10
12
  # API Design
11
13
 
14
+ **Pillars:** P2 (Scientific & Practical Quality), CQ9 (Enhancability Quality)
15
+
12
16
  - Use consistent request/response schemas. Document in spec files.
13
17
  - All endpoints versioned (URL prefix or header). Backward-compatible changes only.
14
18
  - Additive changes only: add fields, never rename or remove without migration.
@@ -2,9 +2,12 @@
2
2
  description: REST, GraphQL, and gRPC contract patterns covering versioning, auth, CORS, pagination, webhooks, rate limiting, and security headers
3
3
  globs: ["**/api/**", "**/routes/**", "**/controllers/**", "**/endpoints/**", "**/*route*", "**/*controller*", "**/*endpoint*", "**/*handler*", "**/graphql/**", "**/trpc/**"]
4
4
  alwaysApply: false
5
+ precedence: high
5
6
  ---
6
7
  # API Design
7
8
 
9
+ **Pillars:** P2 (Scientific & Practical Quality), CQ9 (Enhancability Quality)
10
+
8
11
  - Use consistent request/response schemas. Document in spec files.
9
12
  - All endpoints versioned (URL prefix or header). Backward-compatible changes only.
10
13
  - Additive changes only: add fields, never rename or remove without migration.
@@ -2,8 +2,10 @@
2
2
  id: hatch3r-api-versioning
3
3
  type: rule
4
4
  description: API versioning, deprecation lifecycle, and idempotency — RFC 9457 errors, RFC 9745 Deprecation header, RFC 8594 Sunset, OAuth 2.1, Idempotency-Key, semver vs CalVer for APIs
5
- scope: "**/api/**,**/openapi*,**/asyncapi*,**/*.proto,**/routes/**,**/handlers/**,**/controllers/**"
5
+ scope: conditional
6
+ globs: "**/api/**,**/openapi*,**/asyncapi*,**/*.proto,**/routes/**,**/handlers/**,**/controllers/**"
6
7
  tags: [implementation, devops]
8
+ precedence: high
7
9
  quality_charter: agents/shared/quality-charter.md
8
10
  cache_friendly: true
9
11
  ---
@@ -2,6 +2,7 @@
2
2
  description: API versioning, deprecation lifecycle, and idempotency — RFC 9457 errors, RFC 9745 Deprecation header, RFC 8594 Sunset, OAuth 2.1, Idempotency-Key, semver vs CalVer for APIs
3
3
  globs: ["**/api/**", "**/openapi*", "**/asyncapi*", "**/*.proto", "**/routes/**", "**/handlers/**", "**/controllers/**"]
4
4
  alwaysApply: false
5
+ precedence: high
5
6
  ---
6
7
  # API Versioning, Deprecation & Idempotency
7
8
 
@@ -2,8 +2,10 @@
2
2
  id: hatch3r-auth-patterns
3
3
  type: rule
4
4
  description: Authentication and authorization patterns for end-user apps — OAuth 2.1, OIDC, DPoP, JWT rotation, cookie security, RBAC vs ABAC vs ReBAC rubric
5
- scope: "**/auth/**,**/login/**,**/session/**,**/oauth/**,**/oidc/**,**/jwt/**,**/permissions/**,**/policies/**,**/middleware/**"
6
- tags: [security, implementation]
5
+ scope: conditional
6
+ globs: "**/auth/**,**/login/**,**/session/**,**/oauth/**,**/oidc/**,**/jwt/**,**/permissions/**,**/policies/**,**/middleware/**"
7
+ tags: [implementation, floor:security]
8
+ precedence: high
7
9
  quality_charter: agents/shared/quality-charter.md
8
10
  cache_friendly: true
9
11
  ---
@@ -150,6 +152,7 @@ Required event set: login success, login failure, MFA challenge issued, MFA veri
150
152
 
151
153
  ## Cross-References
152
154
 
155
+ - `rules/hatch3r-security-patterns.md` — general application security (input validation, output encoding, OWASP/ASI). Auth middleware, token validation, session security, and MFA/AAL mapping live here, not there; security-patterns delegates them to this rule to avoid double-firing on `**/auth/**` + `**/middleware/**`.
153
156
  - `rules/hatch3r-passkey-server.md` — server-side WebAuthn ceremony (paired companion).
154
157
  - `rules/hatch3r-ux-states-and-flows.md` — frontend identifier-first login + Conditional UI.
155
158
  - `rules/hatch3r-ai-ux-patterns.md` — frontend WebAuthn UX patterns.
@@ -2,6 +2,7 @@
2
2
  description: Authentication and authorization patterns for end-user apps — OAuth 2.1, OIDC, DPoP, JWT rotation, cookie security, RBAC vs ABAC vs ReBAC rubric
3
3
  globs: ["**/auth/**", "**/login/**", "**/session/**", "**/oauth/**", "**/oidc/**", "**/jwt/**", "**/permissions/**", "**/policies/**", "**/middleware/**"]
4
4
  alwaysApply: false
5
+ precedence: high
5
6
  ---
6
7
  # Authentication & Authorization Patterns
7
8
 
@@ -146,6 +147,7 @@ Required event set: login success, login failure, MFA challenge issued, MFA veri
146
147
 
147
148
  ## Cross-References
148
149
 
150
+ - `rules/hatch3r-security-patterns.md` — general application security (input validation, output encoding, OWASP/ASI). Auth middleware, token validation, session security, and MFA/AAL mapping live here, not there; security-patterns delegates them to this rule to avoid double-firing on `**/auth/**` + `**/middleware/**`.
149
151
  - `rules/hatch3r-passkey-server.md` — server-side WebAuthn ceremony (paired companion).
150
152
  - `rules/hatch3r-ux-states-and-flows.md` — frontend identifier-first login + Conditional UI.
151
153
  - `rules/hatch3r-ai-ux-patterns.md` — frontend WebAuthn UX patterns.
@@ -10,6 +10,8 @@ cache_friendly: true
10
10
  ---
11
11
  # Browser Verification
12
12
 
13
+ **Pillars:** P2 (Scientific & Practical Quality), CQ1 (UI Quality)
14
+
13
15
  ## When Required
14
16
 
15
17
  Browser verification is required when changes touch user-facing surfaces:
@@ -48,16 +50,12 @@ Browser verification is opt-in per command session. The orchestrator follows a s
48
50
  | Supports Browser Verification | Does NOT Support |
49
51
  | ------------------------------ | ---------------- |
50
52
  | `hatch3r-workflow` | `hatch3r-board-fill` |
51
- | `hatch3r-board-pickup` | `hatch3r-board-groom` |
52
- | `hatch3r-quick-change` | `hatch3r-board-refresh` |
53
- | `hatch3r-revision` | `hatch3r-roadmap` |
54
- | `hatch3r-debug` | `hatch3r-release` |
55
- | | `hatch3r-refactor-plan` |
56
- | | `hatch3r-security-audit` |
57
- | | `hatch3r-rule-customize` |
58
- | | `hatch3r-skill-customize` |
59
-
60
- Commands in the "Does NOT Support" column are documentation-only, planning-only, or non-implementation commands. They MUST NOT prompt for browser verification.
53
+ | `hatch3r-board-pickup` | `hatch3r-roadmap` |
54
+ | `hatch3r-quick-change` | `hatch3r-refactor-plan` |
55
+ | `hatch3r-revision` | `hatch3r-security-audit` |
56
+ | `hatch3r-debug` | |
57
+
58
+ Commands in the "Does NOT Support" column are documentation-only, planning-only, or non-implementation commands. They MUST NOT prompt for browser verification. Skills (including `hatch3r-board-groom`, `hatch3r-board-refresh`, `hatch3r-release`) are invoked outside the orchestrator command lifecycle and therefore do not prompt for browser verification.
61
59
 
62
60
  ---
63
61
 
@@ -5,6 +5,8 @@ alwaysApply: false
5
5
  ---
6
6
  # Browser Verification
7
7
 
8
+ **Pillars:** P2 (Scientific & Practical Quality), CQ1 (UI Quality)
9
+
8
10
  ## When Required
9
11
 
10
12
  Browser verification is required when changes touch user-facing surfaces:
@@ -43,16 +45,12 @@ Browser verification is opt-in per command session. The orchestrator follows a s
43
45
  | Supports Browser Verification | Does NOT Support |
44
46
  | ------------------------------ | ---------------- |
45
47
  | `hatch3r-workflow` | `hatch3r-board-fill` |
46
- | `hatch3r-board-pickup` | `hatch3r-board-groom` |
47
- | `hatch3r-quick-change` | `hatch3r-board-refresh` |
48
- | `hatch3r-revision` | `hatch3r-roadmap` |
49
- | `hatch3r-debug` | `hatch3r-release` |
50
- | | `hatch3r-refactor-plan` |
51
- | | `hatch3r-security-audit` |
52
- | | `hatch3r-rule-customize` |
53
- | | `hatch3r-skill-customize` |
54
-
55
- Commands in the "Does NOT Support" column are documentation-only, planning-only, or non-implementation commands. They MUST NOT prompt for browser verification.
48
+ | `hatch3r-board-pickup` | `hatch3r-roadmap` |
49
+ | `hatch3r-quick-change` | `hatch3r-refactor-plan` |
50
+ | `hatch3r-revision` | `hatch3r-security-audit` |
51
+ | `hatch3r-debug` | |
52
+
53
+ Commands in the "Does NOT Support" column are documentation-only, planning-only, or non-implementation commands. They MUST NOT prompt for browser verification. Skills (including `hatch3r-board-groom`, `hatch3r-board-refresh`, `hatch3r-release`) are invoked outside the orchestrator command lifecycle and therefore do not prompt for browser verification.
56
54
 
57
55
  ---
58
56
 
@@ -0,0 +1,108 @@
1
+ ---
2
+ id: hatch3r-capability-matrix
3
+ type: rule
4
+ description: Per-cycle adapter capability matrix audit — twin metric currency + utilization. Surfaces unutilized platform-native features per adapter each cycle.
5
+ tags: [adapters, currency, capability, floor:content-quality]
6
+ precedence: high
7
+ scope: conditional
8
+ globs: "src/adapters/**,docs/adapter-capability-matrix.md"
9
+ ---
10
+ # hatch3r Capability Matrix
11
+
12
+ **Pillars:** P3 (Adapter & External Tool Currency), CQ9 (Enhancability Quality)
13
+
14
+ ## Twin Metric Model
15
+
16
+ Per cycle, every adapter (`src/adapters/{claude,cursor,copilot}.ts`) is measured on two metrics:
17
+
18
+ 1. **Currency** — platform documentation date vs audit date delta (target ≤90 days)
19
+ 2. **Capability utilization** — (covered platform features / total platform features) per adapter
20
+
21
+ Both metrics surface to D09 audit findings. Currency stale >90 days = Medium; capability utilization regression cycle-over-cycle = Medium.
22
+
23
+ ## Capability Discovery Procedure
24
+
25
+ For each adapter, per cycle:
26
+
27
+ 1. **Web-research** the platform's current documentation
28
+ 2. **Enumerate native capabilities** in a normalised list: hooks, slash commands, MCP support, agent definitions, settings schema, rule format, prompt format, etc.
29
+ 3. **Map current adapter utilization** per capability:
30
+ - **utilized** — adapter emits / consumes this capability
31
+ - **partially-utilized** — adapter emits a subset; gap documented
32
+ - **unutilized** — capability exists, adapter does not use it
33
+ 4. **Cross-reference** `docs/adapter-capability-matrix.md` static reference doc
34
+ 5. **Surface unutilized capabilities** as audit findings (Info or Medium per value)
35
+
36
+ ## Output Schema
37
+
38
+ ```yaml
39
+ adapter: claude | cursor | copilot
40
+ cycle: <N>
41
+ date: YYYY-MM-DD
42
+ currency:
43
+ source_doc_date: YYYY-MM-DD
44
+ audit_date: YYYY-MM-DD
45
+ delta_days: <int>
46
+ source_url: https://...
47
+ capabilities:
48
+ - name: <feature name>
49
+ status: utilized | partially-utilized | unutilized
50
+ coverage: <0.0-1.0 ratio if partially-utilized>
51
+ finding_id: <if surfaced>
52
+ utilization_ratio: <int>/<int> # covered / total
53
+ ```
54
+
55
+ ## Capability Categories (Per Adapter)
56
+
57
+ Each adapter's native capability surface enumerates across these categories — D09 SA-{Cursor, Claude, Copilot} maps each category per cycle:
58
+
59
+ | Category | Claude Code | Cursor | GitHub Copilot |
60
+ |----------|-------------|--------|----------------|
61
+ | Hooks / events | `.claude/settings.json` hooks (Pre/PostToolUse, SessionStart, etc.) | `.cursor/hooks/` | `.github/workflows/` agentic triggers |
62
+ | Slash commands | `.claude/commands/*.md` | `.cursor/commands/*.md` | `.github/prompts/*.md` |
63
+ | Agent definitions | `.claude/agents/*.md` | `.cursor/agents/*.md` | `.github/agents/*.md` |
64
+ | Rule format | `.claude/rules/*.md` | `.cursor/rules/*.mdc` | `.github/instructions/*.md` |
65
+ | MCP support | `.mcp.json` | `.cursor/mcp.json` | (limited / via VS Code settings) |
66
+ | Tool allowlist | per-agent `tools:` frontmatter | per-agent `tools:` | per-instruction file scope |
67
+ | Settings schema | `.claude/settings.json` | `.cursor/settings.json` | `.github/copilot-instructions.md` |
68
+
69
+ Each capability resolves to one of: utilized, partially-utilized, unutilized. Per-adapter SA cites the platform's official documentation URL + access date when classifying.
70
+
71
+ ## Adapter-Capability-Matrix Static Reference
72
+
73
+ `docs/adapter-capability-matrix.md` is a maintained per-adapter feature table. The audit verifies the live matrix against the static doc and flags drift in either direction.
74
+
75
+ ## Drift Detection
76
+
77
+ Per-cycle delta computation:
78
+
79
+ 1. Load prior cycle's matrix from the audit execution-insights store (key `d9_adapter_capability_matrix.{adapter}`) — this key is populated by the platform-adapters domain SA 9.4 synthesis agent at the end of each cycle that audits this matrix. On the first cycle that runs this procedure the key is absent: skip steps 2-3 (no prior baseline) and record the current matrix as the baseline for next cycle.
80
+ 2. Compute `utilization_ratio` delta cycle-over-cycle
81
+ 3. Regression (current < prior) = Medium finding with root-cause analysis required
82
+ 4. Currency `delta_days > 90` = Medium finding per P3
83
+ 5. Currency `delta_days > 180` = High finding (compounded staleness)
84
+
85
+ ## CL-2 Routing for Unutilized Capabilities
86
+
87
+ D09 SA 9.4 (Capability Matrix Verification, SEQUENTIAL) aggregates unutilized capabilities across the 3 adapters and surfaces the top 3-5 highest-value gaps as CL-2 candidates for next-cycle adapter enhancement. Value scoring criteria:
88
+
89
+ - **High value:** capability unlocks a content type already in canonical corpus (e.g., MCP transport that lets canonical MCP rules emit natively)
90
+ - **Medium value:** capability improves end-user runtime efficiency (P7) or trust (P6) on emitted output
91
+ - **Low value:** capability has unclear end-user benefit; document and re-evaluate next cycle
92
+
93
+ ## Cross-Reference
94
+
95
+ - The platform-adapters audit domain — its per-adapter SA-{Cursor, Claude, Copilot} per cycle runs this procedure
96
+ - The CLI-tool-currency audit domain — sibling cycle for CLI tool currency
97
+ - `.claude/rules/adapter-development.md` — adapter authoring conventions
98
+
99
+ ## Pillar Service
100
+ - P3 — currency + utilization measured every cycle, no implicit drift
101
+ - CQ9 — every platform feature is a potential enhancement surface; this audit surfaces them
102
+
103
+ ## References
104
+
105
+ - Anthropic, *Claude Code: hooks, agents, settings* — https://docs.claude.com/en/docs/claude-code/ (accessed 2026-05-26, trust tier: official-docs)
106
+ - Cursor, *Cursor docs: rules, agents, MCP* — https://cursor.com/docs (accessed 2026-05-26, trust tier: official-docs)
107
+ - GitHub, *Copilot custom instructions and prompts* — https://docs.github.com/en/copilot/customizing-copilot (accessed 2026-05-26, trust tier: official-docs)
108
+