oh-my-customcode 0.1.1 → 0.1.3

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 (223) hide show
  1. package/README.md +45 -32
  2. package/dist/cli/index.js +12 -20
  3. package/dist/index.js +3 -3
  4. package/package.json +2 -2
  5. package/templates/.claude/rules/MUST-orchestrator-coordination.md +25 -0
  6. package/templates/agents/index.yaml +6 -0
  7. package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
  8. package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
  9. package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
  10. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
  11. package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
  12. package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
  13. package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
  14. package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
  15. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
  16. package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
  17. package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
  18. package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
  19. package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
  20. package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
  21. package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
  22. package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
  23. package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +291 -0
  24. package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +341 -0
  25. package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
  26. package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
  27. package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
  28. package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +112 -0
  29. package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
  30. package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
  31. package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +89 -0
  32. package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
  33. package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
  34. package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
  35. package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
  36. package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
  37. package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
  38. package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
  39. package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
  40. package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
  41. package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
  42. package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
  43. package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
  44. package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
  45. package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
  46. package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
  47. package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
  48. package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
  49. package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
  50. package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
  51. package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
  52. package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
  53. package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
  54. package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
  55. package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
  56. package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
  57. package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
  58. package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
  59. package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
  60. package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
  61. package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
  62. package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
  63. package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
  64. package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
  65. package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
  66. package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
  67. package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
  68. package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
  69. package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
  70. package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
  71. package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
  72. package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
  73. package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
  74. package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
  75. package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
  76. package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
  77. package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
  78. package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
  79. package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
  80. package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
  81. package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
  82. package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
  83. package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
  84. package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
  85. package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +291 -0
  86. package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +341 -0
  87. package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
  88. package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
  89. package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
  90. package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +112 -0
  91. package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
  92. package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
  93. package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +89 -0
  94. package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
  95. package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
  96. package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
  97. package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
  98. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
  99. package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
  100. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
  101. package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
  102. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
  103. package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
  104. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
  105. package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
  106. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
  107. package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
  108. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
  109. package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
  110. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
  111. package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
  112. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
  113. package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
  114. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
  115. package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
  116. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
  117. package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
  118. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
  119. package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
  120. package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
  121. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
  122. package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
  123. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
  124. package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
  125. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
  126. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
  127. package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
  128. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
  129. package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
  130. package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
  131. package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
  132. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
  133. package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
  134. package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
  135. package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
  136. package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
  137. package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
  138. package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
  139. package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
  140. package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +291 -0
  141. package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +341 -0
  142. package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
  143. package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
  144. package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
  145. package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +112 -0
  146. package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
  147. package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
  148. package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +89 -0
  149. package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
  150. package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
  151. package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
  152. package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
  153. package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
  154. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
  155. package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
  156. package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
  157. package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
  158. package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
  159. package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +291 -0
  160. package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +341 -0
  161. package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
  162. package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
  163. package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
  164. package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +112 -0
  165. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
  166. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
  167. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +89 -0
  168. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
  169. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
  170. package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
  171. package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
  172. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
  173. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
  174. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
  175. package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
  176. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
  177. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
  178. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
  179. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
  180. package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
  181. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
  182. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
  183. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
  184. package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
  185. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
  186. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
  187. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
  188. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
  189. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
  190. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
  191. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
  192. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
  193. package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
  194. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
  195. package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
  196. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
  197. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
  198. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
  199. package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
  200. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
  201. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
  202. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
  203. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
  204. package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
  205. package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
  206. package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
  207. package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
  208. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
  209. package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
  210. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
  211. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
  212. package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
  213. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
  214. package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
  215. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
  216. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
  217. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
  218. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
  219. package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
  220. package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
  221. package/templates/agents/tutor/go-tutor/index.yaml +48 -0
  222. package/templates/manifest.json +55 -0
  223. package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
@@ -0,0 +1,250 @@
1
+ # Go Error Handling
2
+
3
+ > Reference for error handling patterns in Go
4
+
5
+ ## Error Interface
6
+
7
+ ```go
8
+ type error interface {
9
+ Error() string
10
+ }
11
+ ```
12
+
13
+ Errors are values. They can be stored, passed, and compared.
14
+
15
+ ## Creating Errors
16
+
17
+ ### Simple Errors
18
+
19
+ ```go
20
+ import "errors"
21
+
22
+ err := errors.New("something went wrong")
23
+ ```
24
+
25
+ ### Formatted Errors
26
+
27
+ ```go
28
+ import "fmt"
29
+
30
+ err := fmt.Errorf("failed to process %s: %v", filename, err)
31
+ ```
32
+
33
+ ### Custom Error Types
34
+
35
+ ```go
36
+ type MyError struct {
37
+ Code int
38
+ Message string
39
+ }
40
+
41
+ func (e *MyError) Error() string {
42
+ return fmt.Sprintf("error %d: %s", e.Code, e.Message)
43
+ }
44
+ ```
45
+
46
+ ## Handling Errors
47
+
48
+ ### Basic Pattern
49
+
50
+ ```go
51
+ result, err := doSomething()
52
+ if err != nil {
53
+ return err
54
+ }
55
+ // use result
56
+ ```
57
+
58
+ ### Adding Context
59
+
60
+ ```go
61
+ result, err := doSomething()
62
+ if err != nil {
63
+ return fmt.Errorf("doSomething failed: %w", err)
64
+ }
65
+ ```
66
+
67
+ ### Multiple Returns
68
+
69
+ ```go
70
+ func divide(a, b float64) (float64, error) {
71
+ if b == 0 {
72
+ return 0, errors.New("division by zero")
73
+ }
74
+ return a / b, nil
75
+ }
76
+ ```
77
+
78
+ ## Error Wrapping (Go 1.13+)
79
+
80
+ ### Wrapping Errors
81
+
82
+ ```go
83
+ // Use %w verb to wrap
84
+ if err != nil {
85
+ return fmt.Errorf("operation failed: %w", err)
86
+ }
87
+ ```
88
+
89
+ ### Unwrapping Errors
90
+
91
+ ```go
92
+ // errors.Unwrap returns the wrapped error
93
+ inner := errors.Unwrap(err)
94
+
95
+ // errors.Is checks if any error in chain matches
96
+ if errors.Is(err, os.ErrNotExist) {
97
+ // handle file not found
98
+ }
99
+
100
+ // errors.As finds first error matching type
101
+ var pathErr *os.PathError
102
+ if errors.As(err, &pathErr) {
103
+ fmt.Println("failed path:", pathErr.Path)
104
+ }
105
+ ```
106
+
107
+ ## Sentinel Errors
108
+
109
+ ```go
110
+ var (
111
+ ErrNotFound = errors.New("not found")
112
+ ErrUnauthorized = errors.New("unauthorized")
113
+ ErrInvalid = errors.New("invalid input")
114
+ )
115
+
116
+ func fetch(id string) (*Item, error) {
117
+ item, ok := store[id]
118
+ if !ok {
119
+ return nil, ErrNotFound
120
+ }
121
+ return item, nil
122
+ }
123
+
124
+ // Usage
125
+ item, err := fetch("123")
126
+ if errors.Is(err, ErrNotFound) {
127
+ // handle not found
128
+ }
129
+ ```
130
+
131
+ ## Error Handling Strategies
132
+
133
+ ### Fail Fast
134
+
135
+ ```go
136
+ func process() error {
137
+ if err := step1(); err != nil {
138
+ return err
139
+ }
140
+ if err := step2(); err != nil {
141
+ return err
142
+ }
143
+ return step3()
144
+ }
145
+ ```
146
+
147
+ ### Deferred Cleanup
148
+
149
+ ```go
150
+ func processFile(path string) (err error) {
151
+ f, err := os.Open(path)
152
+ if err != nil {
153
+ return err
154
+ }
155
+ defer func() {
156
+ if cerr := f.Close(); cerr != nil && err == nil {
157
+ err = cerr
158
+ }
159
+ }()
160
+ // process file
161
+ return nil
162
+ }
163
+ ```
164
+
165
+ ### Error Aggregation
166
+
167
+ ```go
168
+ type MultiError []error
169
+
170
+ func (m MultiError) Error() string {
171
+ var msgs []string
172
+ for _, err := range m {
173
+ msgs = append(msgs, err.Error())
174
+ }
175
+ return strings.Join(msgs, "; ")
176
+ }
177
+
178
+ func validateAll(items []Item) error {
179
+ var errs MultiError
180
+ for _, item := range items {
181
+ if err := validate(item); err != nil {
182
+ errs = append(errs, err)
183
+ }
184
+ }
185
+ if len(errs) > 0 {
186
+ return errs
187
+ }
188
+ return nil
189
+ }
190
+ ```
191
+
192
+ ## Panic and Recover
193
+
194
+ ### When to Panic
195
+
196
+ - Unrecoverable errors during initialization
197
+ - Programming errors (nil pointer, out of bounds)
198
+ - Violation of invariants
199
+
200
+ ```go
201
+ func MustCompile(pattern string) *Regexp {
202
+ re, err := Compile(pattern)
203
+ if err != nil {
204
+ panic(err)
205
+ }
206
+ return re
207
+ }
208
+ ```
209
+
210
+ ### Recovering from Panic
211
+
212
+ ```go
213
+ func safeCall(fn func()) (err error) {
214
+ defer func() {
215
+ if r := recover(); r != nil {
216
+ err = fmt.Errorf("panic recovered: %v", r)
217
+ }
218
+ }()
219
+ fn()
220
+ return nil
221
+ }
222
+ ```
223
+
224
+ ### Package Boundary Rule
225
+
226
+ - Convert panics to errors at package boundaries
227
+ - Don't let panics escape your API
228
+
229
+ ```go
230
+ func (s *Server) handleRequest(w http.ResponseWriter, r *http.Request) {
231
+ defer func() {
232
+ if err := recover(); err != nil {
233
+ log.Printf("panic: %v\n%s", err, debug.Stack())
234
+ http.Error(w, "Internal Server Error", 500)
235
+ }
236
+ }()
237
+ // handle request
238
+ }
239
+ ```
240
+
241
+ ## Best Practices
242
+
243
+ 1. **Handle errors immediately** after the call
244
+ 2. **Add context** when propagating errors
245
+ 3. **Use error wrapping** with `%w` for error chains
246
+ 4. **Define sentinel errors** for known conditions
247
+ 5. **Don't ignore errors** (at minimum, log them)
248
+ 6. **Prefer errors over panics** in library code
249
+ 7. **Document error returns** in function comments
250
+ 8. **Test error paths** as thoroughly as success paths
@@ -0,0 +1,27 @@
1
+ # Golang Guide
2
+
3
+ metadata:
4
+ name: golang
5
+ description: Go language reference documentation
6
+
7
+ source:
8
+ type: external
9
+ origin: go.dev
10
+ url: https://go.dev/doc/effective_go
11
+ last_fetched: "2026-01-22"
12
+
13
+ documents:
14
+ - name: effective-go
15
+ path: ./effective-go.md
16
+ description: Effective Go - official best practices guide
17
+
18
+ - name: concurrency
19
+ path: ./concurrency.md
20
+ description: Concurrency patterns and practices
21
+
22
+ - name: error-handling
23
+ path: ./error-handling.md
24
+ description: Error handling patterns
25
+
26
+ used_by:
27
+ - golang-expert
@@ -0,0 +1,247 @@
1
+ # Kotlin Coding Conventions
2
+
3
+ > Source: https://kotlinlang.org/docs/coding-conventions.html
4
+
5
+ ## Source Code Organization
6
+
7
+ ### Directory Structure
8
+
9
+ Follow package structure with common root omitted:
10
+ - `org.example.kotlin.network.socket` → `network/socket` subdirectory
11
+
12
+ ### Source File Names
13
+
14
+ | Content | File Name |
15
+ |---------|-----------|
16
+ | Single class | `MyClass.kt` |
17
+ | Multiple declarations | `ProcessDeclarations.kt` |
18
+ | Platform-specific | `Platform.jvm.kt` |
19
+
20
+ ### Class Layout
21
+
22
+ 1. Property declarations and initializer blocks
23
+ 2. Secondary constructors
24
+ 3. Method declarations
25
+ 4. Companion object
26
+
27
+ ```kotlin
28
+ class MyClass(val name: String) {
29
+ // 1. Properties
30
+ private val items = mutableListOf<Item>()
31
+
32
+ init {
33
+ // initializer block
34
+ }
35
+
36
+ // 2. Secondary constructors
37
+ constructor() : this("default")
38
+
39
+ // 3. Methods
40
+ fun doSomething() { }
41
+
42
+ // 4. Companion object
43
+ companion object {
44
+ const val TAG = "MyClass"
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Naming Conventions
50
+
51
+ | Element | Style | Example |
52
+ |---------|-------|---------|
53
+ | Packages | lowercase | `org.example.project` |
54
+ | Classes | UpperCamelCase | `DeclarationProcessor` |
55
+ | Functions | lowerCamelCase | `processDeclarations()` |
56
+ | Properties | lowerCamelCase | `declarationCount` |
57
+ | Constants | UPPER_SNAKE_CASE | `MAX_COUNT` |
58
+ | Backing properties | underscore prefix | `_elementList` |
59
+
60
+ ### Acronyms
61
+
62
+ - 2 letters: both uppercase (`IOStream`)
63
+ - 3+ letters: capitalize first only (`XmlFormatter`)
64
+
65
+ ## Formatting
66
+
67
+ ### Indentation
68
+
69
+ ```kotlin
70
+ if (elements != null) {
71
+ for (element in elements) {
72
+ // 4 spaces indentation
73
+ }
74
+ }
75
+ ```
76
+
77
+ ### Horizontal Whitespace
78
+
79
+ ```kotlin
80
+ // Binary operators with spaces
81
+ val sum = a + b
82
+
83
+ // No space around range
84
+ for (i in 0..n) { }
85
+
86
+ // No space around dot
87
+ foo.bar().filter { it > 2 }
88
+
89
+ // Space after control keywords
90
+ if (condition) { }
91
+ ```
92
+
93
+ ### Colons
94
+
95
+ ```kotlin
96
+ // Type and supertype: space before
97
+ abstract class Foo<out T : Any> : IFoo {
98
+ // Declaration and type: no space before
99
+ abstract fun foo(a: Int): T
100
+ }
101
+ ```
102
+
103
+ ### Function Signatures
104
+
105
+ ```kotlin
106
+ // Short: single line
107
+ fun foo(a: Int): String = a.toString()
108
+
109
+ // Long: break parameters
110
+ fun longMethodName(
111
+ argument: ArgumentType = defaultValue,
112
+ argument2: AnotherArgumentType,
113
+ ): ReturnType {
114
+ // body
115
+ }
116
+ ```
117
+
118
+ ### Trailing Commas
119
+
120
+ ```kotlin
121
+ class Person(
122
+ val firstName: String,
123
+ val lastName: String,
124
+ val age: Int, // trailing comma
125
+ )
126
+ ```
127
+
128
+ ## Idiomatic Patterns
129
+
130
+ ### Immutability
131
+
132
+ ```kotlin
133
+ // Prefer val
134
+ val name = "Kotlin"
135
+
136
+ // Prefer immutable collections
137
+ val items = listOf(1, 2, 3)
138
+ ```
139
+
140
+ ### Default Parameters
141
+
142
+ ```kotlin
143
+ // Prefer over overloads
144
+ fun read(
145
+ b: ByteArray,
146
+ off: Int = 0,
147
+ len: Int = b.size,
148
+ ) { }
149
+ ```
150
+
151
+ ### Expression Bodies
152
+
153
+ ```kotlin
154
+ // Prefer for simple functions
155
+ fun square(x: Int) = x * x
156
+ ```
157
+
158
+ ### Conditionals
159
+
160
+ ```kotlin
161
+ // Use if for binary
162
+ return if (x) foo() else bar()
163
+
164
+ // Use when for multiple
165
+ return when (x) {
166
+ 0 -> "zero"
167
+ 1 -> "one"
168
+ else -> "many"
169
+ }
170
+ ```
171
+
172
+ ### Functional Operations
173
+
174
+ ```kotlin
175
+ // Prefer
176
+ list.filter { it > 10 }
177
+ .map { it * 2 }
178
+ .take(5)
179
+
180
+ // Over manual loops
181
+ ```
182
+
183
+ ### Ranges
184
+
185
+ ```kotlin
186
+ // Good: open-ended range
187
+ for (i in 0..<n) { }
188
+
189
+ // Avoid
190
+ for (i in 0..n - 1) { }
191
+ ```
192
+
193
+ ## Null Safety
194
+
195
+ ```kotlin
196
+ // Safe call
197
+ val length = text?.length
198
+
199
+ // Elvis operator
200
+ val name = user?.name ?: "Unknown"
201
+
202
+ // Let for non-null
203
+ user?.let {
204
+ println("Hello, ${it.name}")
205
+ }
206
+
207
+ // Not-null assertion (use sparingly)
208
+ val name = user!!.name
209
+ ```
210
+
211
+ ## Documentation
212
+
213
+ ```kotlin
214
+ /**
215
+ * Returns the absolute value of the given [number].
216
+ */
217
+ fun abs(number: Int): Int = if (number < 0) -number else number
218
+
219
+ /**
220
+ * A group of *members*.
221
+ *
222
+ * This class has no useful logic; it's just a documentation example.
223
+ *
224
+ * @property name the name of this group.
225
+ * @constructor Creates an empty group.
226
+ */
227
+ class Group(val name: String) {
228
+ /**
229
+ * Adds a [member] to this group.
230
+ * @return the new size of the group.
231
+ */
232
+ fun add(member: Member): Int { ... }
233
+ }
234
+ ```
235
+
236
+ ## Avoid Redundant Constructs
237
+
238
+ ```kotlin
239
+ // Avoid explicit Unit return
240
+ fun foo() { } // not: fun foo(): Unit { }
241
+
242
+ // Avoid semicolons
243
+ val x = 1 // not: val x = 1;
244
+
245
+ // Use simple string templates
246
+ "$name" // not: "${name}"
247
+ ```