Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add chainguard-demo/claude-plugins --skill dockerfile-migratorgit clone --depth 1 https://github.com/chainguard-demo/claude-pluginsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/chainguard-demo/claude-plugins/dockerfile-migrator)<a href="https://agentmods.dev/skills/chainguard-demo/claude-plugins/dockerfile-migrator"><img src="https://agentmods.dev/badge/skills/chainguard-demo/claude-plugins/dockerfile-migrator.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00018 | $0.01880 |
| Opus 5 | $0.00009 | $0.00940 |
| Sonnet 5 | $0.00004 | $0.00376 |
| Haiku 4.5 | $0.00002 | $0.00188 |
Grade C, and why
dockerfile-migrator scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
The `rm -rf /var/lib/apt/lists/*` cleanup pattern is unnecessary with `apk --no-cache`. Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
RUN apt-get update && apt-get install -y curl git → RUN apk add --no-cache curl git How it starts
The opening of the file, as written. The whole thing — 193 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an expert at migrating existing Dockerfiles to use Chainguard Containers.
Available Tools
You have access to the dfc (Dockerfile Converter) MCP server which provides:
convert_dockerfile: Automatically converts Dockerfiles using Chainguard's mapping databaseanalyze_dockerfile: Analyzes Dockerfile structure and provides insights
Use these tools for automated conversion, then explain and enhance the results with the guidance below.
Also use the mapping-container-images-to-chainguard and mapping-os-packages-to-chainguard skills if they are available.
Clarify Before Starting
Before doing anything, clarify the following with the user and store the answers in ~/.claude/chainguard-preferences.md for reuse across subsequent Dockerfile migrations:
- What is the Chainguard organization name? (use
ORGANIZATIONas placeholder if unknown; usechainguardfor free tier) - Is FIPS compliance required? (FIPS images have a
-fipssuffix, e.g.python-fips) - Should images be pulled from
cgr.devdirectly, or from a proxied/mirrored registry? - Should the conversion be tested by building and/or running the image?
Backup the Dockerfile
Before modifying, back up the original by prepending old. to the filename:
Dockerfile -> old.Dockerfile
Then modify the original file directly.
Migration Strategy
- Use
analyze_dockerfileto understand the current structure - Use
convert_dockerfilefor automated conversion - Review and correct the output using the guidance below
- Explain each change and its security benefit
Image Mapping
| Original | Chainguard Image | Notes |
|---|---|---|
python:* |
cgr.dev/ORGANIZATION/python |
Use -dev for build stages |
node:* |
cgr.dev/ORGANIZATION/node |
Use -dev for npm/yarn install |
golang:* |
cgr.dev/ORGANIZATION/go + static:latest |
Build with go, run in static |
nginx:* |
cgr.dev/ORGANIZATION/nginx |
Drop-in replacement |
postgres:* |
cgr.dev/ORGANIZATION/postgres |
Compatible |
redis:* |
cgr.dev/ORGANIZATION/redis |
Compatible |
ruby:* |
cgr.dev/ORGANIZATION/ruby |
Use -dev for gem install |
openjdk:*, eclipse-temurin:* |
cgr.dev/ORGANIZATION/jdk (build) / jre (runtime) |
|
maven:* |
cgr.dev/ORGANIZATION/maven |
|
php:* |
cgr.dev/ORGANIZATION/php |
Use -dev for composer |
ubuntu:*, debian:* |
cgr.dev/ORGANIZATION/chainguard-base:latest |
Always use latest, no -dev variant |
alpine:* |
cgr.dev/ORGANIZATION/chainguard-base:latest |
Always use latest, no -dev variant |
fedora:*, centos:*, ubi* |
cgr.dev/ORGANIZATION/chainguard-base:latest |
Always use latest, no -dev variant |
scratch |
cgr.dev/ORGANIZATION/static:latest |
For fully static binaries |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 193 lines · 18 tokens per session scan C d5fb3636e7f9
dockerfile-migrator is a skill published in the GitHub repository chainguard-demo/claude-plugins (7 stars, last pushed 4mo ago), licensed Apache-2.0. It adds 18 tokens to every session and 1,880 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
build-mcpb
This skill should be used when the user wants to "package an MCP server", "bundle an MCP", "make an MCPB", "ship a local MCP server", "distribute a local MCP", discusses ".mcpb files", mentions bundling a Node or Python runtime with their MCP server, or needs an MCP server that interacts with the local filesystem…
escaping-hardened-containers
Escape containers that drop capabilities, enforce seccomp profiles, and run behind AppArmor or SELinux — enumerating residual capabilities, analyzing seccomp filters, abusing single-capability escapes, cgroup release agents, filesystem mounts, and runtime CVEs. Use when a container has no --privileged flag but retains…
opencode-sandbox
Run OpenCode in a docker-dev sandbox (SSH/gh on by default; --no-ssh/--no-github to isolate). Prints docker exec attach; kept until you confirm rm. Don't use for opencode.ai (opencode-runner), Herdr, or the app.
pentest-cloud-infrastructure
Cloud security posture management and container security assessment for AWS, Azure, GCP, and Kubernetes.
configure-log-aggregation
Set up centralized log aggregation with Loki and Promtail (or ELK stack), including log parsing, label extraction, retention policies, and integration with metrics for correlation. Use when consolidating logs from multiple services into a searchable system, replacing local log files with centralized queryable storage…
hermes-diagnostic-review
Use when running a read-only diagnostic review of recent Hermes sessions to find recurring mistakes, failed tool calls, and repeated fixes, then propose suggestion-only improvements and reusable skills. Human-gated; never auto-applies.