본문으로 건너뛰기

© 2026 Molayo

GitHub요약2026. 05. 20. 12:18

GantisStorm/essentials-claude-code

요약

Claude Code의 내장 태스크 시스템을 활용하여 루프(Loop), 스웜(Swarm), 팀(Team) 모드를 구현하는 플러그인 기술을 소개합니다. 기존의 셸 스크립트나 외부 마크다운 파일을 이용한 임시 방편 대신, Claude Code v2.1.19 이상의 네이티브 기능을 통해 구조화된 데이터 관리와 자동 지속성을 제공합니다.

핵심 포인트

  • 세 가지 실행 모드 제공: 순차적 실행(Loop), 병렬 서브 에이전트 실행(Swarm), 공유 계약 기반의 에이전트 팀(Team)
  • Claude Code의 내장 태스크 관리 시스템을 활용하여 종료 기준(exit criteria) 강제 및 자동 지속성 지원
  • 기존의 외부 셸 스크립트나 plan.md 방식보다 구조화된 데이터 관리와 컨텍스트 유지 측면에서 우수함
  • Ralph TUI 및 Beads와의 통합을 통해 대시보드 시각화 및 세션 간 태스크 추적 가능

Claude Code의 내장 태스크 시스템 (Task System)을 활용한 루프 (Loops), 스웜 (swarms), 그리고 팀 (teams).

루프 (Loop), 스웜 (Swarm), 팀 (Team)은 세 가지 실행 모드입니다. 루프 (Loop)는 순차적으로 실행됩니다. 스웜 (Swarm)은 병렬로 서브 에이전트 (subagents)를 실행합니다. 팀 (Team)은 에이전트 팀 (Agent Teams)을 통해 공유된 계약 (contracts)을 가진 전체 Claude Code 인스턴스를 생성합니다. 이 모든 모드는 Claude의 네이티브 태스크 의존성 (task dependencies), ctrl+t 진행 상황 확인, 그리고 자동 지속성 (automatic persistence)을 사용합니다.

플랜 (Plans)은 종료 기준 (exit criteria)을 정의합니다. 루프 (Loops)는 테스트를 통과할 때까지 실행됩니다. '완료 (Done)'는 실제로 완료되었음을 의미합니다.

사용자: "인증 기능을 추가해줘"
AI: *코드를 작성함* "완료!"
사용자: *테스트 실행* — 3개 실패
...
# 옵션 A: 채팅에서 논의한 후 컨텍스트 (context)에서 실행
사용자: "이 인증 버그를 수정해야 해요..." [주고받는 논의]
사용자: /implement-loop 우리가 논의한 인증 버그를 수정해줘
...
# 설치
/plugin marketplace add GantisStorm/essentials-claude-code
/plugin install essentials@essentials-claude-code
...

외부 의존성 (external dependencies) 없음. 세 가지 모드 모두 종료 기준 (exit criteria)을 강제합니다. 스웜 (Swarm)은 기본적으로 3개의 동시 작업자 (concurrent workers)를 사용합니다. 팀 (Team)은 tmux와 CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 설정이 필요합니다.

우리의 루프 (loop), 스웜 (swarm), 팀 (team) 명령어는 Claude Code의 내장 태스크 관리 시스템 (built-in Task Management System) (v2.1.19 이상)을 사용합니다.

Ralph TUI와 Beads가 원활하게 통합됩니다. 대시보드 시각화를 위해 Ralph TUI를 사용하세요. 세션 간 지속적인 태스크 추적을 위해 Beads를 사용하세요.

커뮤니티는 우회 방법을 통해 Ralph Wiggum 루프를 구축해 왔습니다:

중단 훅 (Stop hooks): 각 Claude 응답 후에 실행되는 셸 스크립트 (.sh 파일)로, 출력에서 "complete" 또는 "done"과 같은 키워드를 검색하여 루프를 계속할지 결정합니다.
외부 플랜 파일 (External plan files): Claude에 내장된 지속성 (persistence) 기능이 없었기 때문에 태스크 상태를 추적하던 마크다운 (Markdown) 파일입니다.
TodoWrite: 의존성 순서가 없는 평면적인 태스크 목록으로, 태스크가 순서와 상관없이 실행될 수 있었습니다.
새 세션 (Fresh sessions): 컨텍스트 부패 (context rot)에 대응하기 위해 새로운 대화를 시작하며, 매번 수동으로 상태를 재설정해야 했습니다.

Claude Code v2.1.19 이상은 이 모든 것을 대체하는 네이티브 도구들을 제공합니다:

기존의 임시 방편네이티브 대체 도구더 나은 이유
중단 후크 (shell scripts)TaskUpdate({ status: "completed" })외부 스크립트가 필요 없으며, 상태가 구조화된 데이터 (structured data)로 관리됨
상태 유지를 위한 외부 plan.md~/.claude/tasks/ 저장소컨텍스트 압축 (context compaction) 시에도 자동으로 유지됨
TodoWrite 평면 리스트TaskUpdate({ addBlockedBy: [...] })의존성 (dependencies)이 강제되어 작업이 순서대로 실행됨
수동 세션 조정CLAUDE_CODE_TASK_LIST_ID 환경 변수세션 간에 동일한 작업 목록을 유지함
단일 에이전트 (Single agent)TaskList + 병렬 워커 (parallel workers)여러 에이전트가 공유 상태를 통해 협업함

핵심 루프는 변하지 않습니다: 계획 (Plan) → 구현 (Implement) → 검증 (Verify) → 실패 시 루프 (Loop if fail) → 통과 시 완료 (Done when pass).

의존성 관리 (Dependency management): 작업 #3이 #1과 #2에 의해 차단(blocked)된 경우, 두 작업이 모두 완료될 때까지 실제로 시작할 수 없습니다.
시각적 진행 상황 (Visual progress): ctrl+t를 눌러 상태가 포함된 실시간 작업 트리 (task tree)를 확인하세요.
병렬 조정 (Parallel coordination): 여러 워커가 하나의 작업 목록을 공유하며 충돌이 발생하지 않습니다.
지속성 (Persistence): 컨텍스트 압축 (context compaction) 시에도 유지되며, ~/.claude/tasks/에 저장됩니다.

TaskList는 ID, 주제 (subject), 상태 (status), 그리고 차단 항목 (blockedBy)을 보여주지만, 설명 (description)은 보여주지 않습니다. 구현 세부 사항을 확인하려면 각 작업에 대해 개별적으로 TaskGet을 호출해야 합니다.

이것이 우리가 여전히 계획 파일 (plan files)을 사용하는 이유입니다. 작업 (Tasks)은 상태를 추적하고, 계획 (Plans)은 구현 세부 사항을 보유합니다.

계획 파일 (.claude/plans/) → 전체 구현 코드 (작업당 50-200+ 라인)
작업 시스템 (~/.claude/tasks/) → 상태 추적, 의존성, 병렬 조정
도구목적
TaskCreate주제 (subject), 설명 (description), 활성 양식 (activeForm)과 함께 작업 생성
TaskUpdate상태 변경, 소유자 설정, blockedBy 의존성 추가
TaskGet단 하나의 작업에 대한 전체 세부 정보 (설명 포함) 가져오기
TaskList모든 작업 확인 (단, 주제, 상태, blockedBy만 표시)

의존성은 전체 파이프라인을 통해 흐릅니다:

계획 생성자 (Plan Creator) → 변환기 (Converter) → 실행자 (Executor)
┌──────────────┐ ┌─────────────────────────┐ ┌──────────────────────┐
│ 의존성 (Dependency) │ → │ dependsOn (prd.json) │ → │ addBlockedBy (task │
...

계획 생성자(Plan creators)는 ## Dependency Graph 테이블을 작성합니다. 컨버터(Converters)는 이를 읽어 dependsOn (prd.json) 또는 depends_on (beads)을 구축합니다. 루프/스웜(Loop/swarm) 명령은 ID 맵을 사용하여 이를 addBlockedBy로 변환합니다.

태스크 라이프사이클 (Task lifecycle): pending (대기) → (의존성이 완료될 때까지 차단됨) → in_progress (진행 중) → completed (완료)

blockedBy가 비어 있지 않은 태스크는 ctrl+t에서 차단됨 (blocked) 상태로 표시됩니다. 차단 중인 태스크가 completed로 표시되면, 차단 목록에서 자동으로 제거됩니다. blockedBy 목록이 비어 있게 되면 태스크는 준비됨 (ready) (실행 가능) 상태가 됩니다.

TaskCreate({ subject: "Set up database" }) // → task "1"
TaskCreate({ subject: "Create auth middleware" }) // → task "2"
TaskUpdate({ taskId: "2", addBlockedBy: ["1"] }) // #2는 #1을 기다림

태스크 #2는 #1이 완료될 때까지 시작할 수 없습니다. 시스템이 이를 강제합니다.

Tasks (2 done, 1 in progress, 3 open)
✓ #1 Set up database schema
■ #2 Create auth middleware (Worker-1)
...

메인 에이전트(Main agent)는 백그라운드 에이전트(background agents)의 큐(queue)를 제어합니다:

Main: Mark #1-3 in_progress → Spawn Agent-1, Agent-2, Agent-3
↓
Main: Stop and wait — background agents notify on completion
...

각 에이전트는 하나의 태스크를 수행한 후 종료됩니다. 경합(racing)이나 무한 루프(stuck loops)는 발생하지 않습니다. 메인 에이전트는 생성 시 태스크를 in_progress로 표시하고, 반환 시 completed로 표시하며, 슬롯이 비면 큐를 다시 채웁니다.

태스크는 CLAUDE_CODE_TASK_LIST_ID를 통해 세션 간에 유지됩니다:

# 터미널 세션별
CLAUDE_CODE_TASK_LIST_ID="my-project" claude
# 또는 .claude/settings.json 내에
...

내일 새로운 세션을 시작하더라도 태스크 목록은 그대로 남아 있습니다.

워크플로우 (Workflow)적합한 용도컨버터 (Converter)루프 (Loop)스웜 (Swarm)팀 (Team)
Simple태스크의 80%/implement-loop, /plan-loop/implement-swarm, /plan-swarm/implement-team, /plan-team
Tasksprd.json 형식/tasks-converter/tasks-loop/tasks-swarm
Beads지속적 메모리 (Persistent memory)/beads-converter/beads-loop/beads-swarm

**컨버터 (Converters)**는 계획을 실행 가능한 형식으로 변환합니다. /tasks-converter

dependsOn 배열이 포함된 prd.json 파일을 생성합니다. /beads-converter

epic $\rightarrow$ task 계층 구조와 depends_on을 가진 beads를 생성합니다. bd dep add를 통해 수행됩니다. 두 컨버터 모두 계획의 ## Dependency Graph 테이블을 읽어 병렬 실행 (parallel execution)을 극대화하는 의존성을 구축합니다.

**모든 방식은 Claude Code의 내장 태스크 시스템 (Task System)**을 사용하여 의존성 관리, ctrl+t 진행 상황 확인, 그리고 지속성 (persistence)을 처리합니다.

대안 실행기 (Alternative executor): Ralph TUI는 클래식한 Ralph Wiggum 루프 스타일로 Tasks/Beads를 실행합니다 (Claude Code에 네이티브 태스크 기능이 생기기 전의 커뮤니티 방식).

측면 (Aspect)LoopSwarmTeam
실행기 (Executor)메인 에이전트 (포그라운드)백그라운드 하위 에이전트 (subagents)전체 Claude Code 인스턴스 (tmux pane)
동시성 (Concurrency)한 번에 1개 태스크최대 N개 태스크 (--workers)모든 에이전트 병렬 실행
컨텍스트 (Context)전체 대화 기록각 에이전트는 태스크 설명만 수신각 에이전트는 계약 (contracts) + 소유 범위 (ownership scope) 수신
통신 (Communication)해당 없음 (단일 에이전트)워커 (Workers) 간 격리됨에이전트들이 리드 (lead)를 통해 서로 메시지 전달
리드 역할 (Lead role)직접 구현큐 관리자 (Queue manager)계약 작성자 + 코디네이터 (코딩 없음)
사전 작업 (Pre-work)계획 파싱, 태스크 생성계획 파싱, 태스크 생성계획 파싱, 계약 정의, 태스크 생성
가시성 (Visibility)작업 실시간 확인ctrl+t 또는 TaskList로 확인각 에이전트가 tmux pane에서 확인 가능
최적 용도 (Best for)순차적 태스크독립적인 병렬 태스크통합이 필요한 멀티 컴포넌트 빌드
태스크 시스템 (Task system)동일동일동일
의존성 (Dependencies)동일동일동일

세 방식 모두 의존성이 포함된 동일한 태스크 그래프를 사용합니다. Loop는 순차적으로 실행합니다. Swarm은 독립적인 병렬 작업을 위해 격리된 하위 에이전트 (subagents)를 생성합니다. Team은 사전에 통합 계약 (integration contracts)을 정의하고 서로 통신할 수 있는 전체 Claude Code 인스턴스를 생성합니다 — 컴포넌트 간에 인터페이스(프론트엔드 + 백엔드 + 데이터베이스) 합의가 필요한 경우에 사용합니다.

# 대화 컨텍스트로부터 (논의 후)
/implement-loop auth 버그 수정 # 순차적 (Sequential)
/implement-swarm API 핸들러 리팩토링 # 병렬 하위 에이전트 (Parallel subagents)
...
/plan-creator JWT 인증 (JWT authentication) 추가
/tasks-converter .claude/plans/jwt-auth-plan.md
# Claude Code의 작업 시스템 (Task System)으로 실행 (권장)
...
bd init
/plan-creator JWT 인증 (JWT authentication) 추가
/beads-converter .claude/plans/jwt-auth-plan.md
...
┌─────────────────┐
│ 소스 읽기 (Read Source) │
│ (계획/컨텍스트) (plan/context) │
│ ...

순차적 실행 (Sequential execution). 메인 에이전트가 의존성 순서에 따라 한 번에 하나의 작업을 처리합니다. 차단된 작업 (Blocked tasks)은 의존성이 완료될 때까지 대기합니다. 종료 기준 (Exit criteria)은 마지막에 검증됩니다. 모든 테스트를 통과할 때까지 루프를 반복합니다.

┌─────────────────┐
│ 소스 읽기 (Read Source) │
│ (계획/컨텍스트) (plan/context) │
│ ...

큐 기반 병렬 실행 (Queue-based parallel execution) (기본값: 3개의 워커 (workers)). 메인 에이전트가 작업을 진행 중 (in_progress)으로 표시하고 최대 N개의 백그라운드 에이전트를 생성합니다. 각 에이전트는 하나의 작업을 수행한 후 종료됩니다. 완료 알림이 오면, 메인 에이전트는 해당 작업을 완료 (completed)로 표시하고, 작업 목록 (TaskList)에서 새로 차단이 해제된 작업 (상태=pending, blockedBy가 비어 있음)을 확인하여 이를 진행 중 (in_progress)으로 표시하고 워커를 생성합니다. 의존성이 강제됩니다 — 차단된 작업은 모든 차단 요소 (blockers)가 완료될 때까지 대기합니다.

┌─────────────────┐
│ 소스 읽기 (Read Source) │
│ (계획/컨텍스트) (plan/context) │
│ ...

계약 우선 병렬 실행 (Contract-first parallel execution). 리드 에이전트 (Lead agent)가 계획을 읽고 정확한 통합 계약 (integration contracts: API URL, JSON 형태, 상태 코드, SSE 형식)을 정의한 다음, 위임 모드 (Delegate Mode)를 통해 tmux 창에 전체 Claude Code 인스턴스를 생성합니다. 각 에이전트는 자신이 생성하는 계약, 소비하는 계약, 그리고 소유권 경계 (ownership boundaries)를 전달받습니다. 에이전트들은 계약 변경 사항에 대해 리드를 통해 통신합니다. 모든 에이전트가 완료되면, 리드는 계약 차이 (contract diff) 및 엔드 투 엔드 검증 (end-to-end validation)을 실행합니다.

스웜 (Swarms)과의 주요 차이점: 스웜 워커는 격리되어 있어 서로 통신할 수 없습니다. 팀 에이전트 (Team agents)는 계약을 공유하고 리드를 통해 통신하므로, 인터페이스가 일치해야 하는 다중 컴포넌트 빌드 (multi-component builds)에 이상적입니다.

명령어용도
/plan-creator <feature>새로운 기능 (brownfield development)
/bug-plan-creator <error> <desc>버그 수정, 근본 원인 분석 (root cause analysis)
/code-quality-plan-creator <files>리팩터링 (Refactoring), 데드 코드 (dead code), 보안

세 가지 명령어 모두 동일한 구조의 계획을 생성합니다: 파일별 구현 세부 사항, ## Dependency Graph (의존성 그래프) 테이블, 그리고 종료 기준 (exit criteria). 코드 맵 (code map), 설계 문서 (design doc), 또는 기타 참조 파일을 추가 컨텍스트 (context)로 전달하십시오. 생성된 모든 계획은 어떤 컨버터 (converter)로든 전달할 수 있으며, /plan-loop, /plan-swarm, 또는 /plan-team을 통해 직접 실행할 수 있습니다.

명령어소스
/implement-loop <task>대화 컨텍스트 (Conversation context)
/plan-loop <plan>계획 파일 (필수)
/tasks-loop [prd.json]prd.json
/beads-loop [--label]Beads DB

모든 루프(loop) 취소: /cancel-loop

명령어소스
/implement-swarm <task>대화 컨텍스트 (Conversation context)
/plan-swarm <plan>계획 파일 (필수)
/tasks-swarm [prd.json]prd.json
/beads-swarm [--epic]Beads DB

모든 스웜(swarm) 취소: /cancel-swarm

명령어소스
/implement-team <task>대화 컨텍스트 (Conversation context)
/plan-team <plan>계획 파일 (필수)

모든 팀(team) 취소: /cancel-team

필수 사항: tmux + CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
리드 (Lead)가 통합 계약 (integration contracts)을 정의하고, 위임 모드 (Delegate Mode)를 통해 tmux 창(pane)에 전체 Claude Code 인스턴스를 생성합니다. 에이전트 (Agents)들은 리드를 통해 통신합니다. Cole Medin의 build-with-agent-team 패턴을 기반으로 합니다.

명령어출력의존성 소스
/tasks-converter <plan>dependsOn 배열이 포함된 prd.json계획의 ## Dependency Graph 테이블
/beads-converter <plan>bd dep add가 포함된 Beads 이슈계획의 ## Dependency Graph 테이블

컨버터 (Converters)는 계획의 ## Dependency Graph를 읽어 파일→태스크/bead ID 맵을 구축하고, 파일 의존성을 태스크 의존성으로 변환합니다. 의존성 그래프가 없는 이전 버전의 계획의 경우, 파일별 Dependencies / Provides를 사용합니다.

명령 (Command)목적 (Purpose)
/plan-schema [validate <path>]계획 파일 형식 (Plan file format) — 섹션, 파일별 형식, 의존성 그래프 (dependency graph) 규칙
/prd-schema [validate <path>]prd.json 스키마 (schema) — 필수 필드, 거부된 필드, 예시
/beads-schema [validate]Beads CLI — 이슈 유형 (issue types), 상태 (statuses), 우선순위 (priorities), 명령 (commands)

빠른 참조를 위해 인자 없이 호출하십시오. 기존 파일을 스키마 (schema)에 따라 검사하려면 validate와 함께 호출하십시오.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Codex tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0