From 11c083918c37315f37a2979627c8860507316eff Mon Sep 17 00:00:00 2001 From: vitya Date: Wed, 12 Aug 2026 18:25:05 +0300 Subject: [PATCH] =?UTF-8?q?feat(review-kit-pi-method):=20v0.1.0=20?= =?UTF-8?q?=E2=80=94=20pi-native=20clean-context=20review=20subagent=20spa?= =?UTF-8?q?wn=20(verified=20live=20on=20pi=200.84.1:=20-nc=20-ns=20-nt=20?= =?UTF-8?q?=3D=20unprompted)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .tasks/STATUS.md | 9 ++ README.md | 1 + README.ru.md | 1 + dist/review-kit-pi-method.skill | Bin 0 -> 2962 bytes skills/review-kit-pi-method/SKILL.md | 133 +++++++++++++++++++++++++++ 5 files changed, 144 insertions(+) create mode 100644 dist/review-kit-pi-method.skill create mode 100644 skills/review-kit-pi-method/SKILL.md diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index e464e29..629880b 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -508,4 +508,13 @@ needs-claude --- +## ⚪ [diagnosing-bugs-writing-skills-review] — Review новых скилов `diagnosing-bugs` + `writing-skills` (v0.1.0 оба, не-имплементер сессия). Scope: HARD-GATE не ослаблен (diagnosing: no fixes w/o root cause; writing: no skill w/o failing test); анти-дубль гард (anti-sproul 45+); триггер-дискриминация clean pi -p (коллизии: «зафиксируй» в writing-skills вс гриллинг docs-mode, «почему падает» вс using-vds-ops инциденты); lint/dist/install/pin/README. +**Status:** ready +**Where I stopped:** (not started) +**Next action:** clean-context pi -p субагенты (пос и нег для обоих скилов) + статика; отчёт в .workshop/.brainstorm/diagnosing-bugs-writing-skills-review.md; pull перед push. +**Branch:** n/a +**Notify:** OpeItcLoc03/workshop + + +--- diff --git a/README.md b/README.md index 6d82e19..85e9e38 100644 --- a/README.md +++ b/README.md @@ -117,6 +117,7 @@ an explicit `adapted-from` marker in its frontmatter. | `brainstorming` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — divergent phase, visual-companion dropped | | `diagnosing-bugs` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) + superpowers 6.2.0 concepts (Iron Law, red flags) | | `loop-me` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) — workflow-spec design gate | +| `review-kit-pi-method` | `author: ours` — pi-native spawn for clean-context review subagents | | `writing-skills` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — TDD-for-skills core + ideya 8 self-skill-authoring | | all other `skills/*` | `author: ours` | diff --git a/README.ru.md b/README.ru.md index ee78bae..c5d5f93 100644 --- a/README.ru.md +++ b/README.ru.md @@ -87,6 +87,7 @@ bash scripts/build.sh caveman # один | `brainstorming` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — расходящаяся фаза, visual-companion выброшен | | `diagnosing-bugs` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) + superpowers 6.2.0 (Iron Law, red flags) | | `loop-me` | `adapted-from: mattpocock/skills @ 84fdeffd` (MIT) — дизайн-гейт workflow-спец | +| `review-kit-pi-method` | `author: ours` — pi-спавн чистых review-субагентов | | `writing-skills` | `adapted-from: obra/superpowers @ 6.2.0` (MIT) — TDD-for-skills ядро + идея 8 self-skill-authoring | | остальные `skills/*` | `author: ours` | diff --git a/dist/review-kit-pi-method.skill b/dist/review-kit-pi-method.skill new file mode 100644 index 0000000000000000000000000000000000000000..1085e512faaf91fb7f63c2f0a55ff065ef66ddbd GIT binary patch literal 2962 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 CyO*Z` literal 0 HcmV?d00001 diff --git a/skills/review-kit-pi-method/SKILL.md b/skills/review-kit-pi-method/SKILL.md new file mode 100644 index 0000000..76682e3 --- /dev/null +++ b/skills/review-kit-pi-method/SKILL.md @@ -0,0 +1,133 @@ +--- +name: review-kit-pi-method +author: ours +version: 0.1.0 +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 "" +``` + +| 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 CLAUDE.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 + CLAUDE.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 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: +- [id] verdict: +- [id] reading: +``` + +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). + +## 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).