From plan-workflow
Execute full implementation workflow from Claude Code plan file with GitHub integration and design verification. Use for "plan workflow", "execute plan", "계획 워크플로우", "계획 워크플로우 실행", "계획 기반 구현" requests.
How this skill is triggered — by the user, by Claude, or both
Slash command
/plan-workflow:plan-workflowThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Execute full implementation workflow from Claude Code plan files (`~/.claude/plans/*.md`).
Execute full implementation workflow from Claude Code plan files (~/.claude/plans/*.md).
Features:
gh) authenticated: gh auth statusgh auth refresh -s project,read:projectExecute ALL steps in order. DO NOT skip any step.
Check plan file path from user arguments.
If path provided:
If no path provided:
.md files in ~/.claude/plans/ directory using Glob{
"questions": [
{
"question": "Which plan file to execute?",
"header": "Select Plan",
"multiSelect": false,
"options": [
{
"label": "{plan-file-1.md}",
"description": "Modified: {date}"
},
{
"label": "{plan-file-2.md}",
"description": "Modified: {date}"
}
]
}
]
}
If no files found:
"No plan files found. Use Claude Code plan mode to create a plan first."
Read plan file and extract phases and tasks.
Parsing Rules:
Phase Recognition: ## or ### level headings as phases
## 1., ## Step 1:, ## Phase 1:, ## Task 1:## Overview, ## Summary, ## Notes, ## 검증 방법, ## GitHub 연동, ## 파일 구조Task Recognition:
- [ ] checkbox items (priority)- regular list items (only if no checkboxes exist)#12, #13Skip Completed: Items marked - [x] are skipped
Extract GitHub References:
#12, #13https://github.com/{owner}/{repo}/issues/{number}Extract Design Documents:
검증 문서:, Reference:, docs/검증 문서: 00-overview.md, 02-design-system.mdParsed Result Structure:
phases = [
{
name: "Task 1: #12 프로젝트 초기 설정",
tasks: [
{
description: "디렉토리 구조 정리",
issueNumber: 12,
designDocs: ["docs/frontend/00-overview.md"]
}
],
verificationDocs: ["00-overview.md", "02-design-system.md"]
}
]
Display parsed results:
Plan Parsing Complete
File: {plan-file-path}
Phases: {N}
Total Tasks: {M}
GitHub Issues Found: {list of #numbers}
Design Documents: {list}
Phase 1: {name} ({task_count} tasks) - Issue #{number}
Phase 2: {name} ({task_count} tasks) - Issue #{number}
...
Use AskUserQuestion to confirm execution:
{
"questions": [
{
"question": "Execute this plan?",
"header": "Confirm",
"multiSelect": false,
"options": [
{
"label": "Execute All",
"description": "Execute all phases in order"
},
{
"label": "Select Phases",
"description": "Choose which phases to execute"
}
]
}
]
}
gh repo view --json nameWithOwner,owner -q '.nameWithOwner + " " + .owner.login'
For each issue number found in plan:
gh issue view {number} --json state,title,body,labels
If issues exist and are valid:
If issues don't exist or plan has no issue references:
Use AskUserQuestion:
{
"questions": [
{
"question": "Create GitHub issues for this plan?",
"header": "GitHub",
"multiSelect": false,
"options": [
{
"label": "Create Issues",
"description": "Create Epic and Phase issues on GitHub"
},
{
"label": "Local Only",
"description": "Execute without GitHub integration"
}
]
}
]
}
gh label create "plan" --color "7057ff" --description "Plan-based task" 2>/dev/null || true
gh label create "in-progress" --color "FBCA04" --description "Work in progress" 2>/dev/null || true
gh issue create \
--title "Epic: {Plan Title}" \
--label "plan" \
--body-file {plan-file-path}
For each Phase:
gh issue create \
--title "Phase {N}: {Phase Title}" \
--label "plan" \
--body "## Tasks\n\n{checklist from tasks}"
Update the plan file to include issue references for future runs.
Extract design document paths from plan file:
Search patterns:
검증 문서: followed by file pathsReference: followed by file pathsdocs/ pathsBuild Task → Document Mapping:
Task Mapping:
- Phase 1 Tasks → docs/frontend/00-overview.md, docs/frontend/02-design-system.md
- Phase 2 Tasks → docs/frontend/03-pages/auth.md
For each Phase, execute tasks in order:
# Add label
gh issue edit {phase-issue-number} --add-label "in-progress"
If GitHub Project exists:
gh project item-edit --project-id {project-id} --id {item_id} \
--field-id {status_field} --single-select-option-id {in_progress_id}
Use Task tool to gather context:
subagent_type: Explore
prompt: |
Gather implementation context for this task.
## Task
{task description}
## Design Documents to Read
{mapped design docs}
## Extract
- Specifications and requirements
- Validation rules
- UI/UX patterns
- API contracts
Independent tasks execute in parallel using multiple Task tool calls:
subagent_type: general-purpose
run_in_background: true
prompt: |
Implement the following task.
## Task
{task description}
## Design Specifications
{extracted from design docs}
## Guidelines
- Follow existing code patterns
- Match design specifications exactly
- Implement validation rules
- Run lint and typecheck after changes
IMPORTANT: Multiple independent tasks MUST be executed in parallel with multiple Task calls in a single message.
After implementation, verify against design documents:
subagent_type: general-purpose
prompt: |
Verify implementation against design specifications.
## Design Document
{design doc content}
## Verification Checklist
- [ ] Design specs match (wireframe, layout)
- [ ] Design tokens used correctly (colors, typography)
- [ ] Validation rules implemented
- [ ] Responsive design working
- [ ] Accessibility (keyboard nav, ARIA labels)
## Actions
1. Compare implementation with design specs
2. List discrepancies if any
3. Fix any mismatches
4. Report compliance status (pass/partial/fail)
# If package.json exists
npm run lint
npm run typecheck
npm test
# Or project-appropriate commands
Report and fix any errors.
git add {changed-files}
git commit -m "$(cat <<'EOF'
feat({scope}): {task description}
{detailed changes}
Closes #{issue-number}
EOF
)"
Update the Phase issue body to mark completed tasks:
# Get current body
BODY=$(gh issue view {phase-issue-number} --json body -q '.body')
# Replace - [ ] with - [x] for completed task
# Update issue
gh issue edit {phase-issue-number} --body "{updated body}"
Add completion comment:
gh issue comment {phase-issue-number} --body "## Task Completed: {task name}
Commit: {hash}
Changes: {summary}
Verification: Passed"
When all tasks in a phase are complete:
gh issue edit {phase-issue-number} --remove-label "in-progress"
gh issue close {phase-issue-number} --comment "## Phase Complete
All tasks completed successfully.
Commits: {list}"
gh project item-edit --project-id {project-id} --id {item_id} \
--field-id {status_field} --single-select-option-id {done_id}
Output final summary:
Plan Workflow Complete
File: {plan-file-path}
Repository: {owner}/{repo}
## Summary
- Phases Completed: {N}/{total}
- Tasks Completed: {M}/{total}
- Design Verification: {pass_rate}%
- Failed Tasks: {count}
## Per-Phase Results
- Phase 1: {name} ✓
- Tasks: {completed}/{total}
- Issue: #{number} (closed)
- Phase 2: {name} ✓
...
## Commits
- {short_hash}: {message}
- {short_hash}: {message}
...
## Next Steps
{remaining phases if any, or "All phases complete!"}
Mark completed items in plan file:
- [ ] → - [x]This allows resuming from where you left off in future sessions.
If user selects "Local Only" in Step 4:
gh commands- [ ] → - [x])| Error | Solution |
|---|---|
gh auth failed | Run gh auth login |
| Project scope missing | Run gh auth refresh -s project,read:project |
| Issue not found | Create new issue or continue without |
| Design doc not found | Ask user to specify path |
| Test/lint failure | Report errors, ask to fix or skip |
| Task execution failed | Report, ask to retry or skip |
| Timing | subagent_type | Purpose |
|---|---|---|
| Context gathering | Explore | Read design docs, understand patterns |
| Task execution | general-purpose | Implementation (parallel, run_in_background) |
| Verification | general-purpose | Design compliance check |
| Code review | general-purpose | Quality verification |
npx claudepluginhub junsik/claude-plugins --plugin plan-workflowGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.