
Iterative Retrieval
FreeEnhance context retrieval in multi-agent workflows.
Free · Opens the source repo
What Iterative Retrieval does
The Iterative Retrieval skill addresses the context problem encountered in multi-agent workflows, particularly when sub-agents are created without prior knowledge of the necessary context. This skill is designed to facilitate a progressive improvement of context, allowing agents to operate more effectively by gradually refining their understanding of the codebase. With this approach, agents can avoid common pitfalls such as exceeding context limits or missing critical information altogether.
The core mechanism of this skill revolves around a four-step iterative process: Dispatch, Evaluate, Refine, and Loop. Initially, a broad query is dispatched to gather candidate files relevant to a specific task. The subsequent evaluation assesses the relevance of these files based on their content, scoring them on a scale from 0 to 1. This evaluation helps identify which files contain the necessary context and which do not. Based on this feedback, the search criteria are refined to improve the relevance of future queries.
This skill is particularly useful in scenarios where the context required for agent tasks cannot be predicted in advance. For instance, when agents experience failures due to context overload or underload, or when designing retrieval pipelines for code exploration, this skill provides a structured way to enhance the context available to agents. By allowing agents to learn and adapt their search criteria through iterations, users can ensure that the agents are equipped with the most relevant information.
In practice, this skill can significantly streamline the process of context retrieval, making it a valuable addition for developers and designers working with complex codebases and multi-agent systems. By implementing the Iterative Retrieval skill, users can improve the efficiency of their workflows and reduce the likelihood of errors stemming from insufficient context.
When to use it
Use this skill when creating sub-agents that require unpredictable context from a codebase or when facing context-related failures in agent tasks.
When not to use it
This skill may not be suitable for workflows where context requirements are well-defined and predictable from the outset.
What you can build with it
Debugging Authentication Issues
A developer uses the skill to gather context for fixing an authentication token expiry bug, iterating through relevant files until sufficient context is found.
Implementing Rate Limiting
When tasked with adding rate limiting to API endpoints, a developer employs the skill to refine search terms and identify relevant code patterns through multiple cycles.
Enhancing Code Exploration
In a complex codebase, a team uses the skill to progressively improve their understanding of the code structure and terminology, facilitating better navigation and exploration.
How to install Iterative Retrieval
View source1. Install with the skills CLI
npx skills add affaan-m/ecc/iterative-retrieval --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by affaan-m반복적 검색 패턴
서브에이전트가 작업을 시작하기 전까지 필요한 컨텍스트를 알 수 없는 멀티 에이전트 워크플로우의 "컨텍스트 문제"를 해결합니다.
활성화 시점
- 사전에 예측할 수 없는 코드베이스 컨텍스트가 필요한 서브에이전트를 생성할 때
- 컨텍스트가 점진적으로 개선되는 멀티 에이전트 워크플로우를 구축할 때
- 에이전트 작업에서 "컨텍스트 초과" 또는 "컨텍스트 누락" 실패를 겪을 때
- 코드 탐색을 위한 RAG 유사 검색 파이프라인을 설계할 때
- 에이전트 오케스트레이션에서 토큰 사용량을 최적화할 때
문제
서브에이전트는 제한된 컨텍스트로 생성됩니다. 다음을 알 수 없습니다:
- 관련 코드가 포함된 파일
- 코드베이스에 존재하는 패턴
- 프로젝트에서 사용하는 용어
표준 접근법의 실패:
- 모든 것을 전송: 컨텍스트 제한 초과
- 아무것도 전송하지 않음: 에이전트가 중요한 정보를 갖지 못함
- 필요한 것을 추측: 종종 잘못됨
해결책: 반복적 검색
컨텍스트를 점진적으로 개선하는 4단계 루프:
┌─────────────────────────────────────────────┐
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ DISPATCH │─────│ EVALUATE │ │
│ └──────────┘ └──────────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │ LOOP │─────│ REFINE │ │
│ └──────────┘ └──────────┘ │
│ │
│ Max 3 cycles, then proceed │
└─────────────────────────────────────────────┘
1단계: DISPATCH
후보 파일을 수집하기 위한 초기 광범위 쿼리:
// Start with high-level intent
const initialQuery = {
patterns: ['src/**/*.ts', 'lib/**/*.ts'],
keywords: ['authentication', 'user', 'session'],
excludes: ['*.test.ts', '*.spec.ts']
};
// Dispatch to retrieval agent
const candidates = await retrieveFiles(initialQuery);
2단계: EVALUATE
검색된 콘텐츠의 관련성 평가:
function evaluateRelevance(files, task) {
return files.map(file => ({
path: file.path,
relevance: scoreRelevance(file.content, task),
reason: explainRelevance(file.content, task),
missingContext: identifyGaps(file.content, task)
}));
}
점수 기준:
- 높음 (0.8-1.0): 대상 기능을 직접 구현
- 중간 (0.5-0.7): 관련 패턴이나 타입을 포함
- 낮음 (0.2-0.4): 간접적으로 관련
- 없음 (0-0.2): 관련 없음, 제외
3단계: REFINE
평가를 기반으로 검색 기준 업데이트:
function refineQuery(evaluation, previousQuery) {
return {
// Add new patterns discovered in high-relevance files
patterns: [...previousQuery.patterns, ...extractPatterns(evaluation)],
// Add terminology found in codebase
keywords: [...previousQuery.keywords, ...extractKeywords(evaluation)],
// Exclude confirmed irrelevant paths
excludes: [...previousQuery.excludes, ...evaluation
.filter(e => e.relevance < 0.2)
.map(e => e.path)
],
// Target specific gaps
focusAreas: evaluation
.flatMap(e => e.missingContext)
.filter(unique)
};
}
4단계: LOOP
개선된 기준으로 반복 (최대 3회):
async function iterativeRetrieve(task, maxCycles = 3) {
let query = createInitialQuery(task);
let bestContext = [];
for (let cycle = 0; cycle < maxCycles; cycle++) {
const candidates = await retrieveFiles(query);
const evaluation = evaluateRelevance(candidates, task);
// Check if we have sufficient context
const highRelevance = evaluation.filter(e => e.relevance >= 0.7);
if (highRelevance.length >= 3 && !hasCriticalGaps(evaluation)) {
return highRelevance;
}
// Refine and continue
query = refineQuery(evaluation, query);
bestContext = mergeContext(bestContext, highRelevance);
}
return bestContext;
}
실용적인 예시
예시 1: 버그 수정 컨텍스트
Task: "Fix the authentication token expiry bug"
Cycle 1:
DISPATCH: Search for "token", "auth", "expiry" in src/**
EVALUATE: Found auth.ts (0.9), tokens.ts (0.8), user.ts (0.3)
REFINE: Add "refresh", "jwt" keywords; exclude user.ts
Cycle 2:
DISPATCH: Search refined terms
EVALUATE: Found session-manager.ts (0.95), jwt-utils.ts (0.85)
REFINE: Sufficient context (2 high-relevance files)
Result: auth.ts, tokens.ts, session-manager.ts, jwt-utils.ts
예시 2: 기능 구현
Task: "Add rate limiting to API endpoints"
Cycle 1:
DISPATCH: Search "rate", "limit", "api" in routes/**
EVALUATE: No matches - codebase uses "throttle" terminology
REFINE: Add "throttle", "middleware" keywords
Cycle 2:
DISPATCH: Search refined terms
EVALUATE: Found throttle.ts (0.9), middleware/index.ts (0.7)
REFINE: Need router patterns
Cycle 3:
DISPATCH: Search "router", "express" patterns
EVALUATE: Found router-setup.ts (0.8)
REFINE: Sufficient context
Result: throttle.ts, middleware/index.ts, router-setup.ts
에이전트와의 통합
에이전트 프롬프트에서 사용:
When retrieving context for this task:
1. Start with broad keyword search
2. Evaluate each file's relevance (0-1 scale)
3. Identify what context is still missing
4. Refine search criteria and repeat (max 3 cycles)
5. Return files with relevance >= 0.7
모범 사례
- 광범위하게 시작하여 점진적으로 좁히기 - 초기 쿼리를 과도하게 지정하지 않기
- 코드베이스 용어 학습 - 첫 번째 사이클에서 주로 네이밍 컨벤션이 드러남
- 누락된 것 추적 - 명시적 격차 식별이 개선을 주도
- "충분히 좋은" 수준에서 중단 - 관련성 높은 파일 3개가 보통 수준의 파일 10개보다 나음
- 자신 있게 제외 - 관련성 낮은 파일은 관련성이 높아지지 않음
관련 항목
- The Longform Guide - 서브에이전트 오케스트레이션 섹션
continuous-learning스킬 - 시간이 지남에 따라 개선되는 패턴~/.claude/agents/의 에이전트 정의
Frequently asked questions about Iterative Retrieval
Similar skills
Agent Skill Stack
Assemble compatible AI Agent Skills for workflows.
AI Team Orchestration
Streamline multi-agent development workflows.
Advisor Orchestrator Worker
Efficiently manage complex tasks with multiple AI models.
Agent Orchestrator
Automate multi-agent workflows with zero manual intervention.
Agent Governance
Implement safety and trust controls for AI agents.
Microsoft Foundry
End-to-end management for Microsoft Foundry agents.
