Files
2025-11-30 08:53:07 +08:00

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