Token导航 LogoToken导航

Agent Skill · 开发

writing-dockerfiles(writing dockerfiles 部署)

用于辅助云资源、部署、容器、基础设施和运维自动化任务。它适合让 Agent 检查配置、整理部署步骤、分析资源状态、生成排障思路或辅助云服务接入。使用时需要明确目标环境、账号权限、区域和资源组,区分本地测试与生产操作;涉及删除资源、重启服务、修改网络或权限配置时,应先确认影响范围。

writing-dockerfiles 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描有未通过项,按安装量在开发类的 21,746 个 Skill 里排第 13,774。

总安装 824周安装 34GitHub Stars 350下载 269核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:writing-dockerfiles(writing dockerfiles 部署)
来源仓库:https://github.com/ancoleman/ai-design-components
仓库路径:skills/writing-dockerfiles
安装命令:
npx skills add https://github.com/ancoleman/ai-design-components --skill writing-dockerfiles
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/ancoleman/ai-design-components --skill writing-dockerfiles

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

用于辅助云资源、部署、容器、基础设施和运维自动化任务。适合检查配置、整理部署步骤、分析资源状态或生成排障思路。需要明确目标环境、账号权限、区域和资源组。writing-dockerfiles 属于开发类 Skill,可作为该场景下的辅助能力补充。涉及删除资源、重启服务时应先确认影响范围。

安装方式:通过 GitHub 仓库添加技能。

来源仓库内路径:skills/writing-dockerfiles

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ancoleman/ai-design-components --skill writing…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

writing-dockerfiles 怎么安装?

在终端执行 npx skills add https://github.com/ancoleman/ai-design-components --skill writing-dockerfil…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

writing-dockerfiles 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

writing-dockerfiles 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

writing-dockerfiles 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

writing-dockerfiles 用的人多吗?

公开数据是累计安装 824 次,近一周安装 34 次,下载 269 次,GitHub 350 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

writing-dockerfiles 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
writing-dockerfiles

writing dockerfiles 部署 · 本页

824350需要联网MIT未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Writing Dockerfiles

Create production-grade Dockerfiles with multi-stage builds, security hardening, and language-specific optimizations.

When to Use This Skill

Invoke when:

  • "Write a Dockerfile for [Python/Node.js/Go/Rust] application"
  • "Optimize this Dockerfile to reduce image size"
  • "Use multi-stage build for..."
  • "Secure Dockerfile with non-root user"
  • "Use distroless base image"
  • "Add BuildKit cache mounts"
  • "Prevent secrets from leaking in Docker layers"

Quick Decision Framework

Ask three questions to determine the approach:

1. What language?

  • Python → See references/python-dockerfiles.md
  • Node.js → See references/nodejs-dockerfiles.md
  • Go → See references/go-dockerfiles.md
  • Rust → See references/rust-dockerfiles.md
  • Java → See references/java-dockerfiles.md

2. Is security critical?

  • YES → Use distroless runtime images (see references/security-hardening.md)
  • NO → Use slim/alpine base images

3. Is image size critical?

  • YES (<50MB) → Multi-stage + distroless + static linking
  • NO (<500MB) → Multi-stage + slim base images

Core Concepts

Multi-Stage Builds

Separate build environment from runtime environment to minimize final image size.

Pattern:

# Stage 1: Build
FROM build-image AS builder
RUN compile application

# Stage 2: Runtime
FROM minimal-runtime-image
COPY --from=builder /app/binary /app/
CMD ["/app/binary"]

Benefits:

  • 80-95% smaller images (excludes build tools)
  • Improved security (no compilers in production)
  • Faster deployments
  • Better layer caching

Base Image Selection

Decision matrix:

LanguageBuild StageRuntime StageFinal Size
Go (static)golang:1.22-alpinegcr.io/distroless/static-debian1210-30MB
Rust (static)rust:1.75-alpinescratch5-15MB
Pythonpython:3.12-slimpython:3.12-slim200-400MB
Node.jsnode:20-alpinenode:20-alpine150-300MB
Javamaven:3.9-eclipse-temurin-21eclipse-temurin:21-jre-alpine200-350MB

Distroless images (Google-maintained):

  • gcr.io/distroless/static-debian12 → Static binaries (2MB)
  • gcr.io/distroless/base-debian12 → Dynamic binaries with libc (20MB)
  • gcr.io/distroless/python3-debian12 → Python runtime (60MB)
  • gcr.io/distroless/nodejs20-debian12 → Node.js runtime (150MB)

See references/base-image-selection.md for complete comparison.

BuildKit Features

Enable BuildKit for advanced caching and security:

export DOCKER_BUILDKIT=1
docker build .
# OR
docker buildx build .

Key features:

  • --mount=type=cache → Persistent package manager caches
  • --mount=type=secret → Inject secrets without storing in layers
  • --mount=type=ssh → SSH agent forwarding for private repos
  • Parallel stage execution
  • Improved layer caching

See references/buildkit-features.md for detailed patterns.

Layer Optimization

Order Dockerfile instructions from least to most frequently changing:

# 1. Base image (rarely changes)
FROM python:3.12-slim

# 2. System packages (rarely changes)
RUN apt-get update && apt-get install -y build-essential

# 3. Dependencies manifest (changes occasionally)
COPY requirements.txt .
RUN pip install -r requirements.txt

# 4. Application code (changes frequently)
COPY . .

# 5. Runtime configuration (rarely changes)
CMD ["python", "app.py"]

BuildKit cache mounts:

RUN --mount=type=cache,target=/root/.cache/pip \
    pip install -r requirements.txt

Cache persists across builds, eliminating redundant downloads.

Security Hardening

Essential security practices:

1. Non-root users

# Debian/Ubuntu
RUN useradd -m -u 1000 appuser && chown -R appuser:appuser /app
USER appuser

# Alpine
RUN adduser -D -u 1000 appuser && chown -R appuser:appuser /app
USER appuser

# Distroless (built-in)
USER nonroot:nonroot

2. Secret management

# ❌ NEVER: Secret in layer history
RUN git clone https://${GITHUB_TOKEN}@github.com/private/repo.git

# ✅ ALWAYS: BuildKit secret mount
RUN --mount=type=secret,id=github_token \
    TOKEN=$(cat /run/secrets/github_token) && \
    git clone https://${TOKEN}@github.com/private/repo.git

Build with:

docker buildx build --secret id=github_token,src=./token.txt .

3. Vulnerability scanning

# Trivy (recommended)
trivy image myimage:latest

# Docker Scout
docker scout cves myimage:latest

4. Health checks

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost:8080/health || exit 1

See references/security-hardening.md for comprehensive hardening patterns.

.dockerignore Configuration

Create .dockerignore to exclude unnecessary files:

# Version control
.git
.gitignore

# CI/CD
.github
.gitlab-ci.yml

# IDE
.vscode
.idea

# Testing
tests/
coverage/
**/*_test.go
**/*.test.js

# Build artifacts
node_modules/
dist/
build/
target/
__pycache__/

# Environment
.env
.env.local
*.log

Reduces build context size and prevents leaking secrets.

Language-Specific Patterns

Python Quick Reference

Three approaches:

  1. pip (simple) → Single-stage, requirements.txt
  2. poetry (production) → Multi-stage, virtual environment
  3. uv (fastest) → 10-100x faster than pip

Example: Poetry multi-stage

FROM python:3.12-slim AS builder
RUN --mount=type=cache,target=/root/.cache/pip \
    pip install poetry==1.7.1

COPY pyproject.toml poetry.lock ./
RUN poetry export -f requirements.txt --output requirements.txt

RUN --mount=type=cache,target=/root/.cache/pip \
    python -m venv /opt/venv && \
    /opt/venv/bin/pip install -r requirements.txt

FROM python:3.12-slim
COPY --from=builder /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
USER 1000:1000
CMD ["python", "-m", "uvicorn", "main:app", "--host", "0.0.0.0"]

See references/python-dockerfiles.md for complete patterns and examples/python-fastapi.Dockerfile.

Node.js Quick Reference

Key patterns:

  • Use npm ci (not npm install) for reproducible builds
  • Multi-stage: Build stage → Production dependencies only
  • Built-in node user (UID 1000)
  • Alpine variant smallest (~180MB vs 1GB)

Example: Express multi-stage

FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm \
    npm ci
COPY . .
RUN npm run build
RUN npm prune --omit=dev

FROM node:20-alpine
WORKDIR /app
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/dist ./dist
USER node
CMD ["node", "dist/index.js"]

See references/nodejs-dockerfiles.md for npm/pnpm/yarn patterns and examples/nodejs-express.Dockerfile.

Go Quick Reference

Smallest possible images:

  • Static binary (CGO_ENABLED=0) + distroless = 10-30MB
  • Strip symbols with -ldflags="-s -w"
  • Cache both /go/pkg/mod and build cache

Example: Distroless static

FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN --mount=type=cache,target=/go/pkg/mod \
    go mod download

COPY . .
RUN --mount=type=cache,target=/go/pkg/mod \
    --mount=type=cache,target=/root/.cache/go-build \
    CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o main .

FROM gcr.io/distroless/static-debian12
COPY --from=builder /app/main /app/main
USER nonroot:nonroot
ENTRYPOINT ["/app/main"]

See references/go-dockerfiles.md and examples/go-microservice.Dockerfile.

Rust Quick Reference

Ultra-small static binaries:

  • musl static linking → No libc dependencies
  • scratch base image (0 bytes overhead)
  • Final image: 5-15MB

Example: Scratch base

FROM rust:1.75-alpine AS builder
RUN apk add --no-cache musl-dev
WORKDIR /app

# Cache dependencies
COPY Cargo.toml Cargo.lock ./
RUN --mount=type=cache,target=/usr/local/cargo/registry \
    mkdir src && echo "fn main() {}" > src/main.rs && \
    cargo build --release --target x86_64-unknown-linux-musl && \
    rm -rf src

# Build application
COPY src ./src
RUN --mount=type=cache,target=/usr/local/cargo/registry \
    cargo build --release --target x86_64-unknown-linux-musl

FROM scratch
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/app /app
USER 1000:1000
ENTRYPOINT ["/app"]

See references/rust-dockerfiles.md and examples/rust-actix.Dockerfile.

Package Manager Cache Mounts

BuildKit cache mount locations:

LanguagePackage ManagerCache Mount Target
Pythonpip--mount=type=cache,target=/root/.cache/pip
Pythonpoetry--mount=type=cache,target=/root/.cache/pypoetry
Pythonuv--mount=type=cache,target=/root/.cache/uv
Node.jsnpm--mount=type=cache,target=/root/.npm
Node.jspnpm--mount=type=cache,target=/root/.local/share/pnpm/store
Gogo mod--mount=type=cache,target=/go/pkg/mod
Rustcargo--mount=type=cache,target=/usr/local/cargo/registry

Persistent caches eliminate redundant package downloads across builds.

Validation and Testing

Validate Dockerfile quality:

# Lint Dockerfile
python scripts/validate_dockerfile.py Dockerfile

# Scan for vulnerabilities
trivy image myimage:latest

# Analyze image size
docker images myimage:latest
docker history myimage:latest

Compare optimization results:

# Before optimization
docker build -t myapp:before .

# After optimization
docker build -t myapp:after .

# Compare
bash scripts/analyze_image_size.sh myapp:before myapp:after

See scripts/validate_dockerfile.py for automated Dockerfile linting.

Integration with Related Skills

Upstream (provide input):

  • testing-strategies → Test application before containerizing
  • security-hardening → Application-level security before Docker layer

Downstream (consume Dockerfiles):

  • building-ci-pipelines → Build and push Docker images in CI
  • kubernetes-operations → Deploy containers to K8s clusters
  • infrastructure-as-code → Deploy containers with Terraform/Pulumi

Parallel (related context):

  • secret-management → Inject runtime secrets (K8s secrets, vaults)
  • observability → Container logging and metrics collection

Common Patterns Quick Reference

1. Static binary (Go/Rust) → Smallest image

  • Build: Language-specific builder image
  • Runtime: gcr.io/distroless/static-debian12 or scratch
  • Size: 5-30MB

2. Interpreted language (Python/Node.js) → Production-optimized

  • Build: Install dependencies, build artifacts
  • Runtime: Same base, production dependencies only
  • Size: 150-400MB

3. JVM (Java) → Optimized runtime

  • Build: Maven/Gradle with full JDK
  • Runtime: JRE-only image (alpine variant)
  • Size: 200-350MB

4. Security-critical → Maximum hardening

  • Base: Distroless images
  • User: Non-root (nonroot:nonroot)
  • Secrets: BuildKit secret mounts
  • Scan: Trivy/Docker Scout in CI

5. Development → Fast iteration

  • Base: Full language image (not slim)
  • Volumes: Mount source code
  • Hot reload: Language-specific tools
  • Not covered in this skill (see Docker Compose docs)

Anti-Patterns to Avoid

❌ Never:

  • Use latest tags (unpredictable builds)
  • Run as root in production
  • Store secrets in ENV vars or layers
  • Install unnecessary packages
  • Combine unrelated RUN commands (breaks caching)
  • Skip.dockerignore (bloated build context)

✅ Always:

  • Pin exact image versions (python:3.12.1-slim, not python:3)
  • Create and use non-root user
  • Use BuildKit secret mounts for credentials
  • Minimize layers and image size
  • Order commands from least to most frequently changing
  • Create.dockerignore file

Additional Resources

Base image registries:

  • Google Distroless: gcr.io/distroless/*
  • Docker Hub Official: python:*, node:*, golang:*
  • Red Hat UBI: registry.access.redhat.com/ubi9/*

Vulnerability scanners:

  • Trivy (recommended): trivy image myimage:latest
  • Docker Scout: docker scout cves myimage:latest
  • Grype: grype myimage:latest

Reference documentation:

  • references/base-image-selection.md → Complete base image comparison
  • references/buildkit-features.md → Advanced BuildKit patterns
  • references/security-hardening.md → Comprehensive security guide
  • Language-specific references in references/ directory
  • Working examples in examples/ directory

平台分布

OpenCode

30.76%
按下载量换算83

Gemini CLI

21.36%
按下载量换算57

Antigravity

16.1%
按下载量换算43

Claude Code

11.11%
按下载量换算30

github-copilot

7.66%
按下载量换算21

roo

3.58%
按下载量换算10

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。

继续浏览同类 Skills