지난주, Claude Code에 동적 워크플로를 출시했습니다. 이제 Claude가 작업에 맞춰 커스텀 빌드된 자체 harness를 즉석에서 작성할 수 있습니다.
기본 Claude Code harness는 코딩용으로 설계되었지만, 많은 작업이 코딩 작업과 유사하기 때문에 다른 유형의 작업에도 유용하게 사용됩니다. 하지만 최고 성능을 위해 Claude Code 위에 커스텀 harness를 구축해야 했던 특정 작업 클래스도 있습니다. 예를 들어 Research, 보안 분석, 에이전트 팀, 코드 리뷰 등이 있습니다.
워크플로를 사용하면 동적으로 harness를 생성하여 Claude가 이러한 모든 문제와 그 이상을 Claude Code 내에서 기본적으로 해결할 수 있습니다. 또한 워크플로를 다른 사람과 공유하고 재사용할 수도 있습니다.
이 글에서는 초기 워크플로 경험과 학습 내용을 다루어 여러분이 최대한 활용할 수 있도록 하겠습니다.
다만, 모범 사례는 아직 발전 중입니다! 동적 워크플로는 종종 더 많은 토큰을 사용하므로, 언제 어떻게 사용할지 신중히 고려하세요.
참고: 이 게시물은 Claude 블로그에서도 확인할 수 있습니다.
예제 프롬프트
기술적 세부 사항에 들어가기 전에, 워크플로의 가능성을 생각해볼 수 있는 몇 가지 예제 프롬프트부터 소개합니다.
- "이 테스트는 약 50번 중 1번 정도 실패해. 워크플로를 만들어서 이를 재현하고, 가설을 세우고, 작업 트리에서 적대적으로 테스트해봐. /goal 목표는 하나의 가설이 맞을 때까지 멈추지 않는 거야."
- "워크플로를 사용해서 지난 50개 세션을 분석하고, 내가 계속 반복하는 수정 사항을 찾아서 자주 발생하는 것을 CLAUDE.md 규칙으로 만들어줘."
- "워크플로를 사용해서 지난 6개월간 Slack의 #incidents를 파헤치고, 아무도 티켓을 등록하지 않은 반복적인 근본 원인을 찾아줘."
- "내 사업 계획을 가지고 워크플로를 실행해서, 투자자, 고객, 경쟁자 관점에서 각기 다른 에이전트가 분석하게 해줘."
- "여기 80개의 이력서 폴더가 있어. 워크플로를 사용해서 백엔드 역할에 맞게 순위를 매기고 상위 10개를 다시 확인해줘. AskUserQuestion 도구를 사용해서 평가 기준으로 나를 인터뷰해줘."
- "이 CLI 도구 이름이 필요해. 워크플로를 사용해서 여러 옵션을 브레인스토밍하고 토너먼트를 통해 상위 3개를 선정해줘."
- "워크플로를 사용해서 User 모델을 Account로 모든 곳에서 이름을 변경해줘."
- "내 블로그 초안을 검토하고, 워크플로를 사용해서 모든 기술적 주장이 코드베이스와 일치하는지 확인해줘. 잘못된 것을 출시하고 싶지 않아."
동적 워크플로 작동 방식
동적 워크플로는 서브에이전트를 생성하고 조정하는 데 도움이 되는 몇 가지 특수 함수가 포함된 JavaScript 파일을 실행합니다.

동적 워크플로는 데이터 처리를 돕기 위해 JSON, Math, Array와 같은 표준 JavaScript 함수도 포함합니다.
특히 유용한 점은 동적 워크플로가 에이전트가 사용할 모델과 서브에이전트가 자체 작업 트리에서 실행될지 여부를 결정할 수 있어, Claude가 필요한 지능 수준과 격리 수준을 선택할 수 있다는 것입니다.
워크플로가 사용자 작업이나 터미널 종료 등으로 중단된 경우, 세션을 재개하면 워크플로가 중단된 지점부터 계속 진행됩니다.
동적 워크플로가 필요한 이유
기본 Claude Code harness에 작업을 요청하면, 동일한 컨텍스트 창에서 계획과 실행을 모두 수행해야 합니다. 많은 코딩 작업에서 이는 매우 효과적이지만, 장기 실행, 대규모 병렬 처리, 또는 고도로 구조화된 적대적 작업에서는 때때로 문제가 발생할 수 있습니다.
Claude가 단일 컨텍스트 창에서 복잡한 작업을 오래 수행할수록 몇 가지 특정 실패 모드에 취약해지기 때문입니다.
- 에이전트 게으름(Agentic laziness): Claude가 특히 복잡하고 다중 파트로 구성된 작업을 완료하기 전에 중단하고, 부분적으로 진행한 후 작업이 끝났다고 선언하는 현상입니다. 예를 들어 보안 검토에서 50개 항목 중 20개만 처리하는 경우입니다.
- 자기 선호 편향(Self-preferential bias): Claude가 자신의 결과나 발견을 선호하는 경향으로, 특히 평가 기준에 따라 이를 확인하거나 판단하도록 요청받을 때 나타납니다.
- 목표 표류(Goal drift): 많은 턴을 거치면서, 특히 압축(compaction) 이후에 원래 목표에 대한 충실도가 점차 손실되는 현상입니다. 각 요약 단계는 손실이 발생하며, 예외 사항 요구 사항이나 "X를 하지 마세요"와 같은 제약 조건 같은 세부 사항이 사라질 수 있습니다.
워크플로를 생성하면 각각 자체 컨텍스트 창과 집중된 격리된 목표를 가진 별도의 Claude를 조정하여 이러한 문제를 해결하는 데 도움이 됩니다.
동적 워크플로 vs 정적 워크플로
이전에 Claude Agent SDK 또는 claude -p를 사용하여 여러 Claude Code 인스턴스를 함께 조정하는 정적 워크플로를 생성한 적이 있을 수 있습니다.
하지만 정적 워크플로는 모든 엣지 케이스에서 작동해야 하기 때문에 일반적으로 더 일반적입니다. Claude Opus 4.8과 동적 워크플로를 통해 Claude는 이제 사용 사례에 맞춤 제작된 커스텀 harness를 작성할 수 있을 정도로 지능적입니다.

동적 워크플로 사용 시 유용한 패턴
동적 워크플로는 Claude에게 하나를 만들어 달라고 요청하거나, 트리거 단어 "ultracode"를 사용하여 Claude Code가 워크플로를 생성하도록 하면 바로 사용할 수 있습니다.
하지만 동적 워크플로가 어떻게 작동하는지에 대한 멘탈 모델을 구축하면 언제 사용할지, 프롬프트를 통해 Claude를 어떻게 유도할지 이해하는 데 도움이 됩니다.
워크플로를 구축할 때 Claude가 사용하고 조합할 수 있는 몇 가지 일반적인 패턴이 있습니다.

분류 후 실행 (Classify-and-act)
분류기 에이전트를 사용하여 작업 유형을 결정한 다음, 작업에 따라 다른 에이전트나 동작으로 라우팅합니다. 또는 마지막에 분류기를 사용하여 출력을 결정합니다.
분할 후 통합 (Fan-out-and-synthesize)
작업을 여러 개의 작은 단계로 나누고, 각 단계에 에이전트를 실행한 다음 결과를 통합합니다. 이는 작은 단계가 많거나, 각 단계가 서로 방해하거나 교차 오염되지 않도록 자체 깨끗한 컨텍스트 창을 사용하는 것이 유리할 때 특히 유용합니다. 통합 단계는 장벽 역할을 하여, 모든 분할 에이전트를 기다린 후 구조화된 출력을 하나의 결과로 병합합니다.
적대적 검증 (Adversarial verification)
각 생성된 에이전트에 대해 별도의 생성된 에이전트를 실행하여 평가 기준에 따라 출력을 적대적으로 검증합니다.
생성 후 필터링 (Generate-and-filter)
주제에 대한 여러 아이디어를 생성한 다음, 평가 기준이나 검증을 통해 필터링하고 중복을 제거하여 가장 품질이 높고 검증된 아이디어만 반환합니다.
토너먼트 (Tournament)
작업을 분할하는 대신, 에이전트들이 경쟁하도록 합니다. N개의 에이전트를 생성하여 각각 다른 접근 방식으로 동일한 작업을 시도하게 합니다. 그런 다음 프롬프트나 모델이 심사 에이전트를 사용하여 쌍별로 결과를 평가하고 승자가 나올 때까지 진행합니다.
완료될 때까지 반복 (Loop until done)
작업량을 알 수 없는 경우, 고정된 패스 수 대신 중지 조건(새로운 발견 없음, 로그에 더 이상 오류 없음)이 충족될 때까지 에이전트를 생성하는 루프를 실행합니다.
사용 사례
Claude Code에 동적 워크플로를 만들도록 요청할 시기와 방법을 창의적으로 생각해보세요. 저는 워크플로가 비기술적인 작업에서 때로는 더 유용하다는 것을 발견했습니다.

마이그레이션 및 리팩터링
Bun은 워크플로를 사용하여 Zig에서 Rust로 다시 작성되었습니다. 이 작업이 어떻게 이루어졌는지 자세히 알아보려면 Jarred의 X 스레드를 참조하세요.
핵심은 작업을 호출 사이트, 실패하는 테스트, 모듈 등에서 조작해야 하는 일련의 단계로 분해하는 것입니다. 각 수정 사항에 대해 작업 트리에서 서브에이전트를 생성하여 수정을 수행하고, 다른 에이전트가 적대적으로 검토한 후 병합합니다. 리소스 집약적인 명령을 사용하지 말라고 에이전트에 지시하여 머신의 리소스가 부족해지지 않으면서 최대한 병렬화할 수 있도록 하는 것이 좋습니다.
심층 리서치
Claude Code 내부에 동적 워크플로를 사용하는 심층 리서치 스킬(/deep-research)을 게시했습니다. 구체적으로 웹 검색을 분산하고, 소스를 가져오고, 그 주장을 적대적으로 검증하고, 인용된 보고서를 통합합니다.
하지만 웹 검색 이상의 용도로 이러한 유형의 리서치를 수행할 수도 있습니다. 예를 들어, Claude에게 Slack의 컨텍스트에서 상태 보고서를 작성하거나, 코드베이스를 심층적으로 탐색하여 기능이 어떻게 작동하는지 조사하도록 요청할 수 있습니다.
심층 검증

반면에, 참조하는 모든 사실적 주장을 확인하고 출처를 추적하려는 보고서가 있다면, 하나의 에이전트가 모든 사실적 주장을 식별하고 각각을 자세히 확인하기 위해 서브에이전트를 생성하는 워크플로를 생성할 수 있습니다. 또한 검증 에이전트가 소스 서브에이전트를 확인하여 소스의 품질이 높은지 확인하도록 할 수도 있습니다.
정렬

Claude Code가 잘 평가한다고 생각하는 정성적 측정 기준(예: 버그 심각도에 따른 지원 티켓)에 따라 정렬하려는 항목 목록이 있을 수 있습니다. 하지만 1000개 이상의 행을 한 번에 정렬하려고 하면 품질이 저하되고 컨텍스트에 맞지 않습니다. 대신 토너먼트, 쌍별 비교 에이전트 파이프라인(절대 평가보다 비교 판단이 더 신뢰할 수 있음)을 실행하거나, 병렬로 버킷-랭킹한 다음 병합합니다. 각 비교는 자체 에이전트이므로 결정적 루프가 브래킷을 보유하고 실행 순서만 컨텍스트에 유지됩니다.
메모리 및 규칙 준수

Claude가 CLAUDE.md에 넣어도 놓치거나 어려워하는 특정 규칙 세트가 있다면, 검증자 에이전트(규칙당 하나의 검증자)가 확인해야 하는 규칙 목록이 있는 워크플로를 생성하세요. 회의적인 페르소나 서브에이전트를 만들어 규칙이 적절한지 검토하도록 하면 너무 많은 오탐(false positive)을 방지하는 데 도움이 됩니다.
반대 방향도 작동합니다: 최근 세션과 코드 리뷰 댓글에서 계속 반복하는 수정 사항을 마이닝하고, 병렬 에이전트로 클러스터링한 다음, 각 후보를 적대적으로 검증하고(이 규칙이 실제 실수를 방지했을까?), 생존자를 다시 CLAUDE.md로 추출합니다.
근본 원인 조사
디버깅은 여러 독립적인 가설을 세우고 테스트할 때 가장 효과적이지만, 하나의 컨텍스트 창만 사용하면 Claude가 자기 선호 편향에 빠질 수 있습니다.
워크플로는 구조적으로 이를 방지하기 위해 분리된 증거에서 가설을 생성하는 에이전트를 생성할 수 있습니다. 예를 들어, 로그, 파일, 데이터를 위한 별도의 에이전트가 있습니다. 각 가설은 검증자와 반박자 패널에 직면할 수 있습니다.
이는 코드에만 국한되지 않습니다. 워크플로는 영업(왜 3월에 매출이 떨어졌을까?), 데이터 엔지니어링(왜 이 파이프라인이 실패했을까?), 또는 모든 사후 분석 작업에 사용할 수 있습니다.
대규모 트리아징

모든 팀에는 지원 큐, 버그 리포트 또는 인간이 완전히 처리할 수 없는 기타 백로그가 있습니다.
트리아지 워크플로는 각 항목을 분류하고, 이미 추적 중인 항목과 중복을 제거한 후 조치를 취합니다. 이는 수정을 시도하거나 인간 사용자에게 에스컬레이션하는 것을 의미할 수 있습니다.
트리아지 워크플로의 유용한 패턴은 격리(quarantine)입니다. 신뢰할 수 없는 공개 콘텐츠를 읽는 에이전트가 높은 권한이 필요한 작업을 수행하지 못하도록 제한하고, 대신 정보에 대한 조치를 담당하는 에이전트가 수행하도록 하는 것입니다.
트리아지 워크플로를 /loop와 함께 사용하면 Claude가 이를 지속적으로 수행하도록 할 수 있습니다.
탐색 및 취향
워크플로는 솔루션에 대한 다양한 접근 방식을 탐색할 때 유용하며, 특히 디자인이나 명명과 같이 취향에 기반하고 평가 기준의 혜택을 받는 경우에 그렇습니다.
Claude에게 여러 솔루션을 탐색하도록 요청하고, 리뷰 에이전트에 좋은 솔루션이 무엇인지에 대한 평가 기준을 제공해보세요. 리뷰 에이전트가 기준을 충족했다고 느낄 때 작업이 완료됩니다. 솔루션은 평가 기준에 따라 토너먼트를 통해 정렬되거나 선택될 수도 있습니다.
평가(Evals)
작업 트리에서 별도의 에이전트를 생성한 다음 비교 에이전트를 생성하여 특정 출력을 평가 기준과 비교하고 평가하는 방식으로 특정 작업에 대한 경량 평가를 실행할 수 있습니다. 예를 들어, 특정 기준에 대해 생성한 스킬을 평가하고 개선하는 경우입니다.
모델 및 인텔리전스 라우팅
작업에 맞게 조정된 분류기 에이전트를 생성하여 사용할 모델을 결정합니다. 이는 작업에 많은 도구 호출이 포함되고 실행 전에 리서치를 수행하면 작업에 가장 적합한 모델을 식별할 수 있을 때 유용합니다.
예를 들어, "인증 모듈이 어떻게 작동하는지 설명해줘"라는 작업에 가장 적합한 모델은 인증 모듈의 파일 수와 코드베이스 구조에 따라 달라집니다. 분류기 에이전트가 이 리서치를 수행한 다음, 예상되는 작업 복잡성에 따라 Sonnet 또는 Opus로 라우팅할 수 있습니다.
동적 워크플로를 사용하지 말아야 할 때
워크플로는 새로운 기능입니다. 많은 사용 사례에서 뛰어난 결과를 만들어내지만, 모든 작업에 필요하지는 않으며 상당히 많은 토큰을 사용할 수 있습니다.
워크플로는 이전에 해보지 않은 방식으로 Claude Code를 활용하기 위해 창의적으로 사용하는 것이 가장 좋습니다. 일반적인 코딩 작업의 경우, 정말로 더 많은 컴퓨팅이 필요한지 자문해보세요. 예를 들어, 대부분의 전통적인 코딩 작업에는 5명의 리뷰어 패널이 필요하지 않습니다.
동적 워크플로 구축을 위한 팁
프롬프팅
위에서 설명한 특정 기술을 사용하여 동적 워크플로에 대한 상세한 프롬프팅이 최상의 결과를 만듭니다.
워크플로는 대규모 작업에만 사용되는 것이 아닙니다. 모델에 "빠른 워크플로"를 사용하도록 프롬프트할 수 있습니다. 예를 들어, 가정에 대한 빠른 적대적 검토를 만들 수 있습니다.
/goal 및 /loop와 결합
트리아지, 리서치 또는 검증과 같이 반복할 수 있는 워크플로를 사용할 때는 /loop와 함께 사용하여 정기적인 간격으로 실행하고, /goal을 사용하여 엄격한 완료 요구 사항을 설정하세요.
토큰 사용 예산
동적 워크플로에 대한 명시적 토큰 사용 예산을 설정하여 작업이 사용하는 토큰 수를 제한할 수 있습니다. "10k 토큰 사용"과 같은 예산으로 프롬프트할 수 있으며, 이는 상한선을 설정합니다.
동적 워크플로 저장 및 공유
워크플로 메뉴에서 "s"를 눌러 워크플로를 저장할 수 있습니다. 저장된 워크플로는 ~/.claude/workflows에 체크인하거나 스킬을 통해 배포할 수 있습니다.

스킬을 통해 공유하려면 JavaScript 워크플로 파일을 스킬 및 폴더에 넣고 SKILL.MD에서 참조하세요. 더 큰 유연성을 허용하려면 Claude에게 스킬의 워크플로를 문자 그대로 실행해야 하는 스크립트가 아닌 템플릿으로 생각하도록 프롬프트할 수 있습니다.

완전히 새로운 세계
워크플로는 Claude Code를 확장하는 유용한 새로운 방법입니다. 이것을 시작점으로 생각하고, 최적으로 사용하는 방법에 대해 아직 발견할 것이 많습니다. 여러분의 발견을 알려주세요.
Thariq Shihipar와 Sid Bidasaria (@sidbid)는 Anthropic의 기술 스태프로, Claude Code를 개발하고 있습니다.





