496 lines
13 KiB
Markdown
496 lines
13 KiB
Markdown
# Example: File Coordination for Parallel Agents
|
|
|
|
This example shows how to prevent file path collisions when multiple agents create documentation in parallel.
|
|
|
|
## Scenario
|
|
|
|
**User Request:** "Document our codebase patterns for authentication, caching, and error handling"
|
|
|
|
## Initial Decomposition (Incorrect)
|
|
|
|
```
|
|
❌ WRONG APPROACH
|
|
|
|
Activities:
|
|
1. Document authentication patterns
|
|
2. Document caching patterns
|
|
3. Document error handling patterns
|
|
|
|
All parallel, all OUTPUT: "docs/patterns/[pattern-name].md"
|
|
|
|
Problem: What if agents choose same filename?
|
|
- Agent 1 might create: docs/patterns/auth.md
|
|
- Agent 2 might create: docs/patterns/cache.md
|
|
- Agent 3 might create: docs/patterns/error.md
|
|
|
|
OR worse:
|
|
- Agent 1: docs/patterns/authentication.md
|
|
- Agent 2: docs/patterns/authentication-patterns.md
|
|
- Both trying to document auth? Collision!
|
|
|
|
Result: Ambiguous, potential collisions, inconsistent naming
|
|
```
|
|
|
|
## Correct Decomposition (File Coordination)
|
|
|
|
```
|
|
✅ CORRECT APPROACH
|
|
|
|
Activities:
|
|
1. Document authentication patterns
|
|
- OUTPUT: docs/patterns/authentication-flow.md (EXPLICIT PATH)
|
|
|
|
2. Document caching patterns
|
|
- OUTPUT: docs/patterns/caching-strategy.md (EXPLICIT PATH)
|
|
|
|
3. Document error handling patterns
|
|
- OUTPUT: docs/patterns/error-handling.md (EXPLICIT PATH)
|
|
|
|
File Coordination Check:
|
|
✅ All paths explicit and unique
|
|
✅ No ambiguity in naming
|
|
✅ No collision risk
|
|
|
|
Status: SAFE FOR PARALLEL EXECUTION
|
|
```
|
|
|
|
## Agent Prompts with File Coordination
|
|
|
|
### Agent 1: Authentication Pattern
|
|
|
|
```
|
|
DISCOVERY_FIRST: Before starting, check existing documentation:
|
|
- List docs/patterns/ directory
|
|
- Search for existing auth-related files
|
|
- Note naming conventions used
|
|
- Check if authentication-flow.md already exists
|
|
|
|
FOCUS: Document authentication patterns discovered in codebase
|
|
- JWT token generation and validation
|
|
- Password hashing (bcrypt usage)
|
|
- Session management approach
|
|
- Protected route patterns
|
|
- Error responses for auth failures
|
|
|
|
EXCLUDE:
|
|
- Don't document caching (Agent 2 handles this)
|
|
- Don't document error handling generally (Agent 3 handles this)
|
|
- Don't create multiple files (single document)
|
|
- Don't modify existing authentication files if they exist
|
|
|
|
CONTEXT: Documenting patterns found in src/middleware/auth.*, src/routes/auth.*
|
|
- Focus on how authentication works, not implementation details
|
|
- Use pattern template: docs/templates/pattern-template.md
|
|
- Follow existing documentation style
|
|
|
|
OUTPUT: EXACTLY this path: docs/patterns/authentication-flow.md
|
|
- If file exists: STOP and report (don't overwrite)
|
|
- If file doesn't exist: Create new
|
|
- Use pattern template structure
|
|
- Include code examples from codebase
|
|
|
|
SUCCESS: Authentication patterns documented
|
|
- File created at exact path specified
|
|
- Follows pattern template
|
|
- Includes JWT, bcrypt, and session patterns
|
|
- Code examples are accurate
|
|
- No collision with other agents
|
|
|
|
TERMINATION:
|
|
- Documentation complete at specified path
|
|
- File already exists (report to user)
|
|
- No authentication patterns found in codebase
|
|
```
|
|
|
|
### Agent 2: Caching Pattern
|
|
|
|
```
|
|
DISCOVERY_FIRST: Before starting, check existing documentation:
|
|
- List docs/patterns/ directory
|
|
- Search for existing cache-related files
|
|
- Note naming conventions
|
|
- Check if caching-strategy.md already exists
|
|
|
|
FOCUS: Document caching patterns discovered in codebase
|
|
- Redis usage patterns
|
|
- Cache key naming conventions
|
|
- TTL (time-to-live) strategies
|
|
- Cache invalidation approaches
|
|
- What gets cached and why
|
|
|
|
EXCLUDE:
|
|
- Don't document authentication (Agent 1 handles this)
|
|
- Don't document error handling (Agent 3 handles this)
|
|
- Don't create multiple files (single document)
|
|
- Don't overlap with Agent 1's work
|
|
|
|
CONTEXT: Documenting patterns found in src/cache/*, src/services/*
|
|
- Focus on caching strategy, not Redis API details
|
|
- Use pattern template
|
|
- Follow existing documentation style
|
|
|
|
OUTPUT: EXACTLY this path: docs/patterns/caching-strategy.md
|
|
- If file exists: STOP and report (don't overwrite)
|
|
- If file doesn't exist: Create new
|
|
- Use pattern template structure
|
|
- Include code examples from codebase
|
|
|
|
SUCCESS: Caching patterns documented
|
|
- File created at exact path specified
|
|
- Follows pattern template
|
|
- Includes Redis patterns and cache strategies
|
|
- No collision with other agents
|
|
|
|
TERMINATION:
|
|
- Documentation complete at specified path
|
|
- File already exists (report)
|
|
- No caching patterns found
|
|
```
|
|
|
|
### Agent 3: Error Handling Pattern
|
|
|
|
```
|
|
DISCOVERY_FIRST: Before starting, check existing documentation:
|
|
- List docs/patterns/ directory
|
|
- Search for existing error-related files
|
|
- Note naming conventions
|
|
- Check if error-handling.md already exists
|
|
|
|
FOCUS: Document error handling patterns discovered in codebase
|
|
- Error class hierarchy
|
|
- HTTP status code mapping
|
|
- Error response format
|
|
- Logging strategy for errors
|
|
- Recovery patterns
|
|
|
|
EXCLUDE:
|
|
- Don't document authentication (Agent 1's domain)
|
|
- Don't document caching (Agent 2's domain)
|
|
- Don't create multiple files
|
|
- Don't overlap with other agents
|
|
|
|
CONTEXT: Documenting patterns found in src/errors/*, src/middleware/error.*
|
|
- Focus on error handling strategy and patterns
|
|
- Use pattern template
|
|
- Follow existing documentation style
|
|
|
|
OUTPUT: EXACTLY this path: docs/patterns/error-handling.md
|
|
- If file exists: STOP and report (don't overwrite)
|
|
- If file doesn't exist: Create new
|
|
- Use pattern template structure
|
|
- Include code examples
|
|
|
|
SUCCESS: Error handling patterns documented
|
|
- File created at exact path specified
|
|
- Follows pattern template
|
|
- Includes error classes and response patterns
|
|
- No collision with other agents
|
|
|
|
TERMINATION:
|
|
- Documentation complete at specified path
|
|
- File already exists (report)
|
|
- No error handling patterns found
|
|
```
|
|
|
|
## File Coordination Checklist
|
|
|
|
Before launching these agents:
|
|
|
|
```
|
|
📋 File Coordination Pre-Flight Check
|
|
|
|
Agent 1 OUTPUT: docs/patterns/authentication-flow.md
|
|
Agent 2 OUTPUT: docs/patterns/caching-strategy.md
|
|
Agent 3 OUTPUT: docs/patterns/error-handling.md
|
|
|
|
✅ All paths are explicit (no ambiguity)
|
|
✅ All paths are unique (no two agents write same file)
|
|
✅ All paths follow convention (docs/patterns/[name].md)
|
|
✅ All agents instructed to check if file exists first
|
|
✅ All agents instructed to STOP if collision detected
|
|
|
|
File Collision Risk: NONE
|
|
Safe to launch in parallel: YES
|
|
```
|
|
|
|
## Execution Flow
|
|
|
|
### Launch All Three Agents in Parallel
|
|
|
|
```
|
|
🚀 Launching 3 parallel documentation agents
|
|
|
|
Agent 1: Authentication Pattern → RUNNING
|
|
TARGET: docs/patterns/authentication-flow.md
|
|
|
|
Agent 2: Caching Pattern → RUNNING
|
|
TARGET: docs/patterns/caching-strategy.md
|
|
|
|
Agent 3: Error Handling Pattern → RUNNING
|
|
TARGET: docs/patterns/error-handling.md
|
|
|
|
File coordination: ✅ All unique paths
|
|
Collision risk: ✅ None
|
|
Parallel safety: ✅ Confirmed
|
|
```
|
|
|
|
### Monitoring for Collisions
|
|
|
|
```
|
|
⏳ Agents running...
|
|
|
|
[Agent 1] Checking: docs/patterns/authentication-flow.md → NOT EXISTS
|
|
[Agent 1] Safe to create → PROCEEDING
|
|
|
|
[Agent 2] Checking: docs/patterns/caching-strategy.md → NOT EXISTS
|
|
[Agent 2] Safe to create → PROCEEDING
|
|
|
|
[Agent 3] Checking: docs/patterns/error-handling.md → NOT EXISTS
|
|
[Agent 3] Safe to create → PROCEEDING
|
|
|
|
No collisions detected. All agents proceeding independently.
|
|
```
|
|
|
|
### Completion
|
|
|
|
```
|
|
Agent 1: COMPLETE ✅ (22 minutes)
|
|
Created: docs/patterns/authentication-flow.md (3.2 KB)
|
|
|
|
Agent 2: COMPLETE ✅ (18 minutes)
|
|
Created: docs/patterns/caching-strategy.md (2.8 KB)
|
|
|
|
Agent 3: COMPLETE ✅ (25 minutes)
|
|
Created: docs/patterns/error-handling.md (4.1 KB)
|
|
|
|
All agents complete. No collisions occurred.
|
|
```
|
|
|
|
## Results
|
|
|
|
```
|
|
📁 docs/patterns/
|
|
├── authentication-flow.md ✅ Created by Agent 1
|
|
├── caching-strategy.md ✅ Created by Agent 2
|
|
└── error-handling.md ✅ Created by Agent 3
|
|
```
|
|
|
|
**Total time:** 25 minutes (parallel)
|
|
**Sequential would take:** 65 minutes
|
|
**Time saved:** 40 minutes (61% faster)
|
|
|
|
## Alternative Coordination Strategies
|
|
|
|
### Strategy 1: Directory Separation
|
|
|
|
If agents might create multiple files:
|
|
|
|
```
|
|
Agent 1 OUTPUT: docs/patterns/authentication/
|
|
- flow.md
|
|
- jwt-tokens.md
|
|
- session-management.md
|
|
|
|
Agent 2 OUTPUT: docs/patterns/caching/
|
|
- redis-usage.md
|
|
- invalidation.md
|
|
- key-naming.md
|
|
|
|
Agent 3 OUTPUT: docs/patterns/error-handling/
|
|
- error-classes.md
|
|
- response-format.md
|
|
- recovery-patterns.md
|
|
```
|
|
|
|
**Result:** Each agent owns a directory, no file collisions possible.
|
|
|
|
### Strategy 2: Timestamp-Based Naming
|
|
|
|
For logs or reports that accumulate:
|
|
|
|
```
|
|
Agent 1 OUTPUT: logs/auth-analysis-2025-01-24-10-30-00.md
|
|
Agent 2 OUTPUT: logs/cache-analysis-2025-01-24-10-30-00.md
|
|
Agent 3 OUTPUT: logs/error-analysis-2025-01-24-10-30-00.md
|
|
```
|
|
|
|
**Result:** Timestamps ensure uniqueness even if same topic.
|
|
|
|
### Strategy 3: Agent ID Namespacing
|
|
|
|
When dynamic number of agents:
|
|
|
|
```
|
|
For each module in [moduleA, moduleB, moduleC, moduleD]:
|
|
Launch agent with OUTPUT: analysis/module-${MODULE_NAME}.md
|
|
|
|
Results:
|
|
- analysis/module-moduleA.md
|
|
- analysis/module-moduleB.md
|
|
- analysis/module-moduleC.md
|
|
- analysis/module-moduleD.md
|
|
```
|
|
|
|
**Result:** Template-based naming prevents collisions.
|
|
|
|
## What Could Go Wrong (Anti-Patterns)
|
|
|
|
### ❌ Anti-Pattern 1: Ambiguous Paths
|
|
|
|
```
|
|
BAD:
|
|
Agent 1 OUTPUT: "Create pattern documentation"
|
|
Agent 2 OUTPUT: "Document caching patterns"
|
|
|
|
Problem: Where exactly? What filename?
|
|
Result: Agents might choose same name or wrong location
|
|
```
|
|
|
|
### ❌ Anti-Pattern 2: Overlapping Domains
|
|
|
|
```
|
|
BAD:
|
|
Agent 1 FOCUS: "Document authentication and security"
|
|
Agent 2 FOCUS: "Document security patterns"
|
|
|
|
Problem: Both might document auth security!
|
|
Result: Duplicate or conflicting documentation
|
|
```
|
|
|
|
**Fix:** Clear FOCUS boundaries, explicit EXCLUDE
|
|
|
|
### ❌ Anti-Pattern 3: No Existence Check
|
|
|
|
```
|
|
BAD:
|
|
OUTPUT: docs/patterns/auth.md
|
|
(No instruction to check if exists)
|
|
|
|
Problem: If file exists, agent might overwrite
|
|
Result: Lost documentation
|
|
```
|
|
|
|
**Fix:** Always include existence check in FOCUS or OUTPUT
|
|
|
|
### ❌ Anti-Pattern 4: Generic Filenames
|
|
|
|
```
|
|
BAD:
|
|
Agent 1 OUTPUT: docs/patterns/pattern.md
|
|
Agent 2 OUTPUT: docs/patterns/patterns.md
|
|
Agent 3 OUTPUT: docs/patterns/pattern-doc.md
|
|
|
|
Problem: All similar, confusing, might collide
|
|
Result: Unclear which agent created what
|
|
```
|
|
|
|
**Fix:** Descriptive, specific filenames
|
|
|
|
## File Coordination Best Practices
|
|
|
|
### 1. Explicit Paths
|
|
|
|
✅ **Always specify exact OUTPUT path:**
|
|
```
|
|
OUTPUT: docs/patterns/authentication-flow.md
|
|
NOT: "Document authentication patterns"
|
|
```
|
|
|
|
### 2. Unique Names
|
|
|
|
✅ **Ensure all agents have unique filenames:**
|
|
```
|
|
Before launching:
|
|
- Agent 1: authentication-flow.md
|
|
- Agent 2: caching-strategy.md
|
|
- Agent 3: error-handling.md
|
|
✅ All unique → SAFE
|
|
```
|
|
|
|
### 3. Existence Checks
|
|
|
|
✅ **Instruct agents to check before creating:**
|
|
```
|
|
OUTPUT: docs/patterns/authentication-flow.md
|
|
- If file exists: STOP and report (don't overwrite)
|
|
- If file doesn't exist: Create new
|
|
```
|
|
|
|
### 4. Clear Boundaries
|
|
|
|
✅ **Use EXCLUDE to prevent overlap:**
|
|
```
|
|
Agent 1:
|
|
FOCUS: Document authentication
|
|
EXCLUDE: Don't document caching (Agent 2) or errors (Agent 3)
|
|
|
|
Agent 2:
|
|
FOCUS: Document caching
|
|
EXCLUDE: Don't document auth (Agent 1) or errors (Agent 3)
|
|
```
|
|
|
|
### 5. Validation
|
|
|
|
✅ **Check coordination before launching:**
|
|
```
|
|
Checklist:
|
|
- [ ] All paths explicit
|
|
- [ ] All paths unique
|
|
- [ ] All agents have existence checks
|
|
- [ ] Clear FOCUS boundaries
|
|
- [ ] No overlap in domains
|
|
```
|
|
|
|
## Integration with Documentation Skill
|
|
|
|
When these agents complete, documentation skill may activate:
|
|
|
|
```
|
|
Agent 1 completes → Creates authentication-flow.md
|
|
↓
|
|
Documentation skill notices "pattern" created
|
|
↓
|
|
Checks: Is this in correct location? (docs/patterns/ ✅)
|
|
Checks: Does it follow template? (✅)
|
|
Checks: Should it be cross-referenced? (Yes)
|
|
↓
|
|
Documentation skill adds cross-references:
|
|
- Links to related authentication interfaces
|
|
- Links to domain rules about user permissions
|
|
```
|
|
|
|
**Coordination:** Agent-delegation ensures unique paths, documentation skill ensures quality and linking.
|
|
|
|
## Lessons Learned
|
|
|
|
### What Worked
|
|
|
|
✅ **Explicit paths:** Zero ambiguity, zero collisions
|
|
✅ **Existence checks:** Prevented accidental overwrites
|
|
✅ **Clear boundaries:** No domain overlap
|
|
✅ **Parallel execution:** 61% time savings
|
|
|
|
### What to Watch For
|
|
|
|
⚠️ **Naming conventions:** Ensure consistency (kebab-case vs snake_case)
|
|
⚠️ **Template usage:** All agents should use same template
|
|
⚠️ **Directory structure:** Verify docs/patterns/ exists before launching
|
|
|
|
## Reusable Coordination Template
|
|
|
|
For any parallel file creation:
|
|
|
|
```
|
|
1. List all files to be created
|
|
2. Verify all paths are unique
|
|
3. Add existence checks to OUTPUT
|
|
4. Use EXCLUDE to prevent overlap
|
|
5. Launch in parallel with confidence
|
|
```
|
|
|
|
**This prevents:**
|
|
- File path collisions
|
|
- Accidental overwrites
|
|
- Domain overlap
|
|
- Naming inconsistencies
|