Validateur des 7 Principes Clés
Valide la conformité du code avec 7 principes fondamentaux : TDD, Fail Fast, Modularité, Réutilisation, Open Source, Zéro Dette, Excellence. Détecte les violations et suggère des améliorations.
name: apply-key-principles description: Apply and validate the 7 Key Principles to code - TDD, Fail Fast, Modular, Reuse, Open Source, No Debt, Excellence. Checks code compliance and suggests improvements. Use during code review or refactoring. allowed-tools: [Read, Grep, Glob, Bash]
apply-key-principles
Skill Type: Validator/Sensor Purpose: Validate code compliance with 7 Key Principles Prerequisites: Code exists to validate
Agent Instructions
You are validating code against the 7 Key Principles.
The 7 Key Principles:
- Test Driven Development - "No code without tests"
- Fail Fast & Root Cause - "Break loudly, fix completely"
- Modular & Maintainable - "Single responsibility, loose coupling"
- Reuse Before Build - "Check first, create second"
- Open Source First - "Suggest alternatives, human decides"
- No Legacy Baggage - "Clean slate, no debt"
- Perfectionist Excellence - "Best of breed only"
Your role: Check code compliance and report violations.
Validation Checks
Principle #1: Test Driven Development
Check: Does code have tests?
Validation:
# For each file in src/, check if tests exist
for file in src/**/*.py; do
test_file="tests/$(basename $file | sed 's/\.py$//')"
if [ ! -f "${test_file}_test.py" ]; then
echo "VIOLATION: $file has no tests"
fi
done
✅ Pass:
- Every production file has corresponding test file
- Tests were written first (git history shows RED before GREEN commits)
- Coverage >= 80%
❌ Fail:
- Code without tests
- Tests written after code (git history shows)
- Coverage < 80%
Principle #2: Fail Fast & Root Cause
Check: Does code fail loudly?
Validation:
# Look for silent failures
grep -rn "except.*pass" src/ # Empty except blocks (silent failures)
grep -rn "return None" src/ | grep -v "Optional" # Silent None returns
grep -rn "# TODO: error handling" src/ # Deferred error handling
✅ Pass:
- Exceptions raised for invalid states
- Assertions check preconditions
- Specific error messages
- Logging for debugging
❌ Fail:
- Silent failures (empty except blocks)
- Generic error messages
- Swallowing exceptions
- No logging
Principle #3: Modular & Maintainable
Check: Is code modular?
Validation:
# Check file/function sizes
find src -name "*.py" -exec wc -l {} \; | awk '$1 > 300' # Files > 300 lines
# Check cyclomatic complexity
radon cc src/ -a | grep "F" # Functions with F rating (too complex)
✅ Pass:
- Files < 300 lines
- Functions < 50 lines
- Cyclomatic complexity <= 10
- Single responsibility per module
- Low coupling
❌ Fail:
- Large files (> 300 lines)
- Large functions (> 50 lines)
- High complexity (> 10)
- Mixed responsibilities
Principle #4: Reuse Before Build
Check: Is this functionality already available?
Validation:
# Search for similar code in project
grep -rn "function_name" src/
# Check for duplicate code
jscpd src/ # Copy-paste detector
✅ Pass:
- No duplicate code
- Reusing existing functions/classes
- Using standard libraries where appropriate
❌ Fail:
- Duplicate code blocks
- Reimplementing existing functionality
- Not using available libraries
Principle #5: Open Source First
Check: Could we use an open source library?
Validation:
- For custom implementations, check if library exists
- Document decision if building custom
✅ Pass:
- Using well-maintained libraries
- Documented decision to build custom (ADR)
- Libraries chosen after research
❌ Fail:
- Building custom without research
- Reinventing wheel (custom date parser, custom validation, etc.)
Principle #6: No Legacy Baggage
Check: Is code clean of technical debt?
Validation:
# Unused imports
grep -rn "^import\|^from" src/ | check_usage
# Dead code
find_functions_with_zero_callers src/
# Commented code
grep -rn "# " src/ | grep -v "^#" | check_if_code
# Complexity
radon cc src/ -a | grep -E "C|D|E|F"
✅ Pass:
- No unused imports
- No dead code
- No commented-out code
- Complexity <= 10
- No TODOs without tickets
❌ Fail:
- Any technical debt present
If FAIL: Invoke prune-unused-code, simplify-complex-code
Principle #7: Perfectionist Excellence
Check: Is this excellent code?
Validation:
# Naming quality
grep -rn " x " src/ # Single-letter variables
grep -rn " temp" src/ # Temp variables
# Documentation
find src -name "*.py" -exec grep -L '"""' {} \; # Files without docstrings
# Type hints (Python)
grep -rn "def " src/ | grep -v " -> " # Functions without return types
# Style compliance
pylint src/ --errors-only
black src/ --check
✅ Pass:
- Clear, descriptive names
- Comprehensive documentation
- Type hints/annotations
- Follows style guide (PEP 8, etc.)
- Code review ready
❌ Fail:
- Vague naming
- Missing documentation
- No type hints
- Style violations
Output Format
When all principles satisfied:
[APPLY KEY PRINCIPLES]
Validating code against 7 Key Principles...
✅ Principle #1: Test Driven Development
- All files have tests
- Tests written first (git history verified)
- Coverage: 95.2%
✅ Principle #2: Fail Fast & Root Cause
- No silent failures
- Specific error messages
- Comprehensive logging
✅ Principle #3: Modular & Maintainable
- Max file size: 187 lines (< 300)
- Max function size: 23 lines (< 50)
- Max complexity: 6 (< 10)
✅ Principle #4: Reuse Before Build
- No duplicate code
- Using standard libraries (bcrypt, datetime)
- Searched codebase first
✅ Principle #5: Open Source First
- Using bcrypt library (not custom hashing)
- Documented in ADR-001
✅ Principle #6: No Legacy Baggage
- Tech debt: 0 violations
- No unused imports
- No dead code
- No commented code
- Max complexity: 6
✅ Principle #7: Perfectionist Excellence
- Clear naming (validate_email, normalize_email)
- Comprehensive docstrings
- Type hints on all functions
- Style: PEP 8 compliant
Result: 7/7 Principles Satisfied ✅
Quality: EXCELLENT 🔥
Ready for commit/deployment
When violations found:
[APPLY KEY PRINCIPLES - VIOLATIONS FOUND]
❌ Principle #6: No Legacy Baggage
Violations (5):
1. Unused import: import hashlib (src/auth.py:3)
2. Dead function: legacy_hash_password() (src/auth.py:67-74)
3. Commented code: Lines 120-135 (src/auth.py)
4. High complexity: login() complexity 14 (src/auth.py:89)
5. TODO without ticket: # TODO: Add rate limiting (src/auth.py:145)
❌ Principle #7: Perfectionist Excellence
Violations (3):
1. Missing docstring: _check_password() (src/auth.py:156)
2. No type hint: def validate(email) (src/auth.py:178)
3. Vague naming: variable 'x' (src/auth.py:192)
Result: 5/7 Principles Satisfied ⚠️
Violations: 8 total
Quality: NEEDS IMPROVEMENT
Actions Required:
1. Invoke 'prune-unused-code' to fix Principle #6
2. Fix naming, docs, types for Principle #7
3. Re-run validation after fixes
Blocked: Fix violations before commit
Prerequisites Check
Before invoking:
- Code exists to validate
- Testing tools available (for Principle #1)
Configuration
plugins:
- name: "@aisdlc/principles-key"
config:
principles:
enforce_tdd: true
enforce_fail_fast: true
enforce_modular: true
enforce_reuse_first: true
enforce_open_source_first: true
enforce_no_legacy: true
enforce_excellence: true
block_on_violation: true
thresholds:
max_file_lines: 300
max_function_lines: 50
max_complexity: 10
min_coverage: 80
Notes
Why apply principles?
- Operational enforcement (not just aspirational)
- Measurable (can check compliance automatically)
- Quality gate (blocks bad code)
- Continuous validation (run on every commit)
Principles manifest in code:
- TDD → Tests exist, coverage high
- Fail Fast → Exceptions, assertions, logging
- Modular → Small files/functions, low complexity
- Reuse → No duplication, using libraries
- Open Source → Libraries documented
- No Debt → Zero unused code, low complexity
- Excellence → Clear naming, docs, types
Homeostasis Goal:
desired_state:
all_seven_principles_satisfied: true
violations: 0
code_quality: excellent
"Excellence or nothing" 🔥
Skills similaires
TDD Red-Green-Refactor
Skill qui guide Claude a travers le cycle TDD complet.
Audit d'Accessibilité Web
Réalise un audit d'accessibilité web complet selon les normes WCAG.
Générateur de Tests UAT
Génère des cas de test d'acceptation utilisateur structurés et complets.