Skill 詳細
dockerfile-validator
Useful container security and quality specialty, but limited to Dockerfile review.
使用前に確認
自動レビューは関連性のみを確認し、安全性や推奨を保証しません。使用前に出典の説明を読んでください。
SKILL.md
これはレビュー時に保存された抜粋です。完全で最新の内容は外部ソースを確認してください。
--- name: dockerfile-validator description: Validate, lint, audit, or scan a Dockerfile for security and best practices. --- # Dockerfile Validator Validate Dockerfiles with deterministic stages, clear severity reporting, and explicit fallbacks when tools or network access are constrained. ## Trigger Phrases Use this skill when the user asks for tasks like: - "validate this Dockerfile" - "lint/check my Dockerfile" - "security scan Dockerfile" - "optimize Docker image size/build time" - "review Dockerfile before merge" - "find issues in Dockerfile.prod/Dockerfile.dev" ## Use / Do Not Use Use this skill for: - Syntax and lint validation - Security and secrets checks - Best-practice and performance review - Dockerfile hardening before CI/CD or production Do not use this skill for: - Generating a new Dockerfile from scratch (use `dockerfile-generator`) - Running containers, debugging runtime behavior, or image registry operations ## Local Files In This Skill - Validator script: `scripts/dockerfile-validate.sh` - References: - `references/security_checklist.md` - `references/optimization_guide.md` - `references/docker_best_practices.md` - Example Dockerfiles: `examples/*.Dockerfile` ## Deterministic Execution Flow (Required) Run these steps in order. Do not skip steps unless a documented fallback branch applies. ### 1. Preflight and Path Setup Assume repo root as working directory: ```bash cd /path/to/repo SKILL_DIR="devops-skills-plugin/skills/dockerfile-validator" TARGET_DOCKERFILE="Dockerfile" # replace when user provides a path ``` Validate inputs before running tools: ```bash test -f "$SKILL_DIR/scripts/dockerfile-validate.sh" test -f "$TARGET_DOCKERFILE" ``` If either check fails, stop and report the exact missing path. ### 2. Read the Target Dockerfile Explicitly Use explicit file-read commands (not abstract "Read tool" wording): ```bash sed -n '1,220p' "$TARGET_DOCKERFILE" ``` If needed for long files: ```bash sed -n '220,440p' "$TARGET_DOCKERFILE" ``` ### 3. Run Validation Script Primary command: ```bash bash "$SKILL_DIR/scripts/dockerfile-validate.sh" "$TARGET_DOCKERFILE" ``` Optional captured run for structured reporting: ```bash bash "$SKILL_DIR/scripts/dockerfile-validate.sh" "$TARGET_DOCKERFILE" | tee /tmp/dockerfile-validator.out ``` ### 4. Classify Findings by Severity (Standard) Use this standard severity model: - `Critical` - Hardcoded secrets/credentials - Explicit root runtime with high-risk context - High-impact security policy failures - `High` - Checkov failures for container hardening - hadolint errors likely to cause insecure/unreliable builds - Missing or unsafe runtime-user posture (`USER`) - `Medium` - `:latest` image tags, missing pinning, cache-cleanup misses - Build cache inefficiency and layered install anti-patterns - `Low` - Style/info guidance and non-blocking optimization suggestions ### 5. No-Issue Fast Path (Required) If validation has no actionable findings: - Return a concise pass summary. - Do **not** open reference files. - Do **not** generate fix diffs. Use fast path when all are true: - Script reports overall pass. - No security failures. - No error/warning findings requiring user action. ### 6. Reference Loading Rules (Only When Findings Exist) Only read references that match actual findings. Read each required file once. Issue-to-reference mapping: | Issue category | Trigger examples | Read this file | |---|---|---| | Secrets, root user, exposed sensitive ports, hardening gaps | `CKV_DOCKER_*`, hardcoded token/password, root runtime | `references/security_checklist.md` | | Image size, layer count, multi-stage opportunities, cache efficiency, `.dockerignore` gaps | too many `RUN`, single-stage with build deps, cache misses | `references/optimization_guide.md` | | Tag pinning, instruction usage, COPY vs ADD, WORKDIR/CMD/ENTRYPOINT conventions | `:latest`, unpinned packages, instruction-level best practices | `references/dockerGitHub で全文を読む (外部ページ)