Parley
Preferred (script-orchestrated):
SKILL_ROOT="<absolute-path-to-folder-containing-this-SKILL.md>"
SCRUTINY_BIN="$(bash "${SKILL_ROOT}/scripts/ensure-bin.sh")"
"$SCRUTINY_BIN" parley [--pr <url|number>]
Fetches unresolved review threads (GraphQL), asks members / evangelists /
spawn mode, runs fix agents, host commits + pushes, then posts a reply under
each thread via addPullRequestReviewThreadReply.
Sibling of /scrutiny and /forge (same binary, ~/.scrutiny/config.toml).
Usage
/parley— current branch PR/parley <PR-URL>— specified PR/parley <PR-number>— specified PR when unambiguous
Binary
Skill root = folder containing this SKILL.md.
SKILL_ROOT="<absolute-path-to-folder-containing-this-SKILL.md>"
SCRUTINY_BIN="$(bash "${SKILL_ROOT}/scripts/ensure-bin.sh")"
Config: ~/.scrutiny/config.toml → root headless, [parley] (default_members,
default_verifiers, default_evangelists).
Artifacts: <repo>/.scrutiny/<pr>/parley-comments.json, parley-plan.json,
parley-fixes.json, parley-reply.json, parley-session.json.
Knobs
| Prompt | Default | Rule |
|---|---|---|
| Team members | 1 | Cannot exceed unresolved comment count |
| Verifiers (check fixes) | 1 | Both modes; runs after fixes, before evangelist |
| Evangelists (verify after) | 1 | Isolated mode only for separate post-pass |
| Spawn mode | isolated |
isolated | team |
Team mode: lead embeds verify when evangelists > 0 (no second wave).
Verifier (flag-only): confirms each addressed:true fix truly resolves its
comment (else flips addressed:false), and each addressed:false reply is
consistent. Writes verified/verification into parley-fixes.json; does not
edit source code. N>1 verifiers each check all threads (redundant).
Headless vs windows
Config root headless (default true). Set headless = false to open each
agent in a visible terminal window (claude --permission-mode auto, cursor
--force), on the current surface: tmux/zellij (new session/pane), macOS
Terminal/iTerm2 (new window). Agents write fixes to disk; the host polls a
per-agent done sentinel. Codex or unsupported surfaces (plain SSH/CI) fall
back to headless.
Hard rules
- Agents must not
git commit/push/ghreply — host owns ship + reply - Every thread gets a
parley-fixes.jsonentry (comment_id= thread idPRRT_…) - Replies use GraphQL
addPullRequestReviewThreadReplywith that thread id - No auto-resolve in v1
Push failure recovery
Host runs the repo pre-push checks quietly. On failure: cheap parley-prepush-plan
agent splits the log into scoped chunks (model from [agent_models].parley_prepush_plan,
or family [agent_models].parley; default xs), then one parley-push-fix#N per chunk (parallel when file sets
disjoint). Host commits fix: repair pre-push failures, re-checks (up to
[parley].prepush_fix_max_loops). Auth/remote push errors skip agents.
Discrete steps (IDE chaining)
COMMENTS="$("$SCRUTINY_BIN" parley-fetch --cwd <repo> [--pr <n>])"
PLAN="$("$SCRUTINY_BIN" parley-plan-write --comments "$COMMENTS" --from-json '{...}')"
# … agents update parley-fixes.json …
"$SCRUTINY_BIN" parley-reply [--fixes <parley-fixes.json>] --cwd <repo>
Prefer jump straight to "$SCRUTINY_BIN" parley.