description: "Run a Cursor-coded word-count change through a 15-route review loop until it meets the approval bar."
steps:
implement:
agent:
harness: cursor
model: auto
prompt: |
This repository contains a deliberately small word-counting CLI. Implement this feature
request without adding third-party dependencies:
Generalize the program from counting individual words to counting adjacent word groups.
Add `--group-size N` (default 1) and `--limit N` (default 10). Word groups must never cross
an input line boundary. Normalize case, treat punctuation as separators while retaining
apostrophes inside words, and order results deterministically by descending count then
alphabetically. Reject non-positive option values with a clear CLI error. Preserve the
existing output format for the default options.
Rewrite the implementation as needed, update or add focused tests and user documentation,
run the tests, and commit the complete feature with the message
`Add grouped word counts.` Put a one-line summary in the `summary` result
field.
output:
summary:
type: string
commits: true
prepare:
needs: implement
agent:
harness: cursor
model: auto
prompt: |
Read this repository's code and its git history. Write `PR-DESCRIPTION.md` at the
repository root describing the change set as if opening a pull request. Use exactly these
level-two headings, in this order, with no other headings: `## Summary`,
`## What This Changes`, and `## Implementation Details`. Put the big picture and concise
bullets first, then explanatory prose, then notable implementation details. Commit only
that file with the message `Prepare PR description.` Never create any additional
PR-description section for verification commands, expected results, or checklists;
that evidence belongs in committed tests, README, or another committed verification
document. Put a one-line summary in the `summary` result field.
output:
summary:
type: string
commits: true
initial_conventions_opus:
needs: prepare
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Review conventions, naming, structure, formatting, repository rules, and idioms. Return
at most three actionable comment paragraphs. Grade excellent, good, average, or poor.
Write `grade` as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may
contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_conventions_terra:
needs: prepare
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Review conventions, naming, structure, formatting, repository rules, and idioms. Return
at most three actionable comment paragraphs. Grade excellent, good, average, or poor.
Write `grade` as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may
contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_conventions_cursor:
needs: prepare
agent:
harness: cursor
model: auto
prompt: |
Review conventions, naming, structure, formatting, repository rules, and idioms. Return
at most three actionable comment paragraphs. Grade excellent, good, average, or poor.
Write `grade` as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may
contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_justification_opus:
needs: prepare
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Challenge scope, necessity, and complexity; require PR-DESCRIPTION.md to name the
user-facing capability. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_justification_terra:
needs: prepare
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Challenge scope, necessity, and complexity; require PR-DESCRIPTION.md to name the
user-facing capability. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_justification_cursor:
needs: prepare
agent:
harness: cursor
model: auto
prompt: |
Challenge scope, necessity, and complexity; require PR-DESCRIPTION.md to name the
user-facing capability. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_reviewability_opus:
needs: prepare
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Review PR-description clarity and ordering, commit coherence, and whether the change
should be re-sliced. PR-DESCRIPTION.md is a required demo artifact; assess its presentation
without suggesting its removal. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_reviewability_terra:
needs: prepare
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Review PR-description clarity and ordering, commit coherence, and whether the change
should be re-sliced. PR-DESCRIPTION.md is a required demo artifact; assess its presentation
without suggesting its removal. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_reviewability_cursor:
needs: prepare
agent:
harness: cursor
model: auto
prompt: |
Review PR-description clarity and ordering, commit coherence, and whether the change
should be re-sliced. PR-DESCRIPTION.md is a required demo artifact; assess its presentation
without suggesting its removal. Return at most three actionable comment paragraphs. Grade
excellent, good, average, or poor. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not edit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_sanity_opus:
needs: prepare
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Check only glaring performance, basic-security, and resource-leak problems. Return at most
three actionable comment paragraphs. Grade excellent, good, average, or poor. Write `grade`
as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only
`## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_sanity_terra:
needs: prepare
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Check only glaring performance, basic-security, and resource-leak problems. Return at most
three actionable comment paragraphs. Grade excellent, good, average, or poor. Write `grade`
as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only
`## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_sanity_cursor:
needs: initial_justification_cursor
agent:
harness: cursor
model: auto
prompt: |
Check only glaring performance, basic-security, and resource-leak problems. Return at most
three actionable comment paragraphs. Grade excellent, good, average, or poor. Write `grade`
as a string and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only
`## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_testing_opus:
needs: prepare
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Review test coverage, committed human-followable verification documentation, and teardown.
Keep verification evidence in tests, README, or a committed verification document;
PR-DESCRIPTION.md is change narrative only. Return at most three actionable comment
paragraphs. Grade excellent, good, average, or poor. Write `grade` as a string and
`comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_testing_terra:
needs: prepare
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Review test coverage, committed human-followable verification documentation, and teardown.
Keep verification evidence in tests, README, or a committed verification document;
PR-DESCRIPTION.md is change narrative only. Return at most three actionable comment
paragraphs. Grade excellent, good, average, or poor. Write `grade` as a string and
`comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
initial_testing_cursor:
needs: initial_conventions_cursor
agent:
harness: cursor
model: auto
prompt: |
Review test coverage, committed human-followable verification documentation, and teardown.
Keep verification evidence in tests, README, or a committed verification document;
PR-DESCRIPTION.md is change narrative only. Return at most three actionable comment
paragraphs. Grade excellent, good, average, or poor. Write `grade` as a string and
`comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
decide:
needs: |-
initial_conventions_opus, initial_conventions_terra, initial_conventions_cursor,
initial_justification_opus, initial_justification_terra, initial_justification_cursor,
initial_reviewability_opus, initial_reviewability_terra, initial_reviewability_cursor,
initial_sanity_opus, initial_sanity_terra, initial_sanity_cursor,
initial_testing_opus, initial_testing_terra, initial_testing_cursor
inputs:
PREVIOUS_APPROVED: collect.approved
PREVIOUS_FEEDBACK: collect.feedback
INITIAL_CONVENTIONS_OPUS: initial_conventions_opus.grade
INITIAL_CONVENTIONS_OPUS_COMMENTS: initial_conventions_opus.comments
INITIAL_CONVENTIONS_TERRA: initial_conventions_terra.grade
INITIAL_CONVENTIONS_TERRA_COMMENTS: initial_conventions_terra.comments
INITIAL_CONVENTIONS_CURSOR: initial_conventions_cursor.grade
INITIAL_CONVENTIONS_CURSOR_COMMENTS: initial_conventions_cursor.comments
INITIAL_JUSTIFICATION_OPUS: initial_justification_opus.grade
INITIAL_JUSTIFICATION_OPUS_COMMENTS: initial_justification_opus.comments
INITIAL_JUSTIFICATION_TERRA: initial_justification_terra.grade
INITIAL_JUSTIFICATION_TERRA_COMMENTS: initial_justification_terra.comments
INITIAL_JUSTIFICATION_CURSOR: initial_justification_cursor.grade
INITIAL_JUSTIFICATION_CURSOR_COMMENTS: initial_justification_cursor.comments
INITIAL_REVIEWABILITY_OPUS: initial_reviewability_opus.grade
INITIAL_REVIEWABILITY_OPUS_COMMENTS: initial_reviewability_opus.comments
INITIAL_REVIEWABILITY_TERRA: initial_reviewability_terra.grade
INITIAL_REVIEWABILITY_TERRA_COMMENTS: initial_reviewability_terra.comments
INITIAL_REVIEWABILITY_CURSOR: initial_reviewability_cursor.grade
INITIAL_REVIEWABILITY_CURSOR_COMMENTS: initial_reviewability_cursor.comments
INITIAL_SANITY_OPUS: initial_sanity_opus.grade
INITIAL_SANITY_OPUS_COMMENTS: initial_sanity_opus.comments
INITIAL_SANITY_TERRA: initial_sanity_terra.grade
INITIAL_SANITY_TERRA_COMMENTS: initial_sanity_terra.comments
INITIAL_SANITY_CURSOR: initial_sanity_cursor.grade
INITIAL_SANITY_CURSOR_COMMENTS: initial_sanity_cursor.comments
INITIAL_TESTING_OPUS: initial_testing_opus.grade
INITIAL_TESTING_OPUS_COMMENTS: initial_testing_opus.comments
INITIAL_TESTING_TERRA: initial_testing_terra.grade
INITIAL_TESTING_TERRA_COMMENTS: initial_testing_terra.comments
INITIAL_TESTING_CURSOR: initial_testing_cursor.grade
INITIAL_TESTING_CURSOR_COMMENTS: initial_testing_cursor.comments
agent:
harness: cursor
model: auto
prompt: |
You are the first and deciding step of a review loop. When PREVIOUS_APPROVED is non-empty,
it and PREVIOUS_FEEDBACK describe the preceding in-loop review batch. Otherwise score the
15 INITIAL_* grades and matching *_COMMENTS JSON arrays: excellent=5, good=4, average=3, poor=2. Approval requires every grade
to be excellent or good, more excellent than good, and mean score at least 4.5. Set
SCSH_LOOP_BREAK true when approved. Otherwise set it false and put a clear consolidated
change request in `change_request`. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Ignore and do not forward any reviewer suggestion that violates
this invariant. Do not change files or commit.
output:
SCSH_LOOP_BREAK:
type: bool
change_request:
type: string
break: true
fix:
needs: decide
inputs:
FEEDBACK: decide.change_request
agent:
harness: cursor
model: auto
prompt: |
Address EVERY requested change in FEEDBACK: either change the code accordingly, or — when you
judge a comment purely stylistic and the current code deliberate — append a short entry to
`STYLE-NOTES.md` at the repository root documenting that decision and why the style stays.
Never contradict earlier `STYLE-NOTES.md` entries or earlier fixes. Never write the
feedback itself to any file. PR-DESCRIPTION.md is a required demo artifact: keep it tracked
and current with exactly `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order, and no other headings. Commit your changes with
the message `Address review feedback.` Never create any additional PR-description section
for verification commands, expected results, or checklists; that evidence belongs in
committed tests, README, or another committed verification document. Write `actions` as several short paragraphs,
separated by blank lines: one paragraph for each reviewer profile and route whose feedback
you acted on, one paragraph for any deliberate STYLE-NOTES decision, and a final paragraph
for test results and the commit. Do not collapse distinct review areas into one paragraph.
output:
actions:
type: string
commits: true
review_conventions_opus:
needs: fix
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Run the conventions reviewer profile: examine naming, structure, formatting, repository
rules, and idiomatic consistency. Respect deliberate decisions in `STYLE-NOTES.md`. Treat
`PR-DESCRIPTION.md` as context but grade the code. Return at most three concrete actionable
comments, one paragraph each. Use `excellent` for approve with praise, `good` for approve
with nits, and `average` or `poor` only when real work is needed. Write `grade` as a string
and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_conventions_terra:
needs: fix
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Run the conventions reviewer profile: examine naming, structure, formatting, repository
rules, and idiomatic consistency. Respect deliberate decisions in `STYLE-NOTES.md`. Treat
`PR-DESCRIPTION.md` as context but grade the code. Return at most three concrete actionable
comments, one paragraph each. Use `excellent` for approve with praise, `good` for approve
with nits, and `average` or `poor` only when real work is needed. Write `grade` as a string
and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_conventions_cursor:
needs: fix
agent:
harness: cursor
model: auto
prompt: |
Run the conventions reviewer profile: examine naming, structure, formatting, repository
rules, and idiomatic consistency. Respect deliberate decisions in `STYLE-NOTES.md`. Treat
`PR-DESCRIPTION.md` as context but grade the code. Return at most three concrete actionable
comments, one paragraph each. Use `excellent` for approve with praise, `good` for approve
with nits, and `average` or `poor` only when real work is needed. Write `grade` as a string
and `comments` as an array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`,
`## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_justification_opus:
needs: fix
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Run the justification reviewer profile: challenge scope and necessity, ask whether the
feature earns its complexity, and require `PR-DESCRIPTION.md` to state the user-facing
capability. Respect ratified or deliberate decisions documented in the repository. Return
at most three concrete actionable comments, one paragraph each. Use `excellent` for approve
with praise, `good` for approve with nits, and `average` or `poor` only when real work is
needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_justification_terra:
needs: fix
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Run the justification reviewer profile: challenge scope and necessity, ask whether the
feature earns its complexity, and require `PR-DESCRIPTION.md` to state the user-facing
capability. Respect ratified or deliberate decisions documented in the repository. Return
at most three concrete actionable comments, one paragraph each. Use `excellent` for approve
with praise, `good` for approve with nits, and `average` or `poor` only when real work is
needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_justification_cursor:
needs: fix
agent:
harness: cursor
model: auto
prompt: |
Run the justification reviewer profile: challenge scope and necessity, ask whether the
feature earns its complexity, and require `PR-DESCRIPTION.md` to state the user-facing
capability. Respect ratified or deliberate decisions documented in the repository. Return
at most three concrete actionable comments, one paragraph each. Use `excellent` for approve
with praise, `good` for approve with nits, and `average` or `poor` only when real work is
needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_reviewability_opus:
needs: fix
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Run the reviewability reviewer profile: assess whether `PR-DESCRIPTION.md` explains the big
picture before details, whether the commit history is coherent, and whether the change
should be re-sliced or split. PR-DESCRIPTION.md is a required demo artifact; assess its
presentation without suggesting its removal. Anchor findings to commits and the PR, not
individual code lines. Return at most three concrete actionable comments, one paragraph each. Use
`excellent` for approve with praise, `good` for approve with nits, and `average` or `poor`
only when real work is needed. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_reviewability_terra:
needs: fix
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Run the reviewability reviewer profile: assess whether `PR-DESCRIPTION.md` explains the big
picture before details, whether the commit history is coherent, and whether the change
should be re-sliced or split. PR-DESCRIPTION.md is a required demo artifact; assess its
presentation without suggesting its removal. Anchor findings to commits and the PR, not
individual code lines. Return at most three concrete actionable comments, one paragraph each. Use
`excellent` for approve with praise, `good` for approve with nits, and `average` or `poor`
only when real work is needed. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_reviewability_cursor:
needs: fix
agent:
harness: cursor
model: auto
prompt: |
Run the reviewability reviewer profile: assess whether `PR-DESCRIPTION.md` explains the big
picture before details, whether the commit history is coherent, and whether the change
should be re-sliced or split. PR-DESCRIPTION.md is a required demo artifact; assess its
presentation without suggesting its removal. Anchor findings to commits and the PR, not
individual code lines. Return at most three concrete actionable comments, one paragraph each. Use
`excellent` for approve with praise, `good` for approve with nits, and `average` or `poor`
only when real work is needed. Write `grade` as a string and `comments` as an array of
strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_sanity_opus:
needs: fix
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Run the deliberately shallow sanity reviewer profile. Flag only glaring performance,
basic-security, or resource-leak problems; stay quiet when nothing is obviously wrong.
Return at most three concrete actionable comments, one paragraph each. Use `excellent` for
approve with praise, `good` for approve with nits, and `average` or `poor` only when real
work is needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_sanity_terra:
needs: fix
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Run the deliberately shallow sanity reviewer profile. Flag only glaring performance,
basic-security, or resource-leak problems; stay quiet when nothing is obviously wrong.
Return at most three concrete actionable comments, one paragraph each. Use `excellent` for
approve with praise, `good` for approve with nits, and `average` or `poor` only when real
work is needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_sanity_cursor:
needs: review_justification_cursor
agent:
harness: cursor
model: auto
prompt: |
Run the deliberately shallow sanity reviewer profile. Flag only glaring performance,
basic-security, or resource-leak problems; stay quiet when nothing is obviously wrong.
Return at most three concrete actionable comments, one paragraph each. Use `excellent` for
approve with praise, `good` for approve with nits, and `average` or `poor` only when real
work is needed. Write `grade` as a string and `comments` as an array of strings.
`PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_testing_opus:
needs: fix
agent:
harness: claude
model: claude-opus-4-8
prompt: |
Run the testing reviewer profile: check whether changed behavior has runnable unit tests or
a committed human-followable verification document, whether those instructions are
sufficient, and whether tooling tears down without leaking resources. Keep verification
evidence in tests, README, or a committed verification document; PR-DESCRIPTION.md is
change narrative only. Return at most three concrete actionable comments, one paragraph
each. Use `excellent` for approve with praise, `good` for approve with nits, and `average`
or `poor` only when real work is needed. Write `grade` as a string and `comments` as an
array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_testing_terra:
needs: fix
agent:
harness: codex
model: gpt-5.6-terra
effort: high
prompt: |
Run the testing reviewer profile: check whether changed behavior has runnable unit tests or
a committed human-followable verification document, whether those instructions are
sufficient, and whether tooling tears down without leaking resources. Keep verification
evidence in tests, README, or a committed verification document; PR-DESCRIPTION.md is
change narrative only. Return at most three concrete actionable comments, one paragraph
each. Use `excellent` for approve with praise, `good` for approve with nits, and `average`
or `poor` only when real work is needed. Write `grade` as a string and `comments` as an
array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
review_testing_cursor:
needs: review_conventions_cursor
agent:
harness: cursor
model: auto
prompt: |
Run the testing reviewer profile: check whether changed behavior has runnable unit tests or
a committed human-followable verification document, whether those instructions are
sufficient, and whether tooling tears down without leaking resources. Keep verification
evidence in tests, README, or a committed verification document; PR-DESCRIPTION.md is
change narrative only. Return at most three concrete actionable comments, one paragraph
each. Use `excellent` for approve with praise, `good` for approve with nits, and `average`
or `poor` only when real work is needed. Write `grade` as a string and `comments` as an
array of strings. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Do not change files or commit.
output:
grade:
type: enum
choices: excellent, good, average, poor
comments:
type: string_list
commits: false
collect:
needs: |-
review_conventions_opus, review_conventions_terra, review_conventions_cursor,
review_justification_opus, review_justification_terra, review_justification_cursor,
review_reviewability_opus, review_reviewability_terra, review_reviewability_cursor,
review_sanity_opus, review_sanity_terra, review_sanity_cursor,
review_testing_opus, review_testing_terra, review_testing_cursor
do-while: decide
agent:
harness: cursor
model: auto
inputs:
GRADE_CONVENTIONS_OPUS: review_conventions_opus.grade
COMMENTS_CONVENTIONS_OPUS: review_conventions_opus.comments
GRADE_CONVENTIONS_TERRA: review_conventions_terra.grade
COMMENTS_CONVENTIONS_TERRA: review_conventions_terra.comments
GRADE_CONVENTIONS_CURSOR: review_conventions_cursor.grade
COMMENTS_CONVENTIONS_CURSOR: review_conventions_cursor.comments
GRADE_JUSTIFICATION_OPUS: review_justification_opus.grade
COMMENTS_JUSTIFICATION_OPUS: review_justification_opus.comments
GRADE_JUSTIFICATION_TERRA: review_justification_terra.grade
COMMENTS_JUSTIFICATION_TERRA: review_justification_terra.comments
GRADE_JUSTIFICATION_CURSOR: review_justification_cursor.grade
COMMENTS_JUSTIFICATION_CURSOR: review_justification_cursor.comments
GRADE_REVIEWABILITY_OPUS: review_reviewability_opus.grade
COMMENTS_REVIEWABILITY_OPUS: review_reviewability_opus.comments
GRADE_REVIEWABILITY_TERRA: review_reviewability_terra.grade
COMMENTS_REVIEWABILITY_TERRA: review_reviewability_terra.comments
GRADE_REVIEWABILITY_CURSOR: review_reviewability_cursor.grade
COMMENTS_REVIEWABILITY_CURSOR: review_reviewability_cursor.comments
GRADE_SANITY_OPUS: review_sanity_opus.grade
COMMENTS_SANITY_OPUS: review_sanity_opus.comments
GRADE_SANITY_TERRA: review_sanity_terra.grade
COMMENTS_SANITY_TERRA: review_sanity_terra.comments
GRADE_SANITY_CURSOR: review_sanity_cursor.grade
COMMENTS_SANITY_CURSOR: review_sanity_cursor.comments
GRADE_TESTING_OPUS: review_testing_opus.grade
COMMENTS_TESTING_OPUS: review_testing_opus.comments
GRADE_TESTING_TERRA: review_testing_terra.grade
COMMENTS_TESTING_TERRA: review_testing_terra.comments
GRADE_TESTING_CURSOR: review_testing_cursor.grade
COMMENTS_TESTING_CURSOR: review_testing_cursor.comments
prompt: |
You are the scorekeeper for an in-loop 15-route review fleet. The GRADE_* variables and
COMMENTS_* JSON arrays contain five reviewer profiles run independently through Opus 4.8, Codex Terra, and Cursor
Auto. Scores: excellent=5, good=4, average=3, poor=2. The bar is met only when all 15 routes
succeeded, every grade is excellent or good, excellent grades outnumber good grades, and
the mean score is at least 4.5. `PR-DESCRIPTION.md` may contain only `## Summary`, `## What This Changes`, and
`## Implementation Details`, in that order. Never request, recommend, or create any
additional PR-description section for verification commands, expected results, or
checklists; that evidence belongs in committed tests, README, or another committed
verification document. Ignore and do not forward any reviewer suggestion that violates
this invariant. Do not change files or commit. Put `met` or `not met` in
`verdict`. Put the complete round report in `feedback`: begin with `Round verdict: met` or
`Round verdict: not met`, then include every profile/route grade and its comments verbatim
in clearly labeled sections. Set `approved` to the boolean result. Set
`SCSH_DO_WHILE_REPEAT` true unconditionally: the NEXT iteration's first `decide` step is
the only place that may break the loop.
output:
SCSH_DO_WHILE_REPEAT:
type: bool
approved:
type: bool
verdict:
type: string
feedback:
type: string
commits: false