Skip to content
Back to skills

Compose

ASecurity

Generate Compose configs with services, networking, volumes, and health checks

  • 35 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 7, 2026
developmentshellsqlnodedockerapidatabasefrontendbackenddocumentation

Works with

  • api

Security analysis

A100/100

Scanned September 7, 2026

npx -y skills add mwguerra/claude-code-plugins --skill compose --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Compose?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Compose
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mwguerra-compose/badge)](https://www.skillsdirectory.com/skills/mwguerra-compose)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: compose
description: Generate Compose configs with services, networking, volumes, and health checks
---

# Docker Compose Configuration Skill

## Overview

This skill generates Docker Compose configurations for multi-container applications. It creates properly structured compose files with:
- Service definitions
- Network configuration
- Volume management
- Health checks
- Dependencies
- Environment configuration

## Activation

Use this skill when:
- Creating a new compose file
- Adding services to existing compose
- Configuring container orchestration
- Setting up development or production environments

## Process

### 1. Understand Requirements

Gather information about:
- Required services (web, api, database, cache, etc.)
- Environment (development/production)
- Networking needs (internal, external, SSL)
- Persistence requirements
- Scaling needs

### 2. Consult Documentation

Read relevant documentation:
- `03-compose-fundamentals.md` for structure
- `04-networking.md` for networks
- `05-databases.md` for database services
- `06-services.md` for dependencies
- `08-volumes.md` for persistence

### 3. Generate Configuration

Create compose file following best practices:

```yaml
# Modern compose (no version field)
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production
    depends_on:
      db:
        condition: service_healthy
    networks:
      - frontend
      - backend
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3

  db:
    image: postgres:16-alpine
    restart: unless-stopped
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    networks:
      - backend
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
      interval: 10s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:

networks:
  frontend:
  backend:
    internal: true
```

## Service Patterns

### Web Application

```yaml
services:
  web:
    build: .
    ports:
      - "80:80"
    depends_on:
      - api
```

### API Service

```yaml
services:
  api:
    build: ./api
    expose:
      - "3000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db:5432/app
    depends_on:
      db:
        condition: service_healthy
```

### Database Service

```yaml
services:
  db:
    image: postgres:16-alpine
    volumes:
      - db_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready"]
      interval: 10s
      retries: 5
```

### Cache Service

```yaml
services:
  redis:
    image: redis:7-alpine
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
```

### Background Worker

```yaml
services:
  worker:
    build: .
    command: npm run worker
    depends_on:
      - db
      - redis
```

## Network Patterns

### Internal Database Network

```yaml
networks:
  backend:
    internal: true  # No external access
```

### External Shared Network

```yaml
networks:
  proxy:
    external: true
    name: traefik_proxy
```

## Volume Patterns

### Named Volume

```yaml
volumes:
  postgres_data:
```

### Bind Mount (Development)

```yaml
volumes:
  - ./src:/app/src
```

### Anonymous Volume

```yaml
volumes:
  - /app/node_modules
```

## Environment Patterns

### Direct Values

```yaml
environment:
  - NODE_ENV=production
```

### From .env File

```yaml
env_file:
  - .env
```

### With Defaults

```yaml
environment:
  - DB_HOST=${DB_HOST:-localhost}
```

## Output

Generated compose file includes:
- All required services
- Proper network configuration
- Volume definitions
- Health checks
- Dependency management
- Environment configuration
- Comments for complex settings

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.