Claude-skill-registry iterative-code-exploration
Progressive context retrieval pattern for understanding unfamiliar codebases through iterative refinement
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/iterative-code-exploration" ~/.claude/skills/majiayu000-claude-skill-registry-iterative-code-exploration && rm -rf "$T"
skills/data/iterative-code-exploration/SKILL.mdIterative Code Exploration
A systematic pattern for progressively exploring and understanding unfamiliar codebases through iterative context refinement.
The Problem
When working with new codebases, you often don't know:
- Which files contain relevant code
- What patterns and conventions exist
- What terminology the project uses
- How components interact
Standard approaches fail:
- Read everything: Time-consuming and overwhelming
- Guess locations: Often misses critical context
- Ask broad questions: Returns too much irrelevant information
The Solution: 4-Phase Iterative Loop
┌─────────────────────────────────────────────┐ │ │ │ ┌──────────┐ ┌──────────┐ │ │ │ DISCOVER │─────▶│ EVALUATE │ │ │ └──────────┘ └──────────┘ │ │ ▲ │ │ │ │ ▼ │ │ ┌──────────┐ ┌──────────┐ │ │ │ LOOP │◀─────│ REFINE │ │ │ └──────────┘ └──────────┘ │ │ │ │ Max 3-4 cycles, then synthesize │ └─────────────────────────────────────────────┘
Phase 1: DISCOVER
Start with broad exploration:
# Find entry points find . -name "main.*" -o -name "index.*" -o -name "app.*" | head -20 # Discover project structure tree -L 3 -I 'node_modules|dist|build' # Find configuration find . -name "*.config.*" -o -name "package.json" -o -name "*.toml" # Identify key patterns grep -r "export class" --include="*.ts" src/ | head -20 grep -r "def " --include="*.py" . | head -20
Document initial findings:
- Project type (web app, library, service, etc.)
- Tech stack (languages, frameworks)
- Architecture hints (monorepo, microservices, etc.)
Phase 2: EVALUATE
Assess discovered files for relevance:
# Read high-value files cat README.md cat ARCHITECTURE.md 2>/dev/null cat docs/overview.md 2>/dev/null # Check package manifests cat package.json | jq '.dependencies, .scripts' cat Cargo.toml 2>/dev/null cat requirements.txt 2>/dev/null
Scoring Criteria:
- Critical (★★★): Entry points, core logic, main configs
- Important (★★): Utilities, shared components, types
- Supporting (★): Tests, docs, examples
- Noise (-): Generated files, vendored code
Phase 3: REFINE
Focus on specific areas identified as relevant:
# Dive into specific modules ls -la src/core/ cat src/core/index.ts # Trace dependencies grep -r "import.*from.*core" --include="*.ts" src/ | head -20 # Find related patterns grep -A 5 -B 5 "class UserService" src/**/*.ts # Check tests for usage examples find . -name "*.test.*" -o -name "*.spec.*" | head -10
Build mental model:
- How components connect
- What patterns are used consistently
- Where similar functionality lives
Phase 4: LOOP
Decision point - do you need more context?
Continue if:
- Key functionality still unclear
- Dependencies not fully traced
- Patterns inconsistent or confusing
Stop if:
- Core logic understood
- Can explain main flows
- Ready to make changes confidently
Practical Workflow
For Feature Implementation
-
Discover: Find similar existing features
grep -r "feature-name" src/ find . -name "*feature*" -
Evaluate: Review implementation patterns
cat src/features/similar-feature/index.ts -
Refine: Check tests and edge cases
cat src/features/similar-feature/*.test.ts -
Loop: Trace dependencies until clear
For Bug Fixing
-
Discover: Locate error origin
grep -r "error message" src/ git log -S "error message" -
Evaluate: Understand surrounding context
cat path/to/file.ts | grep -A 20 -B 20 "error location" -
Refine: Check call sites and callers
grep -r "functionName" --include="*.ts" src/ -
Loop: Expand context as needed
For Refactoring
-
Discover: Map current structure
find src/ -name "*.ts" | xargs wc -l | sort -n grep -r "class\|interface" --include="*.ts" src/ | wc -l -
Evaluate: Identify coupling points
grep -r "import.*from.*module" src/ | cut -d: -f2 | sort | uniq -c | sort -rn -
Refine: Find all usages
grep -r "ComponentName" --include="*.ts" src/ -
Loop: Ensure all references found
Output Template
After each loop iteration, document:
## Iteration N **Query**: What I was looking for **Found**: X files, Y patterns, Z components **Relevance**: High/Medium/Low with reasons **Gaps**: What's still unclear **Next**: What to explore in next iteration **Key Files**: - path/to/file.ts - Core implementation (★★★) - path/to/other.ts - Supporting utility (★★) **Mental Model Update**: - New understanding of X - Connection between Y and Z - Pattern: Description
Integration Points
Complements:
- knowledge-architecture: For documenting discoveries
- second-brain-librarian: For saving exploration notes
- project-orchestration: For planning exploration strategy
- testing-patterns: For learning through tests
Tips
- Start wide, then narrow focus
- Document assumptions to validate
- Use tests as documentation
- Follow imports/exports
- Check git history for context
- Look for comments explaining "why"