oh-my-customcode 0.1.2 → 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,262 @@
1
+ # Dockerfile Best Practices
2
+
3
+ > Source: https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
4
+
5
+ ## General Guidelines
6
+
7
+ ### Create Ephemeral Containers
8
+
9
+ Containers should be ephemeral - can be stopped, destroyed, and rebuilt with minimal setup.
10
+
11
+ ### Understand Build Context
12
+
13
+ ```bash
14
+ # Entire directory sent to daemon
15
+ docker build .
16
+
17
+ # Use .dockerignore to exclude files
18
+ # .dockerignore
19
+ .git
20
+ node_modules
21
+ *.md
22
+ ```
23
+
24
+ ### Use Multi-Stage Builds
25
+
26
+ ```dockerfile
27
+ # Build stage
28
+ FROM golang:1.21 AS builder
29
+ WORKDIR /app
30
+ COPY . .
31
+ RUN go build -o myapp
32
+
33
+ # Runtime stage
34
+ FROM alpine:3.19
35
+ COPY --from=builder /app/myapp /usr/local/bin/
36
+ CMD ["myapp"]
37
+ ```
38
+
39
+ ## Dockerfile Instructions
40
+
41
+ ### FROM
42
+
43
+ ```dockerfile
44
+ # Pin versions
45
+ FROM ubuntu:22.04
46
+
47
+ # Use digest for reproducibility
48
+ FROM node:20@sha256:abc123...
49
+
50
+ # Use official images
51
+ FROM python:3.12-slim
52
+ ```
53
+
54
+ ### RUN
55
+
56
+ ```dockerfile
57
+ # Combine commands
58
+ RUN apt-get update && apt-get install -y \
59
+ curl \
60
+ git \
61
+ && rm -rf /var/lib/apt/lists/*
62
+
63
+ # Use BuildKit cache
64
+ RUN --mount=type=cache,target=/root/.cache/pip \
65
+ pip install -r requirements.txt
66
+ ```
67
+
68
+ ### CMD vs ENTRYPOINT
69
+
70
+ ```dockerfile
71
+ # CMD: Default command (can be overridden)
72
+ CMD ["python", "app.py"]
73
+
74
+ # ENTRYPOINT: Fixed command
75
+ ENTRYPOINT ["python"]
76
+ CMD ["app.py"]
77
+
78
+ # Combined
79
+ ENTRYPOINT ["/docker-entrypoint.sh"]
80
+ CMD ["postgres"]
81
+ ```
82
+
83
+ ### COPY vs ADD
84
+
85
+ ```dockerfile
86
+ # Prefer COPY (more explicit)
87
+ COPY requirements.txt .
88
+
89
+ # ADD only for tar extraction or URLs
90
+ ADD archive.tar.gz /app/
91
+ ```
92
+
93
+ ### EXPOSE
94
+
95
+ ```dockerfile
96
+ # Documentation only
97
+ EXPOSE 8080
98
+ EXPOSE 443/tcp
99
+ ```
100
+
101
+ ### ENV
102
+
103
+ ```dockerfile
104
+ ENV APP_HOME=/app \
105
+ PATH=$APP_HOME/bin:$PATH
106
+
107
+ WORKDIR $APP_HOME
108
+ ```
109
+
110
+ ### VOLUME
111
+
112
+ ```dockerfile
113
+ # Named mount point
114
+ VOLUME /data
115
+ ```
116
+
117
+ ### USER
118
+
119
+ ```dockerfile
120
+ # Create non-root user
121
+ RUN groupadd -r app && useradd -r -g app app
122
+ USER app
123
+
124
+ # Or use existing
125
+ USER nobody
126
+ ```
127
+
128
+ ### WORKDIR
129
+
130
+ ```dockerfile
131
+ # Always use absolute paths
132
+ WORKDIR /app
133
+ WORKDIR /app/src
134
+ ```
135
+
136
+ ### HEALTHCHECK
137
+
138
+ ```dockerfile
139
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
140
+ CMD curl -f http://localhost/ || exit 1
141
+ ```
142
+
143
+ ## Layer Optimization
144
+
145
+ ### Order Matters
146
+
147
+ ```dockerfile
148
+ # 1. Install dependencies (changes rarely)
149
+ COPY package.json package-lock.json ./
150
+ RUN npm ci
151
+
152
+ # 2. Copy source (changes often)
153
+ COPY . .
154
+
155
+ # 3. Build
156
+ RUN npm run build
157
+ ```
158
+
159
+ ### Combine RUN Commands
160
+
161
+ ```dockerfile
162
+ # Good: Single layer
163
+ RUN apt-get update && \
164
+ apt-get install -y python3 && \
165
+ rm -rf /var/lib/apt/lists/*
166
+
167
+ # Bad: Multiple layers
168
+ RUN apt-get update
169
+ RUN apt-get install -y python3
170
+ RUN rm -rf /var/lib/apt/lists/*
171
+ ```
172
+
173
+ ## Security Best Practices
174
+
175
+ ### Don't Run as Root
176
+
177
+ ```dockerfile
178
+ FROM node:20
179
+
180
+ RUN groupadd -r nodejs && useradd -r -g nodejs nodejs
181
+ USER nodejs
182
+
183
+ COPY --chown=nodejs:nodejs . .
184
+ ```
185
+
186
+ ### Don't Store Secrets
187
+
188
+ ```dockerfile
189
+ # Bad: Secret in image
190
+ ENV API_KEY=secret123
191
+
192
+ # Good: Pass at runtime
193
+ # docker run -e API_KEY=secret123 myapp
194
+ ```
195
+
196
+ ### Use Official Images
197
+
198
+ ```dockerfile
199
+ # Official and verified
200
+ FROM nginx:1.25
201
+ FROM postgres:16
202
+
203
+ # Minimal images
204
+ FROM gcr.io/distroless/static
205
+ FROM alpine:3.19
206
+ ```
207
+
208
+ ## Example Dockerfiles
209
+
210
+ ### Node.js
211
+
212
+ ```dockerfile
213
+ FROM node:20-slim AS builder
214
+ WORKDIR /app
215
+ COPY package*.json ./
216
+ RUN npm ci
217
+ COPY . .
218
+ RUN npm run build
219
+
220
+ FROM node:20-slim
221
+ WORKDIR /app
222
+ COPY --from=builder /app/dist ./dist
223
+ COPY --from=builder /app/node_modules ./node_modules
224
+ USER node
225
+ EXPOSE 3000
226
+ CMD ["node", "dist/server.js"]
227
+ ```
228
+
229
+ ### Python
230
+
231
+ ```dockerfile
232
+ FROM python:3.12-slim AS builder
233
+ WORKDIR /app
234
+ RUN pip install --user pipenv
235
+ COPY Pipfile Pipfile.lock ./
236
+ RUN pipenv install --system --deploy
237
+
238
+ FROM python:3.12-slim
239
+ WORKDIR /app
240
+ COPY --from=builder /root/.local /root/.local
241
+ COPY . .
242
+ ENV PATH=/root/.local/bin:$PATH
243
+ USER nobody
244
+ EXPOSE 8000
245
+ CMD ["gunicorn", "-b", "0.0.0.0:8000", "app:app"]
246
+ ```
247
+
248
+ ### Go
249
+
250
+ ```dockerfile
251
+ FROM golang:1.21-alpine AS builder
252
+ WORKDIR /app
253
+ COPY go.mod go.sum ./
254
+ RUN go mod download
255
+ COPY . .
256
+ RUN CGO_ENABLED=0 GOOS=linux go build -o /app/server
257
+
258
+ FROM scratch
259
+ COPY --from=builder /app/server /server
260
+ EXPOSE 8080
261
+ ENTRYPOINT ["/server"]
262
+ ```
@@ -0,0 +1,26 @@
1
+ # Docker Guide
2
+
3
+ metadata:
4
+ name: docker
5
+ description: Docker containerization reference documentation
6
+
7
+ source:
8
+ type: external
9
+ origin: docker.com
10
+ urls:
11
+ - https://docs.docker.com/
12
+ - https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
13
+ - https://docs.docker.com/compose/compose-file/best-practices/
14
+ last_fetched: "2026-01-22"
15
+
16
+ documents:
17
+ - name: dockerfile-best-practices
18
+ path: ./dockerfile-best-practices.md
19
+ description: Dockerfile best practices
20
+
21
+ - name: compose-best-practices
22
+ path: ./compose-best-practices.md
23
+ description: Docker Compose best practices
24
+
25
+ used_by:
26
+ - docker-expert
@@ -0,0 +1,274 @@
1
+ # Docker Best Practices Skill
2
+
3
+ > **Category**: Infrastructure
4
+ > **Source**: Internal (based on Docker Official Documentation)
5
+
6
+ ## Purpose
7
+
8
+ Apply Docker patterns for building optimized and secure container images.
9
+
10
+ ## Rules
11
+
12
+ ### 1. Layer Optimization
13
+
14
+ ```yaml
15
+ principles:
16
+ - Combine related RUN commands
17
+ - Sort multi-line arguments alphabetically
18
+ - Clean up in same layer
19
+
20
+ patterns: |
21
+ # GOOD: Single layer, clean cache
22
+ RUN apt-get update && apt-get install -y \
23
+ curl \
24
+ git \
25
+ vim \
26
+ && rm -rf /var/lib/apt/lists/*
27
+
28
+ # BAD: Multiple layers, cache remains
29
+ RUN apt-get update
30
+ RUN apt-get install -y curl
31
+ RUN apt-get install -y git
32
+ ```
33
+
34
+ ### 2. Multi-Stage Builds
35
+
36
+ ```yaml
37
+ purpose:
38
+ - Reduce final image size
39
+ - Separate build and runtime dependencies
40
+ - Security (no build tools in production)
41
+
42
+ pattern: |
43
+ # Build stage
44
+ FROM golang:1.21 AS builder
45
+ WORKDIR /app
46
+ COPY go.mod go.sum ./
47
+ RUN go mod download
48
+ COPY . .
49
+ RUN CGO_ENABLED=0 go build -o /app/server ./cmd/server
50
+
51
+ # Runtime stage
52
+ FROM gcr.io/distroless/static:nonroot
53
+ COPY --from=builder /app/server /server
54
+ USER nonroot:nonroot
55
+ ENTRYPOINT ["/server"]
56
+ ```
57
+
58
+ ### 3. Security
59
+
60
+ ```yaml
61
+ principles:
62
+ - Run as non-root user
63
+ - Pin base image versions
64
+ - Use minimal base images
65
+ - Don't store secrets in images
66
+
67
+ patterns: |
68
+ # Pin version with digest
69
+ FROM node:20-slim@sha256:abc123...
70
+
71
+ # Create non-root user
72
+ RUN groupadd -r appgroup && useradd -r -g appgroup appuser
73
+ USER appuser
74
+
75
+ # Use secrets mount (BuildKit)
76
+ RUN --mount=type=secret,id=npmrc,target=/root/.npmrc \
77
+ npm install
78
+
79
+ # .dockerignore for secrets
80
+ # .env
81
+ # *.pem
82
+ # credentials.json
83
+ ```
84
+
85
+ ### 4. Image Size Reduction
86
+
87
+ ```yaml
88
+ strategies:
89
+ - Use slim/alpine base images
90
+ - Remove build dependencies
91
+ - Use .dockerignore
92
+ - Multi-stage builds
93
+
94
+ minimal_bases:
95
+ distroless: "gcr.io/distroless/static"
96
+ alpine: "alpine:3.19"
97
+ slim: "debian:12-slim"
98
+
99
+ patterns: |
100
+ # Alpine for size
101
+ FROM python:3.12-alpine
102
+ RUN apk add --no-cache gcc musl-dev
103
+
104
+ # Distroless for security
105
+ FROM gcr.io/distroless/python3
106
+ COPY --from=builder /app /app
107
+ ```
108
+
109
+ ### 5. Cache Optimization
110
+
111
+ ```yaml
112
+ principles:
113
+ - Order from least to most frequently changing
114
+ - Copy dependency files first
115
+ - Use BuildKit cache mounts
116
+
117
+ patterns: |
118
+ # Copy dependency files first
119
+ COPY package.json package-lock.json ./
120
+ RUN npm ci
121
+
122
+ # Then copy source (changes frequently)
123
+ COPY . .
124
+ RUN npm run build
125
+
126
+ # BuildKit cache mount
127
+ RUN --mount=type=cache,target=/root/.cache/pip \
128
+ pip install -r requirements.txt
129
+ ```
130
+
131
+ ### 6. ENTRYPOINT vs CMD
132
+
133
+ ```yaml
134
+ entrypoint:
135
+ purpose: Main executable
136
+ form: exec form ["executable"]
137
+
138
+ cmd:
139
+ purpose: Default arguments
140
+ form: exec form ["arg1", "arg2"]
141
+
142
+ patterns: |
143
+ # Fixed command with variable args
144
+ ENTRYPOINT ["python", "app.py"]
145
+ CMD ["--port", "8080"]
146
+
147
+ # docker run myapp --port 3000
148
+ # Executes: python app.py --port 3000
149
+
150
+ # Flexible command
151
+ CMD ["python", "app.py"]
152
+
153
+ # docker run myapp bash
154
+ # Executes: bash
155
+ ```
156
+
157
+ ### 7. Health Checks
158
+
159
+ ```yaml
160
+ purpose: Container health monitoring
161
+ interval: how often to check
162
+ timeout: max time for check
163
+ retries: failures before unhealthy
164
+
165
+ pattern: |
166
+ HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
167
+ CMD curl -f http://localhost:8080/health || exit 1
168
+ ```
169
+
170
+ ### 8. Docker Compose
171
+
172
+ ```yaml
173
+ best_practices:
174
+ - Use named volumes
175
+ - Define networks explicitly
176
+ - Use environment files
177
+ - Set resource limits
178
+
179
+ pattern: |
180
+ version: "3.8"
181
+
182
+ services:
183
+ app:
184
+ build:
185
+ context: .
186
+ target: production
187
+ environment:
188
+ - DATABASE_URL
189
+ env_file:
190
+ - .env
191
+ ports:
192
+ - "8080:8080"
193
+ depends_on:
194
+ db:
195
+ condition: service_healthy
196
+ deploy:
197
+ resources:
198
+ limits:
199
+ cpus: "1"
200
+ memory: 512M
201
+ networks:
202
+ - backend
203
+
204
+ db:
205
+ image: postgres:16-alpine
206
+ volumes:
207
+ - postgres_data:/var/lib/postgresql/data
208
+ healthcheck:
209
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
210
+ interval: 10s
211
+ timeout: 5s
212
+ retries: 5
213
+ networks:
214
+ - backend
215
+
216
+ volumes:
217
+ postgres_data:
218
+
219
+ networks:
220
+ backend:
221
+ ```
222
+
223
+ ### 9. Common Patterns by Language
224
+
225
+ ```yaml
226
+ nodejs: |
227
+ FROM node:20-slim AS builder
228
+ WORKDIR /app
229
+ COPY package*.json ./
230
+ RUN npm ci --only=production
231
+
232
+ FROM gcr.io/distroless/nodejs20
233
+ WORKDIR /app
234
+ COPY --from=builder /app/node_modules ./node_modules
235
+ COPY . .
236
+ CMD ["server.js"]
237
+
238
+ python: |
239
+ FROM python:3.12-slim AS builder
240
+ WORKDIR /app
241
+ RUN pip install --user -r requirements.txt
242
+
243
+ FROM python:3.12-slim
244
+ WORKDIR /app
245
+ COPY --from=builder /root/.local /root/.local
246
+ COPY . .
247
+ ENV PATH=/root/.local/bin:$PATH
248
+ CMD ["python", "app.py"]
249
+
250
+ go: |
251
+ FROM golang:1.21 AS builder
252
+ WORKDIR /app
253
+ COPY go.* ./
254
+ RUN go mod download
255
+ COPY . .
256
+ RUN CGO_ENABLED=0 go build -o /server
257
+
258
+ FROM scratch
259
+ COPY --from=builder /server /server
260
+ ENTRYPOINT ["/server"]
261
+ ```
262
+
263
+ ## Application
264
+
265
+ When writing Dockerfiles:
266
+
267
+ 1. **Always** use multi-stage builds
268
+ 2. **Always** run as non-root user
269
+ 3. **Always** pin base image versions
270
+ 4. **Prefer** minimal base images
271
+ 5. **Order** layers for cache efficiency
272
+ 6. **Clean** package caches in same layer
273
+ 7. **Use** .dockerignore
274
+ 8. **Add** health checks
@@ -0,0 +1,26 @@
1
+ # Docker Best Practices Skill
2
+
3
+ metadata:
4
+ name: docker-best-practices
5
+ category: infrastructure
6
+ description: Docker patterns for optimized containerization
7
+
8
+ source:
9
+ type: internal
10
+ reference:
11
+ - https://docs.docker.com/
12
+ - https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
13
+ - https://docs.docker.com/compose/compose-file/best-practices/
14
+
15
+ provides:
16
+ - Layer optimization
17
+ - Multi-stage builds
18
+ - Security best practices
19
+ - Image size reduction
20
+ - Cache optimization
21
+ - ENTRYPOINT vs CMD
22
+ - Health checks
23
+ - Docker Compose patterns
24
+
25
+ used_by:
26
+ - docker-expert
@@ -0,0 +1,93 @@
1
+ # [MAY] Optimization Guide
2
+
3
+ > **Priority**: MAY - Optional
4
+ > **Apply when**: Basic functionality is stable
5
+
6
+ ## Efficiency Optimization
7
+
8
+ ### Parallel Processing
9
+ ```
10
+ Apply when:
11
+ - 3+ independent tasks
12
+ - Each task is I/O bound
13
+
14
+ Example:
15
+ - Read multiple files simultaneously
16
+ - Run independent searches in parallel
17
+ ```
18
+
19
+ ### Caching
20
+ ```
21
+ Apply when:
22
+ - Same data accessed repeatedly
23
+ - Data changes infrequently
24
+
25
+ Example:
26
+ - Cache file contents
27
+ - Reuse search results
28
+ ```
29
+
30
+ ### Lazy Loading
31
+ ```
32
+ Apply when:
33
+ - Large datasets
34
+ - Only portion actually used
35
+
36
+ Example:
37
+ - Read only needed files
38
+ - Stream results
39
+ ```
40
+
41
+ ## Token Optimization
42
+
43
+ ### Context Management
44
+ ```
45
+ ✓ Include only necessary info
46
+ ✓ Remove duplicates
47
+ ✓ Use summaries
48
+ ```
49
+
50
+ ### Response Optimization
51
+ ```
52
+ ✓ Concise expressions
53
+ ✓ Minimize code blocks
54
+ ✓ Remove unnecessary repetition
55
+ ```
56
+
57
+ ## Task Optimization
58
+
59
+ ### Batch Processing
60
+ ```
61
+ Group similar tasks together
62
+ Example: Edit 10 files → Process at once
63
+ ```
64
+
65
+ ### Incremental Processing
66
+ ```
67
+ Process only changed parts
68
+ Example: Full build → Incremental build
69
+ ```
70
+
71
+ ## Apply Criteria
72
+
73
+ ### Do Optimize
74
+ ```
75
+ ✓ Repetitive tasks
76
+ ✓ Clear performance bottleneck
77
+ ✓ Measurable improvement
78
+ ```
79
+
80
+ ### Don't Optimize
81
+ ```
82
+ ✗ One-time tasks
83
+ ✗ Already fast enough
84
+ ✗ Complexity increase outweighs benefit
85
+ ```
86
+
87
+ ## Caution
88
+
89
+ ```
90
+ ⚠ Premature optimization is root of evil
91
+ ⚠ Readability > Optimization
92
+ ⚠ No optimization without measurement
93
+ ```