[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C2WSYFQ6AFECJJD0T2DVQ8":3,"skill-same:01M6C2WSYFQ6AFECJJD0T2DVQ8":95},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":31,"publishedAt":58,"linkOnly":59,"markdownContent":60,"markdownBody":61,"frontMatter":62,"refName":71,"commitSha":72,"skillDirectory":73,"forksCount":74,"repositoryHtmlUrl":75,"repositoryHomepageUrl":76,"ownerHtmlUrl":77,"ownerBlogUrl":78,"ownerDescription":79,"updatedAt":80,"install":81,"resources":94},"01M6C2WSYFQ6AFECJJD0T2DVQ8","regression-check",null,"Compare current behavior against baseline to detect regressions","jmagly\u002Faiwg","jmagly","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1159087?v=4","01M6C10AK8N2WCSQN11FYGTJWN","Joseph Magly","01M6C10AQ8A2RMED1Y1BSVY7NF",229,"MIT","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fregression-check\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57],"regression check","regression","check","bug-report","testing","scope","full","efficiency","code-analysis","files","bug","behavior","write","read","timestamp","branch","grep","haiku","format","json","Bash","analysis","baseline","report","code","commit","2026-11-10 10:12:30",false,"---\nnamespace: aiwg\nname: regression-check\nplatforms: [all]\ndescription: Compare current behavior against baseline to detect regressions\ncommandHint:\n  argumentHint: \"[--baseline \u003Cbranch|tag|commit|timestamp>] [--scope \u003Cfull|module|changed-files>] [--format \u003Csummary|detailed|json>] [--bug-report \u003Cpath>]\"\n  allowedTools: Read, Write, Bash, Grep, Glob\n  model: haiku\n  category: code-analysis-testing\n  modelRole: efficiency\n  modelTier: economy\n---\n\n# Regression Check Command\n\nCompare current system behavior against a baseline to detect regressions using executable feedback patterns.\n\n## Task\n\nI'll perform comprehensive regression detection by:\n\n1. Establishing baseline comparison point (branch, tag, commit, or timestamp)\n2. Identifying scope of changes to test\n3. Executing relevant test suites with baseline comparison\n4. Analyzing execution feedback for behavioral changes\n5. Reporting detected regressions with severity and impact\n6. Optionally correlating with bug reports\n\n## Arguments\n\n- `--baseline \u003Cref>` - Comparison baseline (branch name, git tag, commit hash, or ISO timestamp)\n  - Examples: `--baseline main`, `--baseline v2026.1.4`, `--baseline abc123`, `--baseline 2026-01-20T10:00:00Z`\n  - Default: `main` branch or most recent release tag\n\n- `--scope \u003Clevel>` - Testing scope\n  - `full` - Run complete test suite (default)\n  - `module \u003Cname>` - Test specific module\u002Fcomponent\n  - `changed-files` - Test only files changed since baseline\n  - Example: `--scope module auth`\n\n- `--format \u003Ctype>` - Output format\n  - `summary` - High-level regression report (default)\n  - `detailed` - Full execution logs with diffs\n  - `json` - Machine-readable format for CI\u002FCD integration\n\n- `--bug-report \u003Cpath>` - Correlate with bug report\n  - Verifies bug fix doesn't introduce regressions\n  - Cross-references test failures with reported issues\n  - Example: `--bug-report .aiwg\u002Fbugs\u002FBUG-042.md`\n\n- `--save-baseline` - Save current execution as new baseline\n  - Useful after confirming changes are intentional\n  - Updates regression detection baseline for future runs\n\n## Process\n\n### Step 1: Baseline Establishment\n\n```bash\n# Determine baseline reference\nBASELINE_REF=\"${--baseline:-main}\"\n\n# Checkout baseline (in temporary worktree)\ngit worktree add \u002Ftmp\u002Fbaseline-check \"$BASELINE_REF\"\n\n# Capture baseline test results\ncd \u002Ftmp\u002Fbaseline-check\nnpm test -- --json > \u002Ftmp\u002Fbaseline-results.json\n```\n\n### Step 2: Scope Identification\n\n**Full Scope**:\n- Run entire test suite in both baseline and current\n- Compare all test outcomes\n\n**Module Scope**:\n- Identify module-specific tests\n- Run subset of test suite\n- Focus regression detection on specified component\n\n**Changed Files Scope**:\n```bash\n# Identify changed files\ngit diff --name-only \"$BASELINE_REF\" > \u002Ftmp\u002Fchanged-files.txt\n\n# Map to test files\n# Example: src\u002Fauth\u002Flogin.ts → test\u002Funit\u002Fauth\u002Flogin.test.ts\n\n# Run only affected tests\n```\n\n### Step 3: Execution Comparison\n\nExecute tests in current state:\n```bash\n# Run tests with same configuration as baseline\nnpm test -- --json > \u002Ftmp\u002Fcurrent-results.json\n\n# Capture additional metrics\n# - Performance timing\n# - Code coverage deltas\n# - Error types and frequencies\n```\n\n### Step 4: Regression Analysis\n\nCompare execution results:\n\n```yaml\nregression_detection:\n  new_failures:\n    - test: \"test\u002Funit\u002Fauth\u002Flogin.test.ts::validateCredentials\"\n      baseline_status: PASS\n      current_status: FAIL\n      error: \"Expected 200, received 401\"\n      severity: CRITICAL\n\n  behavior_changes:\n    - test: \"test\u002Fintegration\u002Fapi\u002Fusers.test.ts::createUser\"\n      baseline_output: \"User created in 150ms\"\n      current_output: \"User created in 450ms\"\n      delta: +200%\n      severity: MAJOR\n\n  fixed_tests:\n    - test: \"test\u002Funit\u002Futils\u002Fparser.test.ts::edgeCase\"\n      baseline_status: FAIL\n      current_status: PASS\n      note: \"Intentional fix\"\n```\n\n### Step 5: Reporting\n\n**Summary Format**:\n```markdown\n## Regression Check Report\n\n**Baseline**: main (commit abc123)\n**Scope**: full\n**Date**: 2026-01-25T15:30:00Z\n\n### Summary\n\n- **New Failures**: 3 tests\n- **Behavior Changes**: 5 tests (performance degradation)\n- **Fixed Tests**: 2 tests\n- **Overall**: ⚠️ REGRESSIONS DETECTED\n\n### Critical Regressions\n\n1. **auth\u002Flogin.test.ts::validateCredentials**\n   - Status: PASS → FAIL\n   - Error: \"Expected 200, received 401\"\n   - Impact: Breaks user authentication\n   - Action: BLOCK MERGE\n\n2. **payments\u002Fprocess.test.ts::chargeCard**\n   - Status: PASS → FAIL\n   - Error: \"Transaction timeout\"\n   - Impact: Payment processing broken\n   - Action: BLOCK MERGE\n\n### Behavior Changes\n\n1. **api\u002Fusers.test.ts::createUser**\n   - Performance: 150ms → 450ms (+200%)\n   - Severity: MAJOR\n   - Action: INVESTIGATE\n\n[... detailed report continues ...]\n```\n\n**JSON Format**:\n```json\n{\n  \"baseline\": {\n    \"ref\": \"main\",\n    \"commit\": \"abc123\",\n    \"timestamp\": \"2026-01-20T10:00:00Z\"\n  },\n  \"current\": {\n    \"commit\": \"def456\",\n    \"timestamp\": \"2026-01-25T15:30:00Z\"\n  },\n  \"summary\": {\n    \"new_failures\": 3,\n    \"behavior_changes\": 5,\n    \"fixed_tests\": 2,\n    \"total_tests\": 247\n  },\n  \"regressions\": [\n    {\n      \"test\": \"auth\u002Flogin.test.ts::validateCredentials\",\n      \"type\": \"failure\",\n      \"severity\": \"critical\",\n      \"baseline_status\": \"PASS\",\n      \"current_status\": \"FAIL\",\n      \"error\": \"Expected 200, received 401\",\n      \"action\": \"block\"\n    }\n  ],\n  \"verdict\": \"FAIL\"\n}\n```\n\n## Bug Report Integration\n\nWhen `--bug-report` is provided:\n\n```bash\n# Load bug report\nBUG_REPORT=$(cat .aiwg\u002Fbugs\u002FBUG-042.md)\n\n# Extract:\n# - Bug description\n# - Affected components\n# - Expected fix behavior\n\n# Cross-reference regression results:\n# 1. Did fix resolve reported bug? (test now passes)\n# 2. Did fix introduce new failures? (regressions)\n# 3. Did fix change behavior elsewhere? (side effects)\n\n# Generate correlation report:\n```\n\n**Example Output**:\n```markdown\n## Bug Fix Verification: BUG-042\n\n**Bug**: Login fails for users with special characters in email\n\n**Fix Verification**: ✅ PASS\n- Test `auth\u002Flogin.test.ts::specialCharactersInEmail` now passes\n- Previously failing with \"Email validation error\"\n\n**Regression Check**: ⚠️ WARNING\n- **New failure detected**: `auth\u002Flogin.test.ts::standardLogin`\n  - Error: \"Unexpected character escape\"\n  - Likely caused by overly aggressive input sanitization\n  - **Action**: Refine fix to avoid breaking standard login flow\n\n**Recommendation**: REFINE FIX before merge\n```\n\n## Baseline Modes\n\n### Branch Baseline\n\n```bash\n# Compare against branch\n\u002Fregression-check --baseline develop --scope changed-files\n\n# Use case: Feature branch testing\n# Ensures changes don't break existing functionality\n```\n\n### Tag Baseline\n\n```bash\n# Compare against release\n\u002Fregression-check --baseline v2026.1.4 --format detailed\n\n# Use case: Release regression testing\n# Verifies new version doesn't break previous release behavior\n```\n\n### Commit Baseline\n\n```bash\n# Compare against specific commit\n\u002Fregression-check --baseline abc123def --scope module auth\n\n# Use case: Pinpoint regression introduction\n# Identifies exact commit that introduced regression\n```\n\n### Timestamp Baseline\n\n```bash\n# Compare against point in time\n\u002Fregression-check --baseline 2026-01-20T10:00:00Z\n\n# Use case: Time-based regression detection\n# Finds when behavior changed over time\n```\n\n## Executable Feedback Pattern\n\nImplements REF-013 MetaGPT executable feedback loop:\n\n```yaml\nexecutable_feedback_loop:\n  1_execute_baseline:\n    - checkout_baseline_ref\n    - run_test_suite\n    - capture_execution_results\n\n  2_execute_current:\n    - run_test_suite_current\n    - capture_execution_results\n\n  3_compare_feedback:\n    - detect_new_failures\n    - detect_behavior_changes\n    - detect_performance_regressions\n\n  4_analyze_root_cause:\n    - diff_source_changes\n    - identify_likely_culprits\n    - suggest_fixes\n\n  5_iterate_or_report:\n    - if_regressions_critical: block_merge\n    - if_regressions_minor: warn_and_document\n    - if_no_regressions: approve\n```\n\n## Usage Examples\n\n### Example 1: Pre-Merge Regression Check\n\n```bash\n# Before merging feature branch\n\u002Fregression-check --baseline main --scope changed-files --format summary\n\n# Expected outcome:\n# - Fast execution (only changed files tested)\n# - Summary of any regressions introduced\n# - Recommendation: merge\u002Fblock\u002Finvestigate\n```\n\n### Example 2: Bug Fix Verification\n\n```bash\n# After implementing bug fix\n\u002Fregression-check --baseline v2026.1.4 --bug-report .aiwg\u002Fbugs\u002FBUG-042.md\n\n# Expected outcome:\n# - Verifies bug is fixed (test now passes)\n# - Checks for side effects (new failures)\n# - Provides merge recommendation\n```\n\n### Example 3: Release Regression Testing\n\n```bash\n# Before cutting release\n\u002Fregression-check --baseline main --scope full --format detailed\n\n# Expected outcome:\n# - Comprehensive test suite comparison\n# - Detailed logs for all detected regressions\n# - Complete report for release decision\n```\n\n### Example 4: Module-Specific Testing\n\n```bash\n# After refactoring auth module\n\u002Fregression-check --baseline main --scope module auth --format json\n\n# Expected outcome:\n# - Focused regression detection\n# - JSON output for CI\u002FCD integration\n# - Fast feedback on module changes\n```\n\n### Example 5: Performance Regression Detection\n\n```bash\n# Detect performance regressions\n\u002Fregression-check --baseline v2026.1.3 --format detailed\n\n# Expected outcome:\n# - Timing comparisons for all tests\n# - Flags tests with >20% performance degradation\n# - Detailed analysis of slow tests\n```\n\n## Integration with CI\u002FCD\n\n```yaml\n# .github\u002Fworkflows\u002Fregression-check.yml\nname: Regression Check\n\non:\n  pull_request:\n    branches: [main]\n\njobs:\n  regression:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v3\n        with:\n          fetch-depth: 0  # Full history for baseline comparison\n\n      - name: Run regression check\n        run: |\n          aiwg regression-check \\\n            --baseline main \\\n            --scope changed-files \\\n            --format json \\\n            > regression-results.json\n\n      - name: Post results\n        if: failure()\n        uses: actions\u002Fgithub-script@v6\n        with:\n          script: |\n            const results = require('.\u002Fregression-results.json');\n            \u002F\u002F Post comment to PR with regression report\n```\n\n## Output Artifacts\n\nGenerated files:\n\n```\n.aiwg\u002Ftesting\u002Fregression-reports\u002F\n├── regression-{timestamp}.md         # Human-readable report\n├── regression-{timestamp}.json       # Machine-readable results\n├── baseline-execution.log           # Baseline test output\n├── current-execution.log            # Current test output\n└── diff-analysis.md                 # Source code diff analysis\n```\n\n## Exit Codes\n\n```bash\n0  - No regressions detected\n1  - Critical regressions (blocking)\n2  - Major regressions (warning)\n3  - Minor regressions (informational)\n4  - Execution error (baseline\u002Fcurrent test failure)\n```\n\n## References\n\n- @$AIWG_ROOT\u002Fdocs\u002Freferences\u002FREF-013-metagpt-multi-agent-framework.md - Executable feedback pattern\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fexecutable-feedback.md - Feedback loop implementation rules\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Ftemplates\u002Ftest\u002Fregression-test-set-card.md - Regression test template\n- @.aiwg\u002Ftesting\u002F - Test artifacts location\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fexecutable-feedback.md - Test-first principles\n","# Regression Check Command\n\nCompare current system behavior against a baseline to detect regressions using executable feedback patterns.\n\n## Task\n\nI'll perform comprehensive regression detection by:\n\n1. Establishing baseline comparison point (branch, tag, commit, or timestamp)\n2. Identifying scope of changes to test\n3. Executing relevant test suites with baseline comparison\n4. Analyzing execution feedback for behavioral changes\n5. Reporting detected regressions with severity and impact\n6. Optionally correlating with bug reports\n\n## Arguments\n\n- `--baseline \u003Cref>` - Comparison baseline (branch name, git tag, commit hash, or ISO timestamp)\n  - Examples: `--baseline main`, `--baseline v2026.1.4`, `--baseline abc123`, `--baseline 2026-01-20T10:00:00Z`\n  - Default: `main` branch or most recent release tag\n\n- `--scope \u003Clevel>` - Testing scope\n  - `full` - Run complete test suite (default)\n  - `module \u003Cname>` - Test specific module\u002Fcomponent\n  - `changed-files` - Test only files changed since baseline\n  - Example: `--scope module auth`\n\n- `--format \u003Ctype>` - Output format\n  - `summary` - High-level regression report (default)\n  - `detailed` - Full execution logs with diffs\n  - `json` - Machine-readable format for CI\u002FCD integration\n\n- `--bug-report \u003Cpath>` - Correlate with bug report\n  - Verifies bug fix doesn't introduce regressions\n  - Cross-references test failures with reported issues\n  - Example: `--bug-report .aiwg\u002Fbugs\u002FBUG-042.md`\n\n- `--save-baseline` - Save current execution as new baseline\n  - Useful after confirming changes are intentional\n  - Updates regression detection baseline for future runs\n\n## Process\n\n### Step 1: Baseline Establishment\n\n```bash\n# Determine baseline reference\nBASELINE_REF=\"${--baseline:-main}\"\n\n# Checkout baseline (in temporary worktree)\ngit worktree add \u002Ftmp\u002Fbaseline-check \"$BASELINE_REF\"\n\n# Capture baseline test results\ncd \u002Ftmp\u002Fbaseline-check\nnpm test -- --json > \u002Ftmp\u002Fbaseline-results.json\n```\n\n### Step 2: Scope Identification\n\n**Full Scope**:\n- Run entire test suite in both baseline and current\n- Compare all test outcomes\n\n**Module Scope**:\n- Identify module-specific tests\n- Run subset of test suite\n- Focus regression detection on specified component\n\n**Changed Files Scope**:\n```bash\n# Identify changed files\ngit diff --name-only \"$BASELINE_REF\" > \u002Ftmp\u002Fchanged-files.txt\n\n# Map to test files\n# Example: src\u002Fauth\u002Flogin.ts → test\u002Funit\u002Fauth\u002Flogin.test.ts\n\n# Run only affected tests\n```\n\n### Step 3: Execution Comparison\n\nExecute tests in current state:\n```bash\n# Run tests with same configuration as baseline\nnpm test -- --json > \u002Ftmp\u002Fcurrent-results.json\n\n# Capture additional metrics\n# - Performance timing\n# - Code coverage deltas\n# - Error types and frequencies\n```\n\n### Step 4: Regression Analysis\n\nCompare execution results:\n\n```yaml\nregression_detection:\n  new_failures:\n    - test: \"test\u002Funit\u002Fauth\u002Flogin.test.ts::validateCredentials\"\n      baseline_status: PASS\n      current_status: FAIL\n      error: \"Expected 200, received 401\"\n      severity: CRITICAL\n\n  behavior_changes:\n    - test: \"test\u002Fintegration\u002Fapi\u002Fusers.test.ts::createUser\"\n      baseline_output: \"User created in 150ms\"\n      current_output: \"User created in 450ms\"\n      delta: +200%\n      severity: MAJOR\n\n  fixed_tests:\n    - test: \"test\u002Funit\u002Futils\u002Fparser.test.ts::edgeCase\"\n      baseline_status: FAIL\n      current_status: PASS\n      note: \"Intentional fix\"\n```\n\n### Step 5: Reporting\n\n**Summary Format**:\n```markdown\n## Regression Check Report\n\n**Baseline**: main (commit abc123)\n**Scope**: full\n**Date**: 2026-01-25T15:30:00Z\n\n### Summary\n\n- **New Failures**: 3 tests\n- **Behavior Changes**: 5 tests (performance degradation)\n- **Fixed Tests**: 2 tests\n- **Overall**: ⚠️ REGRESSIONS DETECTED\n\n### Critical Regressions\n\n1. **auth\u002Flogin.test.ts::validateCredentials**\n   - Status: PASS → FAIL\n   - Error: \"Expected 200, received 401\"\n   - Impact: Breaks user authentication\n   - Action: BLOCK MERGE\n\n2. **payments\u002Fprocess.test.ts::chargeCard**\n   - Status: PASS → FAIL\n   - Error: \"Transaction timeout\"\n   - Impact: Payment processing broken\n   - Action: BLOCK MERGE\n\n### Behavior Changes\n\n1. **api\u002Fusers.test.ts::createUser**\n   - Performance: 150ms → 450ms (+200%)\n   - Severity: MAJOR\n   - Action: INVESTIGATE\n\n[... detailed report continues ...]\n```\n\n**JSON Format**:\n```json\n{\n  \"baseline\": {\n    \"ref\": \"main\",\n    \"commit\": \"abc123\",\n    \"timestamp\": \"2026-01-20T10:00:00Z\"\n  },\n  \"current\": {\n    \"commit\": \"def456\",\n    \"timestamp\": \"2026-01-25T15:30:00Z\"\n  },\n  \"summary\": {\n    \"new_failures\": 3,\n    \"behavior_changes\": 5,\n    \"fixed_tests\": 2,\n    \"total_tests\": 247\n  },\n  \"regressions\": [\n    {\n      \"test\": \"auth\u002Flogin.test.ts::validateCredentials\",\n      \"type\": \"failure\",\n      \"severity\": \"critical\",\n      \"baseline_status\": \"PASS\",\n      \"current_status\": \"FAIL\",\n      \"error\": \"Expected 200, received 401\",\n      \"action\": \"block\"\n    }\n  ],\n  \"verdict\": \"FAIL\"\n}\n```\n\n## Bug Report Integration\n\nWhen `--bug-report` is provided:\n\n```bash\n# Load bug report\nBUG_REPORT=$(cat .aiwg\u002Fbugs\u002FBUG-042.md)\n\n# Extract:\n# - Bug description\n# - Affected components\n# - Expected fix behavior\n\n# Cross-reference regression results:\n# 1. Did fix resolve reported bug? (test now passes)\n# 2. Did fix introduce new failures? (regressions)\n# 3. Did fix change behavior elsewhere? (side effects)\n\n# Generate correlation report:\n```\n\n**Example Output**:\n```markdown\n## Bug Fix Verification: BUG-042\n\n**Bug**: Login fails for users with special characters in email\n\n**Fix Verification**: ✅ PASS\n- Test `auth\u002Flogin.test.ts::specialCharactersInEmail` now passes\n- Previously failing with \"Email validation error\"\n\n**Regression Check**: ⚠️ WARNING\n- **New failure detected**: `auth\u002Flogin.test.ts::standardLogin`\n  - Error: \"Unexpected character escape\"\n  - Likely caused by overly aggressive input sanitization\n  - **Action**: Refine fix to avoid breaking standard login flow\n\n**Recommendation**: REFINE FIX before merge\n```\n\n## Baseline Modes\n\n### Branch Baseline\n\n```bash\n# Compare against branch\n\u002Fregression-check --baseline develop --scope changed-files\n\n# Use case: Feature branch testing\n# Ensures changes don't break existing functionality\n```\n\n### Tag Baseline\n\n```bash\n# Compare against release\n\u002Fregression-check --baseline v2026.1.4 --format detailed\n\n# Use case: Release regression testing\n# Verifies new version doesn't break previous release behavior\n```\n\n### Commit Baseline\n\n```bash\n# Compare against specific commit\n\u002Fregression-check --baseline abc123def --scope module auth\n\n# Use case: Pinpoint regression introduction\n# Identifies exact commit that introduced regression\n```\n\n### Timestamp Baseline\n\n```bash\n# Compare against point in time\n\u002Fregression-check --baseline 2026-01-20T10:00:00Z\n\n# Use case: Time-based regression detection\n# Finds when behavior changed over time\n```\n\n## Executable Feedback Pattern\n\nImplements REF-013 MetaGPT executable feedback loop:\n\n```yaml\nexecutable_feedback_loop:\n  1_execute_baseline:\n    - checkout_baseline_ref\n    - run_test_suite\n    - capture_execution_results\n\n  2_execute_current:\n    - run_test_suite_current\n    - capture_execution_results\n\n  3_compare_feedback:\n    - detect_new_failures\n    - detect_behavior_changes\n    - detect_performance_regressions\n\n  4_analyze_root_cause:\n    - diff_source_changes\n    - identify_likely_culprits\n    - suggest_fixes\n\n  5_iterate_or_report:\n    - if_regressions_critical: block_merge\n    - if_regressions_minor: warn_and_document\n    - if_no_regressions: approve\n```\n\n## Usage Examples\n\n### Example 1: Pre-Merge Regression Check\n\n```bash\n# Before merging feature branch\n\u002Fregression-check --baseline main --scope changed-files --format summary\n\n# Expected outcome:\n# - Fast execution (only changed files tested)\n# - Summary of any regressions introduced\n# - Recommendation: merge\u002Fblock\u002Finvestigate\n```\n\n### Example 2: Bug Fix Verification\n\n```bash\n# After implementing bug fix\n\u002Fregression-check --baseline v2026.1.4 --bug-report .aiwg\u002Fbugs\u002FBUG-042.md\n\n# Expected outcome:\n# - Verifies bug is fixed (test now passes)\n# - Checks for side effects (new failures)\n# - Provides merge recommendation\n```\n\n### Example 3: Release Regression Testing\n\n```bash\n# Before cutting release\n\u002Fregression-check --baseline main --scope full --format detailed\n\n# Expected outcome:\n# - Comprehensive test suite comparison\n# - Detailed logs for all detected regressions\n# - Complete report for release decision\n```\n\n### Example 4: Module-Specific Testing\n\n```bash\n# After refactoring auth module\n\u002Fregression-check --baseline main --scope module auth --format json\n\n# Expected outcome:\n# - Focused regression detection\n# - JSON output for CI\u002FCD integration\n# - Fast feedback on module changes\n```\n\n### Example 5: Performance Regression Detection\n\n```bash\n# Detect performance regressions\n\u002Fregression-check --baseline v2026.1.3 --format detailed\n\n# Expected outcome:\n# - Timing comparisons for all tests\n# - Flags tests with >20% performance degradation\n# - Detailed analysis of slow tests\n```\n\n## Integration with CI\u002FCD\n\n```yaml\n# .github\u002Fworkflows\u002Fregression-check.yml\nname: Regression Check\n\non:\n  pull_request:\n    branches: [main]\n\njobs:\n  regression:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v3\n        with:\n          fetch-depth: 0  # Full history for baseline comparison\n\n      - name: Run regression check\n        run: |\n          aiwg regression-check \\\n            --baseline main \\\n            --scope changed-files \\\n            --format json \\\n            > regression-results.json\n\n      - name: Post results\n        if: failure()\n        uses: actions\u002Fgithub-script@v6\n        with:\n          script: |\n            const results = require('.\u002Fregression-results.json');\n            \u002F\u002F Post comment to PR with regression report\n```\n\n## Output Artifacts\n\nGenerated files:\n\n```\n.aiwg\u002Ftesting\u002Fregression-reports\u002F\n├── regression-{timestamp}.md         # Human-readable report\n├── regression-{timestamp}.json       # Machine-readable results\n├── baseline-execution.log           # Baseline test output\n├── current-execution.log            # Current test output\n└── diff-analysis.md                 # Source code diff analysis\n```\n\n## Exit Codes\n\n```bash\n0  - No regressions detected\n1  - Critical regressions (blocking)\n2  - Major regressions (warning)\n3  - Minor regressions (informational)\n4  - Execution error (baseline\u002Fcurrent test failure)\n```\n\n## References\n\n- @$AIWG_ROOT\u002Fdocs\u002Freferences\u002FREF-013-metagpt-multi-agent-framework.md - Executable feedback pattern\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fexecutable-feedback.md - Feedback loop implementation rules\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Ftemplates\u002Ftest\u002Fregression-test-set-card.md - Regression test template\n- @.aiwg\u002Ftesting\u002F - Test artifacts location\n- @$AIWG_ROOT\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsdlc-complete\u002Frules\u002Fexecutable-feedback.md - Test-first principles\n",{"name":5,"namespace":63,"platforms":64,"commandHint":66,"description":7},"aiwg",[65],"all",{"model":49,"category":67,"modelRole":39,"modelTier":68,"allowedTools":69,"argumentHint":70},"code-analysis-testing","economy","Read, Write, Bash, Grep, Glob","[--baseline \u003Cbranch|tag|commit|timestamp>] [--scope \u003Cfull|module|changed-files>] [--format \u003Csummary|detailed|json>] [--bug-report \u003Cpath>]","main","6754967c344ccb087a8de06972f55a41067b291b","agentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fregression-check",36,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg","https:\u002F\u002Faiwg.io","https:\u002F\u002Fgithub.com\u002Fjmagly","https:\u002F\u002Fintegrolabs.io","ml\u002Fai, industrial automation, safety\u002Fsecurity, ssi\r\n\r\nmagly.net\r\nintegrolabs.io\r\naiwg.io\r\nfortemi.com\r\npagenary.com\r\nbytecask.com","2026-11-14 02:10:01",{"source":8,"skillName":5,"commands":82,"prompt":92,"zipAvailable":93},[83,86,89],{"tool":84,"command":85},"npx","npx skills add jmagly\u002Faiwg --skill regression-check",{"tool":87,"command":88},"bunx","bunx skills add jmagly\u002Faiwg --skill regression-check",{"tool":90,"command":91},"pnpm","pnpm dlx skills add jmagly\u002Faiwg --skill regression-check","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fcodex-sdlc\u002Fskills\u002Fregression-check\u002FSKILL.md",true,[],[96,122,143,149,156,170],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":58},"01M70QA0BSYJ49EES9V4RE8QH1","host-hardening","Read-only system hardening baseline and plan-first host hardening recommendations for SSH, Docker bind addresses, firewall persistence, datastores, exporters and audit retention.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[102],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[104,105,106,45,107,108,109,110,111,112,52,113,114,115,116,117,118,119,120,121],"host","host hardening","hardening","re","recommendations","remediation","plan","port","verification","access","only","retention","audit","never","firewall","bind","secrets","request",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":132,"publishedAt":58},"01M70PNT2Z4HMZPRBTAF6073NN","exposure-analysis","Read-only firewall analysis and effective host exposure reconstruction for Docker published ports, UFW bypass, stale rules, CDN scope, IPv6 asymmetry and external probe allowlists.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fforensics\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[128,131],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[133,53,134,45,135,111,136,137,52,138,104,139,114,140,37,117,118,141,142,44],"exposure analysis","unknown","credentials","collection","ufw","ports","internet","local","reconstruction","operator",{"skillNo":144,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":58},"01M70P8QATMPKA78E4FT5D2TNA","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fsecurity-engineering\u002Fskills\u002Fhost-hardening\u002FSKILL.md",[147],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[106,104,105,113,45,121,109,108,116,110,111,112,52,120,114,115,107,117,118,119],{"skillNo":150,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":155,"publishedAt":58},"01M70NMPVJ5H0JH131P60FW4R8","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fframeworks\u002Fforensics-complete\u002Fskills\u002Fexposure-analysis\u002FSKILL.md",[153,154],{"categoryNo":129,"categoryName":130,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[53,133,117,135,111,136,52,134,104,139,114,140,37,45,118,138,137,141,142,44],{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":58},"01M6CB4DDR0B4NNCFK7ZK7449H","fixture-skill","Exercise rule delivery.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Frule-delivery\u002Fskills\u002Ffixture-skill\u002FSKILL.md",[162],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[164,165,166,167,168,169],"fixture skill","fixture","rule","delivery","true","exercise",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":177,"publishedAt":58},"01M6CB4AVK1W76MFMPP0JP32CJ","pi-local","Pi-local duplicate-precedence fixture.","https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Ftest\u002Ffixtures\u002Fproviders\u002Fpi\u002Fproject\u002F.pi\u002Fskills\u002Fpi-local\u002FSKILL.md",[176],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[178,179,140,180,165],"pi","pi local","duplicate"]