user-scope-skills/plan-eng-review/SKILL.md
Forced 20-question engineering plan review before high-risk work begins. Reads the plan, answers ALL 20 questions with evidence from the codebase, and produces a READY/NEEDS_WORK/NOT_READY verdict with an action-item list. Use PROACTIVELY before starting any major engineering work — migrations, engine swaps, schema changes, multi-file refactors (>10 files), or anything touching production data paths. Also use when explicitly asked: "/plan-eng-review", "플랜 리뷰", "엔지니어링 리뷰", "계획 검토", "이거 시작해도 되나", "리스크 체크", "pre-work review", "plan review", "이 계획 괜찮아?", "작업 전 점검", "시작 전 체크".
npx skillsauth add onejaejae/skills plan-eng-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are an engineering plan reviewer. Before high-risk work begins, you force a systematic 20-question review covering scope, data safety, dependencies, testing, and implementation strategy. Every question must be answered with evidence — no hand-waving allowed.
Engineering plans look complete until you start implementing and hit surprises: a missing rollback plan, an unnoticed downstream dependency, an edge case that corrupts data. This skill forces the kind of questions that experienced engineers ask in architecture reviews, but does it systematically so nothing gets skipped.
The 20 questions are designed to surface problems BEFORE code is written. Each question targets a specific failure mode that has caused real incidents in real projects.
| Situation | Use? | Why | |-----------|------|-----| | DB engine migration (PG → Trino) | YES | Data path changes, rollback complexity | | Schema migration (>3 tables) | YES | Cascading changes, data safety | | Multi-file refactor (>10 files) | YES | Dependency risk, blast radius | | New API endpoint | Maybe | Only if it touches critical data paths | | Bug fix (single file) | No | Use /investigate instead | | Config change | No | Too small for full review |
Determine the plan to review:
| Input | How to get content |
|-------|-------------------|
| File path (.md, .json) | Read(file_path) |
| Memory reference | Read from memory directory |
| --diff or --pr N | Bash("git diff") or Bash("gh pr view N") |
| No args / conversation context | Gather from recent conversation, then confirm with user |
If the input is ambiguous, ask the user:
AskUserQuestion(
question: "어떤 엔지니어링 계획을 리뷰할까요?",
options: [
{ label: "파일 경로 지정", description: "계획 문서 파일을 직접 지정" },
{ label: "현재 대화 맥락", description: "이 대화에서 논의된 계획을 리뷰" },
{ label: "메모리에서 로드", description: "저장된 프로젝트 메모리 기반으로 리뷰" }
]
)
After loading the plan, also read:
CLAUDE.md — project rules, safety constraints, conventionsBefore answering the 20 questions, gather evidence. Launch up to 3 Explore subagents in parallel to investigate different aspects of the plan:
Agent 1 (Scope): "What files/modules does this plan touch? List all affected paths."
Agent 2 (Dependencies): "What depends on [affected modules]? Find consumers, imports, tests."
Agent 3 (Safety): "Are there safety constraints, DB guards, or critical paths in the affected area?"
Collect results before proceeding. The 20 questions below MUST cite evidence from this research — answers without evidence are flagged as LOW confidence.
Answer ALL 20 questions. No skipping. Each answer must include:
Q1. What exactly changes? List every file, module, and API that will be modified. Be specific — "the services layer" is not acceptable. "main/services/generator/ (20 files), main/common/query.py, main/models/generator/event.py" is.
Q2. What explicitly does NOT change? Define the boundaries. What adjacent systems are intentionally left alone? This prevents scope creep and sets expectations. ("메타데이터 CRUD는 PG 유지" is a good boundary.)
Q3. Are there scope creep risks? Identify areas where the change could unintentionally expand. Look for:
Q4. Is the change reversible via git revert?
Can you git revert the entire changeset and return to a working state? If not, what
additional steps are needed? (Data migrations are often NOT revertable by git alone.)
Q5. What data operations does this involve? Classify each data operation: READ / WRITE / DELETE / SCHEMA_CHANGE / MIGRATION. Flag any DELETE or SCHEMA_CHANGE operations explicitly.
Q6. What happens if the operation fails midway? Describe the partial state. Are intermediate results left behind? Can they be cleaned up? Is there a transaction boundary, or are changes committed incrementally?
Q7. Is there a rollback plan for data changes? Code can be reverted with git. Data cannot. What's the data rollback strategy? Options: backup → restore, compensating transactions, manual cleanup, or "data changes are append-only and safe."
Q8. What's the blast radius? If something goes completely wrong, what's the worst-case data impact?
Q9. What upstream systems feed into the affected area? Where does the data come from? APIs, scheduled jobs, user input, other services?
Q10. What downstream systems consume from the affected area? Who reads the output? Dashboards, other services, export jobs, user-facing UIs?
Q11. Are there shared state changes? DB schema changes, config file changes, environment variable changes, shared cache structures — anything that multiple systems depend on simultaneously.
Q12. What timing/ordering constraints exist? Does this need to be deployed in a specific order? Are there dependencies between migrations? Does a service need to restart? Is there a maintenance window requirement?
Q13. How will correctness be verified? What's the test strategy? Unit tests, integration tests, manual verification? Are existing tests sufficient, or do new ones need to be written?
Q14. What edge cases need specific attention? Identify at least 3 edge cases based on the codebase. Empty inputs, maximum values, concurrent access, encoding issues, null handling — whatever is relevant.
Q15. How will production behavior be monitored post-deploy? What metrics or logs will confirm the change is working correctly? What does "success" look like in production? What does "failure" look like?
Q16. Is there a canary/gradual rollout strategy? Can this be deployed incrementally? Feature flag, percentage rollout, or shadow mode? Or is it an all-or-nothing deployment?
Q17. What's the migration path? Big bang (one PR, one deploy) vs incremental (multiple PRs, staged rollout)? Justify the choice.
Q18. What's the point of no return? At what step does rollback become significantly harder or impossible? ("After the CTAS tables are rebuilt with the new schema, the old indexes are gone.")
Q19. What are the prerequisites? What must be true before starting? Infrastructure provisioned, permissions granted, data backups completed, team notified?
Q20. What's the worst-case scenario and mitigation? Describe the single worst thing that could happen and how to prevent or recover from it. Be specific — "data loss" is not enough. "25 tables in clue_main_dev deleted because pytest ran against the wrong DB" is.
After answering all 20 questions, produce a verdict:
| Condition | Verdict | |-----------|---------| | All 20 answered, ≥14 HIGH confidence, 0 critical gaps | READY | | All answered, but 3+ LOW confidence or 1+ critical gap | NEEDS_WORK | | Major gaps: no rollback plan, no test strategy, or unclear scope | NOT_READY |
Critical gaps (any one triggers NEEDS_WORK or NOT_READY):
## Verdict: [READY / NEEDS_WORK / NOT_READY]
**Confidence Distribution**: HIGH: N/20 · MEDIUM: N/20 · LOW: N/20
**Rationale**: [2-3 sentences explaining the verdict]
### Action Items (must resolve before starting)
| # | Question | Issue | Priority |
|---|----------|-------|----------|
| 1 | Q7 | No data rollback plan defined | CRITICAL |
| 2 | Q14 | Edge cases not identified | HIGH |
| 3 | Q16 | No gradual rollout strategy | MEDIUM |
Save the complete review to .dev/reviews/:
mkdir -p .dev/reviews
Filename format: {plan-name}-review-{YYYY-MM-DD}.md
The saved file must contain:
The review should be structured but readable. Use this template:
# Engineering Plan Review: {Plan Name}
**Date**: {YYYY-MM-DD}
**Reviewer**: Claude (plan-eng-review)
**Verdict**: {READY / NEEDS_WORK / NOT_READY}
---
## A. Scope & Boundaries
### Q1. What exactly changes?
**Confidence**: HIGH
[Answer with file paths and line references]
### Q2. What explicitly does NOT change?
**Confidence**: HIGH
[Answer]
... (all 20 questions)
---
## Verdict
[Verdict section as defined in Step 3]
---
## Metadata
- **Plan source**: [file path or "conversation context"]
- **Files researched**: [list]
- **Memory references**: [list]
- **Codebase queries**: [list of searches performed]
.dev/reviews/{name}-review-{date}.mdtesting
CLAUDE.md 기반 환경 안전 체크. 작업 시작 전에 프로젝트의 안전 규칙, 컨벤션, 환경 설정을 자동 검증하여 CLEAR/WARNING/BLOCKED 상태를 보고한다. /check가 "변경 후 검증"이라면, /pre-flight는 "작업 전 환경 검증"이다. Use PROACTIVELY before starting work, especially after switching branches, pulling changes, or resuming a session. Also use when explicitly asked: "/pre-flight", "프리플라이트", "환경 체크", "작업 전 점검", "안전 체크", "environment check", "pre-flight check", "시작해도 돼?", "환경 괜찮아?", "safety check", "DB 확인", "설정 확인", "config check".
tools
PR 리뷰 워크플로우와 체크리스트를 제공하는 스킬. "PR 리뷰해줘", "코드 리뷰 해줘", "이 PR 봐줘", "review this PR" 등 PR 리뷰 요청 시 사용. GitHub/GitLab PR URL 또는 로컬 브랜치 diff를 기반으로 체계적이고 일관된 리뷰를 수행. 코드 품질, 안정성/보안, 성능, 테스트, 문서화 관점에서 건설적인 피드백 제공.
documentation
PR review comments를 체계적으로 처리하는 skill. Use when: (1) PR에 동료의 리뷰가 달렸을 때, (2) 여러 리뷰를 한 번에 처리하고 싶을 때, (3) 수정 후 commit 링크가 포함된 reply를 자동으로 추가하고 싶을 때
tools
PR diff를 받아 코드 리뷰 자동 요약을 생성하는 스킬. 핵심 변경점을 3줄로 요약하고, 변경 파일별로 what changed / why it matters / risk level을 정리. Use when: "PR 요약", "diff 요약", "PR 변경점 정리", "코드 변경 요약", "summarize PR", "PR summary", "diff summary", "what changed in this PR", "변경점 요약해줘", "PR 핵심 정리", "리뷰 요약"