Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Docker, Kubernetes, and AWS ECS/Fargate patterns. Triggers on: Dockerfile, docker-compose, kubernetes, k8s, helm, pod, deployment, service, ingress, container, image, ecs, fargate, task definition, ecs service, awsvpc, FARGATE_SPOT, ALB, ecs vs kubernetes.
.claude/skills/aiskillstore-container-orchestration/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-15 | ✗→✓ | ▲ Improved | 94% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-01 | ✓→✓ | = Same ✓ | 103% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 30% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 33% | 0% |
> Facts verified as of 2026-07.
Docker and Kubernetes patterns for containerized applications.
dockerfile# Use specific version, not :latest FROM python:3.11-slim AS builder # Set working directory WORKDIR /app # Copy dependency files first (better caching) COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # Copy application code COPY src/ ./src/ # Production stage (multi-stage build) FROM python:3.11-slim WORKDIR /app # Create non-root user RUN useradd --create-home appuser USER appuser # Copy from builder COPY --from=builder /app /app # Set environment ENV PYTHONUNBUFFERED=1 # Health check HEALTHCHECK --interval=30s --timeout=3s \ CMD curl -f http://localhost:8000/health || exit 1 EXPOSE 8000 CMD ["python", "-m", "uvicorn", "src.main:app", "--host", "0.0.0.0"]
DO:
- Use specific base image versions
- Use multi-stage builds
- Run as non-root user
- Order commands by change frequency
- Use .dockerignore
- Add health checks
DON'T:
- Use :latest tag
- Run as root
- Copy unnecessary files
- Store secrets in image
- Install dev dependencies in productionyaml# docker-compose.yml version: "3.9" services: app: build: context: . dockerfile: Dockerfile ports: - "8000:8000" environment: - DATABASE_URL=postgres://user:pass@db:5432/app depends_on: db: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 db: image: postgres:15-alpine volumes: - postgres_data:/var/lib/postgresql/data environment: POSTGRES_USER: user POSTGRES_PASSWORD: pass POSTGRES_DB: app healthcheck: test: ["CMD-SHELL", "pg_isready -U user -d app"] interval: 10s timeout: 5s retries: 5 volumes: postgres_data:
yamlapiVersion: apps/v1 kind: Deployment metadata: name: app labels: app: myapp spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: app image: myapp:1.0.0 ports: - containerPort: 8000 resources: requests: memory: "128Mi" cpu: "100m" limits: memory: "256Mi" cpu: "500m" livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 10 periodSeconds: 30 readinessProbe: httpGet: path: /ready port: 8000 initialDelaySeconds: 5 periodSeconds: 10 env: - name: DATABASE_URL valueFrom: secretKeyRef: name: app-secrets key: database-url
yamlapiVersion: v1 kind: Service metadata: name: app-service spec: selector: app: myapp ports: - port: 80 targetPort: 8000 type: ClusterIP
yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx rules: - host: app.example.com http: paths: - path: / pathType: Prefix backend: service: name: app-service port: number: 80
| Command | Description | |---------|-------------| | kubectl get pods | List pods | | kubectl logs <pod> | View logs | | kubectl exec -it <pod> -- sh | Shell into pod | | kubectl apply -f manifest.yaml | Apply config | | kubectl rollout restart deployment/app | Restart deployment | | kubectl rollout status deployment/app | Check rollout | | kubectl describe pod <pod> | Debug pod | | kubectl port-forward svc/app 8080:80 | Local port forward |
./references/dockerfile-patterns.md - Advanced Dockerfile techniques./references/k8s-manifests.md - Full Kubernetes manifest examples./references/helm-patterns.md - Helm chart structure and values./references/ecs-fargate.md - Amazon ECS on AWS Fargate (task definitions, services, awsvpc networking, IAM roles, secrets, scaling, ALB/NLB, ECS vs Kubernetes)./scripts/build-push.sh - Build and push Docker image./assets/Dockerfile.template - Production Dockerfile template./assets/docker-compose.template.yml - Compose starter template| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 16,558 | 6,726 | -59% | 1 | 1 | 0% | 1,203 | 2,440 | +103% | 0 | 0 | — |
case-02 | pass→pass | 13,760 | 9,763 | -29% | 1 | 1 | 0% | 2,428 | 3,160 | +30% | 0 | 0 | — |
case-03 | pass→pass | 19,427 | 14,428 | -26% | 1 | 1 | 0% | 2,973 | 3,947 | +33% | 0 | 0 | — |
case-04 | pass→pass | 8,862 | 4,680 | -47% | 1 | 1 | 0% | 1,561 | 2,148 | +38% | 0 | 0 | — |
case-05 | pass→pass | 8,231 | 7,188 | -13% | 1 | 1 | 0% | 1,404 | 2,630 | +87% | 0 | 0 | — |
case-06 | pass→pass | 4,947 | 6,171 | +25% | 1 | 1 | 0% | 941 | 2,054 | +118% | 0 | 0 | — |
case-07 | pass→pass | 7,899 | 4,551 | -42% | 1 | 1 | 0% | 1,405 | 2,237 | +59% | 0 | 0 | — |
case-08 | pass→pass | 8,180 | 4,553 | -44% | 1 | 1 | 0% | 1,466 | 2,157 | +47% | 0 | 0 | — |
case-09 | pass→pass | 5,551 | 3,442 | -38% | 1 | 1 | 0% | 1,026 | 2,044 | +99% | 0 | 0 | — |
case-10 | pass→pass | 5,502 | 3,707 | -33% | 1 | 1 | 0% | 875 | 2,023 | +131% | 0 | 0 | — |
case-11 | pass→pass | 3,980 | 2,306 | -42% | 1 | 1 | 0% | 695 | 1,829 | +163% | 0 | 0 | — |
case-12 | fail→fail | 3,950 | 2,559 | -35% | 1 | 1 | 0% | 690 | 1,924 | +179% | 0 | 0 | — |
case-13 | pass→pass | 2,888 | 1,981 | -31% | 1 | 1 | 0% | 434 | 1,712 | +294% | 0 | 0 | — |
case-14 | fail→fail | 4,135 | 2,418 | -42% | 1 | 1 | 0% | 588 | 1,721 | +193% | 0 | 0 | — |
case-15 | fail→pass | 5,571 | 2,468 | -56% | 1 | 1 | 0% | 932 | 1,807 | +94% | 0 | 0 | — |
case-16 | pass→pass | 4,019 | 2,528 | -37% | 1 | 1 | 0% | 548 | 1,669 | +205% | 0 | 0 | — |
case-17 | pass→pass | 4,213 | 3,473 | -18% | 1 | 1 | 0% | 726 | 2,025 | +179% | 0 | 0 | — |
case-18 | fail→pass | 12,012 | 10,604 | -12% | 1 | 1 | 0% | 1,989 | 3,114 | +57% | 0 | 0 | — |
case-19 | pass→pass | 6,188 | 2,922 | -53% | 1 | 1 | 0% | 532 | 1,828 | +244% | 0 | 0 | — |
case-20 | pass→pass | 5,453 | 6,214 | +14% | 1 | 1 | 0% | 1,045 | 2,663 | +155% | 0 | 0 | — |
case-21 | pass→pass | 8,129 | 6,408 | -21% | 1 | 1 | 0% | 1,545 | 2,709 | +75% | 0 | 0 | — |
case-22 | pass→pass | 4,811 | 3,923 | -18% | 1 | 1 | 0% | 937 | 2,158 | +130% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.