Initial commit
This commit is contained in:
504
skills/agent-delegation/examples/sequential-build.md
Normal file
504
skills/agent-delegation/examples/sequential-build.md
Normal file
@@ -0,0 +1,504 @@
|
||||
# Example: Sequential Build Delegation
|
||||
|
||||
This example shows how to coordinate dependent implementation tasks that must execute sequentially.
|
||||
|
||||
## Scenario
|
||||
|
||||
**User Request:** "Implement JWT authentication for our REST API"
|
||||
|
||||
## Task Decomposition
|
||||
|
||||
```
|
||||
Original Task: Implement JWT authentication for REST API
|
||||
|
||||
Activities Identified:
|
||||
1. Design authentication database schema
|
||||
- Expertise: Database design
|
||||
- Output: Schema design document
|
||||
- Dependencies: None
|
||||
|
||||
2. Create database migration
|
||||
- Expertise: Database implementation
|
||||
- Output: Migration files
|
||||
- Dependencies: Activity 1 (schema design)
|
||||
|
||||
3. Implement authentication middleware
|
||||
- Expertise: Backend development
|
||||
- Output: JWT middleware code
|
||||
- Dependencies: Activity 2 (tables must exist)
|
||||
|
||||
4. Create auth endpoints (login/logout)
|
||||
- Expertise: Backend development
|
||||
- Output: Auth routes and controllers
|
||||
- Dependencies: Activity 3 (middleware needed)
|
||||
|
||||
5. Add tests for auth flow
|
||||
- Expertise: Test automation
|
||||
- Output: Integration tests
|
||||
- Dependencies: Activity 4 (endpoints must work)
|
||||
|
||||
Execution Strategy: Sequential
|
||||
Reasoning: Each activity depends on the previous one's output. No parallelization possible in this chain.
|
||||
|
||||
Dependency Chain: 1 → 2 → 3 → 4 → 5
|
||||
```
|
||||
|
||||
## Agent Prompts Generated
|
||||
|
||||
### Agent 1: Schema Design (First)
|
||||
|
||||
```
|
||||
DISCOVERY_FIRST: Before starting, understand the environment:
|
||||
- Check existing database structure: ls migrations/ or db/schema/
|
||||
- Identify database system: PostgreSQL, MySQL, SQLite?
|
||||
- Review existing table patterns: user-related tables
|
||||
- Note naming conventions: snake_case, camelCase, PascalCase?
|
||||
|
||||
FOCUS: Design database schema for JWT authentication
|
||||
- Users table (if not exists) with email, password_hash
|
||||
- Sessions table for active JWT tokens
|
||||
- Include created_at, updated_at timestamps
|
||||
- Design appropriate indexes for performance
|
||||
- Plan foreign key relationships
|
||||
|
||||
EXCLUDE:
|
||||
- Don't create the migration yet (next task)
|
||||
- Don't implement OAuth tables (separate feature)
|
||||
- Don't modify existing user table if it exists
|
||||
- Don't add two-factor auth tables (not in scope)
|
||||
|
||||
CONTEXT: Building JWT authentication for REST API.
|
||||
- From security requirements: bcrypt hashing, cost factor 12
|
||||
- Session expiry: 24 hours
|
||||
- Email must be unique
|
||||
- Follow project database conventions exactly
|
||||
|
||||
OUTPUT: Schema design document at docs/patterns/auth-database-schema.md
|
||||
- Table definitions with column types
|
||||
- Indexes and constraints
|
||||
- Foreign key relationships
|
||||
- Example data
|
||||
|
||||
SUCCESS: Schema designed and documented
|
||||
- All required fields included
|
||||
- Performance indexes identified
|
||||
- Follows project conventions
|
||||
- Ready for migration implementation
|
||||
|
||||
TERMINATION:
|
||||
- Design complete and documented
|
||||
- Blocked by missing existing schema info
|
||||
```
|
||||
|
||||
### Agent 2: Database Migration (After Agent 1)
|
||||
|
||||
```
|
||||
DISCOVERY_FIRST: Before starting, understand the environment:
|
||||
- Check migration system: Knex, Sequelize, TypeORM, raw SQL?
|
||||
- Find migration directory location
|
||||
- Review existing migration file format
|
||||
- Note up/down pattern used
|
||||
|
||||
FOCUS: Create database migration for authentication tables
|
||||
- Implement users table from schema design
|
||||
- Implement sessions table from schema design
|
||||
- Add all indexes from schema design
|
||||
- Create both up (create) and down (drop) migrations
|
||||
- Follow migration naming conventions
|
||||
|
||||
EXCLUDE:
|
||||
- Don't run the migration yet (separate step)
|
||||
- Don't seed data (separate concern)
|
||||
- Don't modify existing migrations
|
||||
- Don't add tables not in schema design
|
||||
|
||||
CONTEXT: Implementing schema designed in previous step.
|
||||
- Schema document: docs/patterns/auth-database-schema.md
|
||||
- Tables: users (email, password_hash, created_at, updated_at)
|
||||
- Tables: sessions (id, user_id, token_hash, expires_at, created_at)
|
||||
- Indexes: users.email (unique), sessions.token_hash, sessions.user_id
|
||||
|
||||
OUTPUT: Migration file at [DISCOVERED_MIGRATION_PATH]/[timestamp]_create_auth_tables.js
|
||||
- Up migration creates tables and indexes
|
||||
- Down migration drops tables cleanly
|
||||
- Follows project migration format
|
||||
|
||||
SUCCESS: Migration created and ready to run
|
||||
- Matches schema design exactly
|
||||
- Both up and down work correctly
|
||||
- Follows project patterns
|
||||
- No syntax errors
|
||||
|
||||
TERMINATION:
|
||||
- Migration file created successfully
|
||||
- Blocked by unclear migration system
|
||||
- Migration format doesn't match project (document issue)
|
||||
```
|
||||
|
||||
### Agent 3: JWT Middleware (After Agent 2)
|
||||
|
||||
```
|
||||
DISCOVERY_FIRST: Before starting, understand the environment:
|
||||
- Find existing middleware location: src/middleware/ or app/middleware/?
|
||||
- Check JWT library in use: jsonwebtoken, jose, other?
|
||||
- Review existing middleware patterns
|
||||
- Note error handling style used
|
||||
|
||||
FOCUS: Implement JWT authentication middleware
|
||||
- Verify JWT token from Authorization header
|
||||
- Decode and validate token
|
||||
- Check token against sessions table (not blacklisted)
|
||||
- Attach user object to request
|
||||
- Handle missing/invalid/expired tokens appropriately
|
||||
|
||||
EXCLUDE:
|
||||
- Don't implement login/logout endpoints (next task)
|
||||
- Don't implement token refresh (not in scope)
|
||||
- Don't add rate limiting (separate concern)
|
||||
- Don't implement permission checking (just authentication)
|
||||
|
||||
CONTEXT: JWT middleware for REST API authentication.
|
||||
- JWT secret: from environment variable JWT_SECRET
|
||||
- Token expiry: 24 hours
|
||||
- Sessions table: check if token_hash exists and not expired
|
||||
- Error responses: 401 for invalid/missing token
|
||||
- Follow project error handling patterns
|
||||
|
||||
OUTPUT: Middleware file at [DISCOVERED_LOCATION]/auth.middleware.ts
|
||||
- verifyJWT function (main middleware)
|
||||
- Helper functions (decode, validate, etc.)
|
||||
- Error handling for all cases
|
||||
- TypeScript types if applicable
|
||||
|
||||
SUCCESS: Middleware implemented and ready to use
|
||||
- Verifies JWT correctly
|
||||
- Checks session validity
|
||||
- Attaches user to request
|
||||
- Handles all error cases
|
||||
- Follows project patterns
|
||||
|
||||
TERMINATION:
|
||||
- Middleware complete
|
||||
- Blocked by missing JWT library
|
||||
- Database connection pattern unclear
|
||||
```
|
||||
|
||||
### Agent 4: Auth Endpoints (After Agent 3)
|
||||
|
||||
```
|
||||
DISCOVERY_FIRST: Before starting, understand the environment:
|
||||
- Find routes directory: src/routes/ or app/routes/?
|
||||
- Check router library: Express, Fastify, Koa?
|
||||
- Review existing route patterns
|
||||
- Note controller/handler organization
|
||||
|
||||
FOCUS: Implement authentication endpoints
|
||||
- POST /api/auth/login (email, password → JWT token)
|
||||
- POST /api/auth/logout (invalidate current session)
|
||||
- Use auth middleware from previous step
|
||||
- Create sessions table entry on login
|
||||
- Remove sessions table entry on logout
|
||||
|
||||
EXCLUDE:
|
||||
- Don't implement registration (separate feature)
|
||||
- Don't implement password reset (separate feature)
|
||||
- Don't add OAuth endpoints (separate feature)
|
||||
- Don't implement GET /me endpoint (separate task)
|
||||
|
||||
CONTEXT: Auth endpoints using JWT middleware implemented in previous step.
|
||||
- Middleware location: [from Agent 3 OUTPUT]
|
||||
- Login validates: email format, password against bcrypt hash
|
||||
- Login creates: session entry, JWT token with user_id claim
|
||||
- Logout requires: valid JWT (use middleware)
|
||||
- Logout invalidates: session entry in database
|
||||
|
||||
OUTPUT:
|
||||
- Routes file at [DISCOVERED_LOCATION]/auth.routes.ts
|
||||
- Controller file at [DISCOVERED_LOCATION]/auth.controller.ts
|
||||
- Follow project route organization pattern
|
||||
|
||||
SUCCESS: Endpoints implemented and functional
|
||||
- Login validates credentials correctly
|
||||
- Login returns valid JWT
|
||||
- Logout requires authentication
|
||||
- Logout invalidates session
|
||||
- All errors handled appropriately
|
||||
- Follows project patterns
|
||||
|
||||
TERMINATION:
|
||||
- Endpoints complete
|
||||
- Blocked by unclear auth middleware interface
|
||||
- bcrypt usage pattern unclear
|
||||
```
|
||||
|
||||
### Agent 5: Integration Tests (After Agent 4)
|
||||
|
||||
```
|
||||
DISCOVERY_FIRST: Before starting, understand the environment:
|
||||
- Find test directory: tests/, __tests__/, spec/?
|
||||
- Identify test framework: Jest, Mocha, Vitest?
|
||||
- Review existing test patterns
|
||||
- Note test database setup approach
|
||||
|
||||
FOCUS: Create integration tests for authentication flow
|
||||
- Test successful login (valid credentials → JWT returned)
|
||||
- Test failed login (invalid credentials → 401)
|
||||
- Test logout (valid JWT → session invalidated)
|
||||
- Test protected route with valid JWT (→ 200)
|
||||
- Test protected route with invalid JWT (→ 401)
|
||||
- Test protected route with no JWT (→ 401)
|
||||
|
||||
EXCLUDE:
|
||||
- Don't test registration (not implemented)
|
||||
- Don't test password reset (not implemented)
|
||||
- Don't unit test internal functions (integration tests only)
|
||||
- Don't test OAuth flows (not implemented)
|
||||
|
||||
CONTEXT: Testing JWT authentication implemented in previous steps.
|
||||
- Endpoints: POST /api/auth/login, POST /api/auth/logout
|
||||
- Middleware: JWT verification from auth.middleware.ts
|
||||
- Test database: Use test database, clean between tests
|
||||
- Follow project testing patterns exactly
|
||||
|
||||
OUTPUT: Test file at [DISCOVERED_LOCATION]/auth.integration.test.ts
|
||||
- All test cases listed in FOCUS
|
||||
- Setup and teardown (database, test user)
|
||||
- Clear test descriptions
|
||||
- Assertions verify correct behavior
|
||||
|
||||
SUCCESS: Complete test coverage for auth flow
|
||||
- All tests pass
|
||||
- Tests are independent (can run in any order)
|
||||
- Database cleanup works correctly
|
||||
- Follows project test patterns
|
||||
- Coverage includes happy path and error cases
|
||||
|
||||
TERMINATION:
|
||||
- Tests complete and passing
|
||||
- Blocked by test framework unclear
|
||||
- Test database setup pattern unclear
|
||||
```
|
||||
|
||||
## Execution Flow
|
||||
|
||||
### Phase 1: Schema Design (Agent 1)
|
||||
|
||||
```
|
||||
🚀 Launching Agent 1: Schema Design
|
||||
|
||||
Status: RUNNING
|
||||
Time: 15 minutes
|
||||
|
||||
Agent 1: COMPLETE ✅
|
||||
Output: docs/patterns/auth-database-schema.md
|
||||
|
||||
Deliverables:
|
||||
- Users table design (5 columns + indexes)
|
||||
- Sessions table design (5 columns + indexes)
|
||||
- Foreign key relationship documented
|
||||
- Performance considerations noted
|
||||
|
||||
Validation: ✅ Ready for migration implementation
|
||||
```
|
||||
|
||||
### Phase 2: Database Migration (Agent 2)
|
||||
|
||||
```
|
||||
🚀 Launching Agent 2: Database Migration
|
||||
Dependencies: Agent 1 complete ✅
|
||||
|
||||
Context provided:
|
||||
- Schema document from Agent 1
|
||||
- Table definitions and indexes
|
||||
|
||||
Status: RUNNING
|
||||
Time: 20 minutes
|
||||
|
||||
Agent 2: COMPLETE ✅
|
||||
Output: migrations/20250124120000_create_auth_tables.js
|
||||
|
||||
Deliverables:
|
||||
- Up migration creates both tables
|
||||
- Down migration drops cleanly
|
||||
- All indexes included
|
||||
- Follows Knex migration pattern
|
||||
|
||||
Validation: ✅ Ready for middleware implementation
|
||||
```
|
||||
|
||||
### Phase 3: JWT Middleware (Agent 3)
|
||||
|
||||
```
|
||||
🚀 Launching Agent 3: JWT Middleware
|
||||
Dependencies: Agent 2 complete ✅
|
||||
|
||||
Context provided:
|
||||
- Migration created tables
|
||||
- Database schema known
|
||||
|
||||
Status: RUNNING
|
||||
Time: 30 minutes
|
||||
|
||||
Agent 3: COMPLETE ✅
|
||||
Output: src/middleware/auth.middleware.ts
|
||||
|
||||
Deliverables:
|
||||
- verifyJWT middleware function
|
||||
- Token validation logic
|
||||
- Session checking against database
|
||||
- Error handling for all cases
|
||||
|
||||
Validation: ✅ Ready for endpoint implementation
|
||||
```
|
||||
|
||||
### Phase 4: Auth Endpoints (Agent 4)
|
||||
|
||||
```
|
||||
🚀 Launching Agent 4: Auth Endpoints
|
||||
Dependencies: Agent 3 complete ✅
|
||||
|
||||
Context provided:
|
||||
- Middleware from Agent 3
|
||||
- Function signatures and usage
|
||||
|
||||
Status: RUNNING
|
||||
Time: 35 minutes
|
||||
|
||||
Agent 4: COMPLETE ✅
|
||||
Output:
|
||||
- src/routes/auth.routes.ts
|
||||
- src/controllers/auth.controller.ts
|
||||
|
||||
Deliverables:
|
||||
- POST /api/auth/login endpoint
|
||||
- POST /api/auth/logout endpoint
|
||||
- Integration with middleware
|
||||
- Error responses
|
||||
|
||||
Validation: ✅ Ready for testing
|
||||
```
|
||||
|
||||
### Phase 5: Integration Tests (Agent 5)
|
||||
|
||||
```
|
||||
🚀 Launching Agent 5: Integration Tests
|
||||
Dependencies: Agent 4 complete ✅
|
||||
|
||||
Context provided:
|
||||
- All endpoints from Agent 4
|
||||
- Middleware from Agent 3
|
||||
- Expected behavior
|
||||
|
||||
Status: RUNNING
|
||||
Time: 25 minutes
|
||||
|
||||
Agent 5: COMPLETE ✅
|
||||
Output: tests/integration/auth.test.ts
|
||||
|
||||
Deliverables:
|
||||
- 6 integration tests
|
||||
- Database setup/teardown
|
||||
- All tests passing ✅
|
||||
- 95% coverage of auth flow
|
||||
|
||||
Validation: ✅ Feature complete and tested
|
||||
```
|
||||
|
||||
## Results
|
||||
|
||||
### Total Time: 125 minutes (sequential)
|
||||
|
||||
**Sequential necessary:** Each task depends on previous
|
||||
**No parallelization possible** in this dependency chain
|
||||
|
||||
### Context Accumulation
|
||||
|
||||
Each agent received growing context:
|
||||
|
||||
- Agent 1: Fresh start
|
||||
- Agent 2: Agent 1's schema design
|
||||
- Agent 3: Agent 2's migration + Agent 1's schema
|
||||
- Agent 4: Agent 3's middleware + all prior context
|
||||
- Agent 5: All previous implementations
|
||||
|
||||
### Deliverables
|
||||
|
||||
```
|
||||
📁 Project structure:
|
||||
├── docs/patterns/
|
||||
│ └── auth-database-schema.md (Agent 1)
|
||||
├── migrations/
|
||||
│ └── 20250124120000_create_auth_tables.js (Agent 2)
|
||||
├── src/
|
||||
│ ├── middleware/
|
||||
│ │ └── auth.middleware.ts (Agent 3)
|
||||
│ ├── routes/
|
||||
│ │ └── auth.routes.ts (Agent 4)
|
||||
│ └── controllers/
|
||||
│ └── auth.controller.ts (Agent 4)
|
||||
└── tests/integration/
|
||||
└── auth.test.ts (Agent 5)
|
||||
```
|
||||
|
||||
## Lessons Learned
|
||||
|
||||
### What Worked Well
|
||||
|
||||
✅ **Clear dependency chain:** Each agent knew exactly what it needed
|
||||
✅ **Context accumulation:** Prior outputs informed each subsequent agent
|
||||
✅ **DISCOVERY_FIRST:** Ensured consistency with project patterns
|
||||
✅ **Validation at each step:** Caught issues before they propagated
|
||||
|
||||
### Challenges Encountered
|
||||
|
||||
⚠️ **Agent 2 Issue:** Initial migration didn't match project format
|
||||
- **Solution:** Retry with more specific Knex pattern in CONTEXT
|
||||
- **Lesson:** DISCOVERY_FIRST examples critical
|
||||
|
||||
⚠️ **Agent 3 Issue:** Used wrong JWT library (jose instead of jsonwebtoken)
|
||||
- **Solution:** More explicit in EXCLUDE and CONTEXT
|
||||
- **Lesson:** Specify exact libraries when project uses specific ones
|
||||
|
||||
⚠️ **Agent 5 Issue:** Tests didn't clean up database properly
|
||||
- **Solution:** Retry with explicit teardown requirements
|
||||
- **Lesson:** Test isolation must be explicit in SUCCESS criteria
|
||||
|
||||
### Improvements for Next Time
|
||||
|
||||
1. **Specify exact libraries** in CONTEXT (don't assume agent will discover)
|
||||
2. **Include output of previous agent** verbatim in next agent's CONTEXT
|
||||
3. **Validation step between agents** to catch issues before next dependency
|
||||
4. **Checkpoint approach:** Allow user to review after each agent before launching next
|
||||
|
||||
## Reusable Template
|
||||
|
||||
This pattern works for any sequential build:
|
||||
|
||||
```
|
||||
1. Identify dependency chain (what depends on what)
|
||||
2. Order activities by dependencies
|
||||
3. Each agent's CONTEXT includes prior agent outputs
|
||||
4. Launch sequentially, validate each before next
|
||||
5. Accumulate context as you go
|
||||
```
|
||||
|
||||
**Use when:**
|
||||
- Building implementation layers (DB → Logic → API → UI)
|
||||
- Pipeline-style workflows (Design → Build → Test → Deploy)
|
||||
- Learning workflows (Research → Design → Implement → Validate)
|
||||
- Any task where B genuinely needs A's output
|
||||
|
||||
## Comparison: What If We Tried Parallel?
|
||||
|
||||
**Attempted parallel (would fail):**
|
||||
|
||||
```
|
||||
Agent 2 (Migration): Needs Agent 1's schema design → BLOCKED
|
||||
Agent 3 (Middleware): Needs Agent 2's tables to exist → BLOCKED
|
||||
Agent 4 (Endpoints): Needs Agent 3's middleware → BLOCKED
|
||||
Agent 5 (Tests): Needs Agent 4's endpoints → BLOCKED
|
||||
|
||||
Result: All agents blocked or produce incorrect results
|
||||
```
|
||||
|
||||
**Lesson:** Don't force parallelization when dependencies exist. Sequential is correct here.
|
||||
Reference in New Issue
Block a user