AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Docker Compose Doctor

skill-vladimiracunadev-create-claude-skills-toolkit-docker-compose-doctor · by vladimiracunadev-create

Diagnostica problemas comunes en archivos compose.yml / docker-compose.yml antes de levantar el stack. Detecta puertos host duplicados entre servicios, servicios sin healthcheck, depends_on que no usa condition service_healthy, imágenes sin tag o pinneadas a `:latest`, volúmenes nombrados declarados pero no referenciados, y env_file apuntando a archivos inexistentes. Úsalo cuando el usuario diga…

No reviews yet
0 installs
18 views
0.0% view→install

Install

$ agentstack add skill-vladimiracunadev-create-claude-skills-toolkit-docker-compose-doctor

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-vladimiracunadev-create-claude-skills-toolkit-docker-compose-doctor)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
1mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Docker Compose Doctor? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

docker-compose-doctor

Diagnostica problemas comunes en archivos compose.yml / docker-compose.yml antes de hacer docker compose up — para que el stack levante a la primera y los servicios queden saludables.

No reemplaza a docker compose config (que valida sintaxis del schema). Cubre la capa de convenciones operacionales que el schema oficial no captura: healthchecks faltantes, dependencias sin esperar a service_healthy, etc.


Cuándo invocar este skill

Triggers explícitos:

  • "revisa el compose"
  • "valida docker-compose"
  • "qué tiene mal este compose"
  • "docker compose lint"
  • "auditar compose.yml"
  • "chequea el stack"
  • "por qué no levanta este compose"
  • "doctor del compose"

Triggers proactivos:

  • Después de editar cualquier compose*.y*ml o docker-compose*.y*ml en la sesión.
  • Antes de un docker compose up cuando el usuario menciona problemas de orden de arranque, servicios "unhealthy", o puertos en conflicto.

Cómo se invoca

Sin argumentos: busca compose.yml, compose.yaml, docker-compose.yml y docker-compose.yaml en Path.cwd() recursivamente hasta 3 niveles.

python ~/.claude/skills/docker-compose-doctor/docker_compose_doctor.py

Modos:

# Archivo específico
python .../docker_compose_doctor.py path/to/compose.yml

# Solo errores (omite warnings)
python .../docker_compose_doctor.py --errors-only

# Output JSON (para integraciones)
python .../docker_compose_doctor.py --json

# Verbose — muestra cada check ejecutado
python .../docker_compose_doctor.py -v

Exit codes:

  • 0 — sin hallazgos o solo warnings.
  • 1 — al menos un error (bloquea CI / pre-push).
  • 2 — error de invocación (archivo no existe, YAML malformado).

Qué chequea exactamente

| # | Check | Severidad | Razón | |---|---|:-:|---| | 1 | Puertos host duplicados entre servicios ("8080:80" en dos servicios). | error | El segundo servicio falla al bindear → stack no levanta. | | 2 | Servicios sin healthcheck. | warning | Sin healthcheck, depends_on: condition: service_healthy no funciona y el orquestador no detecta servicios atascados. | | 3 | depends_on simple cuando el target tiene healthcheck. Detecta depends_on: [db] cuando db define un healthcheck — debería usar la forma extendida con condition: service_healthy. | warning | Race condition clásica: la app arranca antes de que la DB acepte conexiones. | | 4 | Imágenes con :latest o sin tag (ej. image: postgres). | warning | Builds no reproducibles. Pinnear a versión major.minor al menos. | | 5 | Volúmenes nombrados declarados pero no referenciados en ningún servicio. | warning | Dead config. Suelen quedar tras refactors. | | 6 | env_file apuntando a archivo inexistente (relativo al compose.yml). | error | Falla en up. Frecuente cuando .env.example se renombra. |


Qué NO hace / limitaciones

  • No valida el schema de Compose. Para eso usa docker compose config -q — este skill asume que la sintaxis ya es válida.
  • No ejecuta el stack. Es análisis estático del YAML; no detecta problemas que solo aparecen runtime (ej. health check que devuelve 200 pero la app está rota internamente).
  • No resuelve ${VAR} con valores de entorno. Si tu image: ${MY_IMAGE} no tiene tag literal en el YAML, no se reporta como latest — porque no se sabe.
  • No valida redes custom. Salir del scope MVP — puede llegar en una versión futura.
  • Sigue extends: y include: solo a un nivel (en compose v2.20+). Composes muy anidados pueden tener falsos negativos.

Dependencias

| Dependencia | Cómo instalar | Requerida o opcional | |---|---|---| | python>=3.11 | viene con el SO | requerida | | pyyaml | pip install pyyaml | requerida |

Sin binarios externos. No invoca docker ni docker compose.


Ejemplos de salida

Caso con hallazgos

docker-compose-doctor — repo: /ruta/a/mi-proyecto
  archivo: compose.yml (5 servicios)

[errors]
  ✗ Puerto host 8080 duplicado entre servicios 'api' y 'admin'
    api:    "8080:8000"  (línea 14)
    admin:  "8080:80"    (línea 41)
  ✗ env_file inexistente en servicio 'worker': ./envs/worker.env (línea 67)

[warnings]
  ⚠ Servicio 'api' sin healthcheck — depends_on no podrá esperar a service_healthy
  ⚠ Servicio 'worker' depende de 'db' (que tiene healthcheck) con depends_on simple
    Sugerencia:
        depends_on:
          db:
            condition: service_healthy
  ⚠ Imagen 'redis' sin tag (línea 52) — pinnea a 'redis:7.2-alpine' o similar
  ⚠ Volumen 'old_cache' declarado pero no referenciado por ningún servicio

Resumen: 2 errores, 4 warnings.

Exit 1 (errores presentes).

Caso limpio

docker-compose-doctor — repo: /ruta/a/mi-proyecto
  archivo: compose.yml (5 servicios)

✓ Puertos: sin conflictos
✓ Healthchecks: 5/5 servicios cubiertos
✓ depends_on: todas las dependencias usan condition apropiada
✓ Imágenes: todas pinneadas
✓ Volúmenes: sin huérfanos
✓ env_file: todos los archivos existen

Resumen: 0 errores, 0 warnings. OK para `docker compose up`.

Exit 0.


Integración con flujo de trabajo

Combinable con [[yaml-control]] (valida sintaxis YAML del compose) y [[pre-push-guard]] (orquesta ambos + tests antes de pushear).

# Antes de un cambio importante al stack
python ~/.claude/skills/yaml-control/yaml_control.py
python ~/.claude/skills/docker-compose-doctor/docker_compose_doctor.py
docker compose up -d

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.