Use when planning or evaluating multi-PR work (L·XL) — kickoff 가 사이즈를 L 이상으로 판정해 위임했을 때, 유저의 "작전계획 세워"·"캠페인 잡자" 직접 호출, DP 종결보고 접수 시점(평가 모드). Triggers on 작전계획, 캠페인, 전역계획, L·XL 사이즈 위임, DP 종결보고 접수(PR 생성) 시 평가·다음 DP 선택. Does NOT trigger on 단일 PR 계획(opord), DP 실행(orchestrate·implement), 사이즈 판정 자체(kickoff), 이슈 분해 없는 즉흥 구현.
Installs into .claude/skills of the current project.
Are you the author of Campaign?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sudopark-campaign)
---
name: campaign
description: Use when planning or evaluating multi-PR work (L·XL) — kickoff 가 사이즈를 L 이상으로 판정해 위임했을 때, 유저의 "작전계획 세워"·"캠페인 잡자" 직접 호출, DP 종결보고 접수 시점(평가 모드). Triggers on 작전계획, 캠페인, 전역계획, L·XL 사이즈 위임, DP 종결보고 접수(PR 생성) 시 평가·다음 DP 선택. Does NOT trigger on 단일 PR 계획(opord), DP 실행(orchestrate·implement), 사이즈 판정 자체(kickoff), 이슈 분해 없는 즉흥 구현.
---
# Campaign — 작전계획 작성·평가
## 1. 개요
**campaign.md 가 L 사이즈(PR 여러 개) 작업의 플랜이다.** 템플릿은 `docs/operations/templates/campaign.md` — 항목 밖 서술 금지, 해당 없는 항목은 "없음". **분량은 서식이 정한다**: 머리에 `■ 초록` 넷, 맨 끝에 이력 절, 표 한 칸은 세 줄 안, 본문에 개정 차수 인용 금지 — 템플릿 하단 사용 노트가 정본이다. "간결하게" 는 판정할 수 없어 안 먹혔다. 줄이는 대상은 문장과 **폐기된 경위**이지 담을 결정·정보가 아니다 — 경위는 버리는 게 아니라 이력 절로 내린다. 문장 규범은 CLAUDE.md §1 **글 규범**이 정본이다 — 간결은 그 요건 안에서다. 용어(DP·LOE·FRAGO·MOP/MOE·PIR/FFIR·branch/sequel)는 템플릿 머리의 용어 줄이 정본이다.
- 진입은 양방향 — kickoff 사이즈 판정(L·XL)의 위임, 또는 유저의 직접 호출. **kickoff 가 안 돌았으면 먼저 invoke 한다** (정찰은 kickoff 소관 — 여기서 중복 구현하지 않는다).
- 분해 브리프는 이 계획이 갈음한다 — 9항 DP 목록이 리스트업이고, 미결 목록이 "미분해 잔여"다.
- 계획 파일은 `docs/operations/<상위이슈>/campaign.md` 로, **git 에 커밋하지 않는다** (gitignore — 2026-09-09 미커밋 전환). 정본 공유는 이슈 본문 미러·상황판 스풀이고, 다른 세션·워크트리는 이슈 본문에서 복원한다 — 커밋하면 개정마다 워크트리·develop 싱크 비용이 든다. DP base 는 orchestrate §3-1 대로 develop 또는 앞 DP 브랜치다. 이슈 본문 = 이 파일 전문 + `<!-- progress -->` 블록 (§5).
- **해상도 경계 — campaign 은 DP 수준까지만 다룬다.** branch 도 "DP 재배열·대체·범위 축소"까지다. 태스크 수준 결정지점·우발계획은 opord 소관 — 그 아래로 내려가면 opord 를 복제하며 비대해진다.
**L 실행 루프** — 이 스킬은 루프의 양 끝(계획·평가)만 맡는다:
```mermaid
flowchart TD
C[campaign<br/>campaign.md + 원장] --> D{다음 DP 선택}
D --> DI[issue<br/>DP 하위 이슈 · 원장 착수]
DI --> Q{착수 자격<br/>재가 · 선행 DP 머지 · 소유 범위}
Q --> O[opord<br/>opord-DP.md · 확인보고 → 재가]
O --> X[orchestrate<br/>dispatch 첫 보고 = 백브리프]
X --> I[implement<br/>갭 → 단편명령 부록 D]
I --> P[pr<br/>PR 본문 = 종결보고]
P --> V[campaign 평가 모드<br/>MOP/MOE · 가정 · 원장<br/>단계 종료 조건 → 국면 전환]
V -->|DP 남음| D
V -->|없음| END([캠페인 종결])
```
M 은 kickoff → opord → implement → pr, S 는 kickoff → 구두지시 → implement → pr. XL 은 strategy.md 의 캠페인마다 위 루프.
## 2. 작성 모드
1. **상황·과업 도출** — kickoff 정찰을 재사용해 1항 상황(정찰 요약·장애의 유력/최위험 양상)을 채운다 (부족하면 code-analyzer). 이어서 과업을 도출한다: **명시**(전략 지침·이슈 본문이 시키는 것) / **추정**(명시 안 됐지만 rules·아키텍처가 딸려 붙이는 것 — 짝지어진 두 위치, 테스트 스킴, localization 키 등) / **필수**(명시·추정 중 누락 시 최종상태 미달로 직결되는 것). 도출된 과업 전부가 DP 좌표를 갖는지가 9항의 검산 기준이다 — 추정 과업이 계획에서 빠지면 실행 중 FRAGO 로 계속 불어난다. **추정 과업을 딸려 붙일 근거 교리가 rules·선례 어디에도 없으면 doctrine 스킬로 룰 구축을 요구한다** — 계획은 멈추지 않고, 요구를 2 의 질문 라운드에 실어 보낸다.
2. **작전구상 순서로 질문한다**: 전략 지침 → 문제 정의 → 종결·중단 기준 → 최종상태 → 중심 → 접근 → 노력선 → 단계 → 작전 배열 → DP·소유 범위·인터페이스 계약 → 결정지점·branch → 가정·위험·한계점 → 자원 → 평가 지표. 기본안을 붙여 **일괄** AskUserQuestion — 답에 따라 계획이 바뀌는 것만 묻는다. 정찰(kickoff 탐색)로 알 수 있는 건 묻지 않는다. **kickoff 정찰 브리프의 "유저만 답 가능" 미정 목록을 질문 입력에 포함한다** (확정 자리는 kickoff 가 아니라 여기다) — 캠페인 고도 결정은 여기서 확정하고, DP 고도 미정은 확정하지 말고 미결 목록에 실어 해당 DP 의 opord 로 넘긴다.
3. **COA 비교 — 분해안을 하나로 시작하지 않는다.** LOE 구성·단계화·배열이 다른 분해안을 2개 이상 스케치하고, 스크리닝을 통과한 안들을 트레이드오프와 함께 제시해 유저가 고른다 — 적합(최종상태 전 관점 커버) · 실행가능(자원 13항 안에서 굴러감) · 수용가능(위험이 수용 범위) · 구별(접근이 실제로 다름) · 완전(필수 과업 전부가 DP 좌표를 가짐). 실행가능한 분해가 정말 하나뿐이면 단일안으로 가되 그 근거를 적는다 — 선택 근거의 기록처는 5항 중심 분석의 "접근"이다.
4. **초안마다 정합성 검사**: 담당 없는 최종상태 관점 / 소유 범위 겹침 / 자원 충돌 / 시각 조건(종료 조건이 상태가 아니라 시점) / 단계 이름이 국면 아닌 작업 성격 / DP 크기(PR 하나로 며칠 안) / 선후 의존 / MOE≠MOP / 중심 반영 / 결정지점 없는 즉시보고 조건 / branch 없는 고위험 단계 전환 / 근거 없는 병렬 묶음 / 종결·중단 기준 없음 / 지표 없는 MOE / 좌표 없는 필수 과업. 하나라도 걸리면 해당 항목으로 되돌아간다.
**분량 검사도 같이 돈다** — 초록 넷이 다 찼나 / 표 한 칸이 세 줄을 넘나 / 본문에 개정 차수 인용이 남았나 / 머리 개정 줄이 한 문장을 넘나. 넘은 칸은 현재 확정만 남기고 이력 절로 내린다. 눈대중 말고 줄 수로 센다.
5. **워게임** — 초안 완성 후·게시 전. 단계 순서대로 DP 를 걸어보며, 가정(11항)·위험(12항)·제약(16항)마다 "깨지는 시나리오에서 어느 결정지점·branch 가 흡수하나"를 확인한다. 흡수 못 하는 시나리오가 나오면 8·10~12항을 보강하고 다시 걸어본다 — 결정지점·branch·배열은 이 워게임의 산출물이지 머리로 채우는 칸이 아니다.
6. **산출**: `campaign.md` 저장 + 이슈 본문 미러(§5) + 미결 목록. **초록은 전문을 다 쓴 뒤 마지막에 채운다** — 먼저 쓰면 초안 단계의 의도가 남고 확정본과 어긋난다. 8항 요도(mermaid)는 워게임까지 반영된 최종 배열 기준으로 표에서 생성해 싣는다 — GitHub 이 이슈 미러에서 렌더링한다. **노력선·최종상태를 대신 정하지 않는다** — 참모는 채우는 걸 돕지, 결정은 유저 몫이다.
7. **초안 게시**: 초안이 완료되면(재가 대기) 먼저 이슈 본문 미러(§5 규칙 — 초안 전문 + `<!-- progress -->` 블록)를 재조립한다 — 계획 파일은 커밋되지 않으니 유저가 GitHub 에서 읽는 자리는 이슈 본문뿐이다. 그 뒤 상위 이슈에 요지·파일 경로를 봇 계정 코멘트로 게시하고(수단은 issue 스킬 §코멘트) `@sudopark` 를 멘션한다 — 유저 행동이 필요해 세션이 멈춘 시점이 게시 기준이다. 작전계획·전략 지침은 대응 report 템플릿이 없어 게시 규정이 여기 직접 산다. 게시 전에 **1차 리뷰 세션의 지정 여부를 확인한다** — 유저 지시와 상위 strategy.md 의 통제 세션 줄(§3) 둘을 본다. 지정이 있으면 그 세션에 먼저 보내 plan-review 통과를 받고, 없으면 지정이 없다는 사실을 재가 요약 4 에 적는다 — 개정본도 같다 (확인 결과를 적는 이유는 opord §3-8). **게시 뒤 유저에게 재가를 청하는 응답은 `opord` 스킬 §3 의 재가 요약 서식을 따른다** (결심 안건 · 임무·최종상태 · 규모·유저 시간 · 1차 리뷰) — 서식을 여기 복제하지 않는다. campaign 은 규모 칸에 DP 수를 적고, 개정본이면 결심 안건에 바뀐 항을 싣는다.
- DP 는 이슈 = PR 필수 — 원장의 이슈# 칸은 항상 채워지고, 커밋은 `[#DP이슈]`. DP 이슈 생성은 루프의 issue 단계에서 유저 지시로.
- 위임은 `docs/operations/templates/delegation.md` 상속 — 계획엔 좁히는 것만 적는다 (15항).
## 3. XL 전략 모드
캠페인 둘 이상이 한 목적을 공유하면 `docs/operations/templates/strategy.md` **전 항목**을 채워 `docs/operations/<이슈>/strategy.md` 로 저장한다 (§1 대로 미커밋 — 정본 공유는 이슈 본문 미러) — 작성 모드 절차를 전략 고도로 그대로 적용한다: 질문(목적 → 최종상태 → 종결·중단 → 수단·제한·ends-ways-means-risk 정합 → 위임 → 캠페인 목록·배열 → 가정·위험·한계점 → 결정지점 → 평가), 캠페인 배열이 갈리면 COA 비교, 초안 후 워게임(캠페인 배열 순서로 걸어보며 전략 가정·위험이 10항 결정지점에 흡수되는지). 캠페인 내부(LOE·DP)로는 내려가지 않는다 — 그건 각 campaign.md 소관이다. 각 캠페인의 campaign.md 는 0항에 이 문서를 인용한다. 초록·이력 절·표 한 칸 세 줄·차수 인용 금지는 campaign 과 같게 적용한다 (strategy.md 는 13항이 이력이다).
- **캠페인마다 `C<n>` id 를 붙인다** — 6항 목록의 캠페인 칸은 `C1 위젯 커스터마이징` 처럼 id 로 시작하고, 12항 원장 첫 칸·8항 가정의 검증 방법·9항 위험의 영향 칸이 같은 id 로 그 캠페인을 가리킨다. 상황판이 이 id 로 원장 상태를 노드에 붙이고 선행 사슬로 배열 열을 세운다 (CLAUDE.md §1 짝).
- 원장: `.operations/<이슈>/strategy-progress.md` — `<!-- progress -->` 헤딩 + 캠페인 원장 표 `| 캠페인 | 상태 미착수/진행/종결 | 최근 종결보고 | 비고 |`. 갱신 시점은 캠페인 착수·종결 — 종결 판정은 §4 평가 모드(캠페인 종결)가 맡는다.
- 이슈 본문 = strategy.md 전문 + progress 블록 — 재조립 규칙은 §5 와 같다. **미러를 재조립할 때마다 `.claude/scripts/campaign-board-sync.sh <이슈번호>` 를 함께 호출한다** (§5 와 같은 짝 — 스크립트가 `strategy.md`·`strategy-progress.md` 를 스풀로 복사하고 상황판 전략 격자를 다시 렌더한다).
- 초안 완료 게시·재가는 작성 모드(§2)와 같다.
- **통제 세션** — 캠페인들을 한 세션이 통제하면 strategy.md 가 그 세션을 **이름으로** 적는다(새 서식은 5항, 옛 서식은 자원 항). 전략 없이 단독으로 통제받는 캠페인은 campaign.md 13항(자원)에 같은 내용을 적는다. 소켓 주소는 적지 않는다 — 세션을 다시 띄우면 바뀐다. 하위 캠페인 세션은 재가 전 plan-review(§2-7·opord §3-8)와 머지 전 PR 리뷰(pr §머지·정리)를 그 세션에 요청하고, 멈춰서 유저에게 넘기는 보고는 출력 전에, 커밋 메시지·PR 본문은 PR 생성 전에 그 세션의 검수(report-review)를 받는다. 보낼 땐 `ListAgents` 에서 그 이름을 찾는다 — `main` 은 SendMessage 가 자기 자신으로 읽는 예약어라 통제 세션 이름으로 쓰지 않는다. 하위 세션에 내린 상시 지시도 같은 자리에 적는다 — 대화로만 전하면 그 세션이 `/clear` 한 뒤 사라진다.
## 4. 평가 모드 — 종결보고 접수
DP 의 PR 이 생성돼 종결보고가 오면 (pr 스킬이 호출한다):
1. **MOP** — 종결보고 1항(최종상태 대조)로 DP 완료 판정.
2. **MOE** — 그 DP 가 담당한 관점(LOE 중간 목표)에 효과가 났는지, 14항의 지표·판정 데이터 출처 기준으로 판정한다 — 과업 수행(MOP)과 별개다.
3. **가정 검증** — 종결보고 5항을 campaign.md 11항 **검증 결과 칸**에 `미검증`/`확인`/`깨짐` + 근거로 반영한다 (상황판 가정 칩 색이 이 값이다). 깨진 가정 처리는 상향 규칙(delegation.md)대로 — 계획된 branch 우선 발동은 그 표가 규정한다. 발동 시 원장 **결정 표** 반영 + 정기보고 게시.
4. **잔여 위험·한계점** — 종결보고 4항을 12항에 반영. 작전한계점 지표가 걸렸으면(리뷰 대기 적체 등) 신규 DP 착수 대신 소화(리뷰·머지 대기 해소)를 제안한다.
5. **원장 갱신** — 진행 파일(§5)의 해당 DP 행(상태·PR#·비고).
6. **단계 종료 조건 대조** — campaign.md 7항의 종료 조건이 상태로 충족됐으면 국면 전환: 다음 단계 진입 조건 확인, DP 활성화, 주노력 재배분, 진행 파일의 현재 국면 갱신, **초록의 `지금 국면·남은 것` 갱신** — 전환 시 정기보고(`report-periodic.md`)를 머리 게시 줄대로 이슈 봇 코멘트로 게시한다. 종료 상태가 부분·미충족이면 7항 sequel 경로를 따르고, 결정지점이 도래했으면 국면 전환 대신 해당 branch 를 발동한다.
7. **종결·중단 기준 대조** — 3항 중단·축소 조건이 충족됐으면 캠페인 지속 여부를 유저에게 상신한다 — 중단 결정은 유저 몫이고, 수습은 3항대로.
8. **다음 DP 선택** — 선행 DP 머지·소유 범위·8항 배열 시퀀스 기준으로 착수 가능한 DP 를 제안한다. `회귀` DP 도 후보에 든다 — 재착수 대기 상태이지 종결이 아니다.
가정·위험 반영이 campaign.md **본문**을 고치는 것이 계획 개정이다 — 커밋은 없다(§1 미커밋). branch 발동이 8항 배열·9항 DP 목록을 바꾸면 그것도 계획 개정이다 — 요도도 재생성한다.
**개정할 때마다 셋을 함께 돌린다.** 이력 절에 한 줄(차수·날짜·바뀐 항·무엇이 어떻게·왜)을 더하고, 머리 개정 줄을 그 차수 한 문장으로 **갈아끼우고**(이전 차수를 앞에 붙이지 않는다), 초록의 `이번 개정`·`지금 국면·남은 것`·`유저가 정할 것` 을 다시 쓴다. 본문에서 뒤집힌 방침은 지운다 — 그 경위가 사는 자리는 이력 절 하나다. 셋 중 하나만 하면 개정이 쌓일수록 머리 줄과 본문 칸이 같이 부푼다.
**초록·이력 절이 없는 문서는 이 셋이 해당 없다.** 새 서식은 **새로 쓰는 문서부터** 적용하고, 이미 선 문서는 개정할 때도 안 옮긴다 (유저 결정 2026-09-24). 개정을 계기로 서식을 갈면 그 개정의 범위가 계획 변경과 서식 이관으로 갈려, 재가하는 쪽이 무엇을 승인하는지 흐려진다. 옮길 문서와 시점은 유저가 따로 지시한다. **9항에서 빠진 DP 는 원장 행을 지우지 말고 `폐기` 로 갱신하고**, 대응 이슈가 있으면 사유 코멘트와 함께 클로즈한다 — 행을 지우면 그 DP 가 왜 사라졌는지가 어디에도 안 남는다. 개정·원장 갱신 후 이슈 본문 미러를 재조립한다.
**개정이 값 하나를 바꾸면 세 범주를 함께 훑는다.** 바뀐 값의 낱말로 grep 해 갈음하면 샌다 — C4(#461) 캠페인 8~14차에서 세 범주가 전부 실제로 샜고, 그 탓에 리뷰가 세 라운드 더 돌았다.
1. **그 값에서 파생되는 양** — 개수·배수·잔여·로케일 곱처럼 그 값에서 나오는 수. 라인업이 23 에서 35 로 바뀌자 선택 목록 크기·스냅샷 장수·번역 문자열 수가 따라와야 했는데, `23개` 로 훑어 `23 ×`·`+ 23`·`16개`(23 에서 파생된 수)를 놓쳤다.
2. **그 대상을 목적지로 삼는 경로** — sequel·결정지점 결정 칸·branch 내용·착수 조건 넷을 센다. DP 가 합쳐지거나 빠지면 종결된 DP 를 계속 가리키는 칸이 남는다.
3. **같은 사실을 말하는 다른 항** — 범위 밖(2항)과 판정 기준(4항), 가정(11항)과 그 가정을 인용하는 DP 행, 최종상태(4항)와 MOE(14항), 상위 규칙과 그것을 옮겨 적은 하위 명령.
**3 의 최악 형태는 단위가 갈리는 경우다.** 같은 값이 다른 색공간·단위·척도로 적히면 두 표기가 다 맞아 보이고 각자 제자리에서는 자연스러워, 낱말로도 값으로도 안 걸린다. **그 값이 재는 대상으로 훑고 환산해서 같은 구간인지 확인한다.** C4 에서 강조색 띠가 생성 쪽은 `OKLCH 0.45~0.62`, 가정·결정지점 쪽은 `L* 42~58` 로 갈렸는데 환산하면 다른 구간이었다(`OKLCH 0.45` 는 `L* 36` 이다). 그 탓에 결정지점의 탈출구가 띠 안을 가리켜, 발동해도 나갈 자리가 없는 결심이 재가까지 통과했다.
**같은 뿌리의 흔한 형태가 둘 더 있다.** 셋 다 표기가 달라 문자열로 안 걸리는데 각자 제자리에서는 자연스럽다.
- **조사·어미만 다른 자리** — `35개` 로 훑으면 `35개가`·`35개면`·`35개라`·`개수 35 는` 이 안 걸린다. 낱말에 조사를 붙여 훑지 말고 값만 떼어 훑는다.
- **수를 안 적고 수를 말하는 문장** — `개수 35 는 그 성격이 바뀌어도 유지한다` 같은 정책 선언은 개수를 세는 눈에도 정책을 보는 눈에도 안 걸리면서 새 값과 정면으로 부딪힌다. C4 15차에서 넷이 이 부류로 남았고, 그중 하나는 같은 DP 행 안에서 바뀐 개수와 모순인 채였다.
**머지는 이 절차의 재실행이 아니다** — DP 가 머지되면 §5 원장을 `머지` 로 갱신하고, 종료 조건이 머지를 요구하는 단계(예: "모든 DP 머지")만 종료 조건을 재대조해 국면을 확정한다. MOP/MOE·가정·위험 반영은 종결보고 접수 시 1회로 끝난다.
**회귀 접수 — 머지가 되돌려졌을 때** (pr 스킬이 호출한다). 머지된 DP 의 산출물이 그 DP 의 base 브랜치에서 되돌려지면(17항 상시 즉시보고 조건) 그 DP 는 `회귀` 다. base 는 develop 일 수도 앞 DP 브랜치일 수도 있다 (orchestrate §3-1) — stacked 체인에선 앞 브랜치가 되돌려져도 같은 조건이다. 종결보고 시퀀스가 아니라 이 네 가지를 수행한다:
1. 원장의 해당 DP 가 `회귀` 인지 확인한다 — 전이 자체는 되돌림을 확인한 세션이 이미 했다 (pr 스킬 머지·정리).
2. 그 DP 를 선행으로 둔 후속 DP 를 원장에서 찾아 착수 자격을 재판정한다 (opord §3-2). 아직 `미착수` 면 그대로 막히고, 이미 `착수`·`실행` 인 것은 중단 여부를 유저에게 상신한다. **이미 `검토`·`머지` 인 것도 대상이다** — 되돌려진 선행의 산출물에 의존했는지 확인하고, 의존했으면 그 DP 도 `회귀` 로 내린다. base 브랜치가 이미 깨져 있을 수 있어 착수 자격보다 급하다. **그렇게 연쇄로 `회귀` 가 된 DP 는 각각 2~4 를 다시 탄다** — 그 DP 의 후속도 재판정해야 하고 이슈 재오픈도 받아야 한다. 전파를 한 단계에서 멈추면 손자 DP 가 사라진 전제 위에 남는다. 상신은 pr 스킬이 전이 때 게시한 즉시보고 코멘트에 이어 붙인다.
3. 되돌림 사유가 11항 가정·12항 위험을 건드리면 계획 개정이다 — 해당 칸을 갱신하고 대응 결정지점·branch 가 있으면 발동한다.
4. 그 DP 를 재착수 대기로 되돌린다 — 머지 시 닫힌 대응 이슈를 `gh issue reopen` 으로 다시 열고 보드를 `Todo` 로 옮긴다. 원장 상태는 `회귀` 로 둔다(되돌려졌다는 사실이 상황판에서 사라지면 안 된다). 재착수는 새 작전명령 재작성으로 시작한다 — 기존 명령은 되돌려진 산출물을 전제하므로 재가가 무효다 (opord §6 재작성 경계). 재가를 받은 세션이 §5 대로 원장을 `착수` 로 올린다. 정상 흐름에서 이 전이를 하는 issue 스킬은 트리거가 "DP 이슈 생성"이라 재오픈 경로엔 안 걸린다.
## 5. 원장·진행 파일
- 경로: `.operations/<상위이슈>/campaign-progress.md` — gitignore 대상, 시점 무관 자유 갱신.
- 서식: `<!-- progress -->` 헤딩 + 현재 국면 줄 + 대기 줄 + DP 표 `| DP | 상태 미착수/착수/실행/검토/머지/회귀/폐기 | 이슈# | 브랜치 | base | PR# | 비고 |`. `회귀`·`폐기` 의 뜻은 `campaign.md` 18항이 정본이다.
- **대기 줄** — `대기: <무엇을> — <누구에게>` 로, 지금 이 캠페인이 멈춰 기다리는 것을 적는다(통제 세션 리뷰 요청, 유저 재가, 실기 확인 등). 없으면 `대기: 없음`. 요청을 보내거나 답을 받을 때 갱신한다 — DP 상태 값만으로는 무엇을 누구에게서 기다리는지가 안 남는다.
- 결정지점이 도래하거나 branch 가 발동하면 같은 파일에 결정 표를 둔다 — `| 결정지점 | 상태 미도래/도래·미결/결정 | 발동 branch | 시점 | 비고 |`. DP 표의 비고 칸에 흩어 적지 않는다 (상황판이 이 표로 결정지점 노드 색과 branch 선을 가른다).
- 갱신 시점: DP 착수(issue 단계)·PR 생성·종결보고 접수·머지·회귀·회귀 재착수 재가·폐기·branch 발동. 갱신마다 **이슈 본문 미러 재조립** — 본문 = `campaign.md` 전문 + 진행 파일 내용, `gh issue edit <상위이슈> --body-file` 로. 다른 세션·워크트리는 이슈 본문에서 상태를 복원한다. 상황판 동기화가 미러와 짝이다 — 미러를 재조립할 때마다 `.claude/scripts/campaign-board-sync.sh <이슈번호>` 를 함께 호출한다 (스크립트가 스풀 복사와 정적 렌더까지 한다, 실패 비차단). Artifact 재게시는 자동으로 하지 않는다 — 유저가 상황판 원격 미러를 요청할 때만 그 세션이 `~/.claude/campaign-board/board.html` 을 `~/.claude/campaign-board/artifact-url.txt` 의 URL 로 수동 재게시한다.
- **DP 경계는 `/clear` 로 넘는다** — DP 가 머지·종결되고 평가 모드가 다음 DP 를 고르면, 다음 DP 착수 전에 유저에게 `/clear` 를 청한다(`/compact` 가 아니다 — 요약은 무엇이 중요한지 모른 채 접는다). 청하기 전에 대화에만 있는 사실을 파일로 내린다: 유저 결정은 campaign.md·원장 비고·부록 D 로, 기다리는 것은 대기 줄로, 상시 지시는 strategy.md 통제 세션 자리로, 열려 있는 orchestrate 런은 원장 세션 장부의 `orchestrate 런:` 줄로(orchestrate §3). 새 세션은 campaign.md·원장·상위 이슈 미러·strategy.md 만 읽고 다음 DP 의 kickoff 로 들어간다 — 그 넷으로 이어지지 않는 사실이 남아 있으면 아직 청하지 않는다.
## 6. 종료 기록 — skill_end
작성 모드는 campaign.md 저장·재가로, 평가 모드는 원장·미러 갱신 완료로 절차가 끝난다 — 그 시점에 `log-record.py skill_end` 를 기록한다 (명령·compliance 규칙은 CLAUDE.md §1). 평가 모드가 캠페인 종결(모든 DP 머지 + MOE)로 끝나면 상위 이슈 클로즈는 pr 스킬 머지 단계가 아니라 이 평가가 맡는다 — 클로즈 코멘트에 MOE 판정을 싣는다. XL 하위 캠페인이면 strategy 원장(§3)과 그 상위 이슈 미러도 함께 갱신한다.