Loading...
Loading...
Professional software implementation skill for building features, components, and systems through multi-phase TDD development and incremental delivery.
npx skill4agent add enuno/claude-command-and-control builder-role-skillRead context files:
- DEVELOPMENT_PLAN.md (or equivalent)
- ARCHITECTURE.md (design specifications)
- TODO.md (task backlog)
- MULTI_AGENT_PLAN.md (if multi-agent workflow)IMPLEMENTATION_PLAN.md# Implementation Plan: [Feature Name]
## Architecture Reference
- Source: [Document] Section [X]
- Components: [List components to build]
- Dependencies: [External/internal dependencies]
## Phase Breakdown
### Phase 1: Foundation
- [ ] Task 1.1: [Specific task]
- [ ] Task 1.2: [Specific task]
- [ ] Task 1.3: Write unit tests for foundation
### Phase 2: Business Logic
- [ ] Task 2.1: [Specific task]
- [ ] Task 2.2: [Specific task]
- [ ] Task 2.3: Write service tests
### Phase 3: Integration
- [ ] Task 3.1: [Specific task]
- [ ] Task 3.2: Write integration tests
- [ ] Task 3.3: Full test suite validation
## Completion Criteria
- All tests passing (coverage >= 80%)
- Code linted with zero errors
- Documentation updated
- Peer review approved// Example: test/user-service.test.js
describe('UserService', () => {
test('createUser should validate email format', async () => {
const userService = new UserService();
await expect(userService.createUser({
email: 'invalid-email',
name: 'John Doe'
})).rejects.toThrow('Invalid email format');
});
});npm test -- --testPathPattern=user-service
# Expected: FAIL - Test should fail initially// Example: src/services/user-service.js
class UserService {
async createUser(userData) {
// Minimal code to make test pass
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(userData.email)) {
throw new Error('Invalid email format');
}
// ... rest of implementation
}
}npm test -- --testPathPattern=user-service
# Expected: PASS - Test should now pass// utils/validators.js
export const isValidEmail = (email) => {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
};
// Refactored service
import { isValidEmail } from '../utils/validators.js';
class UserService {
async createUser(userData) {
if (!isValidEmail(userData.email)) {
throw new Error('Invalid email format');
}
// ... rest of implementation
}
}npm run lint # Fix linting issues
npm run format # Auto-format codenpm test
# Expected: All tests still pass after refactoringgit add .
git commit -m "feat(user): add email validation to user creation
- Implement email format validation
- Add unit tests for validation
- Extract reusable validator utility
Tests: 12 passing, coverage 85%
Refs: #[issue-number]"# Run all tests
npm test
# Check coverage
npm run coverage
# Ensure coverage >= 80%
# Run linter
npm run lint
# Zero errors requiredIMPLEMENTATION_PLAN.mdTODO.mdMULTI_AGENT_PLAN.mdgit add .
git commit -m "feat([feature-name]): Complete Phase [N] - [Phase Name]
Phase [N] Summary:
- ✅ Task 1 completed
- ✅ Task 2 completed
- ✅ Task 3 completed
Tests: [X] passing, coverage [Y%]
Phase: [N] of [Total]
Next: Phase [N+1]"# Merge feature branch to develop
git checkout develop
git merge --no-ff feature/[feature-name]
# Run full test suite including integration tests
npm run test:integration
# Verify all tests passgh pr create \
--title "feat: [Feature Name]" \
--body-file PR_DESCRIPTION.md \
--label "ready-for-review"## Feature: [Name]
### Summary
[1-2 sentence description]
### Implementation Details
- Component 1: [Description]
- Component 2: [Description]
### Test Coverage
- Unit tests: [X] tests, [Y%] coverage
- Integration tests: [Z] scenarios
### Breaking Changes
- [None / List breaking changes]
### Migration Guide
[If breaking changes, provide migration steps]
### Checklist
- [ ] All tests passing
- [ ] Coverage >= 80%
- [ ] Linting passes
- [ ] Documentation updated
- [ ] No known bugs---
TO: Validator Agent (or use validator-role-skill)
FEATURE: [Feature Name]
PR: #[PR number]
IMPLEMENTATION_PLAN: IMPLEMENTATION_PLAN.md
TEST_COVERAGE: [X%]
IMPLEMENTATION_NOTES:
- [Key implementation detail 1]
- [Any concerns or trade-offs]
- [Areas needing special attention]
VALIDATION_REQUESTS:
- [ ] Unit test review
- [ ] Integration test verification
- [ ] Code quality assessment
- [ ] Security review (if handling sensitive data)
---# Bug Fix Plan: [Bug ID]
## Problem Description
[What is broken, symptoms, reproduction steps]
## Root Cause Analysis
[Why it's broken - technical explanation]
## Proposed Solution
[How to fix it - specific approach]
## Affected Components
[List files/modules requiring changes]
## Regression Risk
[What could potentially break]
## Testing Strategy
[How to verify fix + prevent regression]test('Bug #123: division by zero should throw error', () => {
const calculator = new Calculator();
expect(() => calculator.divide(10, 0))
.toThrow('Cannot divide by zero');
});divide(a, b) {
if (b === 0) {
throw new Error('Cannot divide by zero');
}
return a / b;
}# Run affected component tests
npm test -- --testPathPattern=[component]
# Run full suite
npm test
# Manual verification if UI/UX involved
[Steps to manually verify fix]# Refactoring Proposal: [Component Name]
## Current Problems
- [Problem 1: e.g., Code duplication]
- [Problem 2: e.g., Poor naming]
- [Problem 3: e.g., High complexity]
## Proposed Improvements
- [Improvement 1: Extract common logic]
- [Improvement 2: Rename variables for clarity]
- [Improvement 3: Split large function]
## Risk Assessment
- Breaking changes: [Yes/No]
- Current test coverage: [X%]
- Effort estimate: [Hours]
- Architect approval required: [Yes/No]/**
* Validates user email format and domain
* @param email - Email address to validate
* @returns true if valid, false otherwise
* @throws ValidationError if email is null/undefined
*/
function validateUserEmail(email: string): boolean {
if (!email) {
throw new ValidationError('Email is required');
}
return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email);
}<type>(<scope>): <subject>
<body>
<footer>featfixdocsstylerefactortestchorefeat(auth): add JWT token refresh mechanism
- Implement refresh token endpoint
- Add token expiration validation
- Update authentication middleware
- Add unit tests for refresh flow
Tests: 45 passing, coverage 92%
Closes: #123// ❌ WRONG - Vulnerable to SQL injection
const query = `SELECT * FROM users WHERE email = '${userEmail}'`;
// ✅ CORRECT - Parameterized query
const query = 'SELECT * FROM users WHERE email = ?';
db.execute(query, [userEmail]);## Phase 1: Foundation
1. Write test for user model validation
2. Create user model with email, password fields
3. Add email format validation
4. Add password strength validation
## Phase 2: Business Logic
1. Write test for registration service
2. Implement registration service
3. Add duplicate email check
4. Hash password before storage
## Phase 3: API Integration
1. Write integration test for /register endpoint
2. Create POST /register endpoint
3. Add input validation middleware
4. Add error handling
Result: Feature complete in 3 phases with 95% test coverage## Bug Analysis
- Problem: Login hangs after 30 seconds
- Root cause: Database query missing index on email column
- Solution: Add database index
## Implementation
1. Write test that times login query
2. Add migration script for index
3. Run migration
4. Verify test passes
5. Measure performance improvement (30s → 50ms)## Current Problem
- Email validation duplicated in 5 files
- Password validation duplicated in 3 files
## Solution
1. Ensure all 5 files have tests (add if missing)
2. Extract common validation to utils/validators.js
3. Update imports in all 5 files
4. Run tests after each file update
5. Remove old validation code
6. Final test run - all pass
Result: Code duplication eliminated, tests still passresources/IMPLEMENTATION_PLAN_template.mdresources/commit_message_guide.mdresources/tdd_workflow.mdscripts/run_tests.shscripts/validate_commit.pyscripts/phase_checker.sh