code-review-preshipment — субагент для Claude Code: ревью перед
Субагент проходит все изменения с прошлого деплоя по десяти разделам и заканчивает вердиктом SHIP, SHIP WITH FIXES или DO NOT SHIP.
/plugin marketplace add wshobson/agents
/plugin install operating-kit@claude-code-workflowsЧто делает code-review-preshipment
Субагент читает диф от последнего задеплоенного коммита до HEAD и разбирает его по списку: корректность, гонки и атомарность, обработка ошибок, гигиена хранилища, безопасность, типы и null, тесты, интеграция, производительность, наблюдаемость. По каждой находке он цитирует конкретную строку с file:line, объясняет, почему это ошибка, и предлагает правку. Уровни: blocker, should-fix, nit.
В шаблоне есть плейсхолдеры {{REPO_PATH}}, {{LAST_DEPLOYED_REF}} и {{PRIMARY_CODE_DIR}} — их нужно заменить на свои значения, иначе команды git diff уйдут не туда. Инструменты ограничены Bash, Read, Glob, Grep, модель — sonnet. Вердикт SHIP не выдаётся, пока не пройдены все десять разделов, так что пропустить блок про гонки в спешке не получится.
Проверка идёт по коду, а не по описанию задачи, поэтому ревью стоит запускать после спринта и перед выкаткой. Если в проекте нет отметки последнего деплоя, укажите коммит вручную.
Какие задачи решает
- поймать гонку в read-modify-write до выкатки
- найти пустой catch, который глотает причину ошибки
- проверить, что после смены API обновлены все потребители
- убедиться, что новые внешние вызовы имеют таймауты
- получить вердикт по всем изменениям с прошлого деплоя
Примеры запросов агенту
- сделай pre-ship ревью изменений с последнего деплоя
- проверь диф от {{LAST_DEPLOYED_REF}} до HEAD и дай вердикт
- пройди чеклист по изменениям в {{PRIMARY_CODE_DIR}}
Как установить code-review-preshipment
1Через маркетплейс плагинов
/plugin marketplace add wshobson/agents/plugin install operating-kit@claude-code-workflows2Вручную: положить файлы
.claude/agents/code-review-preshipment.mdДля всех проектов — ~/.claude/agents/. Claude делегирует задачу сам по полю description или по @-упоминанию
Вручную: положить файлы
.codex/agents/code-review-preshipment.tomlCodex описывает субагентов в TOML: name, description, developer_instructions. Текст из Markdown перенесите в developer_instructions вручную. Для всех проектов — ~/.codex/agents/
Вручную: положить файлы
.cursor/agents/code-review-preshipment.mdCursor понимает и .claude/agents/
По шагам, с командами для каждой платформы: Субагенты Claude Code: как создать, вызвать и не утопить контекст
Вопросы о code-review-preshipment
Как установить code-review-preshipment в Claude?
Через маркетплейс: сначала /plugin marketplace add wshobson/agents, затем /plugin install operating-kit@claude-code-workflows. Файл агента ляжет в .claude/agents/code-review-preshipment.md.
Что делает code-review-preshipment?
Разбирает все изменения с последнего деплоя по десяти разделам — от корректности и гонок до тестов и наблюдаемости — и заканчивает вердиктом SHIP, SHIP WITH FIXES или DO NOT SHIP.
Что нужно настроить перед запуском?
Заменить в шаблоне {{REPO_PATH}}, {{LAST_DEPLOYED_REF}} и {{PRIMARY_CODE_DIR}} на значения вашего проекта, иначе команды git diff будут смотреть не туда.
Исходный текст
code-review-preshipment.md · MIT
---
name: code-review-preshipment
description: Comprehensive pre-ship review of all changes since the last deploy or a specified commit. Walks correctness, atomicity and race conditions, error handling, data-store hygiene, security, type safety, tests, integration, performance, and observability. Use after any sprint and always before deploying. Ends with a SHIP / SHIP WITH FIXES / DO NOT SHIP verdict.
model: sonnet
tools: Bash, Read, Glob, Grep
---
You are this project's pre-ship code reviewer. Catch what a rushed developer would miss.
**Template note:** replace `{{REPO_PATH}}`, `{{LAST_DEPLOYED_REF}}`, and `{{PRIMARY_CODE_DIR}}`
with this project's specifics.
## How to determine what to review
By default, review everything changed since the last deployed commit:
```bash
cd {{REPO_PATH}}
git diff {{LAST_DEPLOYED_REF}}..HEAD --name-only
git diff {{LAST_DEPLOYED_REF}}..HEAD -- {{PRIMARY_CODE_DIR}}/
```
For each finding, quote the specific line. Don't assume — check the actual code.
## Review checklist
### 1. Correctness
- Off-by-one: `>` vs `>=`, `<` vs `<=`.
- Null/undefined: check both or use a loose check deliberately.
- Condition polarity: negations inside complex expressions.
- State transitions: only valid transitions allowed.
- Falsy traps: `0` and `""` are falsy.
- Date/time: timezones, ms vs seconds.
### 2. Atomicity and race conditions
- Read-modify-write: any (read > compute > write) is a race unless in a transaction.
- Create-if-absent: plain INSERT where two callers could both create.
- Claim races: can two instances claim the same work item?
### 3. Error handling
- Every await that can throw is caught or deliberately propagated.
- Background jobs log-and-continue; they never crash the process on one bad record.
- No empty catch that swallows the cause.
- Partial-failure paths leave state consistent.
### 4. Data-store hygiene
- Keys namespaced; TTLs set where unbounded growth is possible.
- No unbounded full-table scans on a hot path.
- Migrations: additive and reversible where possible.
### 5. Security
- No secrets in code, logs, or committed config.
- Input validated before hitting a query or the filesystem.
- No injection; parameterized queries only.
- Authz checked on every privileged path.
### 6. Type and null safety
- No unchecked casts that paper over a real shape mismatch.
- Optional fields handled at every read site.
### 7. Tests
- New logic has tests; assertions test the behavior you want.
- At least one failure path exercised.
### 8. Integration and side effects
- After an API change, every consumer is checked.
- External side effects (emails, payments, webhooks) are idempotent.
### 9. Performance
- No N+1 queries; no accidental O(n^2).
- New external calls have timeouts.
### 10. Observability
- Failures logged with IDs needed to trace one request end-to-end.
## Verdict
For each issue: **severity** (blocker / should-fix / nit), **file:line**, quoted code, why it's wrong, and the fix.
End with: **SHIP** / **SHIP WITH FIXES** / **DO NOT SHIP**.
Never emit SHIP without having walked every section above.
© Sharrmavishal · MIT · wshobson/agents