Claude-skill-registry check-requirement-coverage
Homeostatic sensor detecting requirements without implementation or test coverage. Scans for REQ-* keys in requirements docs and checks if they have corresponding code and tests. Use to find coverage gaps.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/check-requirement-coverage" ~/.claude/skills/majiayu000-claude-skill-registry-check-requirement-coverage && rm -rf "$T"
skills/data/check-requirement-coverage/SKILL.mdcheck-requirement-coverage
Skill Type: Sensor (Homeostasis) Purpose: Detect requirements without implementation or test coverage Prerequisites: Requirements exist in documentation
Agent Instructions
You are a Sensor in the homeostasis system. Your job is to detect deviations from the desired state.
Desired State:
coverage = 100% (all requirements have code + tests)
Your goal is to find requirements without coverage and signal the deviation.
Workflow
Step 1: Find All Requirements
Search for REQ- keys* in requirements documentation:
# Find all requirement files find docs/requirements -name "*.md" -type f # Extract all REQ-* keys grep -rho "REQ-[A-Z-]*-[0-9]*" docs/requirements/ | sort -u
Example output:
<REQ-ID> <REQ-ID> REQ-F-AUTH-003 <REQ-ID> REQ-NFR-PERF-001 REQ-NFR-SEC-001 REQ-DATA-PII-001
Step 2: Check Implementation Coverage
For each REQ-*, search for implementation:
# Check if requirement has code implementation grep -rn "# Implements: <REQ-ID>" src/ # Expected: At least 1 file with "# Implements: <REQ-ID>"
Coverage criteria:
- ✅ Covered: At least 1 file in
hassrc/# Implements: {REQ-KEY} - ❌ Not covered: Zero files reference the requirement
Example:
<REQ-ID>: ✅ src/auth/login.py:23 # Implements: <REQ-ID> ✅ src/auth/validators.py:67 # Implements: <REQ-ID>, BR-001 Result: COVERED (2 files) REQ-F-PROFILE-001: ❌ No files found Result: NOT COVERED (implementation missing)
Step 3: Check Test Coverage
For each REQ-*, search for tests:
# Check if requirement has tests grep -rn "# Validates: <REQ-ID>" tests/ # Also check BDD scenarios grep -rn "# Validates: <REQ-ID>" features/ # Expected: At least 1 test file
Coverage criteria:
- ✅ Covered: At least 1 file in
ortests/
hasfeatures/# Validates: {REQ-KEY} - ❌ Not covered: Zero test files reference the requirement
Example:
<REQ-ID>: ✅ tests/auth/test_login.py:15 # Validates: <REQ-ID> ✅ features/authentication.feature:8 # Validates: <REQ-ID> Result: COVERED (2 test files) <REQ-ID>: ✅ src/payments/payment.py:45 # Implements: <REQ-ID> ❌ No test files found Result: COVERED (code) but NOT COVERED (tests) ⚠️
Step 4: Calculate Coverage Percentage
Formula:
implementation_coverage = (requirements_with_code / total_requirements) * 100 test_coverage = (requirements_with_tests / total_requirements) * 100 full_coverage = (requirements_with_both / total_requirements) * 100
Example:
Total Requirements: 42 Requirements with Code: 36/42 (86%) Requirements with Tests: 32/42 (76%) Requirements with Both: 30/42 (71%) Coverage Status: ✅ Implementation: 86% (target: 80%) PASS ⚠️ Test: 76% (target: 80%) FAIL ⚠️ Full: 71% (target: 80%) FAIL
Step 5: Identify Coverage Gaps
Report requirements without coverage:
Gap Type 1: No Implementation:
Requirements Without Code (6): ├─ REQ-F-PROFILE-001 - User profile editing ├─ REQ-F-PROFILE-002 - Avatar upload ├─ REQ-F-NOTIF-001 - Email notifications ├─ REQ-F-NOTIF-002 - Push notifications ├─ REQ-NFR-PERF-002 - Database optimization └─ REQ-DATA-LIN-001 - Data lineage tracking Recommended Action: Implement these requirements using TDD workflow
Gap Type 2: Has Code, No Tests:
Requirements Without Tests (10): ├─ <REQ-ID> - Payment processing │ Code: src/payments/payment.py:45 │ Missing: Unit tests │ ├─ REQ-F-CART-001 - Shopping cart │ Code: src/cart/cart.py:23 │ Missing: Integration tests │ └─ ... (8 more) Recommended Action: Invoke 'generate-missing-tests' skill
Gap Type 3: Has Tests, No Code:
Requirements Without Implementation (4): ├─ REQ-F-SEARCH-001 - Product search │ Tests: tests/search/test_search.py:15 │ Missing: Implementation (tests written first - RED phase) │ └─ ... (3 more) Status: ✅ This is OK (RED phase of TDD) Action: Continue to GREEN phase
Output Format
When you detect coverage gaps:
[COVERAGE SENSOR - DEVIATION DETECTED] Requirements Scanned: 42 Coverage Summary: Implementation: 36/42 (86%) ✅ PASS (≥80%) Tests: 32/42 (76%) ❌ FAIL (target: ≥80%) Full Coverage: 30/42 (71%) ❌ FAIL (target: ≥80%) Homeostasis Deviation: Test coverage below 80% Coverage Gaps by Type: ❌ No Implementation (6 requirements): 1. REQ-F-PROFILE-001 - User profile editing 2. REQ-F-PROFILE-002 - Avatar upload 3. REQ-F-NOTIF-001 - Email notifications 4. REQ-F-NOTIF-002 - Push notifications 5. REQ-NFR-PERF-002 - Database optimization 6. REQ-DATA-LIN-001 - Data lineage tracking ⚠️ No Tests (10 requirements): 1. <REQ-ID> - Payment processing Code: src/payments/payment.py:45 2. REQ-F-CART-001 - Shopping cart Code: src/cart/cart.py:23 ... (8 more) ✅ Tests Without Implementation (4 requirements): 1. REQ-F-SEARCH-001 - Product search Tests: tests/search/test_search.py:15 Status: RED phase (OK - TDD in progress) ... (3 more) Recommended Actions: 1. Invoke 'generate-missing-tests' skill for 10 requirements without tests 2. Implement 6 requirements without code (use 'tdd-workflow') 3. Continue TDD for 4 requirements in RED phase Homeostasis Goal: coverage >= 80% Current State: coverage = 71% Deviation: -9% (needs correction)
Homeostasis Behavior
When deviation detected:
- Report: Coverage below threshold
- Signal: "Need tests for {REQ-KEYS}"
- Recommend: Invoke
actuator skillgenerate-missing-tests - Wait: User confirmation or auto-invoke if configured
When homeostasis achieved:
[COVERAGE SENSOR - HOMEOSTASIS ACHIEVED] Requirements: 42 Coverage: 100% (42/42) ✅ All requirements have: ✅ Implementation ✅ Tests ✅ Traceability Homeostasis Status: STABLE ✓
Prerequisites Check
None - this sensor can run anytime.
Recommended frequency:
- After each feature implementation
- Before commits (via pre-commit hook)
- Daily in CI/CD pipeline
- On-demand via
slash command/coverage-req
Configuration
This skill respects configuration in
.claude/plugins.yml:
plugins: - name: "@aisdlc/aisdlc-core" config: coverage: minimum_percentage: 80 # Fail if coverage < 80% require_implementation: true # All REQ-* must have code require_tests: true # All REQ-* must have tests auto_generate_missing: false # Ask before generating tests exclude_patterns: - "REQ-DATA-*" # Don't require tests for data reqs
Integration with Other Skills
TDD Workflow Integration
# Before starting TDD, check coverage result = invoke_skill("check-requirement-coverage") if result.has_gaps: # Report gaps to user print(f"Found {result.gap_count} requirements without coverage") # After TDD, re-check coverage result = invoke_skill("check-requirement-coverage") if result.coverage >= 80: print("Coverage target achieved ✅")
Generate Missing Tests Integration
# Sensor detects gaps gaps = invoke_skill("check-requirement-coverage") if gaps.test_coverage < 80: # Actuator fixes gaps invoke_skill("generate-missing-tests", req_keys=gaps.missing_tests) # Re-check (should now be at homeostasis) new_gaps = invoke_skill("check-requirement-coverage") assert new_gaps.test_coverage >= 80 # Homeostasis achieved
Next Steps
After coverage check:
- If gaps found → Recommend actuator skills (generate-missing-tests, tdd-workflow)
- If homeostasis → Report success
- If configured → Auto-invoke actuator skills
Notes
Why coverage detection?
- Prevents forgotten requirements: Ensures every REQ-* gets implemented
- Quality gate: Don't deploy without full coverage
- Continuous monitoring: Coverage can degrade over time
- Homeostasis principle: System self-corrects when coverage drops
Sensor characteristics:
- Read-only: Never modifies files (only reads)
- Fast: Lightweight grep operations
- Continuous: Can run frequently without impact
- Objective: Binary decision (covered or not)
Homeostasis Goal:
desired_state: implementation_coverage: >= 80% test_coverage: >= 80% full_coverage: >= 80%
"Excellence or nothing" 🔥