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.
- package/README.md +45 -32
- package/dist/cli/index.js +12 -20
- package/dist/index.js +3 -3
- package/package.json +2 -2
- package/templates/.claude/rules/MUST-orchestrator-coordination.md +25 -0
- package/templates/agents/index.yaml +6 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/common-patterns.md +169 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/index.yaml +26 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws/well-architected.md +143 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/infra-engineer/aws-expert/refs/aws-best-practices/index.yaml +27 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/compose-best-practices.md +284 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker/index.yaml +26 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/infra-engineer/docker-expert/refs/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/creator/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/creator/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/creator/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/creator/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/creator/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/creator/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/creator/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/creator/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/creator/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/creator/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/creator/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/creator/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/creator/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/guides/aws/common-patterns.md +169 -0
- package/templates/agents/manager/supplier/refs/guides/aws/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/aws/well-architected.md +143 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/01-overview.md +42 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/03-tools.md +107 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/04-agent-skills.md +90 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/05-agent-sdk.md +129 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/06-mcp.md +165 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/07-prompt-engineering.md +100 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/08-testing.md +58 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/09-guardrails.md +80 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/10-monitoring.md +89 -0
- package/templates/agents/manager/supplier/refs/guides/claude-code/index.yaml +51 -0
- package/templates/agents/manager/supplier/refs/guides/docker/compose-best-practices.md +284 -0
- package/templates/agents/manager/supplier/refs/guides/docker/dockerfile-best-practices.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/docker/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/best-practices.md +232 -0
- package/templates/agents/manager/supplier/refs/guides/fastapi/index.yaml +21 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/project-layout.md +243 -0
- package/templates/agents/manager/supplier/refs/guides/go-backend/uber-style.md +212 -0
- package/templates/agents/manager/supplier/refs/guides/golang/concurrency.md +282 -0
- package/templates/agents/manager/supplier/refs/guides/golang/effective-go.md +309 -0
- package/templates/agents/manager/supplier/refs/guides/golang/error-handling.md +250 -0
- package/templates/agents/manager/supplier/refs/guides/golang/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/guides/index.yaml +101 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/coding-conventions.md +247 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/idioms.md +234 -0
- package/templates/agents/manager/supplier/refs/guides/kotlin/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/python/pep8-style-guide.md +202 -0
- package/templates/agents/manager/supplier/refs/guides/python/zen-of-python.md +79 -0
- package/templates/agents/manager/supplier/refs/guides/rust/error-handling.md +262 -0
- package/templates/agents/manager/supplier/refs/guides/rust/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/rust/ownership.md +180 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/best-practices.md +361 -0
- package/templates/agents/manager/supplier/refs/guides/springboot/index.yaml +22 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/advanced-types.md +225 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/guides/typescript/type-system.md +219 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/accessibility.md +66 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/index.yaml +20 -0
- package/templates/agents/manager/supplier/refs/guides/web-design/performance.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/supplier/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/supplier/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/supplier/refs/rules/index.yaml +125 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/manager/supplier/refs/skills/backend/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/manager/supplier/refs/skills/backend/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/manager/supplier/refs/skills/backend/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/SKILL.md +202 -0
- package/templates/agents/manager/supplier/refs/skills/development/go-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/manager/supplier/refs/skills/development/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/SKILL.md +221 -0
- package/templates/agents/manager/supplier/refs/skills/development/python-best-practices/index.yaml +25 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/SKILL.md +100 -0
- package/templates/agents/manager/supplier/refs/skills/development/react-best-practices/index.yaml +39 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/manager/supplier/refs/skills/development/rust-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/manager/supplier/refs/skills/development/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/manager/supplier/refs/skills/development/vercel-deploy/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/manager/supplier/refs/skills/development/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/manager/supplier/refs/skills/index.yaml +129 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/SKILL.md +279 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/aws-best-practices/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/SKILL.md +274 -0
- package/templates/agents/manager/supplier/refs/skills/infrastructure/docker-best-practices/index.yaml +26 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/SKILL.md +214 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +342 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/SKILL.md +188 -0
- package/templates/agents/manager/supplier/refs/skills/orchestration/pipeline-execution/index.yaml +27 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/SKILL.md +194 -0
- package/templates/agents/manager/supplier/refs/skills/system/memory-management/index.yaml +30 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/SKILL.md +163 -0
- package/templates/agents/manager/supplier/refs/skills/system/result-aggregation/index.yaml +36 -0
- package/templates/agents/manager/updater/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/manager/updater/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/manager/updater/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/manager/updater/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/manager/updater/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/manager/updater/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/manager/updater/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/manager/updater/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/manager/updater/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/manager/updater/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/manager/updater/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/manager/updater/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/manager/updater/refs/rules/index.yaml +125 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MAY-optimization.md +93 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-design.md +107 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-agent-identification.md +108 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-continuous-improvement.md +132 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-intent-transparency.md +199 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-language-policy.md +62 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-orchestrator-coordination.md +291 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-parallel-execution.md +341 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-permissions.md +84 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-safety.md +69 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-sync-verification.md +219 -0
- package/templates/agents/orchestrator/secretary/refs/rules/MUST-tool-identification.md +112 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-ecomode.md +145 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-error-handling.md +102 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-hud-statusline.md +89 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-interaction.md +103 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-memory-integration.md +114 -0
- package/templates/agents/orchestrator/secretary/refs/rules/SHOULD-pipeline-mode.md +165 -0
- package/templates/agents/orchestrator/secretary/refs/rules/index.yaml +125 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/best-practices.md +232 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi/index.yaml +21 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/SKILL.md +269 -0
- package/templates/agents/sw-engineer/backend/fastapi-expert/refs/fastapi-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/project-layout.md +243 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend/uber-style.md +212 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/SKILL.md +337 -0
- package/templates/agents/sw-engineer/backend/go-backend-expert/refs/go-backend-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/best-practices.md +361 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot/index.yaml +22 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/SKILL.md +356 -0
- package/templates/agents/sw-engineer/backend/springboot-expert/refs/springboot-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/SKILL.md +100 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/react-best-practices/index.yaml +39 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/SKILL.md +73 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/vercel-deploy/index.yaml +30 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/accessibility.md +66 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/index.yaml +20 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design/performance.md +102 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/SKILL.md +117 -0
- package/templates/agents/sw-engineer/frontend/vercel-agent/refs/web-design-guidelines/index.yaml +34 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/SKILL.md +202 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/go-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/concurrency.md +282 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/effective-go.md +309 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/error-handling.md +250 -0
- package/templates/agents/sw-engineer/language/golang-expert/refs/golang/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/coding-conventions.md +247 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/idioms.md +234 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/SKILL.md +255 -0
- package/templates/agents/sw-engineer/language/kotlin-expert/refs/kotlin-best-practices/index.yaml +27 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/pep8-style-guide.md +202 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python/zen-of-python.md +79 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/SKILL.md +221 -0
- package/templates/agents/sw-engineer/language/python-expert/refs/python-best-practices/index.yaml +25 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/error-handling.md +262 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust/ownership.md +180 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/SKILL.md +266 -0
- package/templates/agents/sw-engineer/language/rust-expert/refs/rust-best-practices/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/advanced-types.md +225 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/index.yaml +26 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript/type-system.md +219 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/SKILL.md +320 -0
- package/templates/agents/sw-engineer/language/typescript-expert/refs/typescript-best-practices/index.yaml +28 -0
- package/templates/agents/tutor/go-tutor/AGENT.md +130 -0
- package/templates/agents/tutor/go-tutor/index.yaml +48 -0
- package/templates/manifest.json +55 -0
- package/templates/skills/orchestration/intent-detection/patterns/agent-triggers.yaml +9 -0
package/templates/agents/infra-engineer/docker-expert/refs/docker/dockerfile-best-practices.md
ADDED
|
@@ -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
|
+
```
|