accessibility-patterns
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
Dockerfile best practices, multi-stage builds, docker-compose, container networking, volume management, and image optimization.
$ npx -y skills add vibeeval/vibecosystem --skill docker-ops --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/docker-opsContext preview
The summary Claude sees to decide when to auto-load this skill.
Dockerfile best practices, multi-stage builds, docker-compose, container networking, volume management, and image optimization.
name: docker-ops description: Dockerfile best practices, multi-stage builds, docker-compose, container networking, volume management, and image optimization.
Practical patterns for building, running, and maintaining containers in production.
Minimize final image size by separating build-time dependencies from runtime.
# Stage 1: Builder FROM node:20-alpine AS builder WORKDIR /app # Copy dependency manifests first (layer cache) COPY package*.json ./ RUN npm ci --only=production COPY tsconfig.json ./ COPY src/ ./src/ RUN npm run build # Stage 2: Runtime (no devDependencies, no source files) FROM node:20-alpine AS runtime WORKDIR /app # Security: run as non-root RUN addgroup -S appgroup && adduser -S appuser -G appgroup COPY --from=builder /app/node_modules ./node_modules COPY --from=builder /app/dist ./dist USER appuser EXPOSE 3000 CMD ["node", "dist/index.js"]
# Python multi-stage example FROM python:3.12-slim AS builder WORKDIR /app RUN pip install --upgrade pip COPY requirements.txt . RUN pip install --prefix=/install -r requirements.txt FROM python:3.12-slim AS runtime WORKDIR /app COPY --from=builder /install /usr/local COPY src/ ./src/ RUN useradd -r -s /bin/false appuser USER appuser CMD ["python", "-m", "src.main"]
# docker-compose.yml
version: '3.9'
services:
api:
build:
context: .
dockerfile: Dockerfile
target: runtime
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DATABASE_URL=postgresql://user:pass@postgres:5432/appdb
- REDIS_URL=redis://redis:6379
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_started
restart: unless-stopped
networks:
- internal
deploy:
resources:
limits:
memory: 512m
cpus: '0.5'
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
POSTGRES_DB: appdb
volumes:
- postgres_data:/var/lib/postgresql/data
- ./init.sql:/docker-entrypoint-initdb.d/init.sql:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U user -d appdb"]
interval: 10s
timeout: 5s
retries: 5
networks:
- internal
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
command: redis-server --appendonly yes
networks:
- internal
volumes:
postgres_data:
redis_data:
networks:
internal:
driver: bridge# Bridge network (default, same host) docker network create --driver bridge my-network docker run --network my-network --name service-a my-image # Containers on same bridge network communicate by name curl http://service-a:3000/health # Host network (container shares host network stack, Linux only) docker run --network host my-image # Overlay network (multi-host, Docker Swarm or manual) docker network create --driver overlay --attachable my-overlay
# Compose network isolation example
services:
frontend:
networks:
- public # exposed to outside
api:
networks:
- public # receives traffic from frontend
- internal # talks to DB
postgres:
networks:
- internal # NOT reachable from frontend
networks:
public:
internal:
internal: true # blocks external traffic# Named volumes (managed by Docker, persistent)
volumes:
db_data: # docker manages path
uploads:
driver: local
services:
app:
volumes:
- uploads:/app/uploads # named volume
- ./config:/app/config:ro # bind mount (read-only)
- type: tmpfs # in-memory, discarded on stop
target: /tmp
tmpfs:
size: 100m# Volume lifecycle commands docker volume ls docker volume inspect my-volume docker volume rm my-volume docker volume prune # remove all unused volumes (careful in prod) # Backup a named volume docker run --rm \ -v my-volume:/source:ro \ -v $(pwd):/backup \ alpine tar czf /backup/volume-backup.tar.gz -C /source . # Restore docker run --rm \ -v my-volume:/target \ -v $(pwd):/backup \ alpine tar xzf /backup/volume-backup.tar.gz -C /target
# HEALTHCHECK in Dockerfile HEALTHCHECK --interval=30s --timeout=10s --start-period=20s --retries=3 \ CMD curl -f http://localhost:3000/health || exit 1
# Override in docker-compose
services:
api:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
start_period: 20s
retries: 3// Express health endpoint
app.get('/health', (req, res) => {
res.json({
status: 'ok',
uptime: process.uptime(),
timestamp: new Date().toISOString()
})
})# .dockerignore node_modules .git .gitignore *.log *.md .env .env.* coverage/ dist/ .next/ __pycache__/ *.pyc .pytest_cache/ .mypy_cache/ Dockerfile* docker-compose*.yml .dockerignore
# BAD: invalidates cache on any source change COPY . . RUN npm install # GOOD: dependency layer cached unless package.json changes COPY package*.json ./ RUN npm ci COPY . . RUN npm run build
# Python: cache pip install separately COPY requirements.txt . RUN pip install -r requirements.txt # cached until requirements.txt changes COPY . .
# docker-compose: prefer env_file over inline secrets
services:
api:
env_file:
- .env.production # loaded from file, not committed
environment:
- NODE_ENV=production # override specific vars inline# ARG (build-time only, not
Your AI software team. Built on Claude Code. vibecosystem turns Claude Code into a full AI software team — 138 specialized agents that plan, build, review, test, and learn from every mistake. No configuration needed — just install and code.
Repo: vibeeval/vibecosystem
WCAG 2.2 AA compliance, ARIA patterns, keyboard navigation, screen reader optimization
axe-core integration, WCAG 2.2 AA checklist, keyboard navigation testing, screen reader testing, and ARIA pattern validation.
Steam-style achievement system with XP, levels, streaks, and skill trees. Gamifies the development workflow. 25 achievements across 5 categories.
Framework for measuring and tracking agent response quality over time. Detects regressions before they reach production. Use when evaluating agent changes,…
Agent ve skill dosyalarinin yapisal dogrulamasi. Frontmatter kontrol, naming convention, zorunlu bolum kontrolu, tutarlilik denetimi. Yeni agent/skill…