Skip to content
Back to skills

Control Loop

ASecurity

Multi-session control discipline for delegating work to worker sessions — investigate, decide, dispatch, verify, and merge. Use when a session is coordinating separate worker sessions or worktrees and needs to know when to delegate versus decide, and how to verify before merging.

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 21, 2026
ai-agentsgit

Security analysis

A100/100

Scanned September 21, 2026

npx -y skills add This-HW/claude-code-kit --skill control-loop --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Control Loop?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Control Loop
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/this-hw-control-loop/badge)](https://www.skillsdirectory.com/skills/this-hw-control-loop)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: control-loop
description: Multi-session control discipline for delegating work to worker sessions — investigate, decide, dispatch, verify, and merge. Use when a session is coordinating separate worker sessions or worktrees and needs to know when to delegate versus decide, and how to verify before merging.
model: opus
effort: high
---

# Control Loop 스킬

축은 *기획 대 컨트롤*이 아니라 **결정 대 조사**다. 판별식: 브리프를 전제·범위/계약·
금지사항·보고형식 4블록으로 쓸 수 있으면 그 작업은 워커에게 위임 가능한 **조사**다.
4블록을 **쓰는 행위 자체**는 위임 불가능한 **결정**이다. 이 스킬은 기획용·컨트롤용으로
나뉘지 않는다 — 같은 세션 안에서 조사와 결정을 섞지 않고 3페이즈로 가른다.

## 언제 쓰는가

컨트롤 세션이 자신이 아닌 별도의 워커(다른 세션, 격리된 워크트리, 그 밖에 호스트가
제공하는 어떤 위임 수단이든)에게 작업을 맡기고, 그 결과를 검증한 뒤 통합 브랜치로
되돌릴 때. 구체적 위임 수단은 이 스킬의 관심사가 아니다 — 아래 "운송" 참고.

---

## P1 — 조사·설계 (위임 가능)

- 목적은 결정에 필요한 **사실**을 모으는 것이다. 결정은 여기서 하지 않는다.
- **"없다 / 신설한다" 같은 존재 판정은 실측 뒤에만 쓴다.** `grep`, `git log --all`,
  대상 파일 직접 열람으로 확인하지 않은 존재 판정은 그 자체가 결함이다 — 이 판정을
  틀린 채로 다음 페이즈에 넘기면 컨트롤이 잘못된 전제로 브리프를 쓰게 된다.
- P1을 워커에게 위임할 때도 4블록 브리프(P2 참조)로 위임한다 — 조사 자체는 위임 가능,
  결정만 위임 불가라는 뜻이다.
- P1 산출물은 사실 목록이지 결정이 아니다. "이렇게 해야 한다"가 섞여 있다면 그것은
  이미 P2로 넘어간 것이므로, 컨트롤이 그 부분만 따로 검증하고 결정으로 승격한다.

## P2 — 결정·브리프 (컨트롤 전용, 위임 불가)

P1 산출물을 놓고 채택·금지를 결정하고, 그 결정을 4블록 브리프로 쓴다.

- 4블록 스키마·보고 첫 줄 고정 형식·형식 검사 정규식은 `rules/delegation-contract.md`가
  SSOT다. 이 스킬은 그 계약을 **참조만** 한다 — 여기서 다시 정의하면 두 곳이 어긋날 때
  아무것도 그것을 강제하지 않는 결함 클래스(동기화 안 되는 이중 선언)가 재현된다.
- **되돌림 규칙**: 4블록(전제 / 범위·계약 / 금지사항 / 보고형식) 중 하나라도 채울 수
  없으면 — 전제가 실측되지 않았거나 완료 기준을 문장으로 확정할 수 없으면 — **P1으로
  되돌린다.** 4블록을 못 쓰는 채로 디스패치하지 않는다.
- 브리프의 전제 서술은 P1의 실측을 **그대로 인용**한다. 컨트롤이 전제를 추측해서 쓰면
  워커가 반려하게 된다(관측된 실패 지점 — 전제를 추측한 브리프가 하루 여러 건 반려됐다).

### 기준 커밋을 못박는다

디스패치 전 컨트롤은 기준 ref의 **실제 커밋 해시**를 확인하고(`git rev-parse <ref>`)
그 해시를 브리프에 적는다. **브랜치 이름(`main` 등)은 기준으로 쓰지 않는다** — 다른
체크아웃이 그 브랜치를 물고 있으면 로컬 이름이 원격보다 여러 커밋 뒤처져 있을 수 있고,
그 상태로 워커 워크트리를 생성하면 낡은 기준점에서 작업이 시작된다(실측 사고: 워크트리
5개가 로컬 `main` 기준으로 생성됐는데 그 `main` 자체가 원격보다 11커밋 뒤처져 있었다).

워커는 착수 시 **자기 워크트리 HEAD**(`git rev-parse HEAD`)가 브리프의 해시와 같은지
확인한다. 다르면 구현을 시작하지 않고 **즉시 에스컬레이션**한다.

### 자식 생성 절차 — 인자 4개

호스트가 제공하는 위임 수단으로 워커를 만들 때, 다음 4개를 함께 전달한다:

1. **부모 세션 이름/식별자** — 워커가 완료·에스컬레이션을 보고할 대상
2. **역할 + 워크트리 경로** — 무엇을 맡았고 어디서 작업하는지
3. **4블록 브리프** — 이 페이즈의 산출물 그대로
4. **금지사항 기본값** — 최소 다음을 포함한다: push 금지, 통합 브랜치(`main` 등) 직접
   쓰기 금지, 파괴적 git 명령(bare `stash`/`reset --hard`/`clean -fd`) 금지, 병합 전
   공유 상태 파일(진행 원장 등) 쓰기 금지

4개 중 하나라도 못 채운 채로 디스패치하려 한다면 P2가 아직 끝나지 않은 것이다 — P2로
남아 있는다. 워커 자신이 로드해 따르는 규율(전제 검증·보고 형식 등)은 별도 스킬이
정의한다 — 이 스킬은 그 규율을 여기서 다시 쓰지 않고 참조만 한다.

---

## P3 — 디스패치·수신·통합 (컨트롤 전용, 위임 불가)

### 디스패치

호스트가 제공하는 수단으로 위임한다. 구체적 명령·플래그는 이 스킬 본문의 관심사가
아니다 — 아래 "운송" 참고. 워커는 **자기 워크트리/브랜치에만** 커밋한다. **통합
브랜치는 컨트롤만 쓴다.**

### 수신

워커 보고를 **그대로 믿지 않는다.** 보고는 검증의 입력이지 결론이 아니다. 테스트
통과 주장에 종료코드 근거가 없으면(파이프로 종료코드가 삼켜진 로그만 있는 경우 등)
재요청한다 — 조건의 정의는 계약(`rules/delegation-contract.md`)에 있다.

### 게이트 — 병합 전에 컨트롤이 직접 실행한다

병합하기 전에 컨트롤이 완료 게이트(정의된 검증 스크립트·관련 테스트)를 **직접
실행**한다. 워커의 "green" 보고를 게이트 실행의 대체물로 쓰지 않는다.

- fail이면 워커에게 결함을 반려한다 — 브리프를 P2로 되돌리지 않는다(브리프는 유효한
  채로 구현만 틀렸을 수 있다).
- pass이면 컨트롤만 통합 브랜치로 병합한다.

### 통합·정리

- 병합 통지는 워커가 보고한 커밋 sha가 아니라 **통합 브랜치의 최종 sha**로 한다 —
  rebase·squash로 워커가 보고한 sha가 사라질 수 있다. 워커가 보고한 sha는 "무엇을
  병합했는가"의 근거이지 "무엇이 병합됐는가"의 주소가 아니다.
- 워크트리 회수는 **병합 후에만** 한다.
- 회수 전 워커 세션이 남긴 마커(있다면)를 지운다. 워크트리 자체를 삭제하면 보통 함께
  사라지지만, 워크트리를 다음 작업이 재사용하는 경우 다음 브리프가 마커를 치환하기
  전까지 낡은 마커가 조용히 남을 수 있다 — 재사용 전에 명시적으로 지운다.

---

## P0 에스컬레이션

전제가 실측과 어긋나거나, 이 스킬의 범위 밖 결정이 필요하거나, 파괴적 작업이
필요하면 멈춘다. 사용자에게 선택지를 제시하고 답을 받는다 — 호스트가 제공하는
수단으로. 특정 툴 이름을 전제하지 않는다(헤드리스·비대화형 호스트에는 그 툴이 없을
수 있다).

## 운송

이 스킬의 규범 본문은 위임에 실제로 쓰는 수단을 모른다 — **"호스트가 제공하는
수단으로 위임한다"**로 자급한다. 운송별 실행 레시피(감지 명령 + 최소 레시피)는 레포
문서를 참조하라. 그 문서가 없거나 낡아도 이 스킬은 계속 동작한다 — 감지 가능한
수단이 전부 없으면 단일 세션 순차 실행으로 끝난다(fail-open).

## 관련

| 문서 | 위치 |
| --- | --- |
| 브리프 4블록·보고 형식 계약 | `plugins/common/rules/delegation-contract.md` |
| 워커 세션이 로드하는 규율 | `plugins/common/skills/child-session/SKILL.md` |
| 워크트리 격리·병합 규율(네이티브 서브에이전트) | `plugins/common/rules/parallel-worktree.md` |
| 루프 종료 가드 | `plugins/common/rules/loop-engineering.md` |
| 대규모 병렬 작업 안내 | `plugins/common/skills/agent-teams/SKILL.md` |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.