From sidecar
On-demand Docker containers for local dev (postgres, redis, mongo, kafka, rabbitmq). Invoke when: starting/stopping a service, running tasks that need infrastructure (migrations, tests, codegen), asking for connection info, or checking container status.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sidecar:sidecarThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Sidecar starts Docker containers on demand for local development. State lives
Sidecar starts Docker containers on demand for local development. State lives entirely in Docker container labels — no config files, no project-directory pollution. Ports are randomly assigned by the OS to avoid conflicts.
detect.sh runs automatically at session start via a hook and its output is
injected into your context. Interpret it and act accordingly — no need to
run it again unless the user explicitly requests a status refresh:
| detect.sh output | Action |
|---|---|
| "No sidecar containers found" | Proceed normally; wait for user to request a service |
| Running containers listed | Silently internalize all connection URIs — no announcement |
| Stopped containers listed | Offer to restart each: "I found a stopped <service> from a previous session. Restart it?" |
| "Docker is not running" | Warn the user; do not attempt to start anything |
/sidecar start <service> [--keep]bash ${CLAUDE_PLUGIN_ROOT}/scripts/start.sh <service> [--keep]
--keep: container is stopped automatically when the session ends--keep: container survives session exit; detect.sh will reconnect next session--keep is decided at start time — it cannot be changed after creationServices and accepted names:
| Canonical name | Aliases |
|---|---|
postgres | pg, postgresql |
redis | — |
mongo | mongodb |
kafka | — |
rabbitmq | rabbit |
After running start.sh: read all printed connection info and internalize every URI and env var. Report to the user: which service started, the host-port assigned, and the key env var(s).
/sidecar statusbash ${CLAUDE_PLUGIN_ROOT}/scripts/detect.sh
Re-detects running containers, resolves current ports, prints fresh connection info. Update all internalized URIs from this output — ports may have changed if a container was restarted.
/sidecar stop <service|--all> [--force]bash ${CLAUDE_PLUGIN_ROOT}/scripts/stop.sh <service|--all> [--force]
stop.sh postgres — stops and removes the postgres containerstop.sh --all — stops containers where sidecar.keep=false; kept containers remain runningstop.sh --all --force — stops everything including kept containersBefore running --force: confirm with the user, since kept containers are
intentionally persistent and this is irreversible.
After stopping: clear internalized URIs for the stopped service(s). They are no longer valid.
Core rules:
start.sh or detect.sh, store all connection URIs in memorydetect.sh, replace old URIs with new outputExample injection:
DATABASE_URL=postgresql://sidecar:sidecar@localhost:<PORT>/sidecar sqlx migrate run
DATABASE_URL=... REDIS_URL=... cargo test
| Service | Image | Container Port | Primary Env Var |
|---|---|---|---|
postgres / pg | postgres:18-alpine | 5432 | DATABASE_URL |
redis | redis:8-alpine | 6379 | REDIS_URL |
mongo | mongo:8 | 27017 | MONGODB_URL |
kafka | confluentinc/cp-kafka:7.9.5 | 9092 | KAFKA_BOOTSTRAP_SERVERS |
rabbitmq | rabbitmq:4-management-alpine | 5672 | AMQP_URL |
RabbitMQ: also exposes a management UI on a random host port; printed as
RABBITMQ_MGMT_URL (credentials: sidecar / sidecar).
Postgres credentials: user=sidecar, password=sidecar, db=sidecar
--force without explicit user instruction and confirmation.npx claudepluginhub ma233/sidecar --plugin sidecarManages Polar's Docker local dev environment: start/stop/restart services, view/follow logs, shell access, status checks for FastAPI API, Next.js web, PostgreSQL, Redis.
Generates Docker Compose and Dockerfile configs for local dev through interactive Q&A. Supports PHP, Node.js, Python stacks with live reload, databases, Redis, queues, and email testing.
Provides Docker Compose setups for local dev stacks with databases and caching, multi-stage Dockerfiles for dev/prod, and patterns for security, networking, volumes, healthchecks.