oh-my-customcode 0.1.3 → 0.2.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 (439) hide show
  1. package/README.md +80 -129
  2. package/dist/cli/index.js +95 -95
  3. package/dist/index.js +7 -32
  4. package/package.json +1 -1
  5. package/templates/{agents/sw-architect/documenter/AGENT.md → .claude/agents/arch-documenter.md} +7 -39
  6. package/templates/{agents/sw-architect/speckit-agent/AGENT.md → .claude/agents/arch-speckit-agent.md} +61 -63
  7. package/templates/.claude/agents/be-express-expert.md +71 -0
  8. package/templates/.claude/agents/be-fastapi-expert.md +33 -0
  9. package/templates/.claude/agents/be-go-backend-expert.md +33 -0
  10. package/templates/.claude/agents/be-nestjs-expert.md +51 -0
  11. package/templates/.claude/agents/be-springboot-expert.md +75 -0
  12. package/templates/.claude/agents/db-supabase-expert.md +63 -0
  13. package/templates/{agents/sw-engineer/frontend/svelte-agent/AGENT.md → .claude/agents/fe-svelte-agent.md} +16 -31
  14. package/templates/.claude/agents/fe-vercel-agent.md +57 -0
  15. package/templates/{agents/sw-engineer/frontend/vuejs-agent/AGENT.md → .claude/agents/fe-vuejs-agent.md} +16 -31
  16. package/templates/.claude/agents/infra-aws-expert.md +37 -0
  17. package/templates/.claude/agents/infra-docker-expert.md +37 -0
  18. package/templates/.claude/agents/lang-golang-expert.md +33 -0
  19. package/templates/.claude/agents/lang-java21-expert.md +56 -0
  20. package/templates/.claude/agents/lang-kotlin-expert.md +33 -0
  21. package/templates/.claude/agents/lang-python-expert.md +33 -0
  22. package/templates/.claude/agents/lang-rust-expert.md +33 -0
  23. package/templates/.claude/agents/lang-typescript-expert.md +33 -0
  24. package/templates/.claude/agents/mgr-creator.md +102 -0
  25. package/templates/{agents/manager/gitnerd/AGENT.md → .claude/agents/mgr-gitnerd.md} +8 -17
  26. package/templates/.claude/agents/mgr-sauron.md +139 -0
  27. package/templates/{agents/manager/supplier/AGENT.md → .claude/agents/mgr-supplier.md} +14 -46
  28. package/templates/.claude/agents/mgr-sync-checker.md +89 -0
  29. package/templates/{agents/manager/updater/AGENT.md → .claude/agents/mgr-updater.md} +21 -53
  30. package/templates/{agents/qa-team/qa-engineer/AGENT.md → .claude/agents/qa-engineer.md} +13 -24
  31. package/templates/{agents/qa-team/qa-planner/AGENT.md → .claude/agents/qa-planner.md} +10 -20
  32. package/templates/{agents/qa-team/qa-writer/AGENT.md → .claude/agents/qa-writer.md} +10 -20
  33. package/templates/.claude/agents/sys-memory-keeper.md +105 -0
  34. package/templates/.claude/agents/sys-naggy.md +81 -0
  35. package/templates/{agents/sw-engineer/tooling/bun-expert/AGENT.md → .claude/agents/tool-bun-expert.md} +28 -39
  36. package/templates/.claude/agents/tool-npm-expert.md +76 -0
  37. package/templates/.claude/agents/tool-optimizer.md +75 -0
  38. package/templates/{agents/tutor/go-tutor/AGENT.md → .claude/agents/tutor-go.md} +16 -27
  39. package/templates/.claude/contexts/ecomode.md +5 -5
  40. package/templates/.claude/rules/MUST-agent-design.md +60 -42
  41. package/templates/.claude/rules/MUST-agent-identification.md +11 -11
  42. package/templates/.claude/rules/MUST-continuous-improvement.md +2 -2
  43. package/templates/.claude/rules/MUST-intent-transparency.md +18 -18
  44. package/templates/.claude/rules/MUST-orchestrator-coordination.md +197 -111
  45. package/templates/.claude/rules/MUST-parallel-execution.md +86 -29
  46. package/templates/.claude/rules/MUST-sync-verification.md +52 -45
  47. package/templates/.claude/rules/MUST-tool-identification.md +79 -19
  48. package/templates/.claude/rules/SHOULD-ecomode.md +3 -3
  49. package/templates/.claude/rules/SHOULD-hud-statusline.md +12 -5
  50. package/templates/.claude/rules/SHOULD-memory-integration.md +4 -4
  51. package/templates/.claude/rules/SHOULD-pipeline-mode.md +1 -1
  52. package/templates/.claude/skills/audit-agents/SKILL.md +116 -0
  53. package/templates/{skills/infrastructure → .claude/skills}/aws-best-practices/SKILL.md +4 -4
  54. package/templates/.claude/skills/create-agent/SKILL.md +91 -0
  55. package/templates/.claude/skills/dev-lead-routing/SKILL.md +238 -0
  56. package/templates/{commands/dev/refactor.md → .claude/skills/dev-refactor/SKILL.md} +17 -20
  57. package/templates/{commands/dev/review.md → .claude/skills/dev-review/SKILL.md} +16 -17
  58. package/templates/{agents/manager/supplier/refs/skills/infrastructure → .claude/skills}/docker-best-practices/SKILL.md +4 -4
  59. package/templates/{agents/manager/supplier/refs/skills/backend → .claude/skills}/fastapi-best-practices/SKILL.md +4 -4
  60. package/templates/.claude/skills/fix-refs/SKILL.md +107 -0
  61. package/templates/{skills/backend → .claude/skills}/go-backend-best-practices/SKILL.md +4 -4
  62. package/templates/{skills/development → .claude/skills}/go-best-practices/SKILL.md +4 -4
  63. package/templates/{commands/system/help.md → .claude/skills/help/SKILL.md} +34 -46
  64. package/templates/{skills/orchestration → .claude/skills}/intent-detection/SKILL.md +14 -14
  65. package/templates/{agents/manager/supplier/refs/skills/orchestration → .claude/skills}/intent-detection/patterns/agent-triggers.yaml +117 -110
  66. package/templates/{agents/sw-engineer/language/kotlin-expert/refs → .claude/skills}/kotlin-best-practices/SKILL.md +4 -4
  67. package/templates/{commands/system/lists.md → .claude/skills/lists/SKILL.md} +25 -33
  68. package/templates/{agents/manager/supplier/refs/skills/system → .claude/skills}/memory-management/SKILL.md +10 -10
  69. package/templates/{commands/memory/recall.md → .claude/skills/memory-recall/SKILL.md} +31 -43
  70. package/templates/{commands/memory/save.md → .claude/skills/memory-save/SKILL.md} +27 -29
  71. package/templates/.claude/skills/npm-audit/SKILL.md +72 -0
  72. package/templates/.claude/skills/npm-publish/SKILL.md +63 -0
  73. package/templates/.claude/skills/npm-version/SKILL.md +75 -0
  74. package/templates/.claude/skills/optimize-analyze/SKILL.md +55 -0
  75. package/templates/.claude/skills/optimize-bundle/SKILL.md +67 -0
  76. package/templates/.claude/skills/optimize-report/SKILL.md +74 -0
  77. package/templates/{skills/orchestration → .claude/skills}/pipeline-execution/SKILL.md +4 -4
  78. package/templates/{commands/pipeline/list.md → .claude/skills/pipeline-list/SKILL.md} +11 -18
  79. package/templates/{commands/pipeline/run.md → .claude/skills/pipeline-run/SKILL.md} +38 -22
  80. package/templates/{agents/sw-engineer/language/python-expert/refs → .claude/skills}/python-best-practices/SKILL.md +4 -4
  81. package/templates/.claude/skills/qa-lead-routing/SKILL.md +277 -0
  82. package/templates/{skills/development → .claude/skills}/react-best-practices/SKILL.md +4 -4
  83. package/templates/{skills/system → .claude/skills}/result-aggregation/SKILL.md +17 -17
  84. package/templates/{agents/sw-engineer/language/rust-expert/refs → .claude/skills}/rust-best-practices/SKILL.md +4 -4
  85. package/templates/.claude/skills/sauron-watch/SKILL.md +144 -0
  86. package/templates/.claude/skills/secretary-routing/SKILL.md +178 -0
  87. package/templates/{skills/backend → .claude/skills}/springboot-best-practices/SKILL.md +4 -4
  88. package/templates/{commands/system/status.md → .claude/skills/status/SKILL.md} +29 -39
  89. package/templates/.claude/skills/supabase-postgres-best-practices/SKILL.md +98 -0
  90. package/templates/{skills/development → .claude/skills}/typescript-best-practices/SKILL.md +4 -4
  91. package/templates/{commands/updater/docs.md → .claude/skills/update-docs/SKILL.md} +71 -96
  92. package/templates/{commands/updater/external.md → .claude/skills/update-external/SKILL.md} +34 -99
  93. package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/vercel-deploy/SKILL.md +4 -4
  94. package/templates/{agents/manager/supplier/refs/skills/development → .claude/skills}/web-design-guidelines/SKILL.md +4 -4
  95. package/templates/CLAUDE.md.en +71 -70
  96. package/templates/CLAUDE.md.ko +64 -64
  97. package/templates/examples/code-review.yaml +66 -0
  98. package/templates/guides/aws/index.yaml +1 -1
  99. package/templates/guides/claude-code/11-sub-agents.md +159 -0
  100. package/templates/guides/docker/index.yaml +1 -1
  101. package/templates/guides/fastapi/index.yaml +1 -1
  102. package/templates/guides/go-backend/index.yaml +1 -1
  103. package/templates/guides/golang/index.yaml +1 -1
  104. package/templates/guides/index.yaml +9 -0
  105. package/templates/guides/kotlin/index.yaml +1 -1
  106. package/templates/guides/python/index.yaml +1 -1
  107. package/templates/guides/rust/index.yaml +1 -1
  108. package/templates/guides/springboot/index.yaml +1 -1
  109. package/templates/guides/supabase-postgres/README.md +32 -0
  110. package/templates/guides/supabase-postgres/index.yaml +19 -0
  111. package/templates/guides/typescript/index.yaml +1 -1
  112. package/templates/index.yaml +18 -0
  113. package/templates/manifest.json +11 -17
  114. package/templates/pipelines/examples/code-review.yaml +1 -1
  115. package/templates/templates/pipeline-template.yaml +50 -0
  116. package/templates/agents/index.yaml +0 -243
  117. package/templates/agents/infra-engineer/aws-expert/AGENT.md +0 -47
  118. package/templates/agents/infra-engineer/aws-expert/index.yaml +0 -27
  119. package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +0 -169
  120. package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +0 -26
  121. package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +0 -143
  122. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +0 -279
  123. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +0 -27
  124. package/templates/agents/infra-engineer/docker-expert/AGENT.md +0 -47
  125. package/templates/agents/infra-engineer/docker-expert/index.yaml +0 -27
  126. package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +0 -284
  127. package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +0 -262
  128. package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +0 -26
  129. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +0 -274
  130. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +0 -26
  131. package/templates/agents/manager/creator/AGENT.md +0 -274
  132. package/templates/agents/manager/creator/index.yaml +0 -66
  133. package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +0 -93
  134. package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +0 -107
  135. package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +0 -108
  136. package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +0 -132
  137. package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +0 -199
  138. package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +0 -62
  139. package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +0 -291
  140. package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +0 -341
  141. package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +0 -84
  142. package/templates/agents/manager/creator/refs/rules/MUST-safety.md +0 -69
  143. package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +0 -219
  144. package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +0 -112
  145. package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +0 -145
  146. package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +0 -102
  147. package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +0 -89
  148. package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +0 -103
  149. package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +0 -114
  150. package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +0 -165
  151. package/templates/agents/manager/creator/refs/rules/index.yaml +0 -125
  152. package/templates/agents/manager/gitnerd/index.yaml +0 -55
  153. package/templates/agents/manager/sauron/AGENT.md +0 -153
  154. package/templates/agents/manager/sauron/index.yaml +0 -52
  155. package/templates/agents/manager/supplier/index.yaml +0 -31
  156. package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +0 -169
  157. package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +0 -26
  158. package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +0 -143
  159. package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +0 -42
  160. package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +0 -107
  161. package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +0 -90
  162. package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +0 -129
  163. package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +0 -165
  164. package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +0 -100
  165. package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +0 -58
  166. package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +0 -80
  167. package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +0 -89
  168. package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +0 -51
  169. package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +0 -284
  170. package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +0 -262
  171. package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +0 -26
  172. package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +0 -232
  173. package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +0 -21
  174. package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +0 -26
  175. package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +0 -243
  176. package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +0 -212
  177. package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +0 -282
  178. package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +0 -309
  179. package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +0 -250
  180. package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +0 -27
  181. package/templates/agents/manager/supplier/refs/guides/index.yaml +0 -101
  182. package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +0 -247
  183. package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +0 -234
  184. package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +0 -26
  185. package/templates/agents/manager/supplier/refs/guides/python/index.yaml +0 -26
  186. package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +0 -202
  187. package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +0 -79
  188. package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +0 -262
  189. package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +0 -26
  190. package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +0 -180
  191. package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +0 -361
  192. package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +0 -22
  193. package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +0 -225
  194. package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +0 -26
  195. package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +0 -219
  196. package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +0 -66
  197. package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +0 -20
  198. package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +0 -102
  199. package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +0 -93
  200. package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +0 -107
  201. package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +0 -108
  202. package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +0 -132
  203. package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +0 -199
  204. package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +0 -62
  205. package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +0 -291
  206. package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +0 -341
  207. package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +0 -84
  208. package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +0 -69
  209. package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +0 -219
  210. package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +0 -112
  211. package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +0 -145
  212. package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +0 -102
  213. package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +0 -89
  214. package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +0 -103
  215. package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +0 -114
  216. package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +0 -165
  217. package/templates/agents/manager/supplier/refs/rules/index.yaml +0 -125
  218. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +0 -25
  219. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +0 -337
  220. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +0 -26
  221. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +0 -356
  222. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +0 -27
  223. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +0 -202
  224. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +0 -25
  225. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +0 -255
  226. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +0 -27
  227. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +0 -221
  228. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +0 -25
  229. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +0 -100
  230. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +0 -39
  231. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +0 -266
  232. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +0 -26
  233. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +0 -320
  234. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +0 -28
  235. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +0 -30
  236. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +0 -34
  237. package/templates/agents/manager/supplier/refs/skills/index.yaml +0 -129
  238. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +0 -279
  239. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +0 -27
  240. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +0 -26
  241. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +0 -214
  242. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +0 -30
  243. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +0 -188
  244. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +0 -27
  245. package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +0 -30
  246. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +0 -163
  247. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +0 -36
  248. package/templates/agents/manager/sync-checker/AGENT.md +0 -34
  249. package/templates/agents/manager/sync-checker/index.yaml +0 -32
  250. package/templates/agents/manager/updater/index.yaml +0 -31
  251. package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +0 -93
  252. package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +0 -107
  253. package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +0 -108
  254. package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +0 -132
  255. package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +0 -199
  256. package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +0 -62
  257. package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +0 -291
  258. package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +0 -341
  259. package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +0 -84
  260. package/templates/agents/manager/updater/refs/rules/MUST-safety.md +0 -69
  261. package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +0 -219
  262. package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +0 -112
  263. package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +0 -145
  264. package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +0 -102
  265. package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +0 -89
  266. package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +0 -103
  267. package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +0 -114
  268. package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +0 -165
  269. package/templates/agents/manager/updater/refs/rules/index.yaml +0 -125
  270. package/templates/agents/orchestrator/dev-lead/AGENT.md +0 -116
  271. package/templates/agents/orchestrator/dev-lead/index.yaml +0 -73
  272. package/templates/agents/orchestrator/planner/AGENT.md +0 -102
  273. package/templates/agents/orchestrator/planner/index.yaml +0 -38
  274. package/templates/agents/orchestrator/qa-lead/AGENT.md +0 -92
  275. package/templates/agents/orchestrator/qa-lead/index.yaml +0 -40
  276. package/templates/agents/orchestrator/secretary/AGENT.md +0 -132
  277. package/templates/agents/orchestrator/secretary/index.yaml +0 -55
  278. package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +0 -93
  279. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +0 -107
  280. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +0 -108
  281. package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +0 -132
  282. package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +0 -199
  283. package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +0 -62
  284. package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +0 -291
  285. package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +0 -341
  286. package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +0 -84
  287. package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +0 -69
  288. package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +0 -219
  289. package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +0 -112
  290. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +0 -145
  291. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +0 -102
  292. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +0 -89
  293. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +0 -103
  294. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +0 -114
  295. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +0 -165
  296. package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +0 -125
  297. package/templates/agents/qa-team/qa-engineer/index.yaml +0 -59
  298. package/templates/agents/qa-team/qa-planner/index.yaml +0 -47
  299. package/templates/agents/qa-team/qa-writer/index.yaml +0 -44
  300. package/templates/agents/sw-architect/documenter/index.yaml +0 -39
  301. package/templates/agents/sw-architect/speckit-agent/index.yaml +0 -78
  302. package/templates/agents/sw-engineer/backend/express-expert/AGENT.md +0 -132
  303. package/templates/agents/sw-engineer/backend/express-expert/index.yaml +0 -36
  304. package/templates/agents/sw-engineer/backend/fastapi-expert/AGENT.md +0 -47
  305. package/templates/agents/sw-engineer/backend/fastapi-expert/index.yaml +0 -27
  306. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +0 -232
  307. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +0 -21
  308. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +0 -269
  309. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +0 -25
  310. package/templates/agents/sw-engineer/backend/go-backend-expert/AGENT.md +0 -47
  311. package/templates/agents/sw-engineer/backend/go-backend-expert/index.yaml +0 -27
  312. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +0 -26
  313. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +0 -243
  314. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +0 -212
  315. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +0 -337
  316. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +0 -26
  317. package/templates/agents/sw-engineer/backend/nestjs-expert/AGENT.md +0 -107
  318. package/templates/agents/sw-engineer/backend/nestjs-expert/index.yaml +0 -43
  319. package/templates/agents/sw-engineer/backend/springboot-expert/AGENT.md +0 -103
  320. package/templates/agents/sw-engineer/backend/springboot-expert/index.yaml +0 -69
  321. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +0 -361
  322. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +0 -22
  323. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +0 -356
  324. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +0 -27
  325. package/templates/agents/sw-engineer/frontend/svelte-agent/index.yaml +0 -41
  326. package/templates/agents/sw-engineer/frontend/vercel-agent/AGENT.md +0 -67
  327. package/templates/agents/sw-engineer/frontend/vercel-agent/index.yaml +0 -43
  328. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +0 -100
  329. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +0 -39
  330. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +0 -73
  331. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +0 -30
  332. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +0 -66
  333. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +0 -20
  334. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +0 -102
  335. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +0 -117
  336. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +0 -34
  337. package/templates/agents/sw-engineer/frontend/vuejs-agent/index.yaml +0 -48
  338. package/templates/agents/sw-engineer/language/golang-expert/AGENT.md +0 -47
  339. package/templates/agents/sw-engineer/language/golang-expert/index.yaml +0 -27
  340. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +0 -202
  341. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +0 -25
  342. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +0 -282
  343. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +0 -309
  344. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +0 -250
  345. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +0 -27
  346. package/templates/agents/sw-engineer/language/java21-expert/AGENT.md +0 -122
  347. package/templates/agents/sw-engineer/language/java21-expert/index.yaml +0 -51
  348. package/templates/agents/sw-engineer/language/kotlin-expert/AGENT.md +0 -47
  349. package/templates/agents/sw-engineer/language/kotlin-expert/index.yaml +0 -27
  350. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +0 -247
  351. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +0 -234
  352. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +0 -26
  353. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +0 -27
  354. package/templates/agents/sw-engineer/language/python-expert/AGENT.md +0 -47
  355. package/templates/agents/sw-engineer/language/python-expert/index.yaml +0 -27
  356. package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +0 -26
  357. package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +0 -202
  358. package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +0 -79
  359. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +0 -25
  360. package/templates/agents/sw-engineer/language/rust-expert/AGENT.md +0 -47
  361. package/templates/agents/sw-engineer/language/rust-expert/index.yaml +0 -27
  362. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +0 -262
  363. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +0 -26
  364. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +0 -180
  365. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +0 -26
  366. package/templates/agents/sw-engineer/language/typescript-expert/AGENT.md +0 -47
  367. package/templates/agents/sw-engineer/language/typescript-expert/index.yaml +0 -27
  368. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +0 -225
  369. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +0 -26
  370. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +0 -219
  371. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +0 -320
  372. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +0 -28
  373. package/templates/agents/sw-engineer/tooling/bun-expert/index.yaml +0 -46
  374. package/templates/agents/sw-engineer/tooling/npm-expert/AGENT.md +0 -160
  375. package/templates/agents/sw-engineer/tooling/npm-expert/index.yaml +0 -45
  376. package/templates/agents/sw-engineer/tooling/optimizer/AGENT.md +0 -170
  377. package/templates/agents/sw-engineer/tooling/optimizer/index.yaml +0 -45
  378. package/templates/agents/system/memory-keeper/AGENT.md +0 -126
  379. package/templates/agents/system/memory-keeper/index.yaml +0 -45
  380. package/templates/agents/system/naggy/AGENT.md +0 -72
  381. package/templates/agents/system/naggy/index.yaml +0 -35
  382. package/templates/agents/tutor/go-tutor/index.yaml +0 -48
  383. package/templates/commands/COMMANDS.md +0 -136
  384. package/templates/commands/creator/agent.md +0 -121
  385. package/templates/commands/git/branch.yaml +0 -8
  386. package/templates/commands/git/commit.yaml +0 -4
  387. package/templates/commands/git/pr.yaml +0 -4
  388. package/templates/commands/git/status.yaml +0 -4
  389. package/templates/commands/git/sync.yaml +0 -4
  390. package/templates/commands/index.yaml +0 -225
  391. package/templates/commands/intent/explain.md +0 -144
  392. package/templates/commands/naggy/add.yaml +0 -8
  393. package/templates/commands/naggy/done.yaml +0 -8
  394. package/templates/commands/naggy/list.yaml +0 -4
  395. package/templates/commands/naggy/priority.yaml +0 -11
  396. package/templates/commands/naggy/remind.yaml +0 -4
  397. package/templates/commands/npm/audit.yaml +0 -62
  398. package/templates/commands/npm/publish.yaml +0 -52
  399. package/templates/commands/npm/version.yaml +0 -62
  400. package/templates/commands/optimize/analyze.yaml +0 -34
  401. package/templates/commands/optimize/bundle.yaml +0 -50
  402. package/templates/commands/optimize/report.yaml +0 -56
  403. package/templates/commands/sauron/quick.yaml +0 -4
  404. package/templates/commands/sauron/report.yaml +0 -4
  405. package/templates/commands/sauron/watch.yaml +0 -4
  406. package/templates/commands/supplier/audit.md +0 -133
  407. package/templates/commands/supplier/fix.md +0 -121
  408. package/templates/commands/sync/agents.yaml +0 -4
  409. package/templates/commands/sync/check.yaml +0 -4
  410. package/templates/commands/sync/commands.yaml +0 -4
  411. package/templates/commands/sync/docs.yaml +0 -4
  412. package/templates/commands/sync/fix.yaml +0 -4
  413. package/templates/skills/backend/fastapi-best-practices/SKILL.md +0 -269
  414. package/templates/skills/backend/fastapi-best-practices/index.yaml +0 -25
  415. package/templates/skills/backend/go-backend-best-practices/index.yaml +0 -26
  416. package/templates/skills/backend/springboot-best-practices/index.yaml +0 -27
  417. package/templates/skills/development/go-best-practices/index.yaml +0 -25
  418. package/templates/skills/development/kotlin-best-practices/SKILL.md +0 -255
  419. package/templates/skills/development/kotlin-best-practices/index.yaml +0 -27
  420. package/templates/skills/development/python-best-practices/SKILL.md +0 -221
  421. package/templates/skills/development/python-best-practices/index.yaml +0 -25
  422. package/templates/skills/development/react-best-practices/index.yaml +0 -39
  423. package/templates/skills/development/rust-best-practices/SKILL.md +0 -266
  424. package/templates/skills/development/rust-best-practices/index.yaml +0 -26
  425. package/templates/skills/development/typescript-best-practices/index.yaml +0 -28
  426. package/templates/skills/development/vercel-deploy/SKILL.md +0 -73
  427. package/templates/skills/development/vercel-deploy/index.yaml +0 -30
  428. package/templates/skills/development/web-design-guidelines/SKILL.md +0 -117
  429. package/templates/skills/development/web-design-guidelines/index.yaml +0 -34
  430. package/templates/skills/index.yaml +0 -129
  431. package/templates/skills/infrastructure/aws-best-practices/index.yaml +0 -27
  432. package/templates/skills/infrastructure/docker-best-practices/SKILL.md +0 -274
  433. package/templates/skills/infrastructure/docker-best-practices/index.yaml +0 -26
  434. package/templates/skills/orchestration/intent-detection/index.yaml +0 -30
  435. package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +0 -342
  436. package/templates/skills/orchestration/pipeline-execution/index.yaml +0 -27
  437. package/templates/skills/system/memory-management/SKILL.md +0 -194
  438. package/templates/skills/system/memory-management/index.yaml +0 -30
  439. package/templates/skills/system/result-aggregation/index.yaml +0 -36
@@ -1,337 +0,0 @@
1
- # Go Backend Best Practices Skill
2
-
3
- > **Category**: Backend
4
- > **Source**: Internal (based on Uber Go Style Guide and Standard Layout)
5
-
6
- ## Purpose
7
-
8
- Apply Go backend patterns for building production-ready services.
9
-
10
- ## Rules
11
-
12
- ### 1. Project Structure (Standard Layout)
13
-
14
- ```yaml
15
- layout: |
16
- project/
17
- ├── cmd/
18
- │ └── server/
19
- │ └── main.go
20
- ├── internal/
21
- │ ├── handler/
22
- │ ├── service/
23
- │ ├── repository/
24
- │ └── model/
25
- ├── pkg/
26
- │ └── shared/
27
- ├── api/
28
- │ └── openapi.yaml
29
- ├── configs/
30
- ├── scripts/
31
- ├── Dockerfile
32
- ├── Makefile
33
- └── go.mod
34
-
35
- directories:
36
- cmd: Main applications (one per binary)
37
- internal: Private application code
38
- pkg: Library code safe for external use
39
- api: API definitions (OpenAPI, protobuf)
40
- configs: Configuration files
41
- scripts: Build and CI scripts
42
- ```
43
-
44
- ### 2. Error Handling (Uber Style)
45
-
46
- ```yaml
47
- principles:
48
- - Wrap errors with context using %w
49
- - Handle errors once (don't log AND return)
50
- - Use sentinel errors for specific conditions
51
- - Name error variables with Err prefix
52
-
53
- patterns: |
54
- // Sentinel errors
55
- var (
56
- ErrNotFound = errors.New("not found")
57
- ErrInvalidInput = errors.New("invalid input")
58
- )
59
-
60
- // Wrap with context
61
- func getUser(id string) (*User, error) {
62
- user, err := db.FindUser(id)
63
- if err != nil {
64
- return nil, fmt.Errorf("getUser %s: %w", id, err)
65
- }
66
- return user, nil
67
- }
68
-
69
- // Check specific errors
70
- if errors.Is(err, ErrNotFound) {
71
- return http.StatusNotFound
72
- }
73
- ```
74
-
75
- ### 3. Concurrency (Uber Style)
76
-
77
- ```yaml
78
- channels:
79
- size: "Use 0 (unbuffered) or 1 only"
80
- larger: "Requires careful review"
81
-
82
- goroutines:
83
- never: fire-and-forget
84
- always: wait for completion or manage lifecycle
85
-
86
- patterns: |
87
- // Wait group for goroutines
88
- func process(items []Item) error {
89
- var wg sync.WaitGroup
90
- errCh := make(chan error, 1)
91
-
92
- for _, item := range items {
93
- wg.Add(1)
94
- go func(item Item) {
95
- defer wg.Done()
96
- if err := processItem(item); err != nil {
97
- select {
98
- case errCh <- err:
99
- default:
100
- }
101
- }
102
- }(item)
103
- }
104
-
105
- wg.Wait()
106
- close(errCh)
107
- return <-errCh
108
- }
109
-
110
- // Context for cancellation
111
- func longRunningTask(ctx context.Context) error {
112
- for {
113
- select {
114
- case <-ctx.Done():
115
- return ctx.Err()
116
- default:
117
- // do work
118
- }
119
- }
120
- }
121
- ```
122
-
123
- ### 4. HTTP Server
124
-
125
- ```yaml
126
- structure:
127
- handler: HTTP layer (request/response)
128
- service: Business logic
129
- repository: Data access
130
-
131
- patterns: |
132
- // Handler with dependency injection
133
- type UserHandler struct {
134
- service UserService
135
- }
136
-
137
- func NewUserHandler(s UserService) *UserHandler {
138
- return &UserHandler{service: s}
139
- }
140
-
141
- func (h *UserHandler) GetUser(w http.ResponseWriter, r *http.Request) {
142
- id := chi.URLParam(r, "id")
143
-
144
- user, err := h.service.GetUser(r.Context(), id)
145
- if err != nil {
146
- if errors.Is(err, ErrNotFound) {
147
- http.Error(w, "user not found", http.StatusNotFound)
148
- return
149
- }
150
- http.Error(w, "internal error", http.StatusInternalServerError)
151
- return
152
- }
153
-
154
- json.NewEncoder(w).Encode(user)
155
- }
156
-
157
- // Router setup
158
- func NewRouter(h *UserHandler) *chi.Mux {
159
- r := chi.NewRouter()
160
- r.Use(middleware.Logger)
161
- r.Use(middleware.Recoverer)
162
-
163
- r.Route("/api/v1", func(r chi.Router) {
164
- r.Get("/users/{id}", h.GetUser)
165
- r.Post("/users", h.CreateUser)
166
- })
167
-
168
- return r
169
- }
170
- ```
171
-
172
- ### 5. Dependency Injection
173
-
174
- ```yaml
175
- approach: constructor injection
176
- avoid: global variables
177
-
178
- patterns: |
179
- // Service with dependencies
180
- type UserService struct {
181
- repo UserRepository
182
- cache Cache
183
- logger *slog.Logger
184
- }
185
-
186
- func NewUserService(
187
- repo UserRepository,
188
- cache Cache,
189
- logger *slog.Logger,
190
- ) *UserService {
191
- return &UserService{
192
- repo: repo,
193
- cache: cache,
194
- logger: logger,
195
- }
196
- }
197
-
198
- // Wire up in main
199
- func main() {
200
- logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
201
- db := database.New(cfg.DatabaseURL)
202
- cache := redis.New(cfg.RedisURL)
203
-
204
- repo := repository.NewUserRepository(db)
205
- service := service.NewUserService(repo, cache, logger)
206
- handler := handler.NewUserHandler(service)
207
-
208
- router := handler.NewRouter(handler)
209
- http.ListenAndServe(":8080", router)
210
- }
211
- ```
212
-
213
- ### 6. Configuration
214
-
215
- ```yaml
216
- approach:
217
- - Use environment variables
218
- - Validate at startup
219
- - Group related settings
220
-
221
- patterns: |
222
- type Config struct {
223
- Server ServerConfig
224
- Database DatabaseConfig
225
- Redis RedisConfig
226
- }
227
-
228
- type ServerConfig struct {
229
- Host string `env:"SERVER_HOST" envDefault:"0.0.0.0"`
230
- Port int `env:"SERVER_PORT" envDefault:"8080"`
231
- ReadTimeout time.Duration `env:"SERVER_READ_TIMEOUT" envDefault:"5s"`
232
- WriteTimeout time.Duration `env:"SERVER_WRITE_TIMEOUT" envDefault:"10s"`
233
- }
234
-
235
- func LoadConfig() (*Config, error) {
236
- var cfg Config
237
- if err := env.Parse(&cfg); err != nil {
238
- return nil, fmt.Errorf("parse config: %w", err)
239
- }
240
- return &cfg, nil
241
- }
242
- ```
243
-
244
- ### 7. Testing
245
-
246
- ```yaml
247
- patterns:
248
- table_driven: for comprehensive coverage
249
- interfaces: for mocking
250
- parallel: for speed
251
-
252
- example: |
253
- func TestUserService_GetUser(t *testing.T) {
254
- tests := []struct {
255
- name string
256
- userID string
257
- mock func(*MockRepository)
258
- want *User
259
- wantErr error
260
- }{
261
- {
262
- name: "success",
263
- userID: "123",
264
- mock: func(m *MockRepository) {
265
- m.EXPECT().FindByID("123").Return(&User{ID: "123"}, nil)
266
- },
267
- want: &User{ID: "123"},
268
- },
269
- {
270
- name: "not found",
271
- userID: "999",
272
- mock: func(m *MockRepository) {
273
- m.EXPECT().FindByID("999").Return(nil, ErrNotFound)
274
- },
275
- wantErr: ErrNotFound,
276
- },
277
- }
278
-
279
- for _, tt := range tests {
280
- t.Run(tt.name, func(t *testing.T) {
281
- t.Parallel()
282
- ctrl := gomock.NewController(t)
283
- repo := NewMockRepository(ctrl)
284
- tt.mock(repo)
285
-
286
- svc := NewUserService(repo, nil, slog.Default())
287
- got, err := svc.GetUser(context.Background(), tt.userID)
288
-
289
- if !errors.Is(err, tt.wantErr) {
290
- t.Errorf("got error %v, want %v", err, tt.wantErr)
291
- }
292
- if diff := cmp.Diff(tt.want, got); diff != "" {
293
- t.Errorf("mismatch (-want +got):\n%s", diff)
294
- }
295
- })
296
- }
297
- }
298
- ```
299
-
300
- ### 8. Performance (Uber Style)
301
-
302
- ```yaml
303
- guidelines:
304
- - Use strconv over fmt for conversions
305
- - Pre-allocate slices with known capacity
306
- - Avoid repeated string-to-byte conversions
307
- - Copy slices/maps at boundaries
308
-
309
- patterns: |
310
- // Pre-allocate
311
- items := make([]Item, 0, len(input))
312
-
313
- // strconv for conversions
314
- s := strconv.Itoa(n) // not fmt.Sprintf("%d", n)
315
-
316
- // Copy at boundaries
317
- func (s *Store) GetItems() []Item {
318
- s.mu.RLock()
319
- defer s.mu.RUnlock()
320
- items := make([]Item, len(s.items))
321
- copy(items, s.items)
322
- return items
323
- }
324
- ```
325
-
326
- ## Application
327
-
328
- When writing Go backend code:
329
-
330
- 1. **Always** use standard project layout
331
- 2. **Always** wrap errors with context
332
- 3. **Never** fire-and-forget goroutines
333
- 4. **Use** constructor injection
334
- 5. **Use** table-driven tests
335
- 6. **Handle** errors once
336
- 7. **Copy** data at boundaries
337
- 8. **Validate** config at startup
@@ -1,26 +0,0 @@
1
- # Go Backend Best Practices Skill
2
-
3
- metadata:
4
- name: go-backend-best-practices
5
- category: backend
6
- description: Go backend patterns from Uber style and standard layout
7
-
8
- source:
9
- type: internal
10
- reference:
11
- - https://go.dev/doc/effective_go
12
- - https://github.com/golang-standards/project-layout
13
- - https://github.com/uber-go/guide/blob/master/style.md
14
-
15
- provides:
16
- - Project structure (standard layout)
17
- - Error handling patterns
18
- - Concurrency patterns
19
- - HTTP server design
20
- - Dependency injection
21
- - Configuration management
22
- - Testing patterns
23
- - Performance guidelines
24
-
25
- used_by:
26
- - go-backend-expert
@@ -1,356 +0,0 @@
1
- # Spring Boot Best Practices Skill
2
-
3
- > **Category**: Backend
4
- > **Source**: Internal (based on Spring documentation and Baeldung)
5
-
6
- ## Purpose
7
-
8
- Apply Spring Boot patterns for building enterprise-grade applications.
9
-
10
- ## Rules
11
-
12
- ### 1. Project Structure
13
-
14
- ```yaml
15
- structure:
16
- layout: layered architecture
17
- packages:
18
- - controller: REST endpoints
19
- - service: Business logic
20
- - repository: Data access
21
- - model/entity: Domain objects
22
- - dto: Data transfer objects
23
- - config: Configuration classes
24
- - exception: Custom exceptions
25
-
26
- example: |
27
- com.example.app/
28
- ├── controller/
29
- │ └── UserController.java
30
- ├── service/
31
- │ ├── UserService.java
32
- │ └── impl/UserServiceImpl.java
33
- ├── repository/
34
- │ └── UserRepository.java
35
- ├── model/
36
- │ └── User.java
37
- ├── dto/
38
- │ ├── UserRequest.java
39
- │ └── UserResponse.java
40
- ├── config/
41
- │ └── SecurityConfig.java
42
- └── exception/
43
- └── UserNotFoundException.java
44
- ```
45
-
46
- ### 2. Dependency Injection
47
-
48
- ```yaml
49
- prefer:
50
- - Constructor injection over field injection
51
- - Interface-based dependencies
52
- - @RequiredArgsConstructor with final fields
53
-
54
- patterns: |
55
- // GOOD: Constructor injection
56
- @Service
57
- @RequiredArgsConstructor
58
- public class UserService {
59
- private final UserRepository userRepository;
60
- private final EmailService emailService;
61
- }
62
-
63
- // AVOID: Field injection
64
- @Service
65
- public class UserService {
66
- @Autowired
67
- private UserRepository userRepository; // Not recommended
68
- }
69
- ```
70
-
71
- ### 3. REST API Design
72
-
73
- ```yaml
74
- controller:
75
- annotations:
76
- - "@RestController"
77
- - "@RequestMapping with base path"
78
- - "@Validated for input validation"
79
-
80
- patterns: |
81
- @RestController
82
- @RequestMapping("/api/v1/users")
83
- @RequiredArgsConstructor
84
- public class UserController {
85
-
86
- private final UserService userService;
87
-
88
- @GetMapping("/{id}")
89
- public ResponseEntity<UserResponse> getUser(@PathVariable Long id) {
90
- return ResponseEntity.ok(userService.findById(id));
91
- }
92
-
93
- @PostMapping
94
- @ResponseStatus(HttpStatus.CREATED)
95
- public UserResponse createUser(@Valid @RequestBody UserRequest request) {
96
- return userService.create(request);
97
- }
98
-
99
- @PutMapping("/{id}")
100
- public UserResponse updateUser(
101
- @PathVariable Long id,
102
- @Valid @RequestBody UserRequest request
103
- ) {
104
- return userService.update(id, request);
105
- }
106
-
107
- @DeleteMapping("/{id}")
108
- @ResponseStatus(HttpStatus.NO_CONTENT)
109
- public void deleteUser(@PathVariable Long id) {
110
- userService.delete(id);
111
- }
112
- }
113
- ```
114
-
115
- ### 4. Service Layer
116
-
117
- ```yaml
118
- principles:
119
- - Business logic in service layer
120
- - Transaction boundaries at service level
121
- - Interface + implementation pattern
122
-
123
- patterns: |
124
- public interface UserService {
125
- UserResponse findById(Long id);
126
- UserResponse create(UserRequest request);
127
- }
128
-
129
- @Service
130
- @Transactional(readOnly = true)
131
- @RequiredArgsConstructor
132
- public class UserServiceImpl implements UserService {
133
-
134
- private final UserRepository userRepository;
135
- private final UserMapper userMapper;
136
-
137
- @Override
138
- public UserResponse findById(Long id) {
139
- User user = userRepository.findById(id)
140
- .orElseThrow(() -> new UserNotFoundException(id));
141
- return userMapper.toResponse(user);
142
- }
143
-
144
- @Override
145
- @Transactional
146
- public UserResponse create(UserRequest request) {
147
- User user = userMapper.toEntity(request);
148
- return userMapper.toResponse(userRepository.save(user));
149
- }
150
- }
151
- ```
152
-
153
- ### 5. Data Access
154
-
155
- ```yaml
156
- repository:
157
- use: Spring Data JPA
158
- custom_queries: "@Query annotation or method naming"
159
-
160
- patterns: |
161
- public interface UserRepository extends JpaRepository<User, Long> {
162
-
163
- Optional<User> findByEmail(String email);
164
-
165
- @Query("SELECT u FROM User u WHERE u.status = :status")
166
- List<User> findByStatus(@Param("status") UserStatus status);
167
-
168
- @Query(value = "SELECT * FROM users WHERE created_at > :date",
169
- nativeQuery = true)
170
- List<User> findRecentUsers(@Param("date") LocalDateTime date);
171
- }
172
-
173
- entity: |
174
- @Entity
175
- @Table(name = "users")
176
- @Getter
177
- @NoArgsConstructor(access = AccessLevel.PROTECTED)
178
- public class User {
179
-
180
- @Id
181
- @GeneratedValue(strategy = GenerationType.IDENTITY)
182
- private Long id;
183
-
184
- @Column(nullable = false, unique = true)
185
- private String email;
186
-
187
- @Enumerated(EnumType.STRING)
188
- private UserStatus status;
189
-
190
- @CreatedDate
191
- private LocalDateTime createdAt;
192
- }
193
- ```
194
-
195
- ### 6. Exception Handling
196
-
197
- ```yaml
198
- global_handler:
199
- use: "@ControllerAdvice"
200
- custom_exceptions: domain-specific
201
-
202
- patterns: |
203
- @RestControllerAdvice
204
- public class GlobalExceptionHandler {
205
-
206
- @ExceptionHandler(UserNotFoundException.class)
207
- @ResponseStatus(HttpStatus.NOT_FOUND)
208
- public ErrorResponse handleUserNotFound(UserNotFoundException ex) {
209
- return new ErrorResponse("USER_NOT_FOUND", ex.getMessage());
210
- }
211
-
212
- @ExceptionHandler(MethodArgumentNotValidException.class)
213
- @ResponseStatus(HttpStatus.BAD_REQUEST)
214
- public ErrorResponse handleValidation(MethodArgumentNotValidException ex) {
215
- List<String> errors = ex.getBindingResult()
216
- .getFieldErrors()
217
- .stream()
218
- .map(e -> e.getField() + ": " + e.getDefaultMessage())
219
- .toList();
220
- return new ErrorResponse("VALIDATION_ERROR", errors);
221
- }
222
- }
223
- ```
224
-
225
- ### 7. Configuration
226
-
227
- ```yaml
228
- profiles:
229
- use: application-{profile}.yml
230
- externalize: sensitive values
231
-
232
- patterns: |
233
- # application.yml
234
- spring:
235
- profiles:
236
- active: ${SPRING_PROFILES_ACTIVE:local}
237
- datasource:
238
- url: ${DATABASE_URL}
239
- username: ${DATABASE_USERNAME}
240
- password: ${DATABASE_PASSWORD}
241
-
242
- # application-local.yml
243
- spring:
244
- datasource:
245
- url: jdbc:h2:mem:testdb
246
- driver-class-name: org.h2.Driver
247
-
248
- configuration_class: |
249
- @Configuration
250
- @ConfigurationProperties(prefix = "app")
251
- @Validated
252
- public class AppProperties {
253
-
254
- @NotBlank
255
- private String name;
256
-
257
- @Min(1)
258
- private int maxConnections;
259
-
260
- // getters, setters
261
- }
262
- ```
263
-
264
- ### 8. Security
265
-
266
- ```yaml
267
- principles:
268
- - Use Spring Security
269
- - Externalize secrets
270
- - Implement proper authentication
271
-
272
- patterns: |
273
- @Configuration
274
- @EnableWebSecurity
275
- @RequiredArgsConstructor
276
- public class SecurityConfig {
277
-
278
- private final JwtTokenProvider tokenProvider;
279
-
280
- @Bean
281
- public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
282
- return http
283
- .csrf(csrf -> csrf.disable())
284
- .sessionManagement(session ->
285
- session.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
286
- .authorizeHttpRequests(auth -> auth
287
- .requestMatchers("/api/v1/auth/**").permitAll()
288
- .requestMatchers("/api/v1/admin/**").hasRole("ADMIN")
289
- .anyRequest().authenticated())
290
- .addFilterBefore(jwtFilter(), UsernamePasswordAuthenticationFilter.class)
291
- .build();
292
- }
293
- }
294
- ```
295
-
296
- ### 9. Testing
297
-
298
- ```yaml
299
- layers:
300
- unit: "@MockBean, Mockito"
301
- integration: "@SpringBootTest"
302
- slice: "@WebMvcTest, @DataJpaTest"
303
-
304
- patterns: |
305
- // Controller test
306
- @WebMvcTest(UserController.class)
307
- class UserControllerTest {
308
-
309
- @Autowired
310
- private MockMvc mockMvc;
311
-
312
- @MockBean
313
- private UserService userService;
314
-
315
- @Test
316
- void getUser_shouldReturnUser() throws Exception {
317
- given(userService.findById(1L))
318
- .willReturn(new UserResponse(1L, "test@example.com"));
319
-
320
- mockMvc.perform(get("/api/v1/users/1"))
321
- .andExpect(status().isOk())
322
- .andExpect(jsonPath("$.email").value("test@example.com"));
323
- }
324
- }
325
-
326
- // Repository test
327
- @DataJpaTest
328
- class UserRepositoryTest {
329
-
330
- @Autowired
331
- private UserRepository userRepository;
332
-
333
- @Test
334
- void findByEmail_shouldReturnUser() {
335
- User user = userRepository.save(new User("test@example.com"));
336
-
337
- Optional<User> found = userRepository.findByEmail("test@example.com");
338
-
339
- assertThat(found).isPresent();
340
- assertThat(found.get().getEmail()).isEqualTo("test@example.com");
341
- }
342
- }
343
- ```
344
-
345
- ## Application
346
-
347
- When writing Spring Boot code:
348
-
349
- 1. **Always** use constructor injection
350
- 2. **Always** use layered architecture
351
- 3. **Prefer** interface-based services
352
- 4. **Use** DTOs for API contracts
353
- 5. **Handle** exceptions globally
354
- 6. **Externalize** configuration
355
- 7. **Secure** endpoints properly
356
- 8. **Test** each layer appropriately