
Regression Testing
- 284 installs
- 433 repo stars
- Updated August 4, 2026
- proffesor-for-testing/agentic-qe
regression-testing is a Claude skill that builds and maintains regression test suites catching unintended breakage after refactors, dependency upgrades, or feature additions for developers protecting critical user journe
About
regression-testing is a Claude skill from proffesor-for-testing/agentic-qe focused on building durable regression suites that protect critical user journeys. The skill helps developers identify high-risk flows, prioritize coverage after refactors or dependency bumps, and structure repeatable test runs that catch unintended breakage before release. Developers reach for regression-testing when a codebase change could silently break checkout, auth, onboarding, or other revenue-critical paths and they need a systematic suite rather than ad hoc smoke checks.
- Risk-based suite prioritization
- Smoke versus full regression tiers
- Flake detection and quarantine
- Change-impact mapping
- Release gate criteria
Regression Testing by the numbers
- 284 all-time installs (skills.sh)
- +7 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #724 of 2,153 Testing & QA 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 regression-testingAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 284 |
|---|---|
| repo stars | ★ 433 |
| Last updated | August 4, 2026 |
| Repository | proffesor-for-testing/agentic-qe ↗ |
How do you build regression tests for critical flows?
Build and maintain regression suites that catch unintended breakage after refactors, dependency upgrades, or feature additions across critical user journeys.
Who is it for?
QA-minded developers maintaining suites after large refactors, library upgrades, or frequent feature shipping.
Skip if: Greenfield projects with no production traffic yet that only need initial unit test scaffolding.
When should I use this skill?
A developer mentions regression tests, post-refactor breakage, dependency upgrade validation, or protecting critical user journeys.
What you get
Regression test suite, prioritized journey coverage map, and repeatable CI execution plan
- regression test suite
- journey coverage matrix
Files
Regression Testing
<default_to_action> When verifying changes don't break existing functionality: 1. ANALYZE what changed (git diff, impact analysis) 2. SELECT tests based on change + risk (not everything) 3. RUN in priority order (smoke → selective → full) 4. OPTIMIZE execution (parallel, sharding) 5. MONITOR suite health (flakiness, execution time)
Quick Regression Strategy:
- Per-commit: Smoke + changed code tests (5-10 min)
- Nightly: Extended regression (30-60 min)
- Pre-release: Full regression (2-4 hours)
Critical Success Factors:
- Smart selection catches 90% of regressions in 10% of time
- Flaky tests waste more time than they save
- Every production bug becomes a regression test
</default_to_action>
Quick Reference Card
When to Use
- After any code change
- Before release
- After dependency updates
- After environment changes
Test Selection Strategies
| Strategy | How | Reduction |
|---|---|---|
| Change-based | Git diff analysis | 70-90% |
| Risk-based | Priority by impact | 50-70% |
| Historical | Frequently failing | 40-60% |
| Time-budget | Fixed time window | Variable |
---
Change-Based Test Selection
// Analyze changed files and select impacted tests
function selectTests(changedFiles: string[]): string[] {
const testsToRun = new Set<string>();
for (const file of changedFiles) {
// Direct tests
testsToRun.add(`${file.replace('.ts', '.test.ts')}`);
// Dependent tests (via coverage mapping)
const dependentTests = testCoverage[file] || [];
dependentTests.forEach(t => testsToRun.add(t));
}
return Array.from(testsToRun);
}
// Example: payment.ts changed
// Runs: payment.test.ts, checkout.integration.test.ts, e2e/purchase.test.ts---
CI/CD Integration
# .github/workflows/regression.yml
jobs:
quick-regression:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Analyze changes
id: changes
uses: dorny/paths-filter@v2
with:
filters: |
payment:
- 'src/payment/**'
auth:
- 'src/auth/**'
- name: Run affected tests
run: npm run test:affected
- name: Smoke tests (always)
run: npm run test:smoke
nightly-regression:
if: github.event_name == 'schedule'
timeout-minutes: 120
steps:
- run: npm test -- --coverage---
Agent-Driven Regression
// Smart test selection
await Task("Regression Analysis", {
pr: 1234,
strategy: 'change-based-with-risk',
timeBudget: '15min'
}, "qe-regression-risk-analyzer");
// Returns:
// {
// mustRun: ['payment.test.ts', 'checkout.integration.test.ts'],
// shouldRun: ['order.test.ts'],
// canSkip: ['profile.test.ts', 'search.test.ts'],
// estimatedTime: '12 min',
// riskCoverage: 0.94
// }
// Generate regression test from production bug
await Task("Bug Regression Test", {
bug: { id: 'BUG-567', description: 'Checkout fails > 100 items' },
preventRecurrence: true
}, "qe-test-generator");---
Agent Coordination Hints
Memory Namespace
aqe/regression-testing/
├── test-selection/* - Impact analysis results
├── suite-health/* - Flakiness, timing trends
├── coverage-maps/* - Test-to-code mapping
└── bug-regressions/* - Tests from production bugsFleet Coordination
const regressionFleet = await FleetManager.coordinate({
strategy: 'comprehensive-regression',
agents: [
'qe-regression-risk-analyzer', // Analyze changes, select tests
'qe-test-executor', // Execute selected tests
'qe-coverage-analyzer', // Analyze coverage gaps
'qe-quality-gate' // Go/no-go decision
],
topology: 'sequential'
});---
Related Skills
- risk-based-testing - Risk-based prioritization
- test-automation-strategy - Automation pyramid
- continuous-testing-shift-left - CI/CD integration
---
Remember
With Agents: qe-regression-risk-analyzer provides intelligent test selection achieving 90% defect detection in 10% of execution time. Agents generate regression tests from production bugs automatically.
Skill Composition
- Test failing? → Use
/test-failure-investigatorto diagnose root cause - File a bug → Use
/bug-reporting-excellencefor proper bug reporting - Test selection → Use
/risk-based-testingfor risk-based prioritization
Gotchas
- Agent defaults to "run everything" despite being told to select — explicitly constrain with
--affectedor file list - Change-based selection misses transitive dependencies — a model change can break a controller test 3 hops away
- Flaky tests in regression suites erode trust faster than missing tests — quarantine immediately, don't skip
- Agent may report "0 regressions" when tests simply weren't run — verify test count in output, not just pass/fail
- Running full regression in containers often OOMs — use
--workers=2and--shardfor CI environments
# =============================================================================
# AQE Skill Evaluation Test Suite: Regression Testing v1.0.0
# =============================================================================
#
# Comprehensive evaluation suite for the regression-testing skill.
# Tests smart test selection, impact analysis, change-based and risk-based
# regression strategies, suite optimization, and flaky test detection.
#
# Schema: .claude/skills/.validation/schemas/skill-eval.schema.json
# Validator: .claude/skills/regression-testing/scripts/validate-config.json
#
# Coverage:
# - Test selection based on code changes
# - Impact analysis (what changed affects which tests)
# - Risk-based test prioritization
# - Regression suite optimization
# - Flaky test detection and isolation
#
# =============================================================================
skill: regression-testing
version: 1.0.0
description: >
Comprehensive evaluation suite for the regression-testing skill.
Tests smart test selection strategies, code impact analysis, risk-based
prioritization, execution optimization for faster feedback, and flaky
test detection to ensure regressions are caught efficiently.
# =============================================================================
# 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-regression-risk-analyzer
# =============================================================================
# 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:
REGRESSION_ENABLED: "true"
IMPACT_ANALYSIS: "true"
# =============================================================================
# TEST CASES
# =============================================================================
test_cases:
# ---------------------------------------------------------------------------
# CATEGORY: Test Selection Based on Changes
# ---------------------------------------------------------------------------
- id: tc001_test_selection_auth_module
description: "Select only relevant tests for authentication changes"
category: test_selection
priority: critical
input:
changed_files:
- src/auth/login.ts
- src/auth/jwt.ts
all_tests:
- name: "auth.login.test.ts"
modules_used: ["login"]
relevant: true
- name: "auth.jwt.test.ts"
modules_used: ["jwt"]
relevant: true
- name: "cart.checkout.test.ts"
modules_used: ["payment"]
relevant: false
- name: "profile.settings.test.ts"
modules_used: ["profile"]
relevant: false
total_tests: 4
context:
change_type: "auth module update"
expected_output:
must_contain:
- "selection"
- "auth"
- "2"
- "relevant"
must_not_contain:
- "all tests"
severity_classification: info
finding_count:
max: 1
validation:
schema_check: true
keyword_match_threshold: 0.8
reasoning_quality_min: 0.75
timeout_ms: 30000
- id: tc002_smart_test_selection_database
description: "Identify all affected tests for database schema change"
category: test_selection
priority: critical
input:
change_description: "Add email_verified column to users table"
affected_models:
- User
- Profile
- Auth
tests_affected:
- user.model.test.ts
- auth.verification.test.ts
- user.profile.test.ts
- payment.test.ts # Not affected
context:
change_scope: database
expected_output:
must_contain:
- "affected"
- "User"
- "Auth"
- "3 tests"
must_not_contain:
- "payment"
severity_classification: high
validation:
schema_check: true
keyword_match_threshold: 0.8
# ---------------------------------------------------------------------------
# CATEGORY: Risk-Based Prioritization
# ---------------------------------------------------------------------------
- id: tc003_risk_based_test_ordering
description: "Prioritize tests by risk (critical path first)"
category: prioritization
priority: critical
input:
tests:
- name: "checkout.test.ts"
criticality: critical
revenue_impact: 100000
priority: 1
- name: "login.test.ts"
criticality: critical
revenue_impact: 50000
priority: 2
- name: "profile.test.ts"
criticality: high
revenue_impact: 5000
priority: 3
- name: "help.test.ts"
criticality: low
revenue_impact: 0
priority: 4
context:
strategy: "risk-based"
expected_output:
must_contain:
- "priority"
- "critical"
- "checkout"
- "order"
must_not_contain:
- "random"
severity_classification: info
validation:
schema_check: true
keyword_match_threshold: 0.8
- id: tc004_regression_strategy_selection
description: "Choose appropriate regression strategy per deployment"
category: prioritization
priority: high
input:
scenarios:
- name: "Per-commit regression"
strategy: "smoke + changed-code tests"
time_budget_minutes: 10
coverage: "50%"
- name: "Nightly regression"
strategy: "extended regression"
time_budget_minutes: 60
coverage: "80%"
- name: "Pre-release regression"
strategy: "full regression"
time_budget_minutes: 240
coverage: "100%"
context:
goal: "match_strategy_to_deployment_type"
expected_output:
must_contain:
- "strategy"
- "smoke"
- "nightly"
- "full"
must_not_contain:
- "one size"
severity_classification: info
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Execution Optimization
# ---------------------------------------------------------------------------
- id: tc005_test_execution_parallelization
description: "Calculate optimal test parallelization"
category: optimization
priority: high
input:
tests:
- name: "auth.test.ts"
duration_ms: 2000
dependencies: []
- name: "user.test.ts"
duration_ms: 1500
dependencies: []
- name: "cart.test.ts"
duration_ms: 3000
dependencies: ["user.test.ts"]
- name: "checkout.test.ts"
duration_ms: 4000
dependencies: ["cart.test.ts", "user.test.ts"]
available_workers: 4
context:
goal: "minimize_total_time"
expected_output:
must_contain:
- "parallel"
- "workers"
- "optimal"
- "seconds"
must_not_contain:
- "sequential"
severity_classification: info
validation:
schema_check: true
keyword_match_threshold: 0.75
- id: tc006_flaky_test_detection
description: "Identify and isolate flaky tests"
category: optimization
priority: critical
input:
test_results:
- test: "auth.login.test.ts"
runs: 10
failures: 0
flakiness_percent: 0
status: stable
- test: "async.operation.test.ts"
runs: 10
failures: 3
flakiness_percent: 30
status: flaky
- test: "api.timeout.test.ts"
runs: 10
failures: 5
flakiness_percent: 50
status: very_flaky
context:
threshold: 10
expected_output:
must_contain:
- "flaky"
- "async"
- "api"
- "isolate"
must_not_contain:
- "stable"
severity_classification: high
validation:
schema_check: true
keyword_match_threshold: 0.8
# ---------------------------------------------------------------------------
# CATEGORY: Smoke vs Extended vs Full Regression
# ---------------------------------------------------------------------------
- id: tc007_smoke_test_definition
description: "Define critical smoke tests for quick feedback"
category: suite_design
priority: critical
input:
smoke_tests:
- "login.test.ts"
- "dashboard.load.test.ts"
- "create.item.test.ts"
total_regression_tests: 200
smoke_coverage_percent: 10
expected_duration_minutes: 5
context:
execution_frequency: "per-commit"
expected_output:
must_contain:
- "smoke"
- "critical"
- "5 minutes"
must_not_contain:
- "complete"
severity_classification: info
validation:
schema_check: true
keyword_match_threshold: 0.75
- id: tc008_extended_regression_suite
description: "Define extended regression for nightly runs"
category: suite_design
priority: high
input:
extended_tests:
- category: smoke
count: 20
- category: core_features
count: 80
- category: integrations
count: 50
total_tests: 150
expected_duration_minutes: 45
context:
execution_frequency: "nightly"
expected_output:
must_contain:
- "extended"
- "150"
- "nightly"
- "45"
must_not_contain:
- "full regression"
severity_classification: info
validation:
schema_check: true
keyword_match_threshold: 0.75
# ---------------------------------------------------------------------------
# CATEGORY: Suite Health Monitoring
# ---------------------------------------------------------------------------
- id: tc009_regression_suite_health
description: "Monitor regression suite health metrics"
category: health
priority: high
input:
metrics:
- name: "Average Execution Time"
value_minutes: 35
trend: increasing
status: concerning
- name: "Flaky Test Rate"
value_percent: 8
trend: decreasing
status: improving
- name: "Bug Detection Rate"
value_percent: 85
trend: stable
status: healthy
- name: "False Positive Rate"
value_percent: 2
trend: stable
status: good
context:
goal: "maintain_health"
expected_output:
must_contain:
- "health"
- "flaky"
- "execution time"
- "metrics"
must_not_contain:
- "no concerns"
severity_classification: medium
validation:
schema_check: true
keyword_match_threshold: 0.75
- id: tc010_production_bug_regression_test
description: "Add regression test for every production bug"
category: continuous_improvement
priority: critical
input:
production_bugs:
- bug_id: "BUG-001"
description: "Users unable to reset password"
severity: critical
regression_test_added: true
- bug_id: "BUG-002"
description: "Checkout page crashes on Safari"
severity: high
regression_test_added: true
- bug_id: "BUG-003"
description: "Typo in help text"
severity: low
regression_test_added: false
context:
policy: "all_critical_high_tested"
expected_output:
must_contain:
- "regression"
- "production"
- "test"
must_not_contain:
- "no regression"
severity_classification: high
validation:
schema_check: true
keyword_match_threshold: 0.8
# =============================================================================
# SUCCESS CRITERIA
# =============================================================================
success_criteria:
pass_rate: 0.85
critical_pass_rate: 1.0
avg_reasoning_quality: 0.75
max_execution_time_ms: 300000
cross_model_variance: 0.15
# =============================================================================
# METADATA
# =============================================================================
metadata:
author: "qe-regression-risk-analyzer"
created: "2026-02-02"
last_updated: "2026-02-02"
coverage_target: >
Regression testing including smart test selection, impact analysis,
risk-based prioritization, execution optimization, flaky test detection,
smoke/extended/full regression strategies, and suite health monitoring.
10 test cases covering all regression testing aspects with 85% pass rate.
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://agentic-qe.dev/schemas/regression-testing-output.json",
"title": "AQE Regression Testing Skill Output Schema",
"description": "Schema for regression testing output including test selection analysis, impact assessment, and suite optimization.",
"type": "object",
"required": ["skillName", "version", "timestamp", "status", "trustTier", "output"],
"properties": {
"skillName": {
"type": "string",
"const": "regression-testing",
"description": "Skill identifier"
},
"version": {
"type": "string",
"pattern": "^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9]+)?$"
},
"timestamp": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})?$"
},
"status": {
"type": "string",
"enum": ["success", "partial", "failed", "skipped"]
},
"trustTier": {
"type": "integer",
"const": 3
},
"output": {
"type": "object",
"required": ["summary", "testSelection", "impactAnalysis", "metrics"],
"properties": {
"summary": {
"type": "string",
"minLength": 10,
"maxLength": 2000
},
"score": {
"$ref": "#/$defs/regressionScore"
},
"testSelection": {
"$ref": "#/$defs/testSelection",
"description": "Test selection strategy results"
},
"impactAnalysis": {
"$ref": "#/$defs/impactAnalysis",
"description": "Change impact analysis"
},
"executionResults": {
"$ref": "#/$defs/executionResults",
"description": "Regression test execution results"
},
"suiteHealth": {
"$ref": "#/$defs/suiteHealth",
"description": "Test suite health metrics"
},
"findings": {
"type": "array",
"items": {
"$ref": "#/$defs/regressionFinding"
},
"maxItems": 500,
"description": "Regressions detected"
},
"recommendations": {
"type": "array",
"items": {
"$ref": "#/$defs/recommendation"
},
"maxItems": 100
},
"metrics": {
"$ref": "#/$defs/regressionMetrics"
},
"artifacts": {
"type": "array",
"items": {
"$ref": "#/$defs/artifact"
},
"maxItems": 50
}
}
},
"metadata": {
"type": "object",
"properties": {
"executionTimeMs": { "type": "integer", "minimum": 0 },
"toolsUsed": { "type": "array", "items": { "type": "string" } },
"agentId": { "type": "string", "pattern": "^qe-[a-z][a-z0-9-]*$" },
"prNumber": { "type": "integer", "description": "PR number if applicable" },
"baseBranch": { "type": "string" },
"headBranch": { "type": "string" }
}
},
"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": {
"regressionScore": {
"type": "object",
"required": ["value", "max"],
"properties": {
"value": { "type": "number", "minimum": 0, "maximum": 100 },
"max": { "type": "number", "const": 100 },
"grade": { "type": "string", "pattern": "^[A-F][+-]?$" },
"riskCoverage": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Risk coverage achieved (0.0-1.0)"
}
}
},
"testSelection": {
"type": "object",
"required": ["strategy"],
"properties": {
"strategy": {
"type": "string",
"enum": ["change-based", "risk-based", "historical", "time-budget", "full", "smoke"],
"description": "Selection strategy used"
},
"mustRun": {
"type": "array",
"items": { "type": "string" },
"description": "Tests that must run (directly impacted)"
},
"shouldRun": {
"type": "array",
"items": { "type": "string" },
"description": "Tests that should run (indirectly impacted)"
},
"canSkip": {
"type": "array",
"items": { "type": "string" },
"description": "Tests that can be safely skipped"
},
"totalTests": { "type": "integer", "minimum": 0 },
"selectedTests": { "type": "integer", "minimum": 0 },
"selectionRatio": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Percentage of tests selected"
},
"estimatedTime": {
"type": "string",
"description": "Estimated execution time"
},
"riskCoverage": {
"type": "number",
"minimum": 0,
"maximum": 1,
"description": "Risk coverage of selected tests"
}
}
},
"impactAnalysis": {
"type": "object",
"properties": {
"changedFiles": {
"type": "array",
"items": { "type": "string" }
},
"impactedModules": {
"type": "array",
"items": { "type": "string" }
},
"impactedTests": {
"type": "array",
"items": { "type": "string" }
},
"changeRisk": {
"type": "string",
"enum": ["low", "medium", "high", "critical"],
"description": "Overall change risk level"
},
"coverageMap": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": { "type": "string" }
},
"description": "Map of files to covering tests"
}
}
},
"executionResults": {
"type": "object",
"properties": {
"total": { "type": "integer", "minimum": 0 },
"passed": { "type": "integer", "minimum": 0 },
"failed": { "type": "integer", "minimum": 0 },
"skipped": { "type": "integer", "minimum": 0 },
"flaky": { "type": "integer", "minimum": 0 },
"passRate": { "type": "number", "minimum": 0, "maximum": 100 },
"regressions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test": { "type": "string" },
"previousStatus": { "type": "string" },
"currentStatus": { "type": "string" },
"failureMessage": { "type": "string" }
}
},
"description": "Tests that regressed"
},
"executionTimeMs": { "type": "integer", "minimum": 0 }
}
},
"suiteHealth": {
"type": "object",
"properties": {
"flakiness": {
"type": "object",
"properties": {
"flakyTests": { "type": "array", "items": { "type": "string" } },
"flakinessRate": { "type": "number", "minimum": 0, "maximum": 100 }
}
},
"executionTrend": {
"type": "string",
"enum": ["improving", "stable", "degrading"],
"description": "Execution time trend"
},
"averageExecutionTime": { "type": "integer", "description": "Average test execution time in ms" },
"slowTests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test": { "type": "string" },
"duration": { "type": "integer" }
}
}
},
"recommendations": { "type": "array", "items": { "type": "string" } }
}
},
"regressionFinding": {
"type": "object",
"required": ["id", "title", "severity"],
"properties": {
"id": { "type": "string", "pattern": "^REG-\\d{3,6}$" },
"title": { "type": "string", "minLength": 5, "maxLength": 200 },
"description": { "type": "string", "maxLength": 2000 },
"severity": { "type": "string", "enum": ["critical", "high", "medium", "low", "info"] },
"test": { "type": "string", "description": "Test that detected the regression" },
"affectedComponent": { "type": "string" },
"introducedIn": { "type": "string", "description": "Commit/PR that introduced the regression" },
"evidence": { "type": "string" },
"remediation": { "type": "string" }
}
},
"regressionMetrics": {
"type": "object",
"properties": {
"totalTests": { "type": "integer", "minimum": 0 },
"testsSelected": { "type": "integer", "minimum": 0 },
"testsExecuted": { "type": "integer", "minimum": 0 },
"passRate": { "type": "number", "minimum": 0, "maximum": 100 },
"regressionsFound": { "type": "integer", "minimum": 0 },
"selectionEfficiency": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Percentage of tests run vs total"
},
"riskCoverageAchieved": { "type": "number", "minimum": 0, "maximum": 1 },
"executionTimeMs": { "type": "integer", "minimum": 0 },
"timeSaved": { "type": "string", "description": "Time saved vs full regression" }
}
},
"recommendation": {
"type": "object",
"required": ["id", "title", "priority"],
"properties": {
"id": { "type": "string", "pattern": "^REC-\\d{3,6}$" },
"title": { "type": "string" },
"description": { "type": "string" },
"priority": { "type": "string", "enum": ["critical", "high", "medium", "low"] },
"effort": { "type": "string", "enum": ["trivial", "low", "medium", "high", "major"] }
}
},
"artifact": {
"type": "object",
"required": ["type", "path"],
"properties": {
"type": { "type": "string", "enum": ["report", "coverage", "log", "data"] },
"path": { "type": "string" },
"format": { "type": "string", "enum": ["json", "html", "md", "xml", "txt"] }
}
}
}
}
{
"skillName": "regression-testing",
"skillVersion": "1.0.0",
"requiredTools": [
"jq"
],
"optionalTools": [
"ajv",
"jsonschema",
"python3"
],
"schemaPath": "schemas/output.json",
"requiredFields": [
"skillName",
"status",
"output",
"output.testSelection",
"output.impactAnalysis",
"output.metrics"
],
"requiredNonEmptyFields": [
"output.summary",
"output.testSelection"
],
"mustContainTerms": [
"regression",
"test"
],
"mustNotContainTerms": [
"TODO",
"placeholder",
"FIXME"
],
"enumValidations": {
".status": [
"success",
"partial",
"failed",
"skipped"
],
".output.testSelection.strategy": [
"change-based",
"risk-based",
"historical",
"time-budget",
"full",
"smoke"
]
}
}
Related skills
FAQ
What problems does regression-testing address?
regression-testing helps developers catch unintended breakage after refactors, dependency upgrades, or new features. The skill focuses on maintaining suites that cover critical user journeys instead of only adding one-off tests.
When should regression-testing run in CI?
regression-testing designs suites meant to run on every meaningful code change or pre-release pipeline. The skill prioritizes high-risk flows so CI catches regressions before they reach production users.