| name | validation |
| description | Validate code quality, test coverage, performance, and security. Use when verifying implemented features meet all standards and requirements before marking complete. |
| allowed-tools | ["Read","Bash","Grep","Glob"] |
Feature Validation Skill
Purpose
This skill provides systematic validation of implemented features, ensuring code quality, test coverage, performance, security, and requirement fulfillment before marking work complete.
When to Use
- After implementation and testing are complete
- Before creating pull request
- Before marking feature as done
- When verifying all acceptance criteria met
- Final quality gate before deployment
Validation Workflow
1. Code Quality Validation
Run Quality Checks:
black --check src/ tests/
mypy src/
flake8 src/ tests/
make lint
Quality Checklist:
Refer to quality-checklist.md for comprehensive review
Key Quality Metrics:
Automated Script:
python scripts/run_checks.py --quality
Deliverable: Quality report with pass/fail
2. Test Coverage Validation
Run Tests with Coverage:
pytest --cov=src --cov-report=html --cov-report=term-missing
pytest --cov=src --cov-fail-under=80
open htmlcov/index.html
Coverage Checklist:
Identify Coverage Gaps:
pytest --cov=src --cov-report=term-missing
pytest --cov=src --cov-report=html
Deliverable: Coverage report with gaps identified
3. Test Quality Validation
Review Test Suite:
Run Tests Multiple Times:
for i in {1..10}; do pytest || break; done
pytest --random-order
Test Markers:
pytest tests/unit/ -m "not slow"
pytest tests/integration/
Deliverable: Test quality assessment
4. Performance Validation
Performance Checklist:
Refer to performance-benchmarks.md for target metrics
Key Performance Metrics:
Performance Testing:
pytest tests/performance/ -v
python -m cProfile -o profile.stats script.py
python -m pstats profile.stats
python -m memory_profiler script.py
Benchmark Against Requirements:
def test_performance_requirement():
"""Verify operation meets performance requirement."""
start = time.time()
result = expensive_operation()
duration = time.time() - start
assert duration < 1.0, f"Took {duration}s, required < 1.0s"
Deliverable: Performance report with metrics
5. Security Validation
Security Checklist Review:
Review security-checklist.md from analysis phase and verify:
Input Validation:
Authentication & Authorization:
Data Protection:
Dependency Security:
pip-audit
safety check --json
pip list --outdated
Deliverable: Security validation report
6. Requirements Validation
Verify Acceptance Criteria:
Review original requirements from analysis phase:
Manual Testing:
python -m src.tools.feature.main --help
python -m src.tools.feature.main create --name test
python -m src.tools.feature.main --input samples/test.json
python -m src.tools.feature.main --invalid-option
Regression Testing:
Deliverable: Requirements validation checklist
7. Documentation Validation
Code Documentation:
Technical Documentation:
User Documentation:
CHANGELOG Update:
Deliverable: Documentation review checklist
8. Integration Validation
Integration Testing:
pytest tests/integration/ -v
pytest tests/integration/ --no-mock
Integration Checklist:
End-to-End Testing:
pytest tests/e2e/ -v
./scripts/manual_test.sh
Deliverable: Integration test report
9. Final Validation
Run Complete Validation Suite:
python scripts/run_checks.py --all
python scripts/run_checks.py --quality
python scripts/run_checks.py --tests
python scripts/run_checks.py --coverage
python scripts/run_checks.py --security
Pre-PR Checklist:
Create Validation Report:
# Validation Report: [Feature Name]
## Quality ✅
- Black: PASS
- mypy: PASS
- flake8: PASS (0 errors, 0 warnings)
## Testing ✅
- Unit tests: 45 passed
- Integration tests: 12 passed
- Coverage: 87% (target: 80%)
## Performance ✅
- Response time (p95): 145ms (target: < 200ms)
- Throughput: 1200 req/s (target: 1000 req/s)
- Memory usage: 75MB (target: < 100MB)
## Security ✅
- No vulnerable dependencies
- Input validation: Complete
- Secrets management: Secure
## Requirements ✅
- All acceptance criteria met
- No regressions detected
## Documentation ✅
- Code documentation: Complete
- Technical docs: Complete
- CHANGELOG: Updated
## Status: READY FOR PR ✅
Deliverable: Final validation report
Quality Standards
Code Quality Metrics
Complexity:
- Cyclomatic complexity < 10 per function
- Max nesting depth: 4 levels
Maintainability:
- Files < 500 lines
- Functions < 50 lines
- Classes < 300 lines
Documentation:
- 100% public API documented
- Docstring coverage ≥ 90%
Test Quality Metrics
Coverage:
- Overall: ≥ 80%
- Critical paths: 100%
- Core logic: ≥ 90%
Test Quality:
- No flaky tests
- Unit tests < 1 minute total
- Integration tests < 5 minutes total
Performance Benchmarks
Refer to performance-benchmarks.md for detailed criteria
Response Time:
- p50: < 50ms
- p95: < 200ms
- p99: < 500ms
Resource Usage:
- Memory: < 100MB
- CPU: < 50% single core
Automated Validation Script
The scripts/run_checks.py script automates validation:
python scripts/run_checks.py --all
python scripts/run_checks.py --quality
python scripts/run_checks.py --tests
python scripts/run_checks.py --coverage
python scripts/run_checks.py --security
python scripts/run_checks.py --performance
python scripts/run_checks.py --all --report validation-report.md
Supporting Resources
- quality-checklist.md: Comprehensive code quality standards
- performance-benchmarks.md: Performance criteria and targets
- scripts/run_checks.py: Automated validation runner
Integration with Feature Implementation Flow
Input: Completed implementation with tests
Process: Systematic validation against all criteria
Output: Validation report + approval for PR
Next Step: Create pull request or deploy
Validation Checklist Summary
Quality ✓
Testing ✓
Performance ✓
Security ✓
Requirements ✓
Documentation ✓
Integration ✓
Final Approval ✓
Sign-off
Feature: [Feature Name]
Validated By: [Your Name]
Date: [YYYY-MM-DD]
Status: ☐ Approved ☐ Needs Work
Notes:
[Any additional notes or concerns]
What to Do If Validation Fails
Quality Issues:
- Fix formatting:
black src/ tests/
- Fix type errors: Review mypy output
- Fix lint errors: Review flake8 output
- Refactor large files/functions
Coverage Issues:
- Identify untested code:
pytest --cov-report=html
- Add missing tests
- Review edge cases
- Add error condition tests
Performance Issues:
- Profile code:
python -m cProfile
- Optimize hot paths
- Add caching where appropriate
- Optimize database queries
Security Issues:
- Address vulnerabilities:
pip-audit
- Review input validation
- Check secrets management
- Run security checklist again
Requirement Issues:
- Review acceptance criteria
- Implement missing functionality
- Test edge cases
- Verify with stakeholders
After Fixes:
- Re-run validation
- Update validation report
- Verify all checks pass
- Proceed to PR