---
name: regression
description: |
  Run the project regression sweep and report a canonical status line + GREEN/RED/RED-INCOMPLETE verdict.
  Two tiers: `quick` (lint/format/type-check — seconds) and `full` (everything incl.
  Pest --parallel, Larastan, Vitest, Vite build, lychee, gitleaks — minutes).
  Claude auto-runs only `quick` (e.g. during verification-before-completion);
  `full` runs only on explicit `/regression full` or with user confirmation.
---

# Regression — канонический регрессионный свод

## Когда использовать

Перед закрытием задачи/спринта (`full`) или для быстрого фидбэка по ходу работы
(`quick`). Скилл инкапсулирует ~12 команд свода, разбросанных по `package.json`,
`app/package.json`, `app/composer.json` и `lefthook.yml`, в один вызов с
детерминированной канонической строкой и машинным вердиктом.

Invoke via `/regression [quick|full]` (без аргумента → `full`).

## Workflow

1. Определить уровень из аргумента: `quick`, `full`, либо `full` по умолчанию.
2. Запустить через Bash из корня репозитория:

   ```bash
   node .claude/skills/regression/run.mjs <tier>
   ```

3. Показать пользователю полный вывод скрипта (таблица + каноническая строка +
   вердикт + вывод упавших проверок).
4. Интерпретировать вердикт:
   - `GREEN` — свод чист, exit-код 0.
   - `RED` — перечислены упавшие проверки, exit-код 1; полный вывод каждой —
     после вердикта.
   - `RED-INCOMPLETE` — проверка не прогналась (нет бинаря), exit-код 1; свод
     неполон, зелёным признать нельзя. Если одновременно есть упавшие проверки,
     они тоже перечислены в строке вердикта.

## Уровни

- **`quick`** (6 проверок, секунды): Pint, ESLint, Prettier, vue-tsc,
  markdownlint, cspell.
- **`full`** (12 проверок, минуты): всё из `quick` + Larastan, Pest `--parallel`,
  Vitest, Vite build, lychee, gitleaks.

## Правила инвокации (self-restraint)

- Claude **авто-запускает только `quick`** — в том числе в рамках
  `superpowers:verification-before-completion` перед claim «готово» / «passed» /
  «closed».
- `full` Claude **сам не запускает** — только по явному `/regression full` от
  пользователя ИЛИ запросив подтверждение («запускаю полный свод, ~5–10 мин — ок?»).
- Скилл **не правит `CLAUDE.md`** — он только печатает каноническую строку в
  stdout; вставка строки в `CLAUDE.md` — отдельно, через канал
  `claude-md-management` (`CLAUDE.md` §5 п.10).

## Caveats

- **Pest `--parallel` flake (квирки 72/73/77).** Если Pest показал 1–3 ошибки,
  похожие на Redis-race / cumulative-state / unique-key-collision, — перепрогнать
  `full` один раз ИЛИ свериться с агентом `pest-parallel-debugger` до объявления
  реального RED.
- **ruflo daemon (квирк 93).** Перед baseline-критичным `full` рассмотреть
  `pm2 stop ruflo-daemon` — worker-jitter усиливает Pest-flake.
- gitleaks и lychee: на Windows берутся из `bin\*.exe`, на Linux/Mac CI — из
  `PATH`. Отсутствие бинаря → `[⚠] SKIPPED` + вердикт `RED-INCOMPLETE`.

## Не использовать когда

- Нужна одна конкретная проверка — запусти её npm/composer-скрипт напрямую
  (быстрее, чем весь свод).
- Pa11y и Semgrep SAST — это CI-tier, в свод намеренно не входят (см. дизайн-спек
  `docs/superpowers/specs/2026-05-16-regression-skill-design.md` §5).
