К основному содержанию
скилл CX Codex

qp-run — скилл для Claude Code: прогон тест-кейсов по живому приложению

Скилл проходит тест-кейсы из qp-plan по работающему приложению через адаптер сессии и пишет приговор на каждый шаг в TSV. Нужен, когда план тестов уже есть и его пора выполнять.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add chrono-meta/forge-harness --skill qp-run -a claude-code
Открыть на GitHub

Что делает qp-run

На вход идут qp/plan/tcs.tsv и строки адаптера из qp/plan/inventory.md. Результаты складываются в отдельную папку прогона. Перед первым шагом каждого кейса скилл проверяет предусловие: навигацию вроде at:/about выполняет сам, а состояние, которое не создать, помечает UNMET_UNEXECUTABLE. Провал первого шага при невыполненном предусловии получает BLOCKED, потому что до экрана дело не дошло.

В вебе каждый шаг идёт как снимок доступности до действия, само действие и снимок после; для десктопа то же самое через скриншоты. Наблюдения сохраняются файлами, а в evidence.tsv попадает их стабильный айди, посчитанный qp_tools.sh screen-id. Приговоры лежат в verdicts.tsv с семью полями: статус PASS, FAIL, BLOCKED или AMBIGUOUS, ветка MTM, признак MACHINE или JUDGMENT. Статус MACHINE принимается, только если в поле assertion названа конкретная проверка; пустая ячейка с MACHINE считается ошибкой.

Перед сохранением все текстовые артефакты идут через qp_tools.sh mask, и остаётся только очищенная копия. Скриншот с заполненным полем пароля годится лишь при маскировке на самом изображении. В конце прогона mtm-check и run-verbs должны вернуть код 0. Без адаптера скилл работать не будет: для веба это Playwright MCP, для десктопа — computer-use MCP.

Какие задачи решает

  • прогнать тест-кейсы из плана по живому приложению
  • зафиксировать приговор на каждый шаг с замкнутым статусом
  • отличить провал из-за невыполненного предусловия от настоящего бага
  • убрать почты и токены из собранных доказательств перед сохранением
  • сохранить стабильные отпечатки экранов для последующей регрессии

Примеры запросов агенту

  • Прогони тест-кейсы из qp/plan/tcs.tsv по сайту и запиши приговоры
  • Выполни QA-план по приложению через Playwright MCP
  • Пройди приложение по тест-кейсам и замаскируй секреты в доказательствах

Как установить qp-run

1Через Skills CLI (Vercel)

npx skills add chrono-meta/forge-harness --skill qp-run -a claude-code

2Вручную: положить файлы

~/.claude/skills/qp-run/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/qp-run/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о qp-run

Как установить qp-run в Claude Code?

Выполните npx skills add chrono-meta/forge-harness --skill qp-run -a claude-code. Файл скилла появится по пути ~/.claude/skills/qp-run/SKILL.md.

Что делает qp-run?

Исполняет тест-кейсы из qp-plan по живому приложению, ставит приговор каждому шагу и сохраняет доказательства после маскировки почт, токенов и паролей.

Что означает статус BLOCKED?

Шаг упал при невыполненном предусловии: до нужного экрана прогон не добрался, поэтому это не утверждение о приложении. Так помечается только первый шаг кейса.

Исходный текст

SKILL.md · MIT
---
name: qp-run
description: Automation stage of QP — executes the test cases from qp-plan against the live app through the session's adapter (Playwright MCP for web, computer-use MCP for desktop), records one verdict per step with a closed status, an MTM branch, whether the step was closed by machine evidence or left to judgment, and masks emails/tokens/passwords out of the evidence before saving. Triggers on "run these test cases", "execute the QA plan against the site", "drive the app through the TCs", "TC 실행해줘", "플랜대로 돌려줘".
user-invocable: true
allowed-tools: ["Read", "Bash", "Write", "Glob", "Grep"]
model: sonnet
origin: chamber run fh-qa-generic (2026-09-05)
---

# qp-run — Automation (execute → verdict → mask)

Input: `qp/plan/tcs.tsv` + the adapter/engine lines from `qp/plan/inventory.md`. Output dir: `qp/run/<YYYYMMDD-HHMM>/`.

## 0. MTM state — decide once, write it first
`#mtm:` is the first line of `verdicts.tsv`:
| value | when |
|---|---|
| `ACTIVE` | a plan document was given **and** you opened it (path recorded) |
| `UNAVAILABLE` | no plan document — expected values come from the inventory; the branch *differs from plan* is **unreachable** and the vocabulary collapses to AS_PLANNED / CODE_DIFFERS |
| `FAILED` | a plan document was given but could not be read — say so; do not fall back silently |
| `DISABLED` | the user turned it off (reason recorded) |
`UNAVAILABLE` and `FAILED` are different events; never merge them.

## 1. Precondition first — attribution, not blocking
Before step 1 of each TC, establish its `precondition`. Navigation you can do (`at:/about`) you do; state you cannot create (`logged-in`, `has-an-order`) you mark `UNMET_UNEXECUTABLE`. A step-1 failure under an unmet precondition is **`BLOCKED`**, not `FAIL` — you never reached the screen, so it is not a claim about the app. Only step 1 is re-attributed; later steps failed after arrival.

## 2. Execute each step, observe before and after
web: accessibility snapshot before → action → snapshot after. desktop: screenshot before/after. Save each observation as `<tc_id>_step<N>_{before,after}.{md,png}` and append its stable id from `bash plugins/fh-qp/scripts/qp_tools.sh screen-id <file>` (a content hash — Playwright MCP ref tokens change every navigation, so a raw file hash is NOT stable; measured 2026-09-05) to `evidence.tsv` (`tc_id<TAB>step<TAB>screen_hash`) — this file is what `qp-regress` reads.

## 3. Verdict row per step — `verdicts.tsv` (7 tab-separated fields)
```
tc_id	status	branch	closure	verb	assertion	expected_source
```
- `status` ∈ `PASS FAIL BLOCKED AMBIGUOUS` (AMBIGUOUS = could not map the step to one element: 0 candidates or a tie).
- `branch` ∈ `AS_PLANNED DIFFERS_FROM_PLAN CODE_DIFFERS NONE`. `DIFFERS_FROM_PLAN` only under `#mtm: ACTIVE` and only with `expected_source=PLAN_DOC`. `CODE_DIFFERS` needs `expected_source` `CODE` or `PLAN_DOC`. `NONE` only for BLOCKED/AMBIGUOUS.
- `closure` = `MACHINE` **only if** `assertion` names the check that closed it (`text-visible:About`, `url==…`, `element-count==3`). An empty assertion with `MACHINE` is invalid — that is the muscle-not-skeleton hole this field exists to close. Everything you decided by reading a screenshot is `JUDGMENT`.
- Validate before you finish: `bash plugins/fh-qp/scripts/qp_tools.sh mtm-check verdicts.tsv` must print `OK`; `run-verbs verdicts.tsv` must print `OK` (≥1 click/input actually executed).

## 4. Mask, then save — original 0
Every text artifact goes through `qp_tools.sh mask <in> <out>` and only `<out>` is kept; delete `<in>`. `RESIDUE` (rc 5) → do not keep the file; report which artifact. Typed secret values (from the profile's `*_env`) are read from the environment at type-time and never written. Screenshots that show a filled password field are kept only if the field is masked in the image (crop or overlay); otherwise drop the screenshot and say so.

## Done When
1. `verdicts.tsv` passes `mtm-check` and `run-verbs` · **[mandatory-pass]** — rc 0 both.
2. `evidence.tsv` has ≥1 row per executed TC · **[measured]**.
3. Masking: `grep -cE '@|Bearer|eyJ' <saved artifacts>` is 0 outside `__REDACTED_*__` markers · **[measured]** — the lane reproduces it on a known-dirty fixture.
4. Every BLOCKED verdict names its unmet precondition; every JUDGMENT closure says what was read · **[judged — pairing: `qp-regress` re-runs the same TCs and flags verdicts that flip without a DOM change; a second session reviews BLOCKED rows against the before-snapshots]**.

## Independently executable
Yes, given a `tcs.tsv` in the documented shape (hand-written is fine) and an adapter.

© chrono-meta · MIT · chrono-meta/forge-harness

Похожие скиллы

Все скиллы по теме «Тесты и QA» →
selector-drift-recovery kindlmann Восстанавливает сломанные селекторы тестов после редизайна интерфейса. Помогает обновить локаторы пачкой через сравнение снимков доступности. CX Codex +1 1 000установок run-smoke-tests cursor Скилл прогоняет смоук-тесты Playwright, разбирает падения и проверяет, что правка их закрыла. Нужен перед релизом или после крупного изменения. CX Codex +1 2 100установок om-prepare-test-env open-mercato Разворачивает локальное тестовое окружение, создаёт платформенные скрипты запуска и записывает дескриптор для UI- и интеграционных скиллов. CX Codex +1 2 900установок ai-bug-triage kindlmann Скилл выстраивает гибридный пайплайн триажа багов: нормализует логи CI, дедуплицирует ошибки по отпечаткам и поручает модели оценку критичности и составление тикетов. CX Codex +1 1 400установок playwright-in-sandbox customware-ai Скилл для проверки интерфейса в браузере через Playwright и написания устойчивых E2E-тестов. Пригодится, когда после правок UI нужны скриншоты, а не только состояние DOM. CX Codex +1 508установок breakdown-test официальный github Готовит стратегию тестирования, QA-план и чек-лист задач по документам фичи. Нужен при планировании тестов для GitHub-проекта. 9 264установок

Из того же набора7

prompt-regression Сверяет изменённые файлы харнесса с набором эталонных проверок и показывает PASS/FAIL/SKIP по каждой. Нужен после правок правил, CLAUDE.md или добавления скилла. CX Codex +1 ★ 30звёзд репо phantom-quench Ищет в отчётах, тест-кейсах и дизайн-доках утверждения, которых нет в исходниках. Помечает фантомные и неподтверждённые ссылки. CX Codex +1 ★ 30звёзд репо harness-doctor Проверяет файлы и правила вашего харнесса: что сломано, что устарело, где ссылки ведут в никуда. Пригодится, когда проект оброс инструкциями и агент начал путаться. CX Codex +1 ★ 30звёзд репо field-harvest Скилл читает git-историю рабочих проектов и находит паттерны, которые стоит перенести в основной харнесс, либо записывает итоги сессии в базу знаний. CX Codex +1 ★ 30звёзд репо asset-placement-gate Решает, чему место в общем наборе скиллов, что оставить в проекте, а что вообще не стоит создавать. CX Codex +1 ★ 30звёзд репо token-budget-gate Считает примерную стоимость многошаговой задачи в токенах и выдаёт вердикт GREEN, YELLOW, ORANGE или RED до того, как агент начнёт тратить бюджет. CX Codex +1 ★ 30звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой