원클릭으로
planning
Planning work in small, known-good increments. Use when starting significant work or breaking down complex tasks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Planning work in small, known-good increments. Use when starting significant work or breaking down complex tasks.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Apply template-downstream to all registered downstream projects in bulk, one project at a time. Use when you want to push the latest .claude/, .mcp.json, or .pre-commit-config.yaml to every project at once. Triggers on: "일괄 배포", "전체 프로젝트에 내려보내기", "모든 프로젝트 업데이트", "broadcast template", "bulk sync".
The standard business voice for any Korean text a human reads — a formal-yet-friendly business register built on 해요체 but elevated with 합니다/습니다 endings, polite recommendation phrasing, natural greetings/closings, and readable structure. Use whenever producing or rewriting reader-facing text: Telegram replies, reports, READMEs, job outputs, human-facing notes, and especially when rewriting raw TIL/technical notes for sharing with colleagues. Triggers: 비즈니스 톤, business voice, 격식 있는 톤, 동료 공유용 재작성, formal rewrite, 보고서 톤, 발표자료 톤.
한국 특화 기능(교통·날씨·부동산·쇼핑·법률·금융·공공데이터 등) 요청이 들어오면 실행. git pull로 최신화 후 README 레지스트리에서 스킬을 골라 해당 SKILL.md만 읽어 진행한다.
Import Dev Sentinel experiences into localdocs/learn.sentinel.md. Use when the user wants to bring gotchas, failure lessons, or struggle experiences captured by Dev Sentinel into the project's local knowledge base. Triggers: "sentinel 가져와", "sentinel import", "gotcha 정리", "경험 가져와", "sentinel에서 배운 것", "실패 경험 가져와".
Update .claude/, .mcp.json, and .pre-commit-config.yaml from the upstream python-project-template repository into the current project. Only files that exist upstream are updated — project-only files are never deleted. Use when pulling latest tooling, rules, hooks, or skills from the canonical template into this project. Triggers on: "템플릿 최신화", "template sync", "upstream 반영", "template 업데이트".
Review proposal files in localdocs/localdocs/proposals/ and decide whether to apply them to the upstream python-project-template repository. Use when evaluating proposals generated by template-upstream, deciding which ones to accept or reject, and applying accepted ones to the template repo. Triggers on: "proposal 검토", "제안 검토", "template에 반영할지", "proposals 리뷰", "upstream 반영 결정".
| name | planning |
| description | Planning work in small, known-good increments. Use when starting significant work or breaking down complex tasks. |
All work must be done in small, known-good increments. Each increment leaves the codebase in a working state where all tests pass.
Document Management:
localdocs/plan.<topic>.mdlocaldocs/backlog.<topic>.mdworklog skill (localdocs/worklog.todo.md, localdocs/worklog.doing.md, localdocs/worklog.done.md)localdocs/learn.<topic>.mdplanning skill at planning time (before implementation starts).progress-guardian to track progress/learning snapshots and step-by-step status.tdd-guardian.For significant work, maintain one long-term plan, worklog files, and a learning note:
| Document | Purpose | Lifecycle |
|---|---|---|
localdocs/backlog.<topic>.md | Future ideas before planning | Optional, persistent |
localdocs/plan.<topic>.md | What we're doing | Created at start, changes need approval |
localdocs/worklog.todo.md | Pending phase/session tasks | Persistent |
localdocs/worklog.doing.md | In-progress phase/session tasks | Persistent |
localdocs/worklog.done.md | Completed phase/session log | Persistent |
localdocs/learn.<topic>.md | Learning notes / gotchas / decisions | Scoped to a topic; merged into CLAUDE.md/ADR, kept as reference |
`localdocs/plan.<topic>.md` (static) `worklog.todo/doing/done` (execution log) `localdocs/learn.<topic>.md` (learning notes)
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Goal │ │ Current step │ │ Gotchas │
│ Acceptance │ ──► │ Status │ ──► │ Patterns │
│ Steps 1-N │ │ Blockers │ │ Decisions │
│ (approved) │ │ Next action │ │ Edge cases │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ │ │
└─────────────────────────┴─────────────────────────┘
│
▼
END OF FEATURE
│
┌─────────────┴─────────────┐
│ │
▼ ▼
Keep worklog logs Merge learnings into:
- CLAUDE.md (`learn` agent)
- ADRs (`adr` agent)
Keep learn files as reference
Before breaking work into increments, you MUST complete three steps in order: declare the work stage, verify technical assumptions, then probe for implementation unknowns.
This phase catches two sources of wasted effort:
Ask the user to declare the stage before anything else. If already stated, confirm it.
| Stage | Plan depth | Code quality | Exit criteria |
|---|---|---|---|
| SPIKE | Hypothesis + exit criteria only | Working only | Hypothesis pass/fail confirmed |
| MVP | Core flow + key edge cases | Basic test coverage | Core user scenario passes |
| PROD | Full spec (clients, compatibility) | TDD + docs | Deployable quality |
If stage is SPIKE:
# SPIKE: [hypothesis] — delete after validation comment to all SPIKE codeIf no stage is declared, default to PROD.
Before the interview, use WebSearch to verify any external dependency the plan will rely on. Do not rely on training knowledge for fast-moving ecosystems.
Always verify when the work involves:
Output: Before the interview begins, state:
Verified: [what was confirmed via search, with source]
Unverified / TBD: [what couldn't be confirmed — flag as risk in plan]
If verification reveals a blocker or significant risk, surface it before proceeding to the interview.
With stage declared and assumptions verified, clarify what to build before addressing how.
Stage branching:
| Stage | grill-me | user-story.md | BDD pytest |
|---|---|---|---|
| SPIKE | ✅ questions only | ❌ | ❌ |
| Architecture | ✅ questions only | ❌ | ❌ |
| MVP | ✅ | ✅ user writes | ✅ user writes |
| PROD | ✅ | ✅ user writes | ✅ user writes |
Execution — SPIKE / Architecture:
Run grill-me to reach shared understanding. Stop when the user confirms no more open questions. No written artifacts required.
Execution — MVP / PROD:
grill-me skill to probe requirements until shared understanding is reached.localdocs/user-story.*.md: Wait for the user to write the file. Do not write it for them.tests/: Wait for the user to write failing tests. Do not generate them.localdocs/plan.<topic>.md, explicitly name the user-story.*.md file in the Goal section.Claude behavior rules during Phase 0-BDD:
❌ Do NOT:
user-story.*.md directly✅ DO:
grill-me styleThe user types "이제 쓸게" or equivalent → switch immediately to waiting mode.
Bypass: If the user types exactly 삐약삐약 저는 코딩 병아리입니다. (lit. "Cheep cheep, I'm a coding chick.") in the chat, grill-me still runs as normal, but Claude generates the complete user-story.*.md and BDD pytest file directly instead of waiting for the user to write them.
With stage declared, technical assumptions verified, and requirements specified, probe for implementation-specific unknowns. Use AskUserQuestion.
When to run this interview:
localdocs/plan.<topic>.mdInterview Protocol:
Interview Dimensions (implementation-focused):
Anti-Patterns:
Each step MUST:
If you can't describe a step in one sentence, break it down further.
Too big if:
Right size if:
Every step follows RED-GREEN-REFACTOR.
FOR EACH STEP:
│
├─► RED: Write failing test FIRST
│ - Test describes expected behavior
│ - Test fails for the right reason
│
├─► GREEN: Write MINIMUM code to pass
│ - No extra features
│ - No premature optimization
│ - Just make the test pass
│
├─► REFACTOR: Assess improvements
│ - See `refactoring` skill
│ - Only if it adds value
│ - All tests still pass
│
└─► STOP: Wait for commit approval
No exceptions. No "I'll add tests later."
NEVER commit without user approval.
After completing a step (RED-GREEN-REFACTOR):
localdocs/worklog.doing.md with progressworklog skill (todo → doing → done)localdocs/learn.<topic>.md when discoveredOnly proceed with commit after explicit approval.
localdocs/plan.<topic>.md Structure# Plan: [Feature Name]
## Goal
[One sentence describing the outcome]
**User story reference**: `localdocs/user-story.<topic>.md` *(MVP/PROD only — omit for SPIKE)*
## Acceptance Criteria
- [ ] Criterion 1
- [ ] Criterion 2
- [ ] Criterion 3
## Steps
### Step 1: [One sentence description]
**Test**: What failing test will we write?
**Implementation**: What code will we write?
**Done when**: How do we know it's complete?
### Step 2: [One sentence description]
**Test**: ...
**Implementation**: ...
**Done when**: ...
If the plan needs to change:
Plans are not immutable, but changes must be explicit and approved.
worklog StructureUse the worklog skill as the source of truth for:
localdocs/worklog.todo.mdlocaldocs/worklog.doing.mdlocaldocs/worklog.done.mdDo not maintain separate manual templates for these files in planning docs.
Update localdocs/worklog.doing.md:
If localdocs/worklog.doing.md doesn't reflect reality, update it immediately.
localdocs/worklog.done.mdAppend-only execution history grouped by date. Update via worklog done ....
Don't wait until the end. When you discover something:
localdocs/worklog.done.md via worklog done ...localdocs/learn.<topic>.md Structure# Learnings: [Feature Name]
## Gotchas
- [What happened and why]
## Patterns
- [What worked and when to apply]
## Decisions
- [Decision + rationale + trade-offs]
When all steps are complete:
learn agent (gotchas/patterns → CLAUDE.md), adr agent (decisions → ADR)localdocs/plan.<topic>.md (keep worklog and learn files)❌ Committing without approval
❌ Steps that span multiple commits
❌ Writing code before tests
❌ Letting localdocs/worklog.doing.md become stale
❌ Confusing worklog and learning docs
learn/adr capture lasting knowledge❌ Putting future ideas directly into plan
localdocs/backlog.<topic>.md❌ Plans that change silently
❌ Deleting worklog files
START FEATURE
│
├─► Phase 0-A: Declare stage (SPIKE / MVP / PROD)
│ └─► If SPIKE: capture hypothesis + exit criteria
├─► Phase 0-B: Technical feasibility check (WebSearch)
│ └─► State verified / unverified assumptions before proceeding
├─► Phase 0-BDD: Requirements specification
│ ├─► [SPIKE/Architecture] grill-me questions → shared understanding only
│ └─► [MVP/PROD]
│ ├─► grill-me questions until no open requirements
│ ├─► user writes localdocs/user-story.*.md
│ ├─► user writes tests/test_*.py (BDD failing tests)
│ └─► (Claude waits — does NOT generate these artifacts)
├─► Phase 0-C: Pre-implementation interview (AskUserQuestion)
│ └─► Continue until no new unknowns emerge
├─► Create `localdocs/plan.<topic>.md` with user-story ref (get approval)
├─► worklog todo ← each step from the plan
├─► worklog doing ← first step (do this immediately, without waiting to be asked)
│
│ FOR EACH STEP:
│ │
│ ├─► RED: Failing test
│ ├─► GREEN: Make it pass
│ ├─► REFACTOR: If valuable
│ ├─► worklog done ← completed step (do this immediately when done)
│ ├─► worklog doing ← next step (do this immediately after done)
│ └─► **WAIT FOR COMMIT APPROVAL**
│
END FEATURE
│
├─► Verify all criteria met
├─► Merge learnings (learn agent, adr agent)
└─► Close/remove only `localdocs/plan.<topic>.md` (keep worklog files)
Call worklog automatically — do not wait for the user to ask.
| Moment | Command |
|---|---|
| Plan approved, first step starts | worklog todo [step2], [step3], ... then worklog doing [step1] |
| Step completes (tests pass) | worklog done [step] |
| Next step begins | worklog doing [next step] |
| Blocker appears | Update worklog.doing.md directly with blocker note |
| Session ends | Ensure worklog.doing.md reflects current reality |