feature-loop-orchestrator
기존(브라운필드) 코드베이스용 루프 엔지니어링 하네스 오케스트레이터. 자연어 기능 요청 한 줄을 코드베이스 분석 기반 작업 분해(tasks.json)→baseline 캡처→회귀 안전 개발 루프의 게이트 상태기계로 자율 완주시킨다. "이 기능 추가해줘", "X 리팩토링", "이 코드베이스에 Y 붙여줘" 등 이미 개발 중/완료된 프로젝트의 기능 추가·수정 요청과 /floop-new·/floop-run 커맨드 실행 시 적용. MVP의 검증된 루프 인프라(Stop훅 엔진·maker/checker 반증·가드레일·.planning 메모리)를 재사용하되 입력은 작업 분해, 게이트는 baseline 회귀 방지. 루프 안에서 스택 플러그인·analyze·test·workflow를 호출. 빈/신규 레포의 기획부터 시작하는 그린필드 신규 서비스에는 발동하지 않음 — mvp 플러그인으로 위임한다. Loop-engineering orchestrator for existing (brownfield) codebases: drives a one-line feature request through task decomposition (tasks.json), baseline capture, and a regression-safe gated dev loop, reusing MVP loop infrastructure (Stop-hook engine, maker/checker, guardrails). Use when: 'add this feature', 'refactor X', /floop-new, /floop-run on an existing project — greenfield goes to mvp.
- License 许可
- Apache-2.0
- 最近更新
- 2026-10-29
- Stars
- ★ 1
- Forks
- 0
01 前言 Front Matter
- name
- feature-loop-orchestrator
- description
- 기존(브라운필드) 코드베이스용 루프 엔지니어링 하네스 오케스트레이터. 자연어 기능 요청 한 줄을 코드베이스 분석 기반 작업 분해(tasks.json)→baseline 캡처→회귀 안전 개발 루프의 게이트 상태기계로 자율 완주시킨다. "이 기능 추가해줘", "X 리팩토링", "이 코드베이스에 Y 붙여줘" 등 이미 개발 중/완료된 프로젝트의 기능 추가·수정 요청과 /floop-new·/floop-run 커맨드 실행 시 적용. MVP의 검증된 루프 인프라(Stop훅 엔진·maker/checker 반증·가드레일·.planning 메모리)를 재사용하되 입력은 작업 분해, 게이트는 baseline 회귀 방지. 루프 안에서 스택 플러그인·analyze·test·workflow를 호출. 빈/신규 레포의 기획부터 시작하는 그린필드 신규 서비스에는 발동하지 않음 — mvp 플러그인으로 위임한다. Loop-engineering orchestrator for existing (brownfield) codebases: drives a one-line feature request through task decomposition (tasks.json), baseline capture, and a regression-safe gated dev loop, reusing MVP loop infrastructure (Stop-hook engine, maker/checker, guardrails). Use when: 'add this feature', 'refactor X', /floop-new, /floop-run on an existing project — greenfield goes to mvp.
03 SKILL.md 正文
Feature Loop Orchestrator (브라운필드)
자연어 기능 요청 한 줄을 기존 코드베이스 위에서 회귀 없이 완주시키는 오케스트레이터. Stage A~C 파이프라인을 게이트 기반 상태기계로 관리하고, 각 Stage의 maker/checker를 전문 에이전트에게 위임하며, Stage C는 Stop훅 루프 엔진으로 자율 반복한다.
핵심 명제: "완료 판정은 모델이 아니라 하네스가 한다." 브라운필드 추가 명제: "회귀 없음도 하네스가 baseline 대비로 판정한다."
When to Apply
발동:
- "이 기능 추가해줘", "X 리팩토링해줘", "이 코드베이스에 Y 붙여줘" — 이미 코드가 있는 프로젝트의 기능 추가·수정·리팩토링
- 자연어 요청 + 여러 task로 분해해 반복 구현이 필요할 때
/floop-new(시작),/floop-run(재개) 커맨드 실행 시
미발동 (위임 경계):
- 빈/신규 레포에서 기획(PRD)부터 시작하는 그린필드 신규 서비스 → mvp 플러그인
- 단일 파일 1줄 수정·즉답 가능한 작업 → 루프 불필요, 직접 수행
- 기획 문서/디자인만 단건 작성 → 해당 플러그인 스킬 직접 사용
Architecture
- 패턴: Sequential Pipeline(A~C 상태기계) + Producer-Reviewer(maker/checker) + Regression-Safe Loop(Stage C)
- 실행 모드: Sub-agents — 메인 세션이 오케스트레이터로 TP/FV를
Agent디스패치. Stage C의 maker(FB)는 메인 세션이 규율을 체화해 직접 수행(Stop훅이 메인 세션 종료를 가로채는 구조). - 메모리:
.planning/+ git history = 상태. 매 세션 아티팩트에서 이해 재생성. - MVP 대비 차이: 생성 단계(PRD·디자인·스캐폴딩) 제거. 대신 코드베이스 분석 기반 분해 + baseline 캡처가 입력. 게이트 방향이 "생성 검증"에서 "회귀 방지"로 전환.
Team Members
| ID | 에이전트 파일 | 역할 | 산출물 |
|---|---|---|---|
| TP | agents/task-planner.md |
작업 분해 maker — 코드베이스 분석 → tasks.json. Stage B checker 겸 아님(분해 반증은 FV). BLOCKED 재분해 | .planning/tasks.json 초안 |
| FB | agents/feature-builder.md |
개발 루프 maker(메인 세션 체화) — 미완 task 1개씩 테스트 먼저 → 최소 구현 → 게이트 그린+회귀 0 → FV 검증 후 일괄 커밋 | task별 구현+테스트+feat: T-xx 커밋, progress 갱신 |
| FV | agents/feature-verifier.md |
회의적 checker — task AC 반증 + 회귀 반증(baseline 대조) + 사기 적발 + (선택)analyze 렌즈. Edit 미보유 | 반증 리포트, .planning/verified/{task-id} 마커 |
Orchestration Phases
Stage A: 인테이크 + baseline 캡처 (/floop-new)
- Assigned to: 메인 세션(오케스트레이터)
- Input: 자연어 요청 한 줄 (+
--auto,--gate-cmd,--tasks-max) - Output:
.planning/request.md(원본 불변) + 마스터floop-{id}.md(## Goal 불변) +.planning/gate-cmd+.planning/baseline.json - 동작:
request.md기록 + 마스터 생성.- 스택 자동 감지 → gate-cmd 결정 (
build.gradle*→./gradlew test,pyproject.toml→pytest -q,package.json+next→pnpm test,go.mod→go test ./...). 모호 시 사용자 확인 또는--gate-cmd명시. - baseline 캡처 —
hooks/gates/capture-baseline.sh실행 →baseline.json. baseline red면 기존 실패 수를 1줄 경고(회귀 게이트가 fail_count ≤ N로 동작).
- 게이트: gate-cmd 실행 가능 확인. 사용자 게이트 없음.
Stage B: 작업 분해 (task-planner maker → feature-verifier checker)
- Assigned to: TP(Agent 디스패치) → FV(분해 반증) → 메인 세션 사용자 게이트
- Input:
request.md+ 코드베이스 - Output:
.planning/tasks.json({"tasks":[{"id":"T-01","title","acceptance":[],"passes":false}]}) - 결정론 게이트:
hooks/gates/gate-tasks.sh --initial— jq 스키마 + 개수 2~FLOOP_TASKS_MAX(기본 10) + passes 전건 false - 사용자 게이트 ★G1 — 작업 목록 승인(항상;
--auto면 자동 채택·스탬프): 분해 task 목록 + 영향 파일 + 회귀 위험을 제시하고 승인
TP가 코드베이스를 탐색해 수직 슬라이스로 분해 → FV가 "이 분해가 틀렸다면 왜?"로 반증(범위 비대·검증 불가 AC·회귀 보존 AC 누락) → 근거 있는 반증은 TP가 수정. 분해 표준은 task-decomposition 스킬 참조.
Stage C: 회귀 안전 개발 루프 (feature-builder 체화 → feature-verifier 매 task)
- Assigned to: 메인 세션(FB 규율 체화) → FV(매 task Agent 디스패치)
- Input: 확정 tasks.json + gate-cmd + baseline.json + 게이트 그린 상태의 레포
- Output: 전 task
passes:true+.planning/verified/마커 전건 +progress.md의<promise>FEATURE_COMPLETE</promise>+ task별 커밋 - 게이트: Stop훅 루프 엔진(
hooks/floop-loop-stop-hook.sh)이 매 반복 정지조건 4결합 판정. 사용자 게이트 없음 — 자율, BLOCKED 시만 보고.
Stage C 진입은 항상 /floop-run 절차(loop-active 생성·loop-state.json 초기화)를 경유. 매 반복 표준 사이클: 미완 task 1개 → 테스트 먼저 → 최소 구현(스택 플러그인 활용) → 게이트 그린+회귀 0 → FV 반증 → verified 마커 → passes:true → 커밋 1회. 상세는 floop-loop-protocol 스킬 참조. 완료 후 workflow:shipping-guide로 배포 전 체크를 안내(루프 밖, 보고).
FV 디스패치 규약 — verify-round 상태 파일
task AC·회귀 반증(모드 ②) 디스패치의 오케스트레이터 의무 3가지 — SubagentStop 훅이 이 규약을 결정론 집행한다(마커 없는 verifier 종료를 exit 2 차단, round>=2는 최대 2라운드 규약으로 통과 허용).
- 디스패치 직전:
.planning/verify-round/{task-id}에round=1(maker 수정 후 재검이면round=2) 기록 - 결과 규약: 반증 실패(통과) → FV가
verified/{task-id}생성(기존 규약) / 반증 성공 →refuted/{task-id}에 구체 근거(파일:라인·실행 출력·재현 명령) 기록 - 결과 처리 후:
refuted를 FB 수정 라운드 입력으로 소비하고verify-round/{task-id}를 정리(삭제)한다
훅은 동일 pending 차단을 2회로 제한하고(blocked=N 카운터), 초과 시 스테일로 간주해 verify-round/{task-id}를 자동 정리한다 — verifier 재디스패치 필요.
--cross-check 교차 모델 반증 (opt-in, 기본 off)
/floop-run --cross-check 지정 시 FV 1라운드 반증 실패 후 verified 마커 생성 전에 외부 CLI 교차 반증을 삽입한다 — 외부 반증도 실패해야 마커가 생성된다(마커 사후 제거·refuted 병기 경로 원천 배제).
- 실행: 오케스트레이터가 FV 디스패치 프롬프트에 cross-check 지시를 포함 — FV가 마커 생성 직전 etc:with 라우팅 규약(
which기반 가용성 감지, Codexcodex exec/ Antigravityagy -p)으로 task AC + diff를 외부 CLI에 전달해 독립 반증시킨다. 마커 생성 전 실행이라 SubagentStop 집행과 순서 충돌이 없다. - 외부 반증 성공 시: 마커 미생성 +
refuted/{task-id}에 외부 근거 기록 → FB 수정 후 round=2 재검. 외부 반증에도 '구체 근거 없는 FAIL 금지' 규약이 동일 적용된다(오반증 방지). - 폴백: 외부 CLI 미설치(
which전건 실패) 시 기존 동일 모델 max 2라운드 규약으로 graceful 폴백(1줄 고지).
Loop Control (Stage C) — 정지조건 4결합
판정 주체는 모델이 아니라 Stop훅:
| # | 조건 | 메커니즘 |
|---|---|---|
| ① | 결정론 게이트 | .planning/gate-cmd 동적 로드(LOOP_TEST_CMD 우선) → exit code 우선 AND `jq '[.tasks[].passes] |
| ②ᴿ | baseline 회귀 게이트 | .planning/baseline.json 기준선 대비 신규 실패 0. baseline green→gate green이 곧 회귀 0 / baseline red→현재 fail_count ≤ 기준선. 부재 시 미적용(호환) |
| ② | 회의적 Evaluator | passes:true 전환은 FV의 .planning/verified/{id} 마커 선행 — tasks-guard.sh가 마커 없는 마킹 exit 2 차단 + Stop훅 재검사 |
| ②ᴱ | E2E 수용 게이트(선택) | .planning/e2e-gate-cmd 존재 시 all-passes 도달 시 1회 실행 |
| ③ | Completion promise | progress.md에 <promise>FEATURE_COMPLETE</promise> 정확 문자열(grep -qF) |
종료 허용 = ① ∧ ②ᴿ ∧ ②ᴱ ∧ ③ (②는 ①의 all-passes에 마커 재검사로 인입).
가드레일 5종: max iterations(LOOP_MAX_ITER=24 — 세션 내 실효 8, Stop훅 8블록 오버라이드 실측) · no-progress(실패 시그니처 연속 2회) · 시간 상한(LOOP_MAX_MINUTES=120) · 킬스위치(/floop-stop) · circuit breaker(동일 task 3연속 실패 → skip+BLOCKED). 안전핀: loop-active 없으면 Stop훅 무동작(exit 0).
Gate Policy (자율 통과 + 실패 시만 보고)
| 결과 | 동작 |
|---|---|
| 통과 | 사용자 확인 없이 다음 Stage 자동 진행. 1줄 보고 |
| 실패 | 진행 중단. 실패 Stage·원인·시도·옵션 보고 |
| 모호 | 진행 중단. 불명확 지점 + 권장안 보고 |
사용자 게이트는 정확히 1개: G1 — 작업 목록 승인(Stage B 종료). --auto면 자동 채택·스탬프(해커톤/실험용 1줄 고지).
협업 호출 규약 (루프 안에서 기존 하네스 활용)
| 시점 | 호출 대상 | 용도 |
|---|---|---|
| Stage B 분해 | workflow:planning-guide, workflow:spec-driven-dev |
수직 슬라이싱·task 사이징 |
| Stage C 구현(FB) | 스택 플러그인 *-gen/*-guide(kotlin-spring·python-fastapi·go-mux·nextjs), test:tdd |
스택 자동 감지 후 관용 구현·테스트 먼저 |
| Stage C 검증(FV) | analyze:arch-reviewer·perf-reviewer, backend-shared:security-check |
테스트가 못 잡는 구조·성능·보안 회귀 렌즈 |
| 완료 후 | workflow:shipping-guide, workflow:review-mr |
배포 전 체크·MR 리뷰 |
Agent Dispatch
Agent({
description: "{에이전트명} — {Stage 요약}",
subagent_type: "{agent-id}",
prompt: "{읽어야 할 .planning 파일 경로, 코드베이스 탐색 범위, 산출물 작성 경로,
통과할 게이트 기준(gates/*.sh 판정 항목). checker에는 '반증 실패 시 통과,
반증에는 구체 근거' + baseline.json 회귀 대조를 명시. 출력 형식 지정.}"
})
Completion Criteria
- [ ]
tasks.json전 taskpasses:true(jq all-passes 그린) - [ ] 모든
passes:truetask에.planning/verified/{task-id}마커 존재 - [ ]
gate-cmd최종 1회 독립 재실행 exit 0 - [ ] baseline 회귀 0 — 현재 실패 수 ≤
baseline.json기준선 - [ ] (E2E 적용 시)
e2e-gate-cmd최종 exit 0 - [ ]
progress.md에<promise>FEATURE_COMPLETE</promise>정확 문자열 - [ ] task별
feat: T-xx커밋이 git log에 존재 - [ ] 마스터
floop-{id}.mdstatus: done+ ## Gates에 G1 승인 스탬프 - [ ]
loop-active삭제 확인 - [ ] 최종 보고: 완료 task n/m, 핵심 커밋, 회귀 0 확인, 잔여 리스크, 배포 전 체크 안내
Error Handling
| 상황 | 대응 |
|---|---|
게이트 실패 (gates/*.sh exit≠0) |
Stage 중단. 실패 항목·원인·옵션 보고. maker 수정 후 /floop-gate 재판정 |
| 회귀 감지 (②ᴿ exit 2) | 루프가 재주입 — FB가 신규 실패를 구현 수정으로 0 복구(기존 테스트 수정 금지) |
| no-progress (동일 실패 2회) | 루프 종료 + BLOCKED.md 기록 후 보고 |
| 시간 상한 초과 | 현 반복 완료 후 종료. /floop-run 재개 방법 보고 |
| circuit breaker (동일 task 3연속 실패) | skip + BLOCKED 기록, 다음 task |
| BLOCKED 에스컬레이션 | 스코프 결함 → TP 재분해 / 구조 한계 → 스택 플러그인 가이드 참조·사용자 보고 |
loop-active 잔존 |
/floop-status가 감지·수동 해제(rm .planning/loop-active) |
| 테스트 삭제 시도 | test-guard.sh exit 2 차단 |
Boundaries
Will:
- Stage A~C 상태기계 관리, 게이트 판정 위임·결과 보고
- TP/FV 디스패치와 Producer-Reviewer 라운드 관리
- Stage C 루프 가동·가드레일 집행·BLOCKED 라우팅
- baseline 캡처·회귀 게이트 운영,
.planning/메모리·재개 프로토콜 유지 - 루프 안에서 스택 플러그인·analyze·test·workflow 협업 호출
Will Not:
- 게이트 검증 없이 다음 Stage 진행
- 사용자 게이트(G1 작업 목록)를
--auto없이 자율 통과 - FV의 verified 마커 없이
passes:true마킹(tasks-guard 차단) - 그린필드 신규 서비스 기획(mvp 위임)·실제 운영 배포·인프라 프로비저닝
04 同仓库更多 Skills
sync-claude-md
커밋·푸시·PR/MR 직전에 이번 변경이 프로젝트 CLAUDE.md 를 낡게 만드는지 검토하고, 필요할 때만 갱신 diff 를 제안한다 — 아키텍처·디렉터리 구조, 새 통합/MCP, 컨벤션, 빌드·CI·도구, 주요 의존성 변화가 대상. 해당 없으면 한 줄로 끝낸다. Reviews whether pending changes make the project CLAUDE.md stale (architecture, integrations, conventions, build/CI/tooling, major dependencies) and proposes a minimal update diff only when needed. Use when: "CLAUDE.md 갱신 필요해?", "CLAUDE.md 동기화", 커밋/푸시/MR 전에 구조·도구가 바뀐 변경을 정리할 때, sync CLAUDE.md, check CLAUDE.md before commit or PR.
spec-driven-dev
새 기능·프로젝트·큰 변경을 코드보다 스펙 먼저로 진행하는 게이트 워크플로(SPECIFY → PLAN → TASKS → IMPLEMENT) — 가정 명시, 측정 가능한 성공 기준, Always/Ask/Never 경계, 단계별 사람 검토로 범위 이탈과 재작업을 줄인다. Spec-before-code gated workflow for new features or significant changes: explicit assumptions, measurable success criteria, boundaries, and a human review between stages. Use when: "스펙 먼저", "기능 명세", "요구사항 정리", starting a new feature or project, a significant change with vague requirements. 단순 버그 수정·1~2줄 변경엔 불필요.
shipping-guide
프로덕션 배포 전후 가이드 — 배포 전 체크리스트, 피처 플래그 수명주기, 단계적 롤아웃과 진행/보류/롤백 임계값, 롤백 계획 템플릿, 배포 후 모니터링. Production shipping guide: pre-launch checklist, feature-flag lifecycle, staged rollout with go/hold/rollback thresholds, rollback plan template, post-launch monitoring. Use when: "배포 준비", "릴리즈 전 점검", "롤아웃 계획", "롤백 계획", preparing a production deploy, staged rollout, feature flags.
retro
세션 회고·교훈 컴파운딩 — 이번 세션의 교정·실수·발견을 추출해 품질 기준(재현·일반화·판정 가능성)으로 거르고, 컨벤션 변화는 sync-claude-md 위임, 반복 실수는 tasks/lessons.md(#가드-훅-후보 태그), 스킬 지식 갱신은 수정 제안으로 나눈다. 모든 적용은 승인 후. Session retrospective that turns corrections, mistakes, and discoveries into vetted lessons routed to CLAUDE.md sync, tasks/lessons.md, or skill-edit proposals, with user approval before any write. Use when: "회고", "레트로", "교훈 정리", "같은 실수 반복", "재발 방지 규칙", retrospective, lessons learned, wrapping up a task, review, or loop. 여러 실행에 걸친 하네스 개선은 harness:evolve.
project-rules
현재 프로젝트의 스택(빌드 파일 버전, 마이그레이션 도구, ORM 유무, ES 사용, git 호스트)을 감지해 프로젝트 루트 AGENTS.md 의 마커 블록(스택 사실 + 항상 적용되는 스페셜리스트 핵심 ≤15줄 — Claude Code·Codex·Antigravity 공통)과 CLAUDE.md 의 `@AGENTS.md` 연결, Claude 전용 경로 한정 .claude/rules/<stack>-specialist.md(해당 버전에 실제로 맞는 상세 함정)를 diff 로 제안하고, 스택 플러그인을 런타임별로 프로젝트 범위에서 켜는 법을 안내한다. 이전 버전 출력(CLAUDE.md 블록·specialist-core.md)은 AGENTS.md 로 이전을 제안. --check 는 버전 불일치·사라진 ID·크기 한도·연결 누락을 점검. Detects the project's stack and proposes a cross-runtime AGENTS.md block (stack facts + always-on specialist core) linked from CLAUDE.md via @AGENTS.md, plus Claude-only path-scoped specialist rules; migrates the older CLAUDE.md-block layout; --check audits drift. Use when: "이 프로젝트 세팅", "프로젝트 규칙 생성", "AGENTS.md/CLAUDE.md 점검", project setup, generate project rules, audit AGENTS.md or CLAUDE.md drift.
post-merge
MR 머지 완료 후 Plane 이슈 종료와 Outline 문서 업데이트를 자동으로 처리하는 오케스트레이터 스킬입니다. issue-tracker와 document-latest 스킬을 연계 실행하여 머지 후 후속 작업을 일괄 처리합니다. Orchestrates post-merge follow-up after an MR is merged: chains the issue-tracker and document-latest skills to close the Plane issue and update Outline wiki docs in a single batch. Use when: an MR was just merged, closing tickets and syncing documentation after a merge, post-merge cleanup.