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,243 +0,0 @@
1
- # Standard Go Project Layout
2
-
3
- > Source: https://github.com/golang-standards/project-layout
4
-
5
- ## Directory Structure
6
-
7
- ```
8
- project/
9
- ├── cmd/ # Main applications
10
- │ ├── server/
11
- │ │ └── main.go
12
- │ └── worker/
13
- │ └── main.go
14
- ├── internal/ # Private code
15
- │ ├── handler/
16
- │ ├── service/
17
- │ ├── repository/
18
- │ ├── model/
19
- │ └── config/
20
- ├── pkg/ # Public library code
21
- │ └── validator/
22
- ├── api/ # API definitions
23
- │ ├── openapi.yaml
24
- │ └── proto/
25
- ├── configs/ # Configuration files
26
- │ └── config.yaml
27
- ├── scripts/ # Build scripts
28
- │ └── build.sh
29
- ├── test/ # Additional test data
30
- │ └── testdata/
31
- ├── docs/ # Documentation
32
- ├── Dockerfile
33
- ├── Makefile
34
- ├── go.mod
35
- └── go.sum
36
- ```
37
-
38
- ## Directory Descriptions
39
-
40
- ### `/cmd`
41
-
42
- Main applications for this project. Each application has its own subdirectory.
43
-
44
- ```go
45
- // cmd/server/main.go
46
- package main
47
-
48
- import (
49
- "log"
50
- "myapp/internal/config"
51
- "myapp/internal/handler"
52
- "myapp/internal/service"
53
- )
54
-
55
- func main() {
56
- cfg, err := config.Load()
57
- if err != nil {
58
- log.Fatal(err)
59
- }
60
-
61
- svc := service.New(cfg)
62
- h := handler.New(svc)
63
-
64
- log.Fatal(h.ListenAndServe(cfg.Addr))
65
- }
66
- ```
67
-
68
- ### `/internal`
69
-
70
- Private application and library code. Not importable by other projects.
71
-
72
- ```
73
- internal/
74
- ├── handler/ # HTTP/gRPC handlers
75
- │ └── user.go
76
- ├── service/ # Business logic
77
- │ └── user.go
78
- ├── repository/ # Data access
79
- │ └── user.go
80
- ├── model/ # Domain models
81
- │ └── user.go
82
- └── config/ # Configuration
83
- └── config.go
84
- ```
85
-
86
- ### `/pkg`
87
-
88
- Library code safe for external use.
89
-
90
- ```go
91
- // pkg/validator/validator.go
92
- package validator
93
-
94
- func ValidateEmail(email string) bool {
95
- // validation logic
96
- }
97
- ```
98
-
99
- ### `/api`
100
-
101
- API definitions (OpenAPI/Swagger, Protocol Buffers).
102
-
103
- ```yaml
104
- # api/openapi.yaml
105
- openapi: "3.0.0"
106
- info:
107
- title: "My API"
108
- version: "1.0.0"
109
- paths:
110
- /users:
111
- get:
112
- summary: "List users"
113
- ```
114
-
115
- ## Common Patterns
116
-
117
- ### Application Structure
118
-
119
- ```go
120
- // internal/app/app.go
121
- type App struct {
122
- config *config.Config
123
- db *sql.DB
124
- cache *redis.Client
125
- handler *handler.Handler
126
- }
127
-
128
- func New(cfg *config.Config) (*App, error) {
129
- db, err := sql.Open("postgres", cfg.DatabaseURL)
130
- if err != nil {
131
- return nil, fmt.Errorf("open db: %w", err)
132
- }
133
-
134
- cache := redis.NewClient(&redis.Options{
135
- Addr: cfg.RedisURL,
136
- })
137
-
138
- repo := repository.New(db)
139
- svc := service.New(repo, cache)
140
- h := handler.New(svc)
141
-
142
- return &App{
143
- config: cfg,
144
- db: db,
145
- cache: cache,
146
- handler: h,
147
- }, nil
148
- }
149
-
150
- func (a *App) Run() error {
151
- return http.ListenAndServe(a.config.Addr, a.handler.Router())
152
- }
153
-
154
- func (a *App) Shutdown(ctx context.Context) error {
155
- if err := a.db.Close(); err != nil {
156
- return err
157
- }
158
- return a.cache.Close()
159
- }
160
- ```
161
-
162
- ### Main Entry Point
163
-
164
- ```go
165
- // cmd/server/main.go
166
- package main
167
-
168
- import (
169
- "context"
170
- "log/slog"
171
- "os"
172
- "os/signal"
173
- "syscall"
174
-
175
- "myapp/internal/app"
176
- "myapp/internal/config"
177
- )
178
-
179
- func main() {
180
- logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
181
- slog.SetDefault(logger)
182
-
183
- cfg, err := config.Load()
184
- if err != nil {
185
- slog.Error("load config", "error", err)
186
- os.Exit(1)
187
- }
188
-
189
- application, err := app.New(cfg)
190
- if err != nil {
191
- slog.Error("create app", "error", err)
192
- os.Exit(1)
193
- }
194
-
195
- // Graceful shutdown
196
- ctx, stop := signal.NotifyContext(
197
- context.Background(),
198
- syscall.SIGINT, syscall.SIGTERM,
199
- )
200
- defer stop()
201
-
202
- go func() {
203
- slog.Info("starting server", "addr", cfg.Addr)
204
- if err := application.Run(); err != nil {
205
- slog.Error("server error", "error", err)
206
- }
207
- }()
208
-
209
- <-ctx.Done()
210
- slog.Info("shutting down")
211
-
212
- shutdownCtx, cancel := context.WithTimeout(
213
- context.Background(),
214
- 30*time.Second,
215
- )
216
- defer cancel()
217
-
218
- if err := application.Shutdown(shutdownCtx); err != nil {
219
- slog.Error("shutdown error", "error", err)
220
- }
221
- }
222
- ```
223
-
224
- ### Makefile
225
-
226
- ```makefile
227
- .PHONY: build run test lint
228
-
229
- build:
230
- go build -o bin/server ./cmd/server
231
-
232
- run:
233
- go run ./cmd/server
234
-
235
- test:
236
- go test -v -race ./...
237
-
238
- lint:
239
- golangci-lint run
240
-
241
- docker:
242
- docker build -t myapp .
243
- ```
@@ -1,212 +0,0 @@
1
- # Uber Go Style Guide
2
-
3
- > Source: https://github.com/uber-go/guide/blob/master/style.md
4
-
5
- ## Guidelines
6
-
7
- ### Verify Interface Compliance
8
-
9
- ```go
10
- // Compile-time check
11
- var _ http.Handler = (*Handler)(nil)
12
- var _ io.Reader = (*MyReader)(nil)
13
- ```
14
-
15
- ### Receiver Type
16
-
17
- ```go
18
- // Value receiver: doesn't modify state
19
- func (s Stack) Length() int {
20
- return len(s.items)
21
- }
22
-
23
- // Pointer receiver: modifies state or is large
24
- func (s *Stack) Push(item int) {
25
- s.items = append(s.items, item)
26
- }
27
- ```
28
-
29
- ### Zero-value Mutexes
30
-
31
- ```go
32
- // Good: zero-value is valid
33
- var mu sync.Mutex
34
-
35
- // Good: embedded in struct
36
- type Store struct {
37
- mu sync.Mutex
38
- items map[string]Item
39
- }
40
- ```
41
-
42
- ### Copy Slices and Maps
43
-
44
- ```go
45
- // Returning: copy to prevent external modification
46
- func (s *Store) GetItems() []Item {
47
- s.mu.RLock()
48
- defer s.mu.RUnlock()
49
- items := make([]Item, len(s.items))
50
- copy(items, s.items)
51
- return items
52
- }
53
-
54
- // Receiving: copy to prevent caller modification
55
- func (s *Store) SetItems(items []Item) {
56
- s.mu.Lock()
57
- defer s.mu.Unlock()
58
- s.items = make([]Item, len(items))
59
- copy(s.items, items)
60
- }
61
- ```
62
-
63
- ### Defer for Cleanup
64
-
65
- ```go
66
- func readFile(path string) ([]byte, error) {
67
- f, err := os.Open(path)
68
- if err != nil {
69
- return nil, err
70
- }
71
- defer f.Close()
72
- return io.ReadAll(f)
73
- }
74
-
75
- func process() {
76
- mu.Lock()
77
- defer mu.Unlock()
78
- // ...
79
- }
80
- ```
81
-
82
- ### Channel Size
83
-
84
- ```go
85
- // Good: unbuffered or 1
86
- ch := make(chan int)
87
- ch := make(chan int, 1)
88
-
89
- // Requires justification
90
- ch := make(chan int, 100) // Why 100?
91
- ```
92
-
93
- ### Start Enums at One
94
-
95
- ```go
96
- type Operation int
97
-
98
- const (
99
- Add Operation = iota + 1
100
- Subtract
101
- Multiply
102
- )
103
- ```
104
-
105
- ### Error Types
106
-
107
- ```go
108
- // Sentinel errors
109
- var ErrNotFound = errors.New("not found")
110
-
111
- // Error wrapping
112
- if err != nil {
113
- return fmt.Errorf("failed to get user: %w", err)
114
- }
115
-
116
- // Checking errors
117
- if errors.Is(err, ErrNotFound) {
118
- // handle not found
119
- }
120
- ```
121
-
122
- ### Handle Errors Once
123
-
124
- ```go
125
- // Bad: logs AND returns
126
- if err != nil {
127
- log.Printf("error: %v", err)
128
- return err
129
- }
130
-
131
- // Good: return with context
132
- if err != nil {
133
- return fmt.Errorf("process: %w", err)
134
- }
135
- ```
136
-
137
- ### Use strconv Over fmt
138
-
139
- ```go
140
- // Good
141
- s := strconv.Itoa(n)
142
- n, err := strconv.Atoi(s)
143
-
144
- // Slower
145
- s := fmt.Sprintf("%d", n)
146
- ```
147
-
148
- ### Table-Driven Tests
149
-
150
- ```go
151
- func TestSplit(t *testing.T) {
152
- tests := []struct {
153
- name string
154
- input string
155
- sep string
156
- want []string
157
- }{
158
- {
159
- name: "simple",
160
- input: "a/b/c",
161
- sep: "/",
162
- want: []string{"a", "b", "c"},
163
- },
164
- {
165
- name: "empty",
166
- input: "",
167
- sep: "/",
168
- want: []string{""},
169
- },
170
- }
171
-
172
- for _, tt := range tests {
173
- t.Run(tt.name, func(t *testing.T) {
174
- got := strings.Split(tt.input, tt.sep)
175
- if diff := cmp.Diff(tt.want, got); diff != "" {
176
- t.Errorf("mismatch (-want +got):\n%s", diff)
177
- }
178
- })
179
- }
180
- }
181
- ```
182
-
183
- ### Functional Options
184
-
185
- ```go
186
- type Server struct {
187
- addr string
188
- timeout time.Duration
189
- }
190
-
191
- type Option func(*Server)
192
-
193
- func WithTimeout(d time.Duration) Option {
194
- return func(s *Server) {
195
- s.timeout = d
196
- }
197
- }
198
-
199
- func NewServer(addr string, opts ...Option) *Server {
200
- s := &Server{
201
- addr: addr,
202
- timeout: time.Second * 30,
203
- }
204
- for _, opt := range opts {
205
- opt(s)
206
- }
207
- return s
208
- }
209
-
210
- // Usage
211
- server := NewServer(":8080", WithTimeout(time.Minute))
212
- ```
@@ -1,282 +0,0 @@
1
- # Go Concurrency Patterns
2
-
3
- > Reference for concurrent programming in Go
4
-
5
- ## Core Philosophy
6
-
7
- > Do not communicate by sharing memory; instead, share memory by communicating.
8
-
9
- Go's approach to concurrency differs from traditional threading models. Channels provide a way to safely communicate between goroutines without explicit locks.
10
-
11
- ## Goroutines
12
-
13
- A goroutine is a lightweight thread managed by the Go runtime.
14
-
15
- ```go
16
- // Start a goroutine
17
- go doSomething()
18
-
19
- // With anonymous function
20
- go func() {
21
- // concurrent work
22
- }()
23
- ```
24
-
25
- ### Goroutine Lifecycle
26
-
27
- - Created with `go` keyword
28
- - Runs concurrently with calling goroutine
29
- - Exits when function returns
30
- - Main goroutine exit = program exit
31
-
32
- ## Channels
33
-
34
- ### Basic Operations
35
-
36
- ```go
37
- // Create
38
- ch := make(chan int) // unbuffered
39
- ch := make(chan int, 10) // buffered, capacity 10
40
-
41
- // Send
42
- ch <- value
43
-
44
- // Receive
45
- value := <-ch
46
- value, ok := <-ch // ok is false if channel closed
47
-
48
- // Close
49
- close(ch)
50
- ```
51
-
52
- ### Unbuffered vs Buffered
53
-
54
- | Type | Behavior |
55
- |------|----------|
56
- | Unbuffered | Sender blocks until receiver ready |
57
- | Buffered | Sender blocks only when buffer full |
58
-
59
- ### Directional Channels
60
-
61
- ```go
62
- func sender(ch chan<- int) {
63
- ch <- 42 // send-only
64
- }
65
-
66
- func receiver(ch <-chan int) {
67
- v := <-ch // receive-only
68
- }
69
- ```
70
-
71
- ## Common Patterns
72
-
73
- ### Worker Pool
74
-
75
- ```go
76
- func worker(id int, jobs <-chan int, results chan<- int) {
77
- for j := range jobs {
78
- results <- j * 2
79
- }
80
- }
81
-
82
- func main() {
83
- jobs := make(chan int, 100)
84
- results := make(chan int, 100)
85
-
86
- // Start 3 workers
87
- for w := 1; w <= 3; w++ {
88
- go worker(w, jobs, results)
89
- }
90
-
91
- // Send jobs
92
- for j := 1; j <= 9; j++ {
93
- jobs <- j
94
- }
95
- close(jobs)
96
-
97
- // Collect results
98
- for a := 1; a <= 9; a++ {
99
- <-results
100
- }
101
- }
102
- ```
103
-
104
- ### Fan-Out, Fan-In
105
-
106
- ```go
107
- // Fan-out: multiple goroutines read from same channel
108
- // Fan-in: single goroutine reads from multiple channels
109
-
110
- func fanIn(ch1, ch2 <-chan int) <-chan int {
111
- out := make(chan int)
112
- go func() {
113
- for {
114
- select {
115
- case v := <-ch1:
116
- out <- v
117
- case v := <-ch2:
118
- out <- v
119
- }
120
- }
121
- }()
122
- return out
123
- }
124
- ```
125
-
126
- ### Pipeline
127
-
128
- ```go
129
- func gen(nums ...int) <-chan int {
130
- out := make(chan int)
131
- go func() {
132
- for _, n := range nums {
133
- out <- n
134
- }
135
- close(out)
136
- }()
137
- return out
138
- }
139
-
140
- func sq(in <-chan int) <-chan int {
141
- out := make(chan int)
142
- go func() {
143
- for n := range in {
144
- out <- n * n
145
- }
146
- close(out)
147
- }()
148
- return out
149
- }
150
-
151
- // Usage: for v := range sq(sq(gen(2, 3))) { ... }
152
- ```
153
-
154
- ### Context for Cancellation
155
-
156
- ```go
157
- func operation(ctx context.Context) error {
158
- select {
159
- case <-time.After(time.Second):
160
- return nil // completed
161
- case <-ctx.Done():
162
- return ctx.Err() // cancelled
163
- }
164
- }
165
-
166
- func main() {
167
- ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond)
168
- defer cancel()
169
-
170
- if err := operation(ctx); err != nil {
171
- log.Fatal(err)
172
- }
173
- }
174
- ```
175
-
176
- ## Select Statement
177
-
178
- ```go
179
- select {
180
- case v := <-ch1:
181
- // received from ch1
182
- case ch2 <- x:
183
- // sent to ch2
184
- case <-time.After(time.Second):
185
- // timeout
186
- default:
187
- // non-blocking
188
- }
189
- ```
190
-
191
- ## Synchronization
192
-
193
- ### sync.WaitGroup
194
-
195
- ```go
196
- var wg sync.WaitGroup
197
-
198
- for i := 0; i < 5; i++ {
199
- wg.Add(1)
200
- go func(id int) {
201
- defer wg.Done()
202
- // work
203
- }(i)
204
- }
205
-
206
- wg.Wait() // blocks until all done
207
- ```
208
-
209
- ### sync.Mutex
210
-
211
- ```go
212
- var (
213
- mu sync.Mutex
214
- counter int
215
- )
216
-
217
- func increment() {
218
- mu.Lock()
219
- defer mu.Unlock()
220
- counter++
221
- }
222
- ```
223
-
224
- ### sync.Once
225
-
226
- ```go
227
- var once sync.Once
228
-
229
- func initialize() {
230
- once.Do(func() {
231
- // runs exactly once
232
- })
233
- }
234
- ```
235
-
236
- ## Avoiding Common Pitfalls
237
-
238
- ### Goroutine Leaks
239
-
240
- ```go
241
- // BAD: goroutine never exits
242
- go func() {
243
- for {
244
- // infinite loop with no exit
245
- }
246
- }()
247
-
248
- // GOOD: use context or done channel
249
- go func(ctx context.Context) {
250
- for {
251
- select {
252
- case <-ctx.Done():
253
- return
254
- default:
255
- // work
256
- }
257
- }
258
- }(ctx)
259
- ```
260
-
261
- ### Race Conditions
262
-
263
- ```go
264
- // BAD: race condition
265
- go func() { x++ }()
266
- go func() { x++ }()
267
-
268
- // GOOD: use channels or mutex
269
- go func() { ch <- 1 }()
270
- go func() { ch <- 1 }()
271
- x += <-ch + <-ch
272
- ```
273
-
274
- ### Closing Channels
275
-
276
- ```go
277
- // Only sender should close
278
- // Closing already-closed channel panics
279
- // Sending to closed channel panics
280
-
281
- // Pattern: use sync.Once or single sender
282
- ```