skills/quick-plan/SKILL.md
"/quick-plan", "quick plan", "태스크 플래닝", "작업 계획", "세션 플래닝", "plan tasks", "what should we do", "작업 정리", "DAG 짜줘", "병렬로 돌리자", "팀 모드로 하자", "에이전트 배치"
npx skillsauth add team-attention/hoyeon quick-planInstall 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.
Take user's session goals and produce an optimized execution plan that maximizes parallelism.
Run a lightweight codebase scan to improve touch zone accuracy and discover verification commands.
IF user's goals involve code changes (likely type: dev tasks):
Agent(subagent_type="code-explorer",
prompt="Find: project structure, key directories, test/lint/build commands (package.json scripts, Makefile, etc.), and files related to [user's goal areas]. Report as file:line format.")
→ Store results for Phase 5 (tool discovery) and Phase 9 (context.research merge)
IF goals are purely non-code (research, analysis, documentation):
→ Skip discovery entirely
Cost: ~10-15 seconds for 1 agent. Benefit: touch zones reference real files, verification commands auto-discovered.
Break goals into atomic tasks. Each task must be:
Sweet spot: 3-8 tasks per session. Prefer fewer larger tasks over many tiny ones.
For each task determine:
Build a DAG. Minimize sequential depth — maximize parallel width.
For each task, identify its touch zone — the files and modules it will modify.
Output an overlap matrix in Phase 7 if any overlaps were found.
Even when tasks are orthogonal in code, agents benefit from shared context.
For each task, determine:
Patterns:
Rule: Code changes = orthogonal, Information = shared.
Decide between two modes:
| | Agent spawn (default) | Team mode | |---|---|---| | Pattern | Fan-out/fan-in | Persistent agents | | Communication | Orchestrator relays results | Agents message each other directly | | Task discovery | Static (all known upfront) | Dynamic (new tasks found during execution) | | Agent lifecycle | Spawn → result → done | Spawn → work → idle → pick up next task |
Rule: Orchestrator relay sufficient → agent-spawn. Agents need direct communication → team.
For each task, perform priority-based tool discovery by scanning skill and agent directories in order:
Scan order (highest priority first):
${baseDir}/.claude/skills/ and ${baseDir}/.claude/agents/
{project_root}/.claude/skills/ and {project_root}/.claude/agents/
{project_root} = directory containing the project's CLAUDE.md~/.claude/skills/ and ~/.claude/agents/general-purposeMatching logic per task:
Assignment rules:
| Match result | task.tool | task.type |
|---|---|---|
| Skill found | /skill-name (e.g., /bugfix) | plain (unless skill does code changes → dev) |
| Agent found | agent-subtype (e.g., worker) | dev if code changes, else plain |
| Code changes needed, no match | worker | dev |
| No code changes, no match | general-purpose | plain |
type inference heuristics:
dev: task modifies source files, writes code, runs tests → requires dev pipelineplain: task reads, analyzes, documents, or invokes a skill that handles its own executionGroup tasks into parallel rounds:
For each round specify:
isolation: "worktree" (code changes that might conflict)Output the complete plan in this format:
## Task Breakdown
1. **{task-name}**: {description} → Done when: {condition} | Touch: `{files/dirs}`
2. ...
## Dependency DAG
{ASCII diagram}
## Overlap Matrix (if any)
| Task A | Task B | Shared files | Resolution |
|--------|--------|-------------|------------|
| 1 | 3 | types.ts | Serialize (1→3) |
## Context Sharing
| Round | Agent | Receives context from |
|-------|-------|----------------------|
| 2 | C | A's output summary |
## Coordination Mode
mode: agent-spawn | team
rationale: {one-line reason}
## Agent Mapping
| # | Task | Tool | Type | Source | Rationale |
|---|------|------|------|--------|-----------|
| 1 | ... | worker | dev | default | ... |
## Execution Plan
### Round 1 (Parallel)
- Agent A: {task} — no dependencies | context: sibling summary
- Agent B: {task} — no dependencies | context: sibling summary
### Round 2 (After Round 1)
- Agent C: {task} — needs results from A | context: A's output + sibling summary
## Estimated Parallelism
- Total tasks: N
- Sequential depth: M rounds
- Max parallel width: K agents
After presenting the plan, proceed immediately to Phase 8 (do NOT wait for approval).
Ask user via AskUserQuestion:
The plan is ready. What would you like to do?
1. Execute — generate spec.json and run /execute immediately
2. Revise plan — let me know what you'd like to change
3. Discuss further — let me know if anything needs more review
Only runs when user explicitly chooses to execute.
SESSION_ID="[session ID from UserPromptSubmit hook]"
SESSION_DIR="$HOME/.hoyeon/$SESSION_ID"
SPEC_PATH="$SESSION_DIR/spec.json"
Determine the plan type based on task composition from Phase 5:
type: dev → use --type dev (dev pipeline with worktree isolation)type: plain → use --type plain (lightweight skill-only pipeline)hoyeon-cli spec init {plan-name} --goal "{user's goal}" --type dev|plain --schema v1 ${SPEC_PATH}
{plan-name}: derive from user's goal (kebab-case, max 30 chars).
Before merging tasks, generate lightweight requirements from the task breakdown. Each task's "Done when" condition becomes a requirement with one sub-requirement.
Rules:
{ "id": "R1.1", "behavior": "Config file validates on load", "given": "Config file exists with valid YAML", "when": "Application starts", "then": "Config is parsed without errors" }⚠️ Merge Convention: All
spec merge --json '...'examples below show JSON inline for readability. In practice:
- Always run
hoyeon-cli spec guide <section>before constructing merge JSON to verify field names and types- Always use file-based passing: write JSON to
/tmp/spec-merge.jsonvia<< 'EOF'heredoc, then pass via--json "$(cat /tmp/spec-merge.json)", thenrm /tmp/spec-merge.json- On merge failure: run
spec guide <failed-section>, fix JSON to match schema, retry once
# 1. Check field structure
hoyeon-cli spec guide requirements
# 2. Construct JSON with requirements.id, requirements.behavior, requirements.sub[]
# Each sub-requirement needs: id, behavior
# Optional GWT fields: given (precondition), when (action), then (expected outcome)
# Example sub: { "id": "R1.1", "behavior": "Login rejects invalid credentials",
# "given": "User is on login page", "when": "User submits wrong password", "then": "Error message shown and login denied" }
# 3. Merge via file-based passing
cat > /tmp/spec-merge.json << 'EOF'
{ "requirements": [ ... ] }
EOF
hoyeon-cli spec merge ${SPEC_PATH} --json "$(cat /tmp/spec-merge.json)" && rm /tmp/spec-merge.json
This ensures:
fulfills[] in tasks reference real requirement IDs for behavior verificationMerge the context gathered during planning. Content is type-aware:
# 1. Check field structure
hoyeon-cli spec guide context
# 2. Construct JSON with context fields:
# - confirmed_goal: user's confirmed goal statement
# - decisions: key planning decisions (id, decision, rationale)
# - known_gaps: assumptions and unknowns as string array
# IF any task has type: dev → also include context.research (string array of key findings)
# 3. Merge via file-based passing
cat > /tmp/spec-merge.json << 'EOF'
{ "context": { "confirmed_goal": "...", "decisions": [...], "known_gaps": [...], "research": [...] } }
EOF
hoyeon-cli spec merge ${SPEC_PATH} --json "$(cat /tmp/spec-merge.json)" && rm /tmp/spec-merge.json
known_gaps to always capture (at minimum):
These known_gaps give /execute triage context when things go wrong.
Merge all tasks in a single call — this replaces the placeholder T1 from spec init.
Do NOT call merge per task (without --append, each call overwrites the previous tasks array).
# 1. Check field structure
hoyeon-cli spec guide tasks
# 2. Construct JSON with all tasks in a single array
# Each task needs: id, action, type, status, depends_on, fulfills
# Optional: tool (dispatch hint for plain mode — skill name like /bugfix or agent subtype like worker)
# Acceptance criteria = sub-req behaviors (+ GWT fields when available) from fulfills[] (Worker reads requirements directly)
# 3. Merge ALL tasks in one call via file-based passing
cat > /tmp/spec-merge.json << 'EOF'
{ "tasks": [ { "id": "T1", ... }, { "id": "T2", ... } ] }
EOF
hoyeon-cli spec merge ${SPEC_PATH} --json "$(cat /tmp/spec-merge.json)" && rm /tmp/spec-merge.json
Map from plan:
action (include implementation steps inline in the action description)fulfills[] (requirement IDs) → sub-req behaviors (+ GWT fields when available) as acceptance criteriadepends_ontool (from Phase 5 discovery, optional — used for plain mode dispatch)After all tasks are merged, check for sandbox sub-requirements and generate infra + verification tasks:
# Auto-generates T_SANDBOX (infra prep) + T_SV1~N (per-sub-requirement verification) tasks
# No-ops if no execution_env: sandbox sub-requirements exist
hoyeon-cli spec sandbox-tasks ${SPEC_PATH}
This command scans all sub-requirements for execution_env: "sandbox" and automatically creates the required infra and per-sub-requirement verification tasks with correct depends_on wiring.
Update the session state to point to the generated spec:
hoyeon-cli session set --sid $SESSION_ID --spec "$SPEC_PATH"
hoyeon-cli spec validate ${SPEC_PATH}
If validation fails, fix and retry once.
Output: spec.json generated: ${SPEC_PATH}
Then invoke the /execute skill to begin execution.
/execute skill after spec.json generationdevelopment
Run a full implementation verification pass after code or data changes. Use when the user asks to verify, QA, smoke test, run checks, validate a feature, inspect a local app in the browser, capture screenshots, or turn discovered QA issues into regression tests/checklists with user approval.
development
Hoyeon execution workflow for Codex. Use when the user invokes "$hoyeon-execute" or wants to execute a Hoyeon plan.json through the Bash-first Codex adapter. This adapter loads the canonical execute skill and follows its Codex runtime surface.
development
Plan-driven orchestrator. Reads plan.json (from /blueprint) or requirements.md, then dispatches workers to build the system. Use when: "/execute", "execute", "plan 실행", "blueprint 실행"
testing
"/clarify", "clarify this", "keep asking until clear", "remove ambiguity", "clarify requirements", "clarify design", "clarify the plan", "질문 계속해", "모호한 게 없게", "명확해질 때까지", "계속 물어봐", "Q&A로 정리", "질문답변 기록", "요구사항 명확화", "설계 명확화". Relentless ambiguity-resolution interview that records Q&A under .hoyeon/clarify/<topic>/ and hands off to specify/blueprint/docs when clear.