dockerfile-optimizerlisted
Install: claude install-skill basejb/skills
# Dockerfile Optimizer
Dockerfile을 분석하고 빌드 속도·이미지 크기·보안·배포 안정성 관점에서 개선안을 제안한다. 사용자가 명시 승인하기 전까지 어떤 파일도 만지지 않는다.
## When to Use
다음 발화에서 발동:
**explicit (의도=optimize 기본):**
- "Dockerfile 점검/리뷰/분석/최적화/봐줘"
- "도커파일 검사"
- "Dockerfile 개선"
**resource (의도=optimize):**
- "이미지 크기 줄여줘"
- "도커 이미지 작게"
- "빌드 느려" / "Docker 빌드 캐시 안 먹혀"
**security (의도=security):**
- "도커 보안 점검"
- "root 사용 경고"
- "컨테이너 보안 감사"
- "이미지에 시크릿 있나"
**review-only 의도 키워드:**
- "리뷰만", "점검만", "분석만" → 적용 흐름 생략
CWD 또는 사용자가 지정한 경로에 `Dockerfile*`이 존재해야 한다. 없으면 "Dockerfile을 찾을 수 없습니다"로 종료. 자동 생성 금지.
## Workflow
### [1] 컨텍스트 수집
- Glob: `**/Dockerfile*`, `**/docker-compose*.y*ml`, `**/.dockerignore`
- 의도 분류: `review` / `optimize` / `security`
### [2] 다중 파일 디스앰비귀에이션
Dockerfile이 2개 이상이면 AskUserQuestion으로 선택받는다 (전체 / 특정 1개 / 특정 다중).
### [3] 스택 감지
`Bash(scripts/detect-stack.sh <dockerfile-dir>)` 호출. 출력 JSON 파싱:
```json
{
"language": "node|python|go",
"package_manager": "npm|pnpm|yarn|pip|poetry|uv|go",
"has_native_deps": true|false,
"framework_hint": "nestjs|nextjs|express|fastify|fastapi|django|flask|unknown"
}
```
`has_native_deps=true`면 ImageSize 룰 DFO-SIZE-002 (alpine 추천)을 **비활성화**한다.
### [4] 룰 엔진
Dockerfile을 라인별로 읽고, 4개 룰 카테고리 references를 적용:
- `references/rules-security.md` — DFO-SEC-001 ~ 008 (8개)
- `references/rules-performance.md` — DFO-PERF-001 ~ 005 (5개)
- `references/rules-image-size.md` — DFO-SIZE-001 ~ 005 (5개)
- `references/rules-reliability.md` — DFO-REL-001 ~ 006 (6개)
각 룰의 Detection 섹션에 따라 매