user-scope-skills/execute/SKILL.md
Spec-driven orchestrator that reads spec.json via cli, routes by meta.type, and dispatches agents/skills accordingly. spec.json-native execution (no PLAN.md). Use when: "/execute", "execute", "실행해줘", "스펙 실행"
npx skillsauth add onejaejae/skills executeInstall 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 the conductor. You do not play instruments directly.
Delegate to worker agents or skills, manage parallelization.
All task data comes from spec.json via hoyeon-cli spec plan.
| Skill | Purpose | When to pick | |-------|---------|-------------| | /execute | Spec-driven orchestrator: reads spec.json, dispatches workers by meta.type | You already have a spec.json and want automated execution | | /ralph | DoD-based iterative loop with Stop-hook re-injection | Single task, no spec.json, need verified-done guarantee | | /quick-plan | Lightweight spec generation + immediate execution | Feature request, want fast spec + execute in one shot | | /specify | Deep iterative interview + spec generation (no execution) | Complex feature needing thorough requirements before execution | | /ultrawork | Multi-session pipeline (specify then execute) | Large feature spanning multiple sessions | | /bugfix | Diagnose root cause, generate spec, delegate to /execute | Bug report — need diagnosis before fixing |
run_in_background: true.hoyeon-cli spec commands.Resolve spec path in priority order:
SESSION_ID="[session ID from UserPromptSubmit hook]"
1) IF arg looks like a path (contains "/" or ends with ".json"):
spec_path = arg (use as-is)
2) IF arg is a feature name (e.g. "auth-login"):
spec_path = ".dev/specs/{arg}/spec.json"
3) No arg: session state (path registered by quick-plan, specify, etc.)
hoyeon-cli session get --sid $SESSION_ID
→ if state.spec field exists, spec_path = state.spec
If none found → error: "spec.json not found. Please generate one first with /specify or /quick-plan."
STOP — do not proceed past Phase 0.
Verify spec file exists and is structurally valid before proceeding:
# File existence check
IF spec_path file does not exist on disk:
print("ERROR: spec.json not found at {spec_path}.")
print("Generate one first with /specify or /quick-plan.")
STOP — do not proceed past Phase 0.
# Schema validation
validate_output = Bash("hoyeon-cli spec validate {spec_path} 2>&1")
IF exit_code != 0:
print("ERROR: spec.json validation failed:")
print(validate_output)
print("Fix the spec and re-run /execute.")
STOP — do not proceed past Phase 0.
# Internal consistency check
check_output = Bash("hoyeon-cli spec check {spec_path} 2>&1")
IF exit_code != 0:
print("WARNING: spec.json consistency check found issues:")
print(check_output)
print("Proceeding — will re-check at end.")
Read spec.meta.type (default "dev" if absent):
meta_type = spec.meta.type ?? "dev"
# Validate meta.type is a known value
IF meta_type NOT IN ["dev", "plain"]:
print("ERROR: Unknown meta.type '{meta_type}'. Expected 'dev' or 'plain'.")
STOP — do not proceed past Phase 0.
plan_text = Bash("hoyeon-cli spec plan {spec_path}")
plan_json = Bash("hoyeon-cli spec plan {spec_path} --format slim 2>&1")
# Guard: parse plan JSON safely
IF plan_json exit_code != 0 OR plan_json is empty:
print("ERROR: hoyeon-cli spec plan failed:")
print(plan_json)
STOP — do not proceed past Phase 0.
plan = JSON.parse(plan_json)
IF plan.rounds is not an array OR plan.rounds is undefined:
print("ERROR: spec plan returned unexpected structure (missing rounds array).")
print("Raw output: {plan_json}")
STOP — do not proceed past Phase 0.
Display plan_text to user. Filter out already-done tasks:
FOR EACH round in plan.rounds:
round.tasks = round.tasks.filter(t => t.status != "done")
plan.rounds = plan.rounds.filter(r => r.tasks.length > 0)
CONTEXT_DIR=".dev/specs/{name}/context"
mkdir -p "$CONTEXT_DIR"
First run (no context files):
learnings.md (empty — workers will append)issues.md (empty — workers will append)audit.md (empty — orchestrator will append)Resume (context files exist):
Pre-work items are human tasks that must be completed before execution begins.
pre_work = spec.external_dependencies.pre_work ?? []
IF len(pre_work) == 0:
print("Pre-work: none found, skipping")
ELSE:
print("Pre-work items (human actions required before execution):")
FOR EACH item in pre_work:
print(" - [{item.id ?? ''}] {item.dependency}: {item.action} (blocking={item.blocking})")
FOR EACH item in pre_work WHERE item.blocking == true:
AskUserQuestion(
question: "Have you completed this pre-work? → {item.action}",
options: [
{ label: "Done", description: "I've completed this" },
{ label: "Skip", description: "Proceed without this (may cause failures)" },
{ label: "Abort", description: "Stop execution — I need to do this first" }
]
)
IF answer == "Abort": HALT
After Phase 0, route based on meta_type:
Read: ${baseDir}/references/dev.md
Follow ALL instructions in dev.md for task execution, verification, and finalization.
dev.md owns: Worker/Verify/Commit chain, triage, adaptation, code-review, Final Verify, WORKER_DESCRIPTION, VERIFY_DESCRIPTION, and mode selection (quick/standard).
Read: ${baseDir}/references/plain.md
Follow ALL instructions in plain.md for task execution and finalization.
plain.md owns: flexible dispatch (direct/Skill/Agent), Final Verify, and report.
| Error | Recovery |
|-------|----------|
| spec.json file not found on disk | Print path + guidance ("Generate one with /specify or /quick-plan"). STOP |
| hoyeon-cli spec validate fails | Print validation errors, ask user to fix spec.json. STOP |
| hoyeon-cli spec plan returns empty rounds | Print "No actionable tasks found". STOP |
| meta.type is unknown value | Print "Unknown meta.type '{value}'. Expected 'dev' or 'plain'." STOP |
| Pre-work "Abort" selected | HALT immediately with message |
| Session ID missing ($CLAUDE_SESSION_ID unset) | Warn user, proceed without session state (no resume support) |
| Error | Recovery |
|-------|----------|
| hoyeon-cli spec check fails mid-execution | Log to audit.md, continue (check again at end) |
| Worker task crashes (non-zero exit) | Record failure in audit.md, proceed to triage per dev.md (standard) or HALT (quick/plain) |
| Worker agent timeout (no response) | Treat as crash — record "TIMEOUT" in audit.md, same recovery path as crash |
| Worker returns malformed output (unparseable JSON) | Log raw output to audit.md, treat as FAILED with reason "malformed output — could not parse worker result" |
| hoyeon-cli spec plan --format slim returns unparseable JSON | Print raw CLI output as diagnostic, HALT with "CLI returned unexpected output" |
| hoyeon-cli spec task update fails | Log to audit.md, retry once. If still fails, HALT |
Inspired by /tribunal's degraded-mode pattern. When an agent fails:
IF agent returns empty OR errors OR times out:
1. Record failure: append to audit.md with agent type, task_id, error details
2. Mark tracking task: TaskUpdate(taskId, status="cancelled", reason="agent failure")
# Dev mode (standard): attempt recovery
IF depth == "standard":
IF agent_type == "worker":
reconcile(task_id, {status: "FAILED", reason: "agent crash/timeout"}, attempt=0)
ELIF agent_type == "verify":
# Skip verification, proceed to commit with warning
log_to_audit("DEGRADED: Verify skipped for {task_id} due to agent failure")
TaskUpdate(verify_taskId, status="completed")
# Commit proceeds — Final Verify will catch issues
ELIF agent_type == "code-reviewer":
log_to_audit("DEGRADED: Code review skipped due to agent failure")
TaskUpdate(cr, status="completed")
# Final Verify still runs
# Dev mode (quick) or plain mode: no recovery
ELSE:
HALT with "Agent failure for {task_id}. No recovery in {mode} mode."
spec plan, spec task, spec merge, spec checkrun_in_background: true for round-parallel workerssession-compact-hook.sh re-injects skill name + state.json path; use hoyeon-cli spec plan to rebuild task statehoyeon-cli spec plan executed and shown to usermeta.type read (defaulted to "dev" if absent)status: "done" (via hoyeon-cli spec task)hoyeon-cli spec check passes at endtesting
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 핵심 정리", "리뷰 요약"