---
name: ooda
description: |
  OODA Loop 기반 적응적 실행 스킬.
  Observe-Orient-Decide-Act 순환으로 실행 중 환경 변화에 적응한다.
  Use when "/ooda", "적응적으로 진행해", "상황 변했어", "계획 수정 필요",
  "중간 점검", "방향 재설정", or during long tasks (5+ turns) as checkpoint.
  NOT for: simple one-shot tasks, initial planning (use /what), problem classification (use /cynefin).
user_invocable: true
version: 1.0.0
---

# OODA Loop — 적응적 실행

> **핵심 원리** (John Boyd, 1970s): "적보다 빨리 OODA를 돌리는 쪽이 이긴다."
> Orient 단계가 가장 중요 — 기존 멘탈 모델을 새 정보로 업데이트하는 곳.

**Iron Law**: Orient 결과 "방향 전환 필요"로 판단되면, 사용자 확인 없이 기존 계획을 변경하지 않는다.

## Announce Pattern

> "OODA Loop로 현재 상태를 점검합니다.
> Observe(관찰) → Orient(방향설정) → Decide(결정) → Act(행동) 순환으로
> 진행 상황을 평가하고, 계획 유지/수정/전환을 판단합니다."

---

## Trigger Rules

### 트리거 (작동)

- `/ooda` (슬래시 커맨드)
- "적응적으로 진행해", "상황 변했어", "계획 수정 필요"
- "중간 점검해줘", "지금까지 어떤 상태야"
- "방향 재설정", "이대로 가도 되나"
- 장기 작업(5턴+)에서 자연스러운 체크포인트 시점
- 테스트 실패, 빌드 에러 등 예상치 못한 이벤트 발생 시

### 비트리거 (작동 안 함)

- 작업 시작 전 초기 계획 수립 (→ `/what` 사용)
- 문제 유형 분류 (→ `/cynefin` 사용)
- 단발성 질문이나 짧은 작업
- 사용자가 명시적으로 "계속 진행해"라고 한 경우

---

## 실행 플로우 (순환)

### OBSERVE: 현재 상태 관찰

객관적 사실만 수집한다. 해석하지 않는다.

| 수집 항목 | 방법 |
|----------|------|
| 코드 변경 현황 | `git diff --stat` 또는 변경 파일 목록 |
| 테스트/빌드 결과 | 최근 실행 결과 확인 |
| 사용자 피드백 | 대화에서 명시된 방향/수정 요청 |
| 진행률 | 원래 계획 대비 완료/미완료 항목 |
| 새로 발견된 사실 | 예상과 다른 코드 구조, 숨겨진 의존성 등 |

출력 형식:
```
## OBSERVE 스냅샷
- 완료: [N]건 / 전체: [M]건 (진행률 N/M)
- 마지막 결과: [성공/실패/부분성공]
- 새 발견: [있음/없음] — [내용]
- 사용자 피드백: [있음/없음] — [내용]
```

### ORIENT: 방향 재설정 (핵심 단계)

Observe 결과를 기존 컨텍스트와 교차 분석하여 **멘탈 모델을 업데이트**한다.

3가지 질문에 답한다:

| 질문 | 평가 |
|------|------|
| **Q1. 원래 계획이 여전히 유효한가?** | 새 발견이 계획의 전제를 무효화하는가? |
| **Q2. 예상과 다른 것은 무엇인가?** | 기대 결과 vs 실제 결과의 갭 |
| **Q3. 방향 전환이 필요한가?** | 갭이 전술적(미세 조정)인가 전략적(방향 전환)인가? |

판단 결과:

| 판단 | 의미 | 다음 단계 |
|------|------|----------|
| **유지** | 계획 유효, 새 발견 없음 | Act → 기존 계획 계속 |
| **미세 조정** | 방향은 맞으나 세부 수정 필요 | Decide → 부분 수정안 |
| **방향 전환** | 전제가 무효화됨, 새 접근 필요 | Decide → 새 계획안 (사용자 확인 필수) |

출력 형식:
```
## ORIENT 판단
- 계획 유효성: [유지 / 미세 조정 / 방향 전환]
- 멘탈 모델 업데이트: "[이전에 가정했던 X가 실제로는 Y임]"
- 갭 유형: [없음 / 전술적 / 전략적]
```

→ **방향 전환** 시 Confirmation Loop 진입

### DECIDE: 행동 선택

Orient 결과에 따라 옵션을 제시한다:

#### 유지 시
- 다음 작업 항목 확인 → 즉시 Act

#### 미세 조정 시
- 수정 사항 1-3개 제시
- 각 수정의 영향 범위 명시
- → 즉시 Act (사용자 확인 선택적)

#### 방향 전환 시 (사용자 확인 필수)
| 옵션 | 설명 | 비용 | 위험 |
|------|------|------|------|
| A | [기존 계획 유지 — 갭을 수용] | 낮음 | [위험 설명] |
| B | [부분 수정 — 특정 부분만 변경] | 중간 | [위험 설명] |
| C | [방향 전환 — 새 접근법] | 높음 | [위험 설명] |

→ AskUserQuestion으로 사용자 선택

### ACT: 실행 + 다음 루프 준비

- 선택된 옵션 실행
- 다음 OBSERVE 시점 설정:
  - 자동: [N]턴 후 또는 [특정 이벤트] 발생 시
  - 수동: 사용자가 `/ooda` 재호출

출력 형식:
```
## ACT
- 실행: [선택된 옵션]
- 다음 OODA: [N턴 후 / 다음 빌드 후 / 사용자 호출 시]
```

---

## 자동 체크포인트 모드

장기 작업(5턴+)에서 `/ooda`를 명시적으로 호출하지 않아도, 다음 시점에서 자동 OBSERVE를 수행한다:

| 시점 | 트리거 |
|------|--------|
| 테스트/빌드 실패 | 예상 결과와 불일치 |
| 사용자 피드백 | "이건 아닌데", "다르게 해봐" |
| 5턴 경과 | 자연스러운 중간 점검 |
| 큰 결정 분기점 | 아키텍처/기술 선택 등 |

자동 체크포인트는 **경량 OBSERVE + Orient Q3만** 수행:
- 방향 전환 불필요 → 계속 진행 (사용자에게 미표시)
- 방향 전환 필요 → 전체 OODA 루프 실행 (사용자에게 표시)

---

## 기존 스킬 연동

| 스킬 | OODA 연동 지점 |
|------|:-------------|
| **what-ce** | Stage 2 실행 중 OODA Orient로 목적 재검증 |
| **continuous-qa-loop** | 각 반복의 "감지" 단계에 OODA Observe 삽입 |
| **architect** | STEP 6 피드백 루프를 OODA로 구조화 |
| **deep-analysis-mode** | Stage 4-5(해결 방안 실행)에 OODA 적응 루프 적용 |
| **checkpoint.md** | Observe 결과를 체크포인트에 자동 기록 |

---

## CE 기여

| CE 실패 모드 | OODA의 방어 |
|:------------:|:-----------|
| **Poisoning** | Orient에서 "새 정보가 기존 컨텍스트와 충돌하는가" 감지 |
| **Distraction** | Observe에서 "현재 목표와 관련된 변화만" 필터링 |
| **토큰 관리** | 상황 변화에 따라 남은 토큰 예산을 재배분 |

---

## Confirmation Loop

> **프로토콜 참조**: `_core/confirmation-loop.md`

### 훅 오버라이드

| 훅 | 값 |
|:--:|-----|
| `PRESENT_FORMAT` | OBSERVE 스냅샷 + ORIENT 판단 + DECIDE 옵션 |
| `CONFIRM_OPTIONS` | ["계획 유지 (계속 진행)", "미세 조정 후 진행", "방향 전환 (옵션 선택)"] |
| `STEP_LABEL` | "OODA 체크포인트" |

---

## Edge Cases

| 상황 | 처리 |
|------|------|
| 사용자가 "그냥 계속해" | 유지로 간주, ACT 즉시 실행 |
| 연속 3회 방향 전환 | 근본적 재설계 필요 — `/what` 또는 `/first-principles` 추천 |
| Observe 결과가 비어있음 | "변화 없음" → 유지 → ACT |
| Chaotic 상황 발견 | OODA 중단 → Cynefin의 Chaotic 전략으로 즉각 전환 |

## Red Flags

**Never:**
- Orient에서 "방향 전환"을 판단하고 사용자 확인 없이 기존 작업을 폐기하지 않는다
- Observe에서 관련 없는 정보까지 수집하여 분석 시간을 낭비하지 않는다
- 매 턴마다 전체 OODA를 실행하지 않는다 (자동 모드는 경량 체크만)
- ACT 없이 Observe-Orient만 반복하지 않는다 (분석 마비 방지)

---

## 참조

- Confirmation Loop 프로토콜: `~/.claude/skills/_core/confirmation-loop.md`
- 전문가 역할: `~/.claude/skills/_core/roles.md`
