원클릭으로
autopilot
Autonomous spec execution with subagents (planner, coder, tester, reviewer).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Autonomous spec execution with subagents (planner, coder, tester, reviewer).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Upgrade DLD framework files from latest template on GitHub.
Autonomous spec execution with subagents (planner, coder, tester, reviewer).
Feature specification and research agent. Multi-agent with 4 scouts. Creates specs in ai/features/.
Feature specification and research agent. Multi-agent with 4 scouts. Creates specs in ai/features/.
Manual QA tester — tests product behavior like a real user, not code. Triggers on keywords: test, QA, check behavior, verify feature, manual testing, протестируй, потыкай, проверь как работает
Systematic code analysis (READ-ONLY). Light mode for focused checks, Deep mode for full forensics with 6 parallel personas.
| name | autopilot |
| description | Autonomous spec execution with subagents (planner, coder, tester, reviewer). |
| model | opus |
Autonomous execution: Plan → Fresh subagent per task → commit → next.
Activation:
autopilot — process all queued specs (interactive)autopilot SPEC_ID — process single spec only (loop mode)autopilot --no-worktree — skip worktree (for tiny fixes only)When called with autopilot TECH-069 (specific SPEC_ID):
This enables autopilot-loop.sh to run overnight with fresh context per spec.
Detection: If first argument matches pattern (TECH|FTR|BUG|ARCH)-\d+, enter loop mode.
PHASE 0: Worktree Setup → worktree-setup.md
└─ CI check → worktree → env copy → baseline
PHASE 1: Plan (ALWAYS) → subagent-dispatch.md
└─ [Plan Agent] opus → re-reads codebase → tasks in spec
PHASE 2: Execute (per task) → task-loop.md
└─ [Coder] sonnet → files
└─ [Tester] sonnet → pass?
└─ fail? → [Debugger] opus (max 3) → escalation.md
└─ PRE-CHECK (deterministic)
└─ [Spec Reviewer] sonnet → approved?
└─ [Code Quality] opus → approved?
└─ COMMIT (no push)
└─ LOCAL VERIFY (if AV section) → warn only
PHASE 3: Finish → finishing.md
└─ Final test → Exa verification → status done → push feature → POST-DEPLOY VERIFY → merge develop → push develop → cleanup
Limits & Escalation: See escalation.md
Safety Rules: See safety-rules.md
| Module | Content |
|---|---|
worktree-setup.md | Git worktree creation, env setup, cleanup |
subagent-dispatch.md | Subagent types, dispatch templates, model routing |
task-loop.md | PHASE 2 execution flow, decision trees after each step |
finishing.md | Pre-done checklist, status sync, merge flow |
escalation.md | Limits, debug/refactor loops, Spark/Council |
safety-rules.md | Forbidden actions, file/test/git safety |
PHASE 0: WORKTREE SETUP
See: worktree-setup.md
PHASE 1: PLAN (ALWAYS — even if spec has plan)
[Plan Subagent] → re-reads codebase → writes/overwrites plan
WHY: specs queued earlier have stale line numbers after prior specs execute
See: subagent-dispatch.md#plan-subagent
PHASE 2: FOR EACH TASK (fresh subagent per task!)
[CODER] → code → files_changed
[TESTER] → Smart Testing
PRE-CHECK → deterministic validation
[SPEC REVIEWER] → Stage 1
[CODE QUALITY] → Stage 2
COMMIT (NO PUSH yet!)
See: task-loop.md (SSOT for execution flow)
PHASE 3: FINISHING
Push feature branch → merge develop → push develop
See: finishing.md
Plan defines WHAT:
Autopilot defines HOW:
For EACH task from plan:
┌─────────────────────────────────────────────────────┐
│ 1. CODER → files_changed │
│ 2. TESTER → Smart Testing │
│ 3. PRE-CHECK → deterministic validation │
│ 4. SPEC REVIEWER (Stage 1) → matches spec? │
│ 5. CODE QUALITY (Stage 2) → architecture ok? │
│ 6. COMMIT (NO PUSH yet!) │
│ 7. LOCAL VERIFY → smoke + functional (warn only) │
└─────────────────────────────────────────────────────┘
SSOT: See task-loop.md for detailed decision trees after each step.
⛔ Skipping any step = VIOLATION
Every PHASE 2 task commit MUST use Conventional Commits with the spec_id in scope:
<type>(SPEC_ID): <imperative description>
type ∈ {feat, fix, chore, docs, refactor, test}; SPEC_ID UPPERCASE inside (), NOT in trailing text.
✅ feat(FTR-1076): add WB API key schemas ✅ fix(BUG-439): restore constraint
❌ feat(billing): ... (FTR-1076 Task 3) ❌ fix(db): ... (BUG-439)
Why: callback gate parses ONLY the scope. Non-compliant subjects cause false demote and burn compute on re-dispatch.
PHASE 3 merge commits: Merge feature/SPEC_ID: … (or autopilot/, fix/) is accepted by gate.
Full rules: .claude/agents/coder.md § Commit Format.
while (queued/resumed tasks in ai/backlog.md):
1. Read backlog → find first queued/resumed (P0 first)
2. (Status written by callback only — do NOT edit spec/backlog Status field)
3. PHASE 0: Worktree Setup
See: worktree-setup.md
4. PHASE 1: Plan (ALWAYS runs)
ALWAYS dispatch Plan Subagent — even if spec has plan
Planner re-reads codebase, validates/regenerates plan
WHY: prior specs changed code → old plans have stale refs
After PHASE 1: plan MUST exist → else blocked
5. PHASE 2: Execute (see task-loop.md for SSOT)
FOR EACH TASK:
a. CODER → files_changed
b. TESTER → pass? (debug loop if fail)
c. PRE-CHECK → deterministic validation
d. SPEC REVIEWER → matches spec?
e. CODE QUALITY → architecture ok?
f. COMMIT (no push)
6. PHASE 3: Finishing
See: finishing.md
7. Continue to next spec
1. Validate SPEC_ID exists in backlog
2. Verify status is queued or resumed (not in_progress!)
3. (Status written by callback only — do NOT edit spec/backlog Status field)
4. PHASE 0-3: Same as interactive (including push in Phase 3!)
5. EXIT (do NOT continue to next spec)
└─ External orchestrator provides fresh context
Why loop mode? Prevents context accumulation. Each spec = fresh Claude session.
Before taking a spec from backlog:
Status: Must be queued or resumed → skip otherwise
Already-implemented detection (BUG-188): Before invoking the Plan Agent,
check whether the spec's ## Allowed Files already have implementation commits.
Algorithm (LLM-driven, run in current session via Bash tool):
a. Read ## Allowed Files from the spec body. Extract every backticked
path under a <!-- callback-allowlist v1 --> marker (canonical) or any
backticked path inside the section (legacy fallback). Mirrors
callback._parse_allowed_files.
b. Get spec file creation time:
SPEC_CREATED=$(git log --reverse --format=%ai -- "ai/features/${SPEC_ID}"*.md | head -1)
c. Check whether any commit since SPEC_CREATED (on any branch) both:
${SPEC_ID} in its subject line (first line) — canonical form,
e.g. feat(BUG-188): ... or BUG-188 ...git log --all --since="$SPEC_CREATED" --pretty="%h %s" -- $ALLOWED_FILES \
| grep -E "^[a-f0-9]+ (feat|fix|chore|docs|refactor|test)?\(?${SPEC_ID}\)?[: ]" \
| head -5
d. If 1+ qualifying commits found → early-exit immediately:
{
"task_status": "complete",
"result_preview": "BUG-188 early-exit: spec already implemented in commits {short_hashes}. No re-execution needed."
}
Why: This mirrors callback._spec_has_merged_implementation (TECH-176)
on the front side so autopilot does not burn 30+ turns re-doing work that
callback would auto-close anyway. Saves ~$5/run × every false-fail retry.
False-skip protection: the subject-line regex requires canonical
<type>(SPEC-ID): or SPEC-ID prefix. Bare mentions in commit body /
cross-references in Refs:/See also: lines do NOT count (TECH-177 lesson).
After PHASE 1 (planner always runs):
## Implementation Planblocked, skip specSkip if status check fails, with warning to user:
SKIP: {TASK_ID}
Status: {current_status} (expected: queued or resumed)
Fix the issue and re-run autopilot.
⛔ Skipping planner = VIOLATION. Planner runs before EVERY spec, no exceptions.
## Problem/Solution ← context
## Scope ← what to do
## Allowed Files ← ONLY these can be modified!
## Implementation Plan ← YOUR TASKS!
### Task 1 ← execute in order
## Definition of Done ← check AFTER all tasks!
Flow: draft → queued → in_progress → done
Recovery: in_progress → blocked → resumed → in_progress
Context accumulates. AUTO-COMPACT after each spec (legacy).
Each spec = fresh Claude session via external orchestrator.
autopilot-loop.sh:
└─ claude "autopilot TECH-065" → fresh context
└─ claude "autopilot TECH-066" → fresh context
└─ claude "autopilot TECH-067" → fresh context
└─ ...
Memory persists via files:
ai/backlog.md — task statusai/diary/autopilot-progress.md — learningsSee: ./scripts/autopilot-loop.sh
.claude/agents/*.md/skill-creator create skill.claude/agents/tester.mdYour final JSON result_preview is sent to the user via Telegram. Keep it concise and actionable:
Что сделано: {1-2 sentence summary of actual changes}
Файлы: {N} изменено
Spec: {SPEC_ID} → done
BAD: "Все функциональные чекбоксы в Definition of Done отмечены как выполненные..." GOOD: "Добавлены кнопки отменить/пауза для кампаний. Файлы: 3 изменено. FTR-0063 → done
The final JSON output MUST include task_status:
{
"task_status": "complete" | "blocked" | "needs_review",
"result_preview": "..."
}
Status field is written by callback only (TECH-172). Autopilot emits task_status in final JSON; never Edits **Status:** in spec or backlog."