Skip to content
Back to skills

Regression

ASecurity

This skill should be used when reviewing changes that may remove exports, change signatures, or alter behavior.

  • 19 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
developmenttypescriptgobashrefactoringgitapiperformancedocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 3, 2026

npx -y skills add dean0x/devflow --skill regression --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Regression?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Regression
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dean0x-regression/badge)](https://www.skillsdirectory.com/skills/dean0x-regression)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: regression
description: This skill should be used when reviewing changes that may remove exports, change signatures, or alter behavior.
user-invocable: false
allowed-tools: Read, Grep, Glob
---

# Regression Patterns

Domain expertise for detecting functionality regressions and validating implementation intent. Use alongside `devflow:review-methodology` for complete regression reviews.

## Iron Law

> **WHAT WORKED BEFORE MUST WORK AFTER**
>
> Every change carries regression risk. Removed exports break consumers. Changed signatures
> break callers. Modified behavior breaks expectations. The burden of proof is on the change:
> demonstrate no regression, or document the intentional breaking change.

---

## Regression Categories

### 1. Lost Functionality

Features, exports, or capabilities that existed before but are missing after.

| Type | Risk | Detection |
|------|------|-----------|
| Removed exports | Breaks consumers | Compare `export` statements |
| Removed CLI options | Breaks scripts | Compare option definitions |
| Removed API endpoints | Breaks clients | Compare route handlers |
| Removed event handlers | Breaks integrations | Compare `.on()` calls |

```typescript
// VIOLATION: Export removed without deprecation
// BEFORE: export function deleteUser(id: string): void { }
// AFTER: (removed) - consumers will break!
```

### 2. Broken Behavior

Code still exists but behaves differently in breaking ways.

| Type | Risk | Detection |
|------|------|-----------|
| Changed return types | Null dereference | Compare function signatures |
| Changed defaults | Unexpected behavior | Compare default values |
| Removed side effects | Missing events/logs | Compare emit/log calls |
| Changed error handling | Uncaught errors | Compare throw/return patterns |

```typescript
// VIOLATION: Return type widened without migration
// BEFORE: function getUser(id: string): User { }
// AFTER: function getUser(id: string): User | null { }
// Callers assuming non-null will break!
```

### 3. Intent vs Reality Mismatch

Commit message promises one thing, code does another.

| Type | Risk | Detection |
|------|------|-----------|
| Commit says X, code does Y | False confidence | Compare message to diff |
| Partial implementation | Incomplete feature | Check all stated changes |
| Missing edge cases | Fragile code | Verify claimed coverage |

```typescript
// VIOLATION: Commit says "Add retry logic" but no retry implemented
async function fetchData(): Promise<Data> {
  return api.get('/data');  // No retry!
}
```

### 4. Incomplete Migrations

Old API deprecated but not all consumers updated.

| Type | Risk | Detection |
|------|------|-----------|
| Some call sites updated | Mixed behavior | Search for old API usage |
| Consumers not updated | Type errors | Check all importers |
| Tests not updated | False passes | Compare test coverage |

```typescript
// VIOLATION: Migration incomplete
// file1.ts: newFunction({ a, b })  // Updated
// file2.ts: oldFunction(a, b)      // NOT updated!
```

---

## Quick Detection Commands

```bash
# Find removed exports
git diff main...HEAD | grep "^-export"

# Find removed files
git diff main...HEAD --name-status | grep "^D"

# Find incomplete migration (old API still used)
grep -r "oldFunction" src/ --include="*.ts"

# Find new TODOs (incomplete work)
git diff main...HEAD | grep "^\+.*TODO"
```

---

## Extended References

For extended examples and detection techniques:

- **[violations.md](references/violations.md)** - Detailed violation examples for each category
- **[patterns.md](references/patterns.md)** - Correct patterns for regression-safe changes
- **[detection.md](references/detection.md)** - Comprehensive bash commands for detection

---

## Severity Guidelines

| Severity | Criteria | Examples |
|----------|----------|----------|
| **CRITICAL** | Breaking changes without migration | Public exports removed, return types incompatible, required params added |
| **HIGH** | Significant behavior changes | Defaults changed, error handling changed, side effects removed |
| **MEDIUM** | Moderate regression risk | Internal APIs changed, logging reduced, performance changed |
| **LOW** | Minor concerns | Documentation drift, internal refactoring |

---

## Regression Checklist

Before approving changes:

- [ ] No exports removed without deprecation
- [ ] Return types backward compatible
- [ ] Default values unchanged (or documented)
- [ ] Side effects preserved (events, logging)
- [ ] All consumers of changed code updated
- [ ] Migration complete across codebase
- [ ] CLI options preserved or deprecated
- [ ] API endpoints preserved or versioned
- [ ] Commit message matches implementation
- [ ] Breaking changes documented in CHANGELOG

Files in this skill

  • SKILL.md4.6 KB
  • references/detection.md5.2 KB
  • references/patterns.md5.2 KB
  • references/violations.md5.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.