분석 대상: obra/superpowers v5.1.0 구성: 14개 스킬 + 1개 SessionStart 훅. Claude Code · Codex · Cursor · OpenCode · Gemini · Copilot CLI 6개 하네스에서 동작.
구성 방식: 사용된 AI 에이전트 기술을 항목식으로 정의하고 Superpowers가 그 기술을 어떻게 쓰는지 짚는다.
한 줄 요약
세션 시작 시 SessionStart hook이 "Skill 툴부터 호출하라"는 메타 지시문을 system prompt에 강제 첨부. 이 메타 지시문이 14개 마크다운(스킬)을 도미노처럼 발화시켜 브레인스토밍 → 계획 → 서브에이전트 디스패치 → TDD → 리뷰 → 마무리를 자동화한다.
사용자 시점
설치:
/plugin install superpowers@claude-plugins-official설치 후 첫 메시지 입력 전부터 컨텍스트 맨 앞에 자동 첨부 (실제 본문 발췌):
<EXTREMELY_IMPORTANT>
You have superpowers.
**Below is the full content of your 'superpowers:using-superpowers' skill ...**
If you think there is even a 1% chance a skill might apply to what you are
doing, you ABSOLUTELY MUST invoke the skill.
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
This is not negotiable. This is not optional. You cannot rationalize your
way out of this.
</EXTREMELY_IMPORTANT>
한글로 옮기면:
<극도로 중요>
너는 superpowers를 가졌다.
지금 하려는 일에 스킬이 적용될 확률이 1%라도 있으면 반드시 스킬을 호출하라.
스킬이 적용되는 작업이라면 너에겐 선택권이 없다. 무조건 사용하라.
이건 협상 대상이 아니다. 선택 사항도 아니다. 합리화로 빠져나갈 수 없다.
</극도로 중요>
"할 일 앱 만들어줘" 같은 입력에 대한 동작:
기본 Claude Code와 다른 점은 두 가지.
- 코드 작성 전에 멈춘다(질문·승인).
- 매 동작 전에 어떤 스킬을 호출했는지 선언한다.
3층 구조
기술 ①: Hook
정의
- Hook — 에이전트 하네스가 제공하는 이벤트 콜백. 모델 흐름의 특정 시점에 사용자 정의 셸 명령을 실행하고 그 stdout을 모델 컨텍스트에 합칠 수 있다.
- SessionStart — 세션이 시작되거나 컨텍스트가 리셋될 때 발화하는 hook.
- 매처(matcher) — 어떤 종류의 이벤트에서 hook을 발화할지 지정하는 패턴.
Claude Code의 hook 종류
| Hook | 발화 시점 |
|---|---|
| SessionStart | 새 세션 · /clear · 자동 compact |
| UserPromptSubmit | 사용자 메시지 직전 |
| PreToolUse / PostToolUse | 툴 호출 전/후 |
| Stop | 모델 응답 종료 시 |
Superpowers의 hook 설정
{
"hooks": {
"SessionStart": [{
"matcher": "startup|clear|compact",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/hooks/run-hook.cmd session-start"
}]
}]
}
}- 매처 3종(
startup|clear|compact)으로 컨텍스트가 사라지는 모든 경계에서 재주입 보장. compact매처가 핵심. 자동 요약으로 system 필드가 압축돼도 다음 요청 전에 다시 채워진다.
폴리글랏 wrapper
- 한 파일이 bash와 cmd.exe 양쪽에서 다르게 해석되는 스크립트.
- 상단
: << 'CMDBLOCK'을 Unix는 heredoc no-op으로 무시, Windows는 그 블록만 실행. - Hook 파일을 확장자 없이 둠 — Claude Code Windows의
.sh자동 감지(bash 프리픽스 강제) 회피.
기술 ②: System Prompt 인젝션
정의
- system prompt — 메시지 역할(role) 중 하나. 모델의 행동 규범을 설정. 매 요청마다 다시 보내는 영속 컨텍스트.
- role — Anthropic Messages API의 메시지 분류.
system·user·assistant·tool_result. - additionalContext — SessionStart hook의 stdout 중 system 필드 뒤에 합쳐지는 동적 추가 컨텍스트 채널.
Messages API 요청 페이로드
{
"model": "claude-opus-4-7",
"system": "You are Claude Code, ...\n\n<EXTREMELY_IMPORTANT>...</EXTREMELY_IMPORTANT>",
"messages": [
{ "role": "user", "content": "할 일 앱 만들어줘" },
{ "role": "assistant", "content": [...] }
],
"tools": [{ "name": "Skill", "input_schema": { ... } }, ...]
}Claude Code의 system prompt 합성
- ②와 ④는 독립 채널 — 사용자가 CLAUDE.md를 고쳐도 ④는 무력화되지 않는다.
- ④는 hook 매처에 묶여 있어 세션 단위로 영속. turn 단위 turncate 영향 없음.
멀티 하네스 어댑터
| 하네스 | JSON 키 |
|---|---|
| Claude Code | hookSpecificOutput.additionalContext (nested) |
| Cursor | additional_context (snake_case) |
| Copilot CLI · SDK | additionalContext (top-level) |
- 본문은 동일, 출력 어댑터만 환경변수(
CURSOR_PLUGIN_ROOT·CLAUDE_PLUGIN_ROOT·COPILOT_CLI)로 분기.
프롬프트 캐시 트레이드오프
- prompt caching — system 필드가 5분 안에 재사용되면 입력 토큰 비용을 약 1/10로 깎아주는 Anthropic API 기능.
- 같은 세션 내 연속 요청: 캐시 히트 가능.
/clear·compact: hook이 ④를 재주입 → key 자체는 동일하지만 TTL 안에서만 유효.- 결론:
/clear·compact가 잦은 사용 패턴일수록 Superpowers의 컨텍스트 비용 증가.
기술 ③: Prompt Engineering으로 회피 차단
정의
- instruction following — 모델이 system/user 지시를 얼마나 충실히 따르는가. 완전하지 않음.
- 자기 합리화 — 모델이 학습 과정에서 익힌, 지시를 우회하는 경향. "이건 간단하니까", "이미 안다" 등.
모델이 지시를 어기는 전형적 패턴
| 상황 | 학습된 회피 |
|---|---|
| 요청이 간단해 보임 | "이건 그냥 한 줄 답하면 돼" |
| 이미 안다고 느낌 | "이 스킬 외워뒀어, 다시 안 읽어도 돼" |
| 빠른 응답이 더 좋아 보임 | "먼저 코드 둘러보자" |
Superpowers의 봉쇄 표
using-superpowers/SKILL.md에 사전 박힌 반박 (원문 그대로):
## Red Flags
These thoughts mean STOP—you're rationalizing:
| Thought | Reality |
|----------------------------------------|-------------------------------------------|
| "This is just a simple question" | Questions are tasks. Check for skills. |
| "I need more context first" | Skill check comes BEFORE clarifying. |
| "Let me explore the codebase first" | Skills tell you HOW to explore. |
| "I can check git/files quickly" | Files lack conversation context. |
| "I remember this skill" | Skills evolve. Read current version. |
| "This doesn't count as a task" | Action = task. Check for skills. |
| "The skill is overkill" | Simple things become complex. Use it. |
| "I'll just do this one thing first" | Check BEFORE doing anything. |
| "This feels productive" | Undisciplined action wastes time. |
| "I know what that means" | Knowing the concept ≠ using the skill. |
한글로 옮기면:
이런 생각이 들면 멈춰라 — 너는 합리화하고 있다.
| 모델의 회피 사고 | 실제 |
|----------------------------|-----------------------------------|
| "그냥 간단한 질문이잖아" | 질문도 태스크다. 스킬 확인하라. |
| "맥락부터 더 봐야겠다" | 스킬 확인이 명확화 질문보다 먼저다.|
| "코드베이스부터 둘러볼까" | 스킬이 둘러보는 방법을 가르친다. |
| "git/파일 빨리 한번 보지" | 파일에는 대화 맥락이 없다. |
| "이 스킬은 외워뒀어" | 스킬은 진화한다. 최신 버전을 읽어라.|
| "이건 태스크는 아니지" | 동작 = 태스크다. 스킬 확인하라. |
| "스킬은 과한데" | 단순한 것도 복잡해진다. 써라. |
| "이것만 먼저 하고" | 뭘 하기 전에 먼저 확인하라. |
| "이거 좀 생산적인 느낌이야" | 무규율 행동은 시간 낭비다. |
| "이게 무슨 뜻인지 알아" | 개념 알기 ≠ 스킬 사용하기. 호출하라.|
- 일반 system prompt: "이렇게 해라"
- Superpowers: "이렇게 도망가지 마라"를 같이 박음
충돌 해소 규칙
원문:
## Instruction Priority
1. **User's explicit instructions** (CLAUDE.md, GEMINI.md, AGENTS.md,
direct requests) — highest priority
2. **Superpowers skills** — override default system behavior where they conflict
3. **Default system prompt** — lowest priority
If CLAUDE.md, GEMINI.md, or AGENTS.md says "don't use TDD" and a skill says
"always use TDD," follow the user's instructions. The user is in control.
한글:
## 지시 우선순위
1. 사용자의 명시 지시 (CLAUDE.md · GEMINI.md · AGENTS.md · 직접 요청) — 최우선
2. Superpowers 스킬 — 충돌 시 기본 동작을 덮어쓴다
3. 기본 system prompt — 최하위
CLAUDE.md가 "TDD 쓰지 마"라고 하고 스킬이 "항상 TDD"라고 하면, 사용자 지시를 따른다.
주도권은 사용자에게 있다.
기술 ④: Tool Use와 Skill Discovery
정의
- Tool use (function calling) — 모델이 텍스트 대신 구조화된 JSON 토큰(
tool_use블록)을 출력해 외부 함수를 호출하는 메커니즘. - tool_use 블록 — 모델 출력의 한 종류.
name+input(JSON) 포함. - tool_result 블록 — 하네스가 툴 실행 결과를 모델에 돌려줄 때
userrole 메시지에 담는 블록. - stop_reason — 모델 응답 종료 사유.
end_turn·tool_use·max_tokens등. - agentic loop — 모델이
tool_use → tool_result → 다음 turn사이클을 자율적으로 도는 흐름.
tool use 사이클
- 툴 결과는 system이 아니라 user role의 tool_result 블록으로 모델에 돌아간다.
Skill 툴
- Skill 툴 — Claude Code가 제공하는 메타 툴. 호출 결과로 지정한 SKILL.md 본문을 모델 컨텍스트에 주입.
- 일반 툴(Bash·Read·Edit): 모델의 행동 능력을 확장.
- Skill 툴: 모델의 행동 규칙을 확장 (결과가 데이터가 아니라 지시문).
Skill 툴 호출 사이클
Step 1 — 모델 출력:
{
"type": "tool_use",
"id": "toolu_skill_001",
"name": "Skill",
"input": { "skill": "brainstorming" }
}Step 2 — 하네스 동작 (의사 코드):
skill_dir = find_skill("brainstorming")
skill_body = read_file(f"{skill_dir}/SKILL.md")
return ToolResult(
tool_use_id="toolu_skill_001",
content=skill_body,
)Step 3 — 모델 입력:
{
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": "toolu_skill_001",
"content": "---\nname: brainstorming\n...\n# Brainstorming Ideas Into Designs\n..."
}]
}Lazy context loading
- 14개 SKILL.md 합치면 30K~50K 토큰.
- system에 전부 박으면 단순 질문도 매번 전액 결제.
- 대안: description(1~2K 토큰)만 박고, 본문은 Skill 툴 호출 시점에만 결제.
- 운영체제의 demand paging, DB의 lazy join과 같은 발상.
description = 자연어 라우팅 키
---
name: writing-plans
description: Use when you have a spec or requirements for a multi-step task,
before touching code
---- 하네스는 모든 스킬의 description을 모아 시스템에 노출.
- 모델이 사용자 입력을 받아 description의 트리거 조건과 매칭 → 어떤 Skill을 호출할지 결정.
- 패턴:
Use when ...트리거 /before ...시점 /SKIP: ...부정 조건.
워크플로 그래프
- 각 SKILL.md의 마지막은 다음 스킬을 명시 호출하도록 지시.
- 예: brainstorming → "The terminal state is invoking writing-plans."
- 모델의 라우팅 추론 비용을 0으로 만듦.
의사 XML 게이트
brainstorming/SKILL.md의 <HARD-GATE> (원문):
<HARD-GATE>
Do NOT invoke any implementation skill, write any code, scaffold any project,
or take any implementation action until you have presented a design and the
user has approved it. This applies to EVERY project regardless of perceived
simplicity.
</HARD-GATE>
한글:
<HARD-GATE>
구현 스킬을 호출하지 말고, 코드를 쓰지 말고, 프로젝트를 scaffolding 하지 말고,
어떤 구현 동작도 하지 마라 — 설계를 제시하고 사용자가 승인할 때까지.
이건 단순해 보이는 프로젝트를 포함한 모든 프로젝트에 적용된다.
</HARD-GATE>
using-superpowers/SKILL.md의 <SUBAGENT-STOP> (원문):
<SUBAGENT-STOP>
If you were dispatched as a subagent to execute a specific task, skip this skill.
</SUBAGENT-STOP>
한글:
<SUBAGENT-STOP>
네가 특정 태스크 실행을 위해 디스패치된 서브에이전트라면, 이 스킬을 건너뛰어라.
</SUBAGENT-STOP>
- LLM이 XML 태그를 구조적 경계로 학습한 경향을 이용 — 가짜 태그도 강한 정지 신호로 작동.
"Announce at start" 규칙
각 SKILL.md에 박힌 선언 규칙 (원문):
**Announce at start:** "I'm using the writing-plans skill to create the
implementation plan."
한글:
**시작 시 선언:** "writing-plans 스킬로 구현 계획을 세우는 중입니다."
- 모델이 매 스킬 발화 시 사용자에게 한 줄 출력 — 디버깅 가능 + 사용자 신뢰.
- 사용자 시점의 결과: "Using brainstorming skill ...", "Using writing-plans skill ..."가 메시지마다 첫 줄에 떠 있음.
다음 스킬 명시 호출
brainstorming/SKILL.md 끝부분 (원문):
**The terminal state is invoking writing-plans.** Do NOT invoke frontend-design,
mcp-builder, or any other implementation skill. The ONLY skill you invoke after
brainstorming is writing-plans.
한글:
**종료 상태는 writing-plans 호출이다.** frontend-design, mcp-builder, 그 외 어떤
구현 스킬도 호출하지 마라. brainstorming 다음에 호출할 수 있는 유일한 스킬은
writing-plans다.
- 모델의 라우팅 추론 비용 0 — 다음 스킬 이름을 현재 스킬이 직접 알려줌.
기술 ⑤: Subagent와 Context Isolation
정의
- subagent — 새 OS 프로세스가 아니라, 같은 모델 API 엔드포인트에 새로운
messages배열로 보내는 별도 호출. 자기만의 깨끗한 컨텍스트 윈도우를 가짐. - Task 툴 — 메인 에이전트가 서브를 디스패치할 때 쓰는 툴.
prompt파라미터로 서브의 메시지를 통째로 전달. - lost in the middle — 컨텍스트 중간에 박힌 정보를 모델이 흐리게 처리하는 현상.
- 컨텍스트 오염 — 앞선 작업의 잘못된 가설·취소된 결정이 다음 작업 판단에 영향을 주는 현상.
- 프롬프트 템플릿 — 마크다운 파일 한 장이 곧 한 종류의 에이전트 페르소나 정의(구현자 / 스펙 리뷰어 / 품질 리뷰어).
- multi-agent system — 같은 모델을 쓰면서 프롬프트만 달리해 역할이 다른 여러 에이전트로 변신시키는 구조.
메인 ↔ 서브 관계
subagent-driven-development 폴더 구성
subagent-driven-development/
├── SKILL.md # 메인에게 절차 가르침
├── implementer-prompt.md # = 구현자 페르소나
├── spec-reviewer-prompt.md # = 스펙 리뷰어 페르소나
└── code-quality-reviewer-prompt.md # = 품질 리뷰어 페르소나
- 메인이 Skill 툴로 SKILL.md를 읽음.
- SKILL.md가 메인에게 지시: "Task 툴 호출. prompt에 implementer-prompt.md 본문 + 이번 태스크 본문을 박아라."
- 메인이 Task 툴 호출 → 하네스가 같은 모델 API에 새 messages 배열로 별도 호출.
이중 리뷰 루프
설계 결정 다섯 가지
Fresh subagent per task
subagent-driven-development/SKILL.md (원문):
**Why subagents:** You delegate tasks to specialized agents with isolated
context. By precisely crafting their instructions and context, you ensure
they stay focused and succeed at their task. They should never inherit your
session's context or history — you construct exactly what they need. This
also preserves your own context for coordination work.
한글:
**서브에이전트를 쓰는 이유:** 너는 격리된 컨텍스트를 가진 전문 에이전트에게
태스크를 위임한다. 그들의 지시와 컨텍스트를 정밀하게 작성함으로써, 그들이 집중하고
태스크에 성공하도록 보장한다. 그들은 절대로 네 세션의 컨텍스트나 히스토리를 물려받지
않아야 한다 — 너는 그들에게 정확히 필요한 것만 구성해 준다. 이건 네 자신의 컨텍스트
도 코디네이션 작업을 위해 보존한다.
태스크 본문 inline 전달
implementer-prompt.md 템플릿 (원문):
## Task Description
[FULL TEXT of task from plan - paste it here, don't make subagent read file]
한글:
## 태스크 설명
[plan 파일의 태스크 본문 전체 — 여기 붙여 넣어라. 서브에이전트가 파일을 다시 읽게
하지 마라.]
Do Not Trust the Report
spec-reviewer-prompt.md (원문):
## CRITICAL: Do Not Trust the Report
The implementer finished suspiciously quickly. Their report may be incomplete,
inaccurate, or optimistic. You MUST verify everything independently.
**DO NOT:**
- Take their word for what they implemented
- Trust their claims about completeness
- Accept their interpretation of requirements
**DO:**
- Read the actual code they wrote
- Compare actual implementation to requirements line by line
- Check for missing pieces they claimed to implement
- Look for extra features they didn't mention
한글:
## 결정적 규칙: 보고서를 믿지 마라
구현자가 의심스럽게 빨리 끝냈다. 그들의 보고는 불완전하거나, 부정확하거나,
지나치게 낙관적일 수 있다. 너는 반드시 모든 것을 독립적으로 검증해야 한다.
**하지 말 것:**
- 그들이 무엇을 구현했는지에 대해 그들의 말을 그대로 받아들이기
- 완료 주장에 대한 신뢰
- 요건에 대한 그들의 해석을 그대로 수용
**할 것:**
- 그들이 쓴 실제 코드를 읽기
- 실제 구현을 요건과 한 줄씩 대조
- 구현했다고 주장한 것 중 빠진 부분 찾기
- 언급하지 않은 추가 기능 찾기
Escalate without penalty
implementer-prompt.md (원문):
## When You're in Over Your Head
It is always OK to stop and say "this is too hard for me." Bad work is worse
than no work. You will not be penalized for escalating.
**STOP and escalate when:**
- The task requires architectural decisions with multiple valid approaches
- You need to understand code beyond what was provided and can't find clarity
- You feel uncertain about whether your approach is correct
- The task involves restructuring existing code in ways the plan didn't anticipate
- You've been reading file after file trying to understand the system without progress
**How to escalate:** Report back with status BLOCKED or NEEDS_CONTEXT.
한글:
## 네 능력 밖일 때
언제든 멈추고 "이건 나한테 너무 어렵다"고 말해도 된다. 나쁜 작업물은 아예 없는 것보다
나쁘다. 에스컬레이션해도 페널티는 없다.
**다음 상황에선 멈추고 에스컬레이션하라:**
- 태스크가 여러 유효한 접근법 사이에서 아키텍처 결정을 요구함
- 제공된 것 이상의 코드를 이해해야 하는데 명확성을 찾을 수 없음
- 네 접근이 맞는지 불확실함
- plan이 예상하지 못한 방식으로 기존 코드 재구성을 요구함
- 시스템을 이해하려고 파일을 계속 읽었지만 진척이 없음
**에스컬레이션 방법:** BLOCKED 또는 NEEDS_CONTEXT 상태로 보고.
리뷰 순서: 스펙 → 품질
- 스펙 안 맞춘 코드의 품질 리뷰는 무의미. 순서 고정.
기술 ⑥: 작업 추적 (TodoWrite)
정의
- TodoWrite — 하네스가 관리하는 외부 작업 리스트 툴. 모델 컨텍스트 밖에 진행 상태 저장.
- 모델 컨텍스트 안의 작업 메모리는 turn이 길어지면 약해진다. 외부 저장이 보완책.
효과
- 순서 보존 — 미완료 항목이 명시적으로 표시되므로 건너뛰기 어려움.
- 사용자 가시성 — 진행 상태가 UI에 노출. 별도 질의 없이 확인 가능.
Superpowers의 적용
brainstorming/SKILL.md의 체크리스트 (원문):
## Checklist
You MUST create a task for each of these items and complete them in order:
1. **Explore project context** — check files, docs, recent commits
2. **Offer visual companion** (if topic will involve visual questions)
3. **Ask clarifying questions** — one at a time
4. **Propose 2-3 approaches** — with trade-offs and your recommendation
5. **Present design** — in sections, get user approval after each section
6. **Write design doc** — save to docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md
7. **Spec self-review** — quick inline check for placeholders, contradictions
8. **User reviews written spec** — ask user to review the spec file
9. **Transition to implementation** — invoke writing-plans skill
한글:
## 체크리스트
다음 항목 각각에 대해 task를 만들어야 하며 순서대로 완료해야 한다:
1. **프로젝트 맥락 탐색** — 파일·문서·최근 커밋 확인
2. **시각 보조 제안** (시각적 질문이 필요한 주제면)
3. **명확화 질문** — 한 번에 하나씩
4. **2~3개 접근법 제안** — 트레이드오프와 추천안 포함
5. **설계 제시** — 섹션 단위로, 섹션마다 사용자 승인 받기
6. **설계 문서 작성** — docs/superpowers/specs/YYYY-MM-DD-<주제>-design.md에 저장
7. **스펙 자체 검토** — placeholder·모순 빠른 인라인 점검
8. **사용자가 작성된 스펙 검토** — 사용자에게 스펙 파일 검토 요청
9. **구현으로 전환** — writing-plans 스킬 호출
- 모델이 5번을 건너뛰고 6번으로 갈 수 없음 — TodoWrite가 미완료 상태로 표시.
기술 ⑦: 프롬프트에 TDD 적용
정의
- 프롬프트 회귀 검증 — 프롬프트 변경이 다른 시나리오에서 회귀를 일으키지 않는지 자동 확인하는 절차.
- 압박 시나리오 — 스킬이 발화해야 할 사용자 입력을 미리 정의해 둔 테스트 케이스.
- headless mode — 사람 입력 없이 미리 정의된 프롬프트로 Claude Code를 자동 실행하는 모드.
RED-GREEN-REFACTOR 매핑
| TDD | Skill |
|---|---|
| Test case | 압박 시나리오 |
| Production code | SKILL.md |
| RED | 스킬 없을 때 규칙 위반 |
| GREEN | 스킬 추가 후 준수 |
| Refactor | 새 회피 합리화 패턴 봉쇄 |
회귀 테스트 구성
tests/skill-triggering/— 6개 스킬에 대해 prompt.txt 3회씩 던져 발화 여부 확인.tests/subagent-driven-dev/— go-fractals · svelte-todo 토이 프로젝트를 headless로 끝까지 구현시킨 뒤 트랜스크립트 jsonl 검증.
- 마지막 검증(over-engineering 여부)이 특이 — 추가 기능을 만들지 않았는지를 회귀 실패 조건으로 박음.
재사용 패턴
| 층 | 메커니즘 | 일반화 패턴 |
|---|---|---|
| 부팅 | SessionStart + 폴리글랏 wrapper | 컨텍스트 리셋에 강건한 인젝션 채널 |
| 강제 | <EXTREMELY_IMPORTANT> + 회피 봉쇄 표 | 학습된 회피 패턴을 사전에 차단 |
| 라우팅 | description의 자연어 트리거 | 자연어 description = 라우팅 키 |
| 워크플로 | terminal node가 다음 스킬 명시 호출 | 사람 개입 없는 스킬 체이닝 |
| 게이팅 | <HARD-GATE> 의사 XML | 정지 지점 시각적 명문화 |
| 안전장치 | Do Not Trust + Escalate without penalty | 에이전트 결탁·거짓 보고 차단 |
| 격리 | Fresh subagent + 태스크 본문 inline | 메인 컨텍스트 보호 |
| 추적 | TodoWrite 외부 상태 | 작업 망각 방지 |
| 검증 | RED-GREEN-REFACTOR + headless | 프롬프트=코드, 시나리오=테스트 |
| 배포 | 멀티 하네스 어댑터 | 출력 JSON 키만 분기 |
한계
- 컨텍스트 비용 —
/clear·compact후 메타스킬 본문 재주입. 캐시 미스 시점마다 결제. - 발화 오버헤드 — 단순 질문에도 Skill 툴을 한 번 거침.
- 공식 off 스위치 부재 — 사용자 지시와 부분 충돌 시 모델 혼란 가능.
- 정적 라우팅 — false positive 학습 없음. 라우팅 가중치 정적.