
Qe Coverage Analysis
- 31 installs
- 433 repo stars
- Updated August 4, 2026
- proffesor-for-testing/agentic-qe
qe coverage analysis is a Claude Code skill for ai & agent building.
About
qe coverage analysis is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- qe coverage analysis
- AI & Agent Building
- AI-coding skill
Qe Coverage Analysis by the numbers
- 31 all-time installs (skills.sh)
- Ranked #9,164 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-coverage-analysisAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 31 |
|---|---|
| repo stars | ★ 433 |
| Last updated | August 4, 2026 |
| Repository | proffesor-for-testing/agentic-qe ↗ |
How do I helps with ai & agent building tasks.?
Helps with ai & agent building tasks.
Who is it for?
Best when you're working on ai & agent building and need structured help with qe coverage analysis.
Skip if: Teams with no ai & agent building needs, or anyone wanting a generic chat assistant without this specific workflow.
When should I use this skill?
When you need to helps with ai & agent building tasks., or when qe coverage analysis is a claude code skill for ai & agent building.
What you get
Structured output aligned to qe coverage analysis: qe coverage analysis, AI & Agent Building.
Files
QE Coverage Analysis
Purpose
Guide the use of v3's advanced coverage analysis capabilities including sublinear gap detection algorithms, risk-weighted coverage scoring, and intelligent test prioritization based on code criticality.
Activation
- When analyzing test coverage
- When identifying coverage gaps
- When prioritizing testing effort
- When setting coverage targets
- When assessing code risk
Quick Start
# Analyze coverage with gap detection
aqe coverage analyze --source src/ --tests tests/
# Find high-risk uncovered code
aqe coverage gaps --risk-weighted --threshold 80
# Generate coverage report
aqe coverage report --format html --output coverage-report/
# Compare coverage between branches
aqe coverage diff --base main --head feature-branchAgent Workflow
// Comprehensive coverage analysis
Task("Analyze coverage gaps", `
Perform O(log n) coverage analysis on src/:
- Calculate statement, branch, function coverage
- Identify uncovered critical paths
- Risk-weight gaps by code complexity and change frequency
- Recommend tests to write for maximum coverage impact
`, "qe-coverage-specialist")
// Risk-based prioritization
Task("Prioritize coverage effort", `
Analyze coverage gaps and prioritize by:
- Business criticality (payment, auth, data)
- Code complexity (cyclomatic > 10)
- Recent bug history
- Change frequency
Output prioritized list of files needing tests.
`, "qe-coverage-analyzer")Analysis Strategies
1. Sublinear Gap Detection
await coverageAnalyzer.detectGaps({
algorithm: 'sublinear', // O(log n) complexity
source: 'src/**/*.ts',
metrics: ['statement', 'branch', 'function'],
sampling: {
enabled: true,
confidence: 0.95,
maxSamples: 1000
}
});2. Risk-Weighted Coverage
await coverageAnalyzer.riskWeightedAnalysis({
coverage: coverageReport,
riskFactors: {
complexity: { weight: 0.3, threshold: 10 },
changeFrequency: { weight: 0.25, window: '90d' },
bugHistory: { weight: 0.25, window: '180d' },
criticality: { weight: 0.2, tags: ['payment', 'auth'] }
},
output: {
riskScore: true,
prioritizedGaps: true
}
});3. Differential Coverage
await coverageAnalyzer.diffCoverage({
base: 'main',
head: 'feature-branch',
requirements: {
newCode: 80, // New code must have 80% coverage
modifiedCode: 'maintain', // Don't decrease existing
deletedCode: 'ignore'
}
});Coverage Thresholds
thresholds:
global:
statements: 80
branches: 75
functions: 85
lines: 80
per_file:
min_statements: 70
critical_paths: 90
new_code:
statements: 85
branches: 80
exceptions:
- path: "src/migrations/**"
reason: "Database migrations"
- path: "src/generated/**"
reason: "Auto-generated code"Coverage Report
interface CoverageAnalysis {
summary: {
statements: { covered: number; total: number; percentage: number };
branches: { covered: number; total: number; percentage: number };
functions: { covered: number; total: number; percentage: number };
};
gaps: {
file: string;
uncoveredLines: number[];
uncoveredBranches: BranchInfo[];
riskScore: number;
suggestedTests: string[];
}[];
trends: {
period: string;
coverageChange: number;
newGaps: number;
closedGaps: number;
};
recommendations: {
priority: 'critical' | 'high' | 'medium' | 'low';
file: string;
action: string;
expectedImpact: number;
}[];
}Quality Gates
quality_gates:
coverage:
block_merge:
- new_code_coverage < 80
- coverage_regression > 5
- critical_path_uncovered
warn:
- overall_coverage < 75
- branch_coverage < 70
metrics:
- track_trends: true
- alert_on_decline: 3 # consecutive PRsRun History
After each coverage analysis, append results to run-history.json in this skill directory:
# Read current history, append new entry, write back
node -e "
const fs = require('fs');
const h = JSON.parse(fs.readFileSync('.claude/skills/qe-coverage-analysis/run-history.json'));
h.runs.push({date: new Date().toISOString().split('T')[0], statements_pct: STATEMENTS, branches_pct: BRANCHES, gaps_found: GAPS});
fs.writeFileSync('.claude/skills/qe-coverage-analysis/run-history.json', JSON.stringify(h, null, 2));
"Read run-history.json before each run to detect trends (e.g., "coverage dropped 3 consecutive times").
Skill Composition
- Coverage dropped? → Use
/coverage-drop-investigatorto trace the cause - Need more tests → Use
/qe-test-generationto fill gaps - Validate quality → Use
/mutation-testingto ensure coverage means quality - Ship decision → Feed into
/qe-quality-assessmentfor deployment readiness
Gotchas
- High line coverage does NOT mean good tests — 100% coverage with 0% assertions is common agent output. Use mutation testing to verify
- coverage-analysis domain has 86% success rate — 14% of runs fail on initialization. Always verify results and have fallback plan (e.g. manual coverage tools)
- Self-learning pipeline may silently stop learning (statusline frozen for days) — only human inspection catches this
Coordination
Primary Agents: qe-coverage-specialist, qe-coverage-analyzer, qe-gap-detector Coordinator: qe-coverage-coordinator Related Skills: qe-test-generation, qe-quality-assessment
# =============================================================================
# AQE Skill Evaluation Test Suite: QE Coverage Analysis v1.0.0
# =============================================================================
#
# Comprehensive evaluation suite for the qe-coverage-analysis skill.
# Tests O(log n) sublinear gap detection, risk-weighted analysis, differential
# coverage, test prioritization, and coverage trend analysis.
#
# Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
# Validator: .claude/skills/qe-coverage-analysis/scripts/validate-config.json
#
# Coverage:
# - Sublinear gap detection (O(log n) complexity)
# - Risk-weighted coverage scoring
# - Differential coverage (branch diffs)
# - Test prioritization by impact
# - Coverage regression detection
# - Quality gate enforcement
#
# =============================================================================
skill: qe-coverage-analysis
version: 1.0.0
description: >
Comprehensive evaluation suite for the qe-coverage-analysis skill.
Tests O(log n) sublinear coverage gap detection, risk-weighted analysis,
differential coverage scoring, intelligent test prioritization, and coverage
trend analysis with quality gate enforcement.
# =============================================================================
# Multi-Model Configuration
# =============================================================================
models_to_test:
- claude-sonnet-4-6 # Primary (high accuracy expected)
- claude-haiku-4-5 # Fast model (minimum quality floor)
# =============================================================================
# MCP Integration Configuration
# =============================================================================
mcp_integration:
enabled: true
namespace: skill-validation
query_patterns: true
track_outcomes: true
store_patterns: true
share_learning: true
update_quality_gate: true
target_agents:
- qe-learning-coordinator
- qe-queen-coordinator
- qe-coverage-specialist
- qe-gap-detector
# =============================================================================
# ReasoningBank Learning Configuration
# =============================================================================
learning:
store_success_patterns: true
store_failure_patterns: true
pattern_ttl_days: 90
min_confidence_to_store: 0.7
cross_model_comparison: true
# =============================================================================
# Result Format Configuration
# =============================================================================
result_format:
json_output: true
markdown_report: true
include_raw_output: false
include_timing: true
include_token_usage: true
# =============================================================================
# Environment Setup
# =============================================================================
setup:
required_tools:
- jq
environment_variables:
COVERAGE_ALGORITHM: "sublinear"
RISK_WEIGHTING: "enabled"
MIN_COVERAGE_THRESHOLD: "80"
fixtures: []
# =============================================================================
# TEST CASES
# =============================================================================
test_cases:
# ---------------------------------------------------------------------------
# CATEGORY: Sublinear Gap Detection
# ---------------------------------------------------------------------------
- id: tc001_sublinear_gap_detection
description: "Perform O(log n) gap detection on large codebase"
category: gap_detection
priority: critical
input:
prompt: |
Analyze coverage for a large codebase (1000+ files) using O(log n) algorithm:
1. Use sampling-based analysis with 95% confidence
2. Identify coverage gaps efficiently
3. Report uncovered critical paths
4. Suggest tests for maximum impact
How would you achieve sublinear complexity?
context:
source: "src/**/*.ts"
algorithm: "sublinear"
confidence: 0.95
max_samples: 1000
expected_output:
must_contain:
- "O(log n)"
- "gap"
- "uncovered"
- "critical"
- "sampling"
must_not_contain:
- "linear"
- "exhaustive"
severity_classification: critical
finding_count:
min: 1
validation:
schema_check: true
keyword_match_threshold: 0.8
reasoning_quality_min: 0.75
- id: tc002_coverage_gap_prioritization
description: "Identify and prioritize coverage gaps by impact"
category: gap_detection
priority: critical
input:
prompt: |
After detecting coverage gaps, prioritize by:
1. Business criticality (payment, auth, data)
2. Code complexity (cyclomatic > 10)
3. Recent bug frequency (bugs in last 90 days)
4. Change frequency (modified recently)
Which gap should be tested first and why?
context:
gap_prioritization: true
business_impact: true
change_analysis: true
expected_output:
must_contain:
- "priority"
- "critical"
- "complexity"
- "bug"
- "impact"
must_not_contain:
- "random"
- "arbitrary"
severity_classification: critical
validation:
schema_check: true
keyword_match_threshold: 0.8
# ---------------------------------------------------------------------------
# CATEGORY: Risk-Weighted Coverage
# ---------------------------------------------------------------------------
- id: tc003_risk_weighted_scoring
description: "Calculate risk-weighted coverage scores"
category: risk_analysis
priority: critical
input:
prompt: |
Calculate risk-weighted coverage for a module using factors:
1. Complexity weight: 0.3 (cyclomatic > 10)
2. Change frequency weight: 0.25 (modified in 90d)
3. Bug history weight: 0.25 (bugs in 180d)
4. Criticality weight: 0.2 (business-critical tag)
For each uncovered section, calculate risk score 0-1.
How would you identify high-risk uncovered code?
context:
complexity_weight: 0.3
change_frequency_weight: 0.25
bug_history_weight: 0.25
criticality_weight: 0.2
expected_output:
must_contain:
- "risk"
- "weight"
- "score"
- "complexity"
- "bug"
- "critical"
must_not_contain:
- "simple"
- "low priority"
severity_classification: critical
validation:
schema_check: true
keyword_match_threshold: 0.8
reasoning_quality_min: 0.75
- id: tc004_high_risk_uncovered_identification
description: "Find high-risk code with no test coverage"
category: risk_analysis
priority: critical
input:
prompt: |
Identify high-risk uncovered code:
1. Payment processing logic - 0% coverage, complexity 15
2. Authentication middleware - 0% coverage, 10 bugs in 90d
3. Error handling - 50% coverage
4. Logging - 0% coverage, low complexity
Which requires urgent attention? Why?
context:
risk_threshold: 0.7
focus_uncovered: true
expected_output:
must_contain:
- "high-risk"
- "payment"
- "authentication"
- "urgent"
- "coverage"
finding_count:
min: 1
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Differential Coverage
# ---------------------------------------------------------------------------
- id: tc005_differential_coverage_analysis
description: "Compare coverage between branches with quality gates"
category: differential
priority: critical
input:
prompt: |
Compare coverage between main and feature-branch:
1. New code coverage: must be >= 85%
2. Modified code coverage: must not decrease
3. Deleted code: ignore coverage
4. Overall coverage: must not regress > 2%
What happens if new code has 75% coverage?
context:
base_branch: "main"
head_branch: "feature-branch"
new_code_threshold: 0.85
modified_code_requirement: "maintain"
expected_output:
must_contain:
- "differential"
- "new code"
- "coverage"
- "regression"
- "quality gate"
must_not_contain:
- "pass"
- "acceptable"
severity_classification: critical
validation:
schema_check: true
keyword_match_threshold: 0.8
reasoning_quality_min: 0.75
- id: tc006_coverage_regression_detection
description: "Detect coverage regressions between releases"
category: differential
priority: high
input:
prompt: |
Detect coverage regressions:
- v1.0: 85% statement coverage
- v2.0: 80% statement coverage (5% regression)
How would you alert on:
1. Individual file regression > 10%
2. Overall regression > 2%
3. Critical module regression > 1%
Should this block merge?
context:
regression_detection: true
block_on_regression: true
expected_output:
must_contain:
- "regression"
- "detect"
- "block"
- "merge"
- "threshold"
severity_classification: high
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Test Prioritization
# ---------------------------------------------------------------------------
- id: tc007_test_prioritization_strategy
description: "Prioritize tests to write based on coverage impact"
category: prioritization
priority: high
input:
prompt: |
For these uncovered code sections, estimate test writing impact:
1. UserService.validateEmail() - 15 lines, 1 bug fix needed
2. PaymentProcessor.process() - 50 lines, critical path
3. ErrorHandler.retry() - 20 lines, improved recently
Which should you test first?
How would you estimate test writing effort vs benefit?
context:
impact_estimation: true
effort_assessment: true
expected_output:
must_contain:
- "prioritize"
- "impact"
- "effort"
- "critical"
- "benefit"
finding_count:
min: 1
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Coverage Thresholds & Gates
# ---------------------------------------------------------------------------
- id: tc008_quality_gate_enforcement
description: "Enforce coverage quality gates in CI/CD"
category: quality_gates
priority: critical
input:
prompt: |
Define quality gates:
- Global: statements >= 80%, branches >= 75%, functions >= 85%
- New code: statements >= 85%, branches >= 80%
- Critical paths: >= 90%
If statements = 79%, should merge be blocked?
How would you make this configurable per project?
context:
block_on_fail: true
gates_per_module: true
expected_output:
must_contain:
- "gate"
- "threshold"
- "block"
- "critical"
- "enforce"
must_not_contain:
- "optional"
- "warning"
severity_classification: critical
validation:
schema_check: true
keyword_match_threshold: 0.8
- id: tc009_coverage_trend_analysis
description: "Track coverage trends over time"
category: quality_gates
priority: high
input:
prompt: |
Analyze coverage trend:
- Week 1: 75%
- Week 2: 76%
- Week 3: 75% (regression)
- Week 4: 73% (2 week decline)
How would you detect:
1. 3 consecutive regressions
2. Significant decline (> 3% in 2 weeks)
3. Stagnation (not improving)
context:
trend_window: "4 weeks"
regression_alert: true
expected_output:
must_contain:
- "trend"
- "regression"
- "decline"
- "alert"
finding_count:
min: 1
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Negative Tests
# ---------------------------------------------------------------------------
- id: tc010_coverage_improvement_recommendations
description: "Provide actionable recommendations to improve coverage"
category: negative
priority: high
input:
prompt: |
For code with 60% coverage (target 85%), recommend:
1. Which modules to focus on (ROI analysis)
2. How many tests needed (estimate)
3. Expected coverage improvement
4. Time to complete estimate
5. Priority ranking
How would you help teams decide where to focus?
context:
actionable_recommendations: true
roi_focused: true
expected_output:
must_contain:
- "recommend"
- "focus"
- "priority"
- "estimate"
- "improve"
finding_count:
min: 1
validation:
schema_check: true
allow_partial: true
# =============================================================================
# SUCCESS CRITERIA
# =============================================================================
success_criteria:
pass_rate: 0.8
critical_pass_rate: 1.0
avg_reasoning_quality: 0.75
max_execution_time_ms: 300000
cross_model_variance: 0.15
# =============================================================================
# METADATA
# =============================================================================
metadata:
author: "qe-coverage-specialist"
created: "2026-02-02"
last_updated: "2026-02-02"
coverage_target: >
O(log n) sublinear gap detection with sampling, risk-weighted coverage
scoring with multi-factor analysis, differential coverage with quality gates,
test prioritization by impact, regression detection, trend analysis,
and comprehensive improvement recommendations.
{
"_description": "Coverage analysis run history. Append after each run. Claude reads this to detect trends.",
"_format": "Each entry: {date, scope, statements_pct, branches_pct, functions_pct, gaps_found, recommendation}",
"_instructions": "After running coverage analysis, append results here. Compare with previous entries to detect trends. Alert if coverage declines 3 consecutive times.",
"runs": []
}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://agentic-qe.dev/schemas/skills/qe-coverage-analysis/output.json",
"title": "QE Coverage Analysis Skill Output Schema",
"description": "Schema for qe-coverage-analysis skill output with coverage map, gaps, and risk scores.",
"type": "object",
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
"properties": {
"skillName": {
"type": "string",
"const": "qe-coverage-analysis"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
},
"timestamp": {
"type": "string"
},
"status": {
"type": "string",
"enum": ["success", "partial", "failed", "skipped"]
},
"trustTier": {
"type": "integer",
"const": 3
},
"output": {
"type": "object",
"required": ["summary", "coverageMap", "overallCoverage"],
"properties": {
"summary": {
"type": "string",
"minLength": 50,
"maxLength": 2000,
"description": "Human-readable summary of coverage analysis"
},
"coverageMap": {
"$ref": "#/$defs/coverageMap",
"description": "Detailed coverage mapping by file/function"
},
"gaps": {
"type": "array",
"items": {
"$ref": "#/$defs/coverageGap"
},
"maxItems": 500,
"description": "Identified coverage gaps"
},
"riskScores": {
"type": "array",
"items": {
"$ref": "#/$defs/riskScore"
},
"maxItems": 200,
"description": "Risk scores for uncovered code"
},
"overallCoverage": {
"$ref": "#/$defs/overallCoverage",
"description": "Overall coverage metrics"
},
"trends": {
"$ref": "#/$defs/coverageTrends",
"description": "Coverage trends over time"
},
"findings": {
"type": "array",
"items": {
"$ref": "#/$defs/finding"
},
"maxItems": 200
},
"recommendations": {
"type": "array",
"items": {
"$ref": "#/$defs/recommendation"
},
"maxItems": 50
}
}
},
"metadata": {
"type": "object",
"properties": {
"executionTimeMs": { "type": "integer", "minimum": 0 },
"toolsUsed": { "type": "array", "items": { "type": "string" } },
"agentId": { "type": "string" },
"totalFiles": { "type": "integer", "minimum": 0 },
"totalLines": { "type": "integer", "minimum": 0 }
}
},
"validation": {
"type": "object",
"properties": {
"schemaValid": { "type": "boolean" },
"contentValid": { "type": "boolean" },
"confidence": { "type": "number", "minimum": 0, "maximum": 1 }
}
},
"learning": {
"type": "object",
"properties": {
"patternsDetected": { "type": "array", "items": { "type": "string" } },
"reward": { "type": "number", "minimum": 0, "maximum": 1 }
}
}
},
"$defs": {
"coverageMap": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"$ref": "#/$defs/fileCoverage"
},
"description": "Per-file coverage data"
},
"functions": {
"type": "array",
"items": {
"$ref": "#/$defs/functionCoverage"
},
"description": "Per-function coverage data"
},
"modules": {
"type": "array",
"items": {
"$ref": "#/$defs/moduleCoverage"
},
"description": "Per-module coverage data"
}
}
},
"fileCoverage": {
"type": "object",
"required": ["path", "lineCoverage"],
"properties": {
"path": { "type": "string" },
"lineCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"branchCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"functionCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"statementCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"totalLines": { "type": "integer", "minimum": 0 },
"coveredLines": { "type": "integer", "minimum": 0 },
"uncoveredLines": { "type": "array", "items": { "type": "integer" } },
"complexity": { "type": "number", "minimum": 0 }
}
},
"functionCoverage": {
"type": "object",
"required": ["name", "file", "covered"],
"properties": {
"name": { "type": "string" },
"file": { "type": "string" },
"line": { "type": "integer", "minimum": 1 },
"covered": { "type": "boolean" },
"hitCount": { "type": "integer", "minimum": 0 },
"complexity": { "type": "number", "minimum": 0 },
"lineCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"branchCoverage": { "type": "number", "minimum": 0, "maximum": 100 }
}
},
"moduleCoverage": {
"type": "object",
"required": ["name", "lineCoverage"],
"properties": {
"name": { "type": "string" },
"path": { "type": "string" },
"lineCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"branchCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"fileCount": { "type": "integer", "minimum": 0 },
"functionCount": { "type": "integer", "minimum": 0 }
}
},
"coverageGap": {
"type": "object",
"required": ["id", "type", "location"],
"properties": {
"id": { "type": "string", "pattern": "^GAP-\\d{3,6}$" },
"type": { "type": "string", "enum": ["uncovered-function", "uncovered-branch", "uncovered-lines", "low-coverage-module", "critical-path-uncovered"] },
"location": {
"type": "object",
"properties": {
"file": { "type": "string" },
"startLine": { "type": "integer", "minimum": 1 },
"endLine": { "type": "integer", "minimum": 1 },
"function": { "type": "string" },
"module": { "type": "string" }
}
},
"severity": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
"impact": { "type": "string", "maxLength": 500 },
"suggestedTest": { "type": "string", "maxLength": 2000 }
}
},
"riskScore": {
"type": "object",
"required": ["path", "score"],
"properties": {
"path": { "type": "string" },
"score": { "type": "number", "minimum": 0, "maximum": 100 },
"factors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"weight": { "type": "number", "minimum": 0, "maximum": 1 },
"value": { "type": "number" }
}
}
},
"changeFrequency": { "type": "integer", "minimum": 0 },
"bugHistory": { "type": "integer", "minimum": 0 },
"complexity": { "type": "number", "minimum": 0 },
"recommendation": { "type": "string" }
}
},
"overallCoverage": {
"type": "object",
"required": ["lineCoverage"],
"properties": {
"lineCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"branchCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"functionCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"statementCoverage": { "type": "number", "minimum": 0, "maximum": 100 },
"grade": { "type": "string", "pattern": "^[A-F][+-]?$" },
"meetsThreshold": { "type": "boolean" },
"threshold": { "type": "number", "minimum": 0, "maximum": 100 },
"trend": { "type": "string", "enum": ["improving", "stable", "declining", "unknown"] }
}
},
"coverageTrends": {
"type": "object",
"properties": {
"direction": { "type": "string", "enum": ["improving", "stable", "declining"] },
"changeRate": { "type": "number", "minimum": -100, "maximum": 100 },
"history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": { "type": "string" },
"coverage": { "type": "number" },
"commit": { "type": "string" }
}
},
"maxItems": 50
},
"projectedCoverage": { "type": "number", "minimum": 0, "maximum": 100 }
}
},
"finding": {
"type": "object",
"required": ["id", "title", "severity"],
"properties": {
"id": { "type": "string", "pattern": "^COV-\\d{3,6}$" },
"title": { "type": "string", "minLength": 5, "maxLength": 200 },
"description": { "type": "string", "maxLength": 2000 },
"severity": { "type": "string", "enum": ["critical", "high", "medium", "low", "info"] },
"category": { "type": "string", "enum": ["coverage-gap", "threshold-violation", "trend-decline", "critical-uncovered", "dead-code"] },
"location": {
"type": "object",
"properties": {
"file": { "type": "string" },
"line": { "type": "integer" }
}
},
"remediation": { "type": "string", "maxLength": 2000 }
}
},
"recommendation": {
"type": "object",
"required": ["id", "title", "priority"],
"properties": {
"id": { "type": "string", "pattern": "^REC-\\d{3,6}$" },
"title": { "type": "string", "maxLength": 200 },
"description": { "type": "string", "maxLength": 2000 },
"priority": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
"effort": { "type": "string", "enum": ["trivial", "low", "medium", "high", "major"] },
"expectedCoverageIncrease": { "type": "number", "minimum": 0, "maximum": 100 }
}
}
}
}
{
"skillName": "qe-coverage-analysis",
"skillVersion": "1.0.0",
"requiredTools": [
"jq"
],
"optionalTools": [
"nyc",
"istanbul",
"c8",
"python3"
],
"schemaPath": "schemas/output.json",
"requiredFields": [
"skillName",
"status",
"output",
"output.summary",
"output.coverageMap",
"output.overallCoverage"
],
"requiredNonEmptyFields": [
"output.summary"
],
"mustContainTerms": [
"coverage",
"gap"
],
"mustNotContainTerms": [
"TODO",
"FIXME",
"placeholder"
],
"enumValidations": {
".status": [
"success",
"partial",
"failed",
"skipped"
]
}
}
Related skills
FAQ
What does qe coverage analysis do?
qe coverage analysis is a Claude Code skill for ai & agent building.
When should I use qe coverage analysis?
When you need to helps with ai & agent building tasks., or when qe coverage analysis is a claude code skill for ai & agent building.
What are the main capabilities?
qe coverage analysis; AI & Agent Building; AI-coding skill.