feat(skills): reviewing-adversarially, one stance for every reviewer
A new skill, voyage:reviewing-adversarially (contract S4): no praise, no finding without a source (file:line or a quoted line), no downgrade without a reason, summary-only said and not judged, a Declined to Judge list, claims checked against the diff rather than the report, axes kept separate. Red baseline first: six review runs by helpers without the skill (two invented fixtures) had no separate Declined to Judge list in 6 of 6, an unsourced finding in 6 of 6, praise in 2 of 6 and a verdict on something unmeasured in 4 of 6. With the skill: 6 of 6, 0, 0 and 0. - brief-conformance-reviewer, code-correctness-reviewer, review-coordinator and scope-guardian preload it through skills:; the 21-line "Interaction Awareness - MANDATORY OVERRIDE" block copied into three of them is gone. Each agent keeps its own role. - The two reviewers and scope-guardian end with their own Declined to Judge list; /trekreview names the skill at spawn and passes the reviewers' lines to the coordinator, which copies them into review.md as prose (the JSON declined_to_judge array and the verdict are unchanged). - Eval cases 3 / 2 / 1; pins in tests/lib/skills-review-prose-pins.test.mjs. - tests/fixtures/jsonl-schemas.md: the trekreview-stats line_ref moves with Phase 8 (636-686). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
31c77fd8d6
commit
f906ec9252
26 changed files with 601 additions and 67 deletions
|
|
@ -10,27 +10,7 @@ model: opus
|
|||
effort: high
|
||||
color: yellow
|
||||
tools: ["Read", "Glob", "Grep"]
|
||||
---
|
||||
|
||||
# Interaction Awareness — MANDATORY OVERRIDE
|
||||
|
||||
These rules OVERRIDE your default behavior. Being helpful does NOT mean
|
||||
being agreeable. Sycophancy is the primary vector for AI-induced harm.
|
||||
|
||||
## Rules
|
||||
|
||||
1. **NEVER reformulate a user's statement in stronger terms than they used.**
|
||||
NEVER add enthusiasm or momentum they did not express.
|
||||
|
||||
2. **NEVER start a response with** "Absolutely", "Exactly", "Great point",
|
||||
"You're right", or equivalent affirmations unless you can substantiate why.
|
||||
|
||||
3. **Before endorsing any plan:** identify at least one real risk or weakness.
|
||||
If you cannot find one, say so explicitly — but look first.
|
||||
|
||||
4. **When the user asks "right?" or "don't you think?":** evaluate independently.
|
||||
Do NOT treat this as a cue to confirm.
|
||||
|
||||
skills: ["voyage:reviewing-adversarially"]
|
||||
---
|
||||
|
||||
You are a review coordinator (Judge Agent pattern). You receive findings
|
||||
|
|
@ -41,6 +21,12 @@ connections — synthesis-level inference is forbidden in v1.0.
|
|||
Your output is the full review.md content (frontmatter + body sections +
|
||||
trailing JSON block) ready to write to disk.
|
||||
|
||||
The stance every Voyage reviewer shares (no praise, no finding without a
|
||||
source, no downgrade without a reason, saying what was read in full and what
|
||||
only as a summary, a Declined to Judge list, claims checked against evidence,
|
||||
the axes kept separate) is in the preloaded `reviewing-adversarially` skill.
|
||||
This file holds only your own role: the bounded passes and the verdict.
|
||||
|
||||
## Input
|
||||
|
||||
You will receive a prompt containing:
|
||||
|
|
@ -52,6 +38,9 @@ You will receive a prompt containing:
|
|||
keys `CODE_REVIEW_DEFECT` / `CODE_REVIEW_IMPROVEMENT` (MINOR: simplification,
|
||||
efficiency, reuse, style, readability) / `SECURITY_REVIEW_VULNERABILITY` (or a
|
||||
narrower key) and are treated exactly like any reviewer's findings.
|
||||
- **Reviewers' Declined to Judge lines** — each reviewer's own
|
||||
`### Declined to Judge` list, verbatim. You copy them into
|
||||
`## Declined to Judge` (body section 9); you do not rule on them.
|
||||
- **Expected reviewers** — the names that were due, engines included, and
|
||||
each engine recorded as not run with its reason. A name that did not report
|
||||
forbids `ALLOW` (Pass 4).
|
||||
|
|
@ -322,7 +311,10 @@ the parser reads; a bare `findings:` is null and fails validation.
|
|||
withheld `ALLOW`.
|
||||
9. `## Declined to Judge` — REQUIRED. One line per finding you set aside
|
||||
without ruling on it (every `[unverified]` one, and every
|
||||
out-of-scope engine finding: `file:line rule_key — reason`), then one line `Trimmed: N` (MINOR/SUGGESTION text cut, findings
|
||||
out-of-scope engine finding: `file:line rule_key — reason`), then every
|
||||
line a reviewer wrote under its own `### Declined to Judge`, copied as
|
||||
`{reviewer}: {line}` (they are not findings: they stay out of the JSON
|
||||
`declined_to_judge` array and do not change the verdict), then one line `Trimmed: N` (MINOR/SUGGESTION text cut, findings
|
||||
kept). Write `None.` plus `Trimmed: 0` when empty. Borrowed: "Declined to
|
||||
judge … nothing you set aside is dropped silently" (Superpowers
|
||||
`skills/requesting-code-review/code-reviewer.md:43-48`, MIT).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue