PR Unresolved Solutions
Create a scaffold document for unresolved threads, then require the agent to immediately replace placeholders with executable solutions thread-by-thread (without asking for confirmation) and keep checklist states updated while implementing fixes.
Files
- Proposal generator:
scripts/generate_unresolved_solutions.py
- Checklist state sync:
scripts/sync_checklist_status.py
- Resolved section pruner:
scripts/prune_unresolved_solutions.py
- Upstream review thread collector:
../pr-review-checklist/scripts/generate_pr_review_checklists.py
Prerequisites
- Run commands from this skill directory (the directory containing this
SKILL.md). - Set
PYTHONPATHto repo root. - Ensure
.pr/<pr_number>/unresolved_checklist.mdexists. If missing, generate it first.
Commands
- Refresh checklist files from GitHub (optional but recommended):
export PYTHONPATH=/path/to/browseruse_bench
python3 ../pr-review-checklist/scripts/generate_pr_review_checklists.py
- Generate proposal scaffold markdown for unresolved threads (default: current branch PR; fallback: latest
.pr/*):
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/generate_unresolved_solutions.py
The generator only creates scaffolding placeholders for each thread:
Initial Solution ProposalPlanned ChangesValidation
The agent must replace all AGENT_REQUIRED placeholders with concrete content.
Autonomous Execution Policy (Mandatory)
- After running
generate_unresolved_solutions.py, immediately editunresolved_solutions.mdand fill everyAGENT_REQUIREDplaceholder. - Do not ask the user whether to continue this filling step.
- Ask the user only when a thread is truly blocked by missing product direction, missing access, or conflicting requirements.
- If some threads are blocked, continue filling all other threads first, then report only the blocked
TH-*IDs with clear unblock questions.
Overwrite behavior:
- When
--overwriteis used, existing thread proposals inunresolved_solutions.mdare preserved by default (matched byTH-*). - New unresolved threads are scaffold-only.
- Use
--reset-alltogether with--overwriteonly when you intentionally want to discard all existing proposal content.
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/generate_unresolved_solutions.py --overwrite
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/generate_unresolved_solutions.py --overwrite --reset-all
Optional classification overrides:
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/generate_unresolved_solutions.py \
--decision-thread-ids TH-2773815990 TH-2773840027 \
--direct-close-thread-ids TH-2754216760
- After implementing fixes, mark resolved thread IDs in both checklists:
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/sync_checklist_status.py \
--thread-ids TH-2773735433 TH-2780379352 \
--state resolved
- If rollback is needed, revert checkbox state:
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/sync_checklist_status.py \
--thread-ids TH-2773735433 \
--state unresolved
- Remove resolved sections from
unresolved_solutions.mdwithout resetting unresolved proposal content:
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/prune_unresolved_solutions.py --pr-number 122
Optional targeted prune:
export PYTHONPATH=/path/to/browseruse_bench
python3 scripts/prune_unresolved_solutions.py \
--pr-number 122 \
--thread-ids TH-2773840027 TH-2773794870
Workflow
- Refresh
review_checklist.mdandunresolved_checklist.md. - Generate
unresolved_solutions.md. - Agent immediately writes concrete solution content for every thread (no confirmation gate):
- exact file paths/symbols to edit
- concrete change intent and expected behavior impact
- executable validation commands and acceptance criteria
- If the user request includes fixing threads, continue to implement fixes in code/docs; otherwise stop after a complete solutions document is produced.
- After each verified thread fix, run cleanup with default combined mode
1+2:sync_checklist_status.py --state resolvedfor solvedTH-*IDsprune_unresolved_solutions.pyto remove solved sections
- Re-run
generate_pr_review_checklists.pywhen needed to reconcile with latest GitHub thread states.
Quality Bar (Mandatory)
- No generic statements such as "按评论意图修改" or "通过基本验证".
- Each thread proposal must include:
- at least one concrete file path
- at least one concrete change action
- at least one concrete validation command
- Any unresolved
AGENT_REQUIREDplaceholder means the proposal is incomplete.
Classification & Color Rules
- Default thread classification:
outdated=yes-> direct close (red mark)- otherwise -> code/docs change
- Force category with flags:
--decision-thread-ids: mark as "need direction"--direct-close-thread-ids: force direct close
- Output style:
- Summary shows red-highlight count for direct-close threads
- Each direct-close thread includes a red "分类标记" and red "建议处理"