Files
skills/skills/review-kit-pi-method/SKILL.md
vitya 3f78c54dd2 feat(review-kit-pi-method): CC-спавн субагент-ревьюера (claude-deepseek) — live-проверен 2026-09-01
v0.1.1→0.1.2: секция CC в Cross-agent — флаги изоляции (--tools '' --disable-slash-commands --no-session-persistence), модель deepseek-v4-flash-vision-exp, обёртка claude-deepseek. Из письма .workshop (task:1849 контекст review-механизмов).
2026-09-01 15:24:41 +03:00

154 lines
7.0 KiB
Markdown

---
name: review-kit-pi-method
author: ours
version: 0.1.2
description: >
Spawn clean-context non-implementer subagents for review, trigger-testing,
and spec validation under pi — the pi-native port of the review-kit method.
Use when reviewing a skill/code/spec by a non-implementer agent, testing
trigger discrimination of skills (clean pi -p subagents), or validating a
workflow spec against loop-me's "implementer asks no questions" criterion.
Triggers: «отдай на ревью», «прогони субагентами», "review with subagents",
«чистый контекст», «непрайменный», trigger-дискриминация.
---
# Review-kit under pi
The review-kit method (clean-context non-implementer subagents) was
claude-centric: spawn subprocesses, keep them unprompted. Under pi the same
method is a `pi -p` invocation with the right flags. This skill pins the exact
command and the anti-priming checklist.
## The spawn command
A fully unprompted (clean) subagent:
```bash
pi -p -nc -ns -nt --no-session "<question>"
```
| Flag | Effect |
|---|---|
| `-p` | headless, one-shot |
| `-nc` (`--no-context-files`) | no AGENTS.md / CLAUDE.md loading — the subagent does NOT inherit project rules |
| `-ns` (`--no-skills`) | no skill discovery — it does not know our catalog exists |
| `-nt` (`--no-tools`) | no tools — it cannot read files to self-prompt; answers from model knowledge + the prompt only |
| `--no-session` | ephemeral, nothing persisted |
Verified live (pi v0.84.1): with `-nc -ns -nt` the subagent reports "no
project-specific instructions" and cannot recite AGENTS.md rules; without the
flags it can quote them verbatim. The difference is the anti-priming
guarantee: **the review verdict is not contaminated by the reviewer knowing
what the implementer intended.**
## Anti-priming checklist (per subagent run)
Before trusting a verdict, confirm the spawn was clean:
- [ ] `-nc` present — subagent has no context files
- [ ] `-ns` present — subagent has no skills
- [ ] `-nt` present — subagent cannot read files (no self-prompting)
- [ ] `--no-session` — no session bleed
- [ ] The question does NOT name the expected answer, the skill name being
tested, or the files to read (naming them re-primes: e.g. "what does
AGENTS.md say about X" makes the subagent read it via tools — only
`-nt` blocks that, keep it)
## Prompting rules
- **Ask the behavior, not the label.** For trigger tests: "You are given this
user request: «...». Which of your skills would you use, and why?" — never
"does this route to skill X?" (that's leading).
- **One question per run.** A run answers one question; batch by launching
parallel runs, not by cramming.
- **Negative controls matter.** For trigger discrimination, always run phrases
that should NOT match (e.g. «прогриль» must not hit brainstorming). A skill
with 0 false positives on 3-4 negatives is trustworthy.
- **Read every flagged match manually.** Template echoes and quoted
counter-examples masquerade as hits; automated counting alone overstates
both failure and success.
## When to use which spawn
| Need | Spawn |
|---|---|
| Trigger discrimination (skill activation) | clean `-nc -ns -nt` |
| Skill/code review by non-implementer | clean `-nc -ns -nt`, plus the review scope in the prompt (what to check, NOT the expected verdict) |
| Spec validation (loop-me criterion) | clean `-nc -ns -nt`, prompt = "given this spec, what would you need to ask before building it?" — any question ⇒ spec not done |
| Context-aware review (reviewer needs project conventions) | WITHOUT `-nc` (let it read AGENTS.md / CLAUDE.md), but still `-ns -nt --no-session`, and prompt from a neutral third-person role ("a senior engineer reviewing this change") |
## Pitfalls
- **Asking "does X trigger skill Y?" primes the answer.** The subagent
cooperates and says yes. Ask what it would do, infer the routing.
- **Naming files in the question lets a tool-enabled subagent read them** —
which is fine when you WANT context, but kills the clean spawn. `-nt` is
the guard.
- **Session bleed:** without `--no-session` a prior run's context can leak.
Always ephemeral.
- **Confirmation bias in the orchestrator:** if the subagent's verdict
contradicts your expectation, report it, don't re-run until it agrees.
Re-running with a re-worded prompt until you like the answer is priming by
another name.
- **Version drift:** pin the pi version in the review report (`pi --version`)
— flag behavior can change between releases.
## Output convention
For each subagent run record in the review report:
```
- [id] spawn: pi -p -nc -ns -nt --no-session "…"
- [id] prompt: <verbatim>
- [id] verdict: <verbatim output>
- [id] reading: <your manual interpretation, one line>
```
The report then aggregates: pos/neg counts, false positives with quotes,
conclusion.
## Relationship to other skills
- `caveman-review` — output FORMAT (one-line L:line comments), this skill is
the spawn MECHANISM. Use together: spawn clean subagents, format findings
caveman-style.
- `loop-me` — its independent check ("implementer asks no questions") IS a
review-kit spawn with the spec as input. This skill provides the command.
- `diagnosing-bugs` — its sub-agent line ("dispatch a clean-context sub-agent
where your harness supports it") uses this spawn.
## Cross-agent applicability
Command is pi-specific by design (this is the pi port). The METHOD — clean
non-implementer subagents, anti-priming checklist, negative controls — is
agent-agnostic and transfers to any runtime that can spawn a fresh-context
subprocess (claude `-p`, codex exec, hermes headless).
### CC-спавн (claude-code через deepseek) — live-проверен 2026-09-01 (session:974)
CC (`claude -p`) умеет субагент-ревью БЕЗ скилов: тот же чистый контекст
(флаги изоляции) через обёртку `claude-deepseek`
(`.common/scripts/claude-switch.ps1`; env `ANTHROPIC_BASE_URL=
https://api.deepseek.com/anthropic` + ключ из `~/.deepseek_api_key`):
```bash
claude -p "<question>" \
--output-format stream-json --verbose \
--model deepseek-v4-flash-vision-exp \
--tools "" --disable-slash-commands --no-session-persistence
```
Флаги изоляции (аналог `-nc -ns -nt` pi): `--tools ""` (нет тулов —
не читает файлы, не самопраймится), `--disable-slash-commands` (нет
команд-интерпретатора), `--no-session-persistence` (эфемерно, без
сессионного блода). Анти-прайминг-чеклист и правила промпта — те же, что
выше (ask the behavior, one question per run, negative controls).
## Out of scope
- Does NOT define the review criteria themselves (skill-specific acceptance —
see the review task / skill under test).
- Does NOT do the review — it spawns and governs the reviewers.
- Does NOT cover claude-side spawn (that's the legacy method; the pi command
here supersedes it).