docker-ops
Docker on your machine and in your repo: Dockerfile, .dockerignore, compose.yaml, BuildKit, image hardening and supply chain, plus the engine underneath…
Skill by claude-mods
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/0xdarkmatter-docker-ops
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: devops
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 13
api.github.com· found in codecgr.dev· found in codecodeload.github.com· found in install commandendoflife.date· found in codegcr.io· found in codeghcr.io· found in codehub.docker.com· found in codemcr.microsoft.com· found in codepublic.ecr.aws· found in codequay.io· found in coderaw.githubusercontent.com· found in coderegistry-1.docker.io· found in coderegistry.k8s.io· found in code
Files it touches
~/.claude/skills/docker-ops/etc/apk/cache/usr/share/docker-desktop/admin-settings.json/var/cache/apk/var/cache/apt/var/lib/apt/lists/var/lib/docker/var/run/var/run/docker.sock- Your home directory (~)
Tools it pre-approves 3
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
ReadWriteBash
What's inside
- Skill name
docker-ops- Description
- Docker on your machine and in your repo: Dockerfile, .dockerignore, compose.yaml, BuildKit, image hardening and supply chain, plus the engine underneath (Docker Desktop, OrbStack, Colima, Podman, Rancher Desktop): contexts and sockets, ports, disk space, file sharing, emulation. Ships a repo auditor, a read-only machine doctor, an image-tag checker. Not for Kubernetes or Helm (kubernetes-ops), DDEV projects (ddev-ops), or WSL itself (windows-ops).
- License
- MIT
- Allowed tools
- Read, Write, Bash
- Metadata
- owns: dockerfile, dockerignore, compose, buildkit, image-hardening, docker-engine, docker-desktop, colima, orbstack, podman, rancher-desktop, docker-contexts, docker-disk · author: claude-mods · related-skills: kubernetes-ops, ddev-ops, windows-ops, supply-chain-defense, package-manager-ops, ci-cd-ops, go-ops, rust-ops
- Instructions
- 201 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves any shell command
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- files: referenced but missing: scripts/x.py
Files (49)
- SKILL.md
- Dockerfile.template · assets/
- compose.template.yaml · assets/
- docker-facts.json · assets/
- compose.md · references/
- debugging.md · references/
- destructive-commands.md · references/
- disk-reclaim.md · references/
- dockerfile.md · references/
- ports-and-networking.md · references/
- providers-and-contexts.md · references/
- supply-chain-and-scanning.md · references/
- vmm-sharing-emulation.md · references/
- check-docker-facts.py · scripts/
- check-image-tags.py · scripts/
- docker-audit.py · scripts/
- docker-doctor.py · scripts/
- Dockerfile · tests/fixtures/bad/
- compose.yaml · tests/fixtures/bad/
- .dockerignore · tests/fixtures/clean/
- Dockerfile · tests/fixtures/clean/
- compose.yaml · tests/fixtures/clean/
- Dockerfile · tests/fixtures/coverage/
- docker-compose.yml · tests/fixtures/coverage/
- docker_stub.py · tests/fixtures/doctor/
- run_doctor.py · tests/fixtures/doctor/
- .dockerignore · tests/fixtures/edge/
- Dockerfile · tests/fixtures/edge/
- compose.yaml · tests/fixtures/edge/
- skip.Dockerfile · tests/fixtures/edge/
- desktop-release-notes.md · tests/fixtures/facts/
- eol-go.json · tests/fixtures/facts/
- eol-nodejs.json · tests/fixtures/facts/
- eol-php.json · tests/fixtures/facts/
- eol-python.json · tests/fixtures/facts/
- releases-colima.json · tests/fixtures/facts/
- releases-compose.json · tests/fixtures/facts/
- releases-gateway_api.json · tests/fixtures/facts/
- releases-helm.json · tests/fixtures/facts/
- releases-kubernetes.json · tests/fixtures/facts/
- releases-lima.json · tests/fixtures/facts/
- releases-podman.json · tests/fixtures/facts/
- releases-trivy_action.json · tests/fixtures/facts/
- releases-wsl.json · tests/fixtures/facts/
- Dockerfile · tests/fixtures/image-tags/
- answers.json · tests/fixtures/image-tags/
- compose.yaml · tests/fixtures/image-tags/
- notes.md · tests/fixtures/image-tags/
- run.sh · tests/
SKILL.md (first lines)
# Docker Operations
Docker on your machine and in your repo: the files you write (Dockerfile, .dockerignore,
compose.yaml) and the engine that runs them. Versions verified 2026-10-07 (Compose v5,
Docker Desktop 4.94, WSL 3.0, Podman 6); `scripts/check-docker-facts.py --live` re-checks
them weekly.
**Why:** the costly Docker mistakes are silent. A secret is copied into a layer, a datastore
listens on every interface, `compose config` pastes credentials into a log, a prune deletes
a volume someone needed. The rules below stop those first.
## Hard rules
1. **Say what is lost before anything destructive, and confirm a sweep.** Removing one
stopped container the user named is fine on an explicit ask. `docker kill`, any `prune`,
`compose down -v`, `volume rm`, and anything unscoped (`docker rm -f $(docker ps -aq)`)
needs a confirmation that names what goes. A sweep counts as a sweep even when
everything in it is stopped: scope beats state. Tiers: [destructive-commands.md](references/destructive-commands.md).
2. **Never run `docker compose config` bare.** It prints interpolated values and inlines
`env_file` contents. Use `docker compose config --quiet` to validate, and add
`--no-interpolate` when you need to read the file.
3. **No secrets in layers.** No `ARG`/`ENV` credentials, no `COPY .env` / `.npmrc` / keys.
Use `RUN --mount=type=secret,id=x,required=true` (fails loudly when the secret is
missing) and `--mount=type=ssh`. A later `RUN rm` does not remove a file from the
earlier layer.
4. **Datastores and debug ports bind to loopback.** Write `127.0.0.1:5432:5432`, never `5432:5432`.
On Docker Desktop, an unbound port is reachable from your LAN.
5. **Pin scanners and actions by commit SHA.** In March 2026, 76 of trivy-action's 77 tags
were force-pushed to an infostealer (advisory GHSA-69fq-xp46-6x23). Use
`aquasecurity/trivy-action@ed142fd0673e97e23eac54620cfb913e5ce36c25 # v0.36.0`.
Vetting dependencies is supply-chain-defense's job.
6. **Current bases only.** Node.js 22 is the oldest supported line (20 ended 2026-04-30),
Python 3.11 (3.10 ended 2026-10-01). Distroless images are `-debian13`. Pin a tag, and
in production a digest. `assets/docker-facts.json` holds the floors the auditor checks.
7. **Verify a non-root image with `docker inspect --format '{{.Config.User}}'`** (it must be
set and not `0` or `root`). `docker run img whoami` lies when the image has an ENTRYPOINT.
8. **Never start, stop or reconfigure the engine on the user's behalf.** Report that it is
down and give the start command. Propose a settings change; don't apply it. A setting
their admin locked is the admin's call (`docker-doctor.py` reports locks).
9. **`compose.yaml`, no `version:` line.** Compose ignores `version:` and prints a warning.
Since Compose v5 (2025-12; v3 and v4 were skipped), builds go through Bake.
10. **Run this skill's scripts by path from the project root.** Use
`python "<skill-dir>/scripts/x.py"`; never `cd` into the skill or call `scripts/x.py`
relative to the project.
## Routing
| The task | Where |
|---|---|
| Dockerfile, multi-stage, BuildKit, base images, multi-platform | here + [dockerfile.md](references/dockerfile.md) |
| compose.yaml, healthchecks, profiles, watch, secrets | here + [compose.md](references/compose.md) |
| Scanning, SBOM, provenance, signing, digest pins | [supply-chain-and-scanning.md](references/supply-chain-and-scanning.md); vetting packages: supply-chain-defense |
| Which engine am I talking to, contexts, sockets, credential helpers | [providers-and-contexts.md](references/providers-and-contexts.md) |
| Port clashes, host.docker.internal, VPN subnets, reserved ports | [ports-and-networking.md](references/ports-and-networking.md) |
| The VM disk keeps growing | [disk-reclaim.md](references/disk-reclaim.md) |
| Slow bind mounts, VirtioFS, Rosetta, arm64 vs amd64 | [vmm-sharing-emulation.md](references/vmm-sharing-emulation.md) |
| A container that won't start, exits, or can't be debugged | [debugging.md](references/debugging.md) |
| Kubernetes, Helm, Gateway API, ECS | kubernetes-ops |
| A project with a `.ddev/` folder | ddev-ops (its extra services use Compose syntax from here) |
| `.wslconfig`, WSL networking modes, WSL disks in general | windows-ops ([wsl.md](../windows-ops/references/wsl.md)) |
| `npm ci` vs `npm install`, lockfiles inside a RUN | package-manager-ops |
| CI pipelines that build and push | ci-cd-ops |
| Go or Rust build specifics (CGO, static and musl binaries, toolchain caches) | go-ops, rust-ops |
## Tools
```bash
docker build --check . # BuildKit's own checks first (needs the daemon)
python "<skill-dir>/scripts/docker-audit.py" . # repo: Dockerfiles + Compose (exit 10 = findings)
python "<skill-dir>/scripts/docker-doctor.py" --ports 80,5432 # machine: engine, provider, disk, ports (read-only)
python "<skill-dir>/scripts/check-image-tags.py" --live . # do the pinned tags exist for amd64+arm64?
python "<skill-dir>/scripts/check-docker-facts.py" --offline # are this skill's version facts still stated?
```
- `scripts/docker-audit.py` checks Dockerfile families D1-D11 (base pinning and EOL, user,
secrets, TLS bypasses, package hygiene, instruction semantics, pipes, build context,
directives, healthcheck tooling, labels) and Compose families C1-C9 (obsolete `version:`,
build+image squatting, floating tags, literal secrets, published ports, host escapes,
hardening, readiness, undeclared resources). `--list-checks` shows each check with its
hadolint / BuildKit / Trivy / Checkov IDs. Suppress a finding inline with
`# docker-audit ignore=CHECK reason="..." until=YYYY-MM-DD`; a missing reason suppresses
nothing. `--production` adds digest pins and Compose hardening.
- `scripts/docker-doctor.py` resolves the endpoint (DOCKER_HOST > DOCKER_CONTEXT > the stored
context), names the provider from the socket or pipe path, and reports: the engine down
or hung, two providers running, a missing credential helper, a VM disk far bigger than
what the engine holds, Windows-reserved ports, ports held inside running WSL, admin locks.
It never starts, prunes or compacts anything.
- `scripts/check-image-tags.py` inventories every FROM / `COPY --from=` / `image:` reference
(Markdown code fences included). `--live` asks the registries: missing exits 10, uncertain
(Docker Hub's 429s) exits 7.
- `scripts/check-docker-facts.py` keeps `assets/docker-facts.json` true: `--offline` in PR
CI, `--live` weekly.
## Dockerfile in one screen
```dockerfile
# syntax=docker/dockerfile:1
FROM node:24-slim AS deps
WORKDIR /app
RUN --mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=package-lock.json,target=package-lock.json \
--mount=type=cache,target=/root/.npm,sharing=locked \
npm ci --omit=dev
FROM node:24-slim
WORKDIR /app
RUN rm -f /etc/apt/apt.conf.d/docker-clean \
&& echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
apt-get update && apt-get install -y --no-install-recommends tini
COPY --link --from=deps /app/node_modules ./node_modules
COPY --chown=node:node . .
USER node
HEALTHCHECK CMD ["node", "healthcheck.js"]
ENTRYPOINT ["tini", "--"]
CMD ["node", "server.js"]
```From 0xDarkMatter/claude-mods, MIT.
More from 0xDarkMatter/claude-mods
- 0.654score
claude-api-ops
claude-mods
Building applications ON Claude - the Anthropic API and Claude Agent SDK.
SkillAFreshness: A★ 75Claude Code - 0.654score
git-ops
claude-mods
Git + worktree orchestrator: status survey, per-worktree triage, commits, PRs, branches, releases, rebases — reads inline, writes to a background agent.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
bash-ops
claude-mods
Defensive Bash scripting for production automation, CI scripts, and agent-facing tools.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
loop-ops
claude-mods
Design and safely run OUTER loops - scheduled discover-triage-implement-verify-escalate agent loops.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
a11y-ops
claude-mods
Web accessibility end to end: WCAG 2.2 AA, EAA and ADA Title II obligations, audits (axe, pa11y, keyboard, screen reader), the common failures, accessibility…
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
adr-ops
claude-mods
Author, index, and lint Architecture Decision Records — append-only memory that recovers the WHY behind a system's shape.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
fleet-ops
claude-mods
Landing discipline for parallel work: sequential test-gated landing queue, pre-land scrub, auto-rebase of in-flight lanes, fleet status, one-shot revert…
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
auto-skill
claude-mods
Evaluate current session for skill-worthy workflows and create reusable skills.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
asus-router-ops
claude-mods
ASUS router config and hardening: Asuswrt-Merlin, security hardening, encrypted DNS (DoT/DoH), VPN (WireGuard/OpenVPN), guest networks, VLAN/IoT isolation…
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
atomise
claude-mods
Atom of Thoughts (AoT) reasoning - decompose complex problems into atomic units with confidence tracking and backtracking.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
auth-ops
claude-mods
Authentication and authorization patterns - JWT, OAuth2, sessions, RBAC, ABAC, passkeys, MFA, identity-aware proxies, and Better Auth.
SkillAFreshness: A★ 75Claude Code +9 - 0.654score
claude-code-ops
claude-mods
Claude Code internals - hooks, skill frontmatter, headless mode, and extension debugging, current as of June 2026.
SkillAFreshness: A★ 75Claude Code +9
Compare and alternatives
Featured in
Signals
- Stars
- 75
- Forks
- 8
- Open issues
- 0
- Last commit (this folder)
- Oct 14, 2026 (13 days ago)
- Last release
- Oct 14, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/0xDarkMatter/claude-mods
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from claude-mods
- 0.685score
file-search
claude-mods
Modern file and content search using fd, ripgrep (rg), and fzf.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
project-planner
claude-mods
Detects stale project plans and suggests session commands.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
python-env
claude-mods
Fast Python environment management with uv (10-100x faster than pip).
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
sqlite-ops
claude-mods
Patterns for SQLite databases in Python projects - state management, caching, and async operations.
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
code-stats
claude-mods
Analyze codebase with tokei (fast line counts by language) and difft (semantic AST-aware diffs).
SkillCFreshness: C★ 443Claude Code +9 - 0.685score
container-orchestration
claude-mods
Docker, Kubernetes, and AWS ECS/Fargate patterns.
SkillCFreshness: C★ 443Claude Code +9
Cite this page
docker-ops skill. Agent Mart. https://agentmart.dev/skills/0xdarkmatter-docker-ops (last updated 2026-10-24)