Reflexo Release
Myriad-Dreamin/typst.ts
Guide Reflexo/typst.ts release preparation and operator handoffs.
A skill your agent uses when writing, reviewing, or optimizing Dockerfiles, even if the user just says their image is too large, their build is slow, or they need to harden a container for production.
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add docker/skills --skill docker-build-strategies -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install docker/skills docker-build-strategies --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/docker-build-strategies .claude/skills/docker-build-strategies && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .claude/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/docker/skills/tree/main/skills/docker-build-strategiesType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add docker/skills --skill docker-build-strategies -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install docker/skills docker-build-strategies --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/docker-build-strategies .agents/skills/docker-build-strategies && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .agents/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add docker/skills --skill docker-build-strategies -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install docker/skills docker-build-strategies --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/docker-build-strategies .cursor/skills/docker-build-strategies && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .cursor/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/docker/skills.git --path skills/docker-build-strategies--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add docker/skills --skill docker-build-strategies -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install docker/skills docker-build-strategies --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/docker-build-strategies .gemini/skills/docker-build-strategies && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .gemini/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install docker/skills docker-build-strategiesInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add docker/skills --skill docker-build-strategies -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/docker-build-strategies .github/skills/docker-build-strategies && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .github/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add docker/skills --skill docker-build-strategies -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install docker/skills docker-build-strategies --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/docker/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/docker-build-strategies .opencode/skills/docker-build-strategies && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "docker-build-strategies" agent skill from https://github.com/docker/skills/tree/main/skills/docker-build-strategies into .opencode/skills/docker-build-strategies/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "docker-build-strategies", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
docker-build-strategiesA skill your agent uses when writing, reviewing, or optimizing Dockerfiles, even if the user just says their image is too large, their build is slow, or they need to harden a container for production.
Docker Build Strategies is an agent skill from docker/skills, published by the product's own GitHub organization. Use this skill when writing, reviewing, or optimizing Dockerfiles, even if the user just says their image is too large, their build is slow, or they need to harden a container for production. Covers multi-stage builds, layer caching, .dockerignore, non-root users, and image size optimization.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 15 other files, including scripts, reference files and assets (for example `agents/openai.yaml`, `checks/verification.md` and `references/layer-caching.md`). Compatibility notes: Requires Docker 23.0+ (BuildKit default). On Docker 20.10–22.x, set DOCKERBUILDKIT=1 before building.
It sits in DevOps & Cloud, covering Containers. It works with Docker and npm. The repository describes itself as: A collection of Docker skills for AI coding agents to help them build, test, debug, and optimize containerized apps with consistent, reusable workflows. The licence is Apache-2.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f791727. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Go and Shell), which the agent can run.
Shell commands in SKILL.md call:
dockerbashnpmpipgoapt-getFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker, npm and pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires Docker 23.0+ (BuildKit default). On Docker 20.10–22.x, set DOCKER_BUILDKIT=1 before building.
From compatibility in the SKILL.md frontmatter.
Docker Build Strategies loads about 3k tokens when it runs, and up to ~6.8k if it reads all its reference files. Until then it costs about 79 tokens; SKILL.md has 1,445 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found patterns that need a careful read before installing.
edential files into the build context: `.npmrc`, `.pypirc`, `.netrc`, `pip.conf`, Maven `settings.xml`, `.env`, cloud crmount=type=secret,id=npmrc,target=/root/.npmrc,required=false \--secret id=npmrc,src=$HOME/.npmrc \7. `.dockerignore` exclusions of `.env` and credential files are **defense in depth**, not the primary mechanism — keep- `.env` files and any secretsAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from docker/skills at commit f791727, republished under its Apache-2.0 licence (© docker). 1,445 words, ~3,033 tokens.
.claude/skills/docker-build-strategies/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.This skill provides rules and patterns for writing and reviewing production-quality Dockerfiles. Apply it when the main task is image-build quality: multi-stage builds, cache behavior, non-root execution, build context hygiene, and runtime image size.
Activate this skill when:
.dockerignore file to a projectDo not use this skill when:
compose.yamlUse multi-stage builds when the project has a build step or when build-time dependencies differ from runtime. Separate build-time dependencies from the runtime image.
FROM ... AS build, FROM ... AS runtime).distroless, alpine, or slim variants.COPY --from=build.COPY --link when copying from a prior stage or adding static files — it improves cache reuse by making the COPY independent of previous layers.See references/multi-stage-builds.md for language-specific patterns (Go, Node, Python, Java).
Order Dockerfile instructions from least-frequently-changed to most-frequently-changed.
package.json, go.mod, requirements.txt) and install steps before copying application source code. Bind-mount the manifest into the install step instead of COPY-ing it, so it never enters a layer: RUN --mount=type=bind,source=package.json,target=package.json --mount=type=bind,source=package-lock.json,target=package-lock.json npm ci. This is safe for install commands that only read the manifest (npm ci, pip install -r, go mod download); if a step also needs to write the manifest back into the image, COPY it instead.RUN --mount=type=cache,target=/go/pkg/mod go build ...RUN --mount=type=cache,target=/root/.npm npm ciRUN --mount=type=cache,target=/root/.cache/pip pip install ...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 rm -rf /var/lib/apt/lists/* needed, since the cache lives outside the image layer. sharing=locked is required because apt needs exclusive access to its cache directories.references/layer-caching.md links the source): RUN --mount=type=cache,target=/etc/apk/cache,sharing=locked apk add ... — drop --no-cache so downloaded packages land in the mounted cache directory instead of being discarded.latest in production.RUN commands with && to reduce layer count, but keep logically distinct steps separate for cache granularity.See references/layer-caching.md for detailed cache invalidation rules and cache mount patterns.
Never bake credentials into the image. Use BuildKit secrets and SSH mounts so credentials are available only during the specific RUN step that needs them, and never persist in any layer or docker history output.
ARG or ENV. Both end up in the image layers and are inspectable via docker history.COPY credential files into the build context: .npmrc, .pypirc, .netrc, pip.conf, Maven settings.xml, .env, cloud credentials (~/.aws/credentials, ~/.config/gcloud/, service-account JSON files, ~/.azure/), secret-manager tokens (~/.vault-token), package-registry tokens (~/.cargo/credentials.toml), TLS keys (*.pem, *.p12), kubeconfig, SSH keys (id_rsa, id_dsa, id_ed25519, id_ecdsa). Even when the final stage does not copy them forward, they live in intermediate layers and the build cache.RUN command in a way that persists it to a layer or emits it to build logs. Access the secret file (e.g., /run/secrets/<id>, or directly via the mount target=) — never echo "$(cat /run/secrets/X)", never substitute it into a shell argument that will be logged with --progress=plain.RUN --mount=type=secret for package manager registry credentials:RUN --mount=type=secret,id=npmrc,target=/root/.npmrc,required=false \
--mount=type=cache,target=/root/.npm \
npm ci --omit=devRUN, never written to a layer. Use required=true when the build will always need the credential (e.g., all packages come from a private registry, so missing the secret should fail the build immediately); use required=false only when the secret is optional (the build can succeed with public packages alone).RUN --mount=type=ssh for fetching private Git repositories or modules. The build container has no known_hosts by default — populate it inside the same RUN:RUN --mount=type=ssh \
mkdir -p -m 0700 /root/.ssh && \
ssh-keyscan github.com >> /root/.ssh/known_hosts && \
git clone git@github.com:org/private-repo.gitStrictHostKeyChecking=no as a shortcut — it disables host-key verification entirely. ssh-keyscan accepts whatever host key the server presents each time the step runs; nothing is pinned between builds. For stronger assurance, compare it against the provider's published host key fingerprints, or write the published key into known_hosts instead of scanning.# --ssh default forwards this shell's SSH agent (SSH_AUTH_SOCK); list every key the build can use:
ssh-add -l
docker buildx build \
--secret id=npmrc,src=$HOME/.npmrc \
--ssh default \
.RUN --mount=type=ssh step can use every key that ssh-add -l lists, so expose only the key this build needs. In an interactive terminal, run ssh-agent bash to start a shell with a dedicated agent, then run ssh-add <key-file>, confirm that ssh-add -l lists only that key, and run the build in that shell. A tool that starts a new shell for each command loses that agent between commands, so ask the user to run these steps. Alternatively, pass an unencrypted key file, such as a dedicated deploy key, directly with --ssh default=<key-file>; BuildKit rejects passphrase-protected keys in this form, so load those into an agent instead..dockerignore exclusions of .env and credential files are defense in depth, not the primary mechanism — keep them, but do not rely on them as your only protection.See references/multi-stage-builds.md for per-language patterns (npm, pip, Maven, Go GOPRIVATE).
Always generate a .dockerignore alongside the Dockerfile. Exclude:
.git/, .github/, .vscode/, .idea/node_modules/, __pycache__/, .venv/, vendor/ (when rebuilt in the build stage)*.md, LICENSE, docs/.env files and any secretsSee assets/dockerignore-example for a comprehensive template.
Always configure the final image to run as a non-root user.
RUN addgroup --system --gid 1001 appgroup && \
adduser --system --uid 1001 --ingroup appgroup appuserCOPY --from=build --chown=appuser:appgroup /app /app--chown with COPY --link, always use the numeric UID:GID you assigned (e.g., --chown=1001:1001 if you used --uid 1001 --gid 1001 above), not named users. --link creates an independent layer where named users from prior RUN instructions are not available.USER appuser instruction after all file operations and before ENTRYPOINT/CMD.USER nonroot:nonroot.FROM scratch (Go static binaries), distroless, or Alpine-based images for the runtime stage.rm -rf-ing the cache in the same layer — see "Layer caching" above. The cache mount keeps the package cache out of the image layer entirely, so no cleanup step is needed..dockerignore aggressively to minimize the build context.# syntax=docker/dockerfile:1 directive as the first line to enable BuildKit features.WORKDIR before any COPY or RUN instructions — never rely on the default /.ENTRYPOINT with exec form (["binary"]) over shell form.EXPOSE to document the listening port.LABEL org.opencontainers.image.source=...docker-project-foundations.docker-compose-patterns.docker system prune, docker rm -f, image/network/builder pruning) and a cross-product index of destructive-command guardrails, use docker-destructive-guardrails.references/multi-stage-builds.md — Language-specific multi-stage patterns for Go, Node.js, Python, and Javareferences/layer-caching.md — Deep dive on layer ordering, cache invalidation, and BuildKit cache mountsassets/Dockerfile.go — Multi-stage Go build with distroless runtime and non-root userassets/Dockerfile.nodejs — Multi-stage Node.js build with proper layer caching and non-root userassets/Dockerfile.python — Python build with virtual env, layer ordering, and non-root userassets/dockerignore-example — Comprehensive .dockerignore templatescripts/verify-build.sh — Builds the Dockerfile in the current directory, then reports image size and configured user. Run it from the project root (the directory that contains the Dockerfile), with the script path resolved under this skill's directory:bash "<skill-dir>/scripts/verify-build.sh" [--help] [IMAGE_NAME]<skill-dir> with the absolute path of the folder that contains this SKILL.md; the scripts/ path is relative to that folder, not to the project. Do not change into the skill directory first: the script builds whatever is in the current directory. If the skill directory cannot be resolved, run docker build -t verify-build-test ., then docker images verify-build-test and docker inspect verify-build-test --format '{{.Config.User}}'. Exit status is 0 when all Docker commands succeed or help is requested, the failing Docker command's non-zero status when verification fails, and 2 for invalid arguments.checks/verification.md — Detailed verification runbook for manual review.© docker, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references, assets) in skills/docker-build-strategies of docker/skills.
Open the folder on GitHubat commit f791727
Docker Build Strategies next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Docker Build Strategies this skilldocker/skills | 539 | — | ~3k | Automated safety check: Warn | Apache-2.0 | |
| Reflexo ReleaseMyriad-Dreamin/typst.ts | 1.2k | — | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Os Eco Dep Syncjayminwest/warren | 476 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Ddevhaxtheweb/haxcms-php | 130 | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Data Processingaiskillstore/marketplace | 430 | 1 repos | ~720 | Automated safety check: Notes | MIT | |
| Tokf Runmpecan/tokf | 199 | — | ~571 | Automated safety check: Pass | MIT |
Myriad-Dreamin/typst.ts
Guide Reflexo/typst.ts release preparation and operator handoffs.
jayminwest/warren
Bump warren onto the latest published @os-eco/ versions across package.json + bun.lock and the Dockerfile CLI pins, then run the gates and open a PR.
haxtheweb/haxcms-php
DDEV local development environment guidance for Docker-based PHP/Node projects.
aiskillstore/marketplace
Process JSON with jq and YAML/TOML with yq. An agent skill from aiskillstore/marketplace.
mpecan/tokf
Compress verbose CLI output with tokf before returning results.
Luligu/matterbridge
Verify that package, Docker build, test utility helper, docs update JSON files, and Docker workflow tags match the expected root version rules.
docker/skills
A skill your agent uses when creating, modifying, or debugging Docker Compose configurations, even if the user just says they need to wire services together, add a database to their stack, or set up…
docker/skills
A skill your agent uses when creating or editing an agent.yaml (or .yml/.hcl) configuration file for Docker Agent (cagent), including defining agents, models/providers, built-in or MCP toolsets…
docker/skills
A skill your agent uses when exposing a Docker Agent as a server (MCP, HTTP API, A2A, ACP, or OpenAI-compatible chat), distributing an agent via an OCI registry with docker agent share, or measuring…
docker/skills
A skill your agent uses when setting up, initializing, or Dockerizing a project, even if the user doesn't explicitly mention Docker but describes a need for containerized local development, adding a…
docker/skills
A skill your agent uses when authoring, planning, or running a declarative sbxenv.yaml file for Docker Sandboxes (sbx env create/run/plan/exec/rm), even if the user just says they want to "check in…
docker/skills
A skill your agent uses when creating, running, reattaching to, listing, stopping, or removing Docker Sandboxes (the standalone sbx CLI that runs AI coding agents in isolated microVMs), even if the…
Categories
A skill your agent uses when writing, reviewing, or optimizing Dockerfiles, even if the user just says their image is too large, their build is slow, or they need to harden a container for production. Docker Build Strategies is an agent skill from docker/skills, published by the product's own GitHub organization. Use this skill when writing, reviewing, or optimizing Dockerfiles, even if the user just says their image is too large, their build is slow, or they need to harden a container for production.
Docker Build Strategies fits situations like: optimizing Dockerfiles; even if the user just says their image is too large; their build is slow; they need to harden a container for production.
Run `npx skills add docker/skills --skill docker-build-strategies -a claude-code`. Or copy the skill folder (skills/docker-build-strategies in docker/skills) into .claude/skills/docker-build-strategies in your project. Claude Code loads it when a task matches its description.
Run `npx skills add docker/skills --skill docker-build-strategies -a codex`. Or copy the skill folder (skills/docker-build-strategies in docker/skills) into .agents/skills/docker-build-strategies in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add docker/skills --skill docker-build-strategies -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/docker-build-strategies, .gemini/skills/docker-build-strategies, .github/skills/docker-build-strategies and .opencode/skills/docker-build-strategies in your project.
Going by SKILL.md and its folder, Docker Build Strategies needs Go and a shell for the scripts in its folder and the command-line tools its instructions call (docker, bash, npm, pip, go and apt-get). Our summary lists: Python 3; Node.js; A Bash shell; Docker. Compatibility (from SKILL.md): Requires Docker 23.0+ (BuildKit default). On Docker 20.10–22.x, set DOCKER_BUILDKIT=1 before building..
SKILL.md contains no URLs. Its commands use docker, npm and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 3 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Docker Build Strategies is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Docker Build Strategies: Reflexo Release (Myriad-Dreamin/typst.ts, 1.2k stars), Os Eco Dep Sync (jayminwest/warren, 476 stars), Ddev (haxtheweb/haxcms-php, 130 stars) and Data Processing (aiskillstore/marketplace, 430 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
docker (a GitHub organization, an official publisher) maintains it in docker/skills, which has 539 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 4, 2026.
Source: docker/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.