refactor(reviewing-prs): make skill the worker protocol - #14
Merged
Conversation
5 tasks
… tail Adversarial review of the entrypoint restructure found two defects the file-based protocol introduced and one doc drift: - The bootstrap told the worker to 'Use doperpowers:reviewing-prs' without pinning where the protocol resolves from. In the detached review worktree the workspace .agents/skills is PR-controlled, so a PR could ship a same-named skill replacing the merge rubric. The bootstrap now binds SKILL_FILE (dispatcher-owned absolute path), instructs the worker to open it unconditionally, and forbids workspace resolution. - SKILL.md ended with unrendered '---- PR brief ----' template sections that nothing renders (dispatch renders the bootstrap, not SKILL.md). Removed; the protocol now points at the dispatch prompt for briefs and manifests. - operation-manual.md still described the pre-#12 self-merge clause ('only low findings'); it now matches the protocol's non-blocker wording. Regression asserts pin the SKILL_FILE binding, the spoofing rejection, the tail's absence, and the manual wording.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Who is submitting this PR? (required)
claude-opus-4-8)Installed plugin inventory
agent-harness-workspace@agent-harness0.1.0 (project, disabled)agent-harness@agent-harness0.2.0 (user, disabled)agent-sdk-dev@claude-plugins-officialunknown (user, enabled)chrome-devtools-mcp@claude-plugins-official1.5.0 (user, disabled)claude-code-setup@claude-plugins-official1.0.0 (user, enabled)claude-md-management@claude-plugins-official1.0.0 (user, enabled)cloud-sql-postgresql@claude-plugins-official0.4.0 (project, disabled)cloudflare@claude-plugins-official1.0.0 (user, disabled)code-modernization@claude-plugins-officialunknown (local, disabled)code-review@claude-plugins-officialunknown (user, disabled)code-simplifier@claude-plugins-official1.0.0 (user, enabled)codex@openai-codex1.0.6 (user, enabled)commit-commands@claude-plugins-officialunknown (project, disabled)context7@claude-plugins-officialunknown (local, enabled)context7@claude-plugins-officialunknown (user, enabled)desktop-commander@claude-plugins-official0.2.0 (user, disabled)discord@claude-plugins-official0.0.4 (local, disabled)doperpowers@doperpowers7.17.0 (user, enabled)explanatory-output-style@claude-plugins-official1.0.0 (user, enabled)feature-dev@claude-plugins-officialunknown (local, disabled)firecrawl@claude-plugins-official1.0.9 (user, disabled)frontend-design@claude-plugins-officialunknown (user, enabled)learning-output-style@claude-plugins-official1.0.0 (user, disabled)linear@claude-plugins-officialunknown (project, disabled)mcp-server-dev@claude-plugins-officialunknown (user, enabled)microsoft-docs@claude-plugins-official0.3.1 (user, disabled)playground@claude-plugins-officialunknown (project, disabled)plugin-dev@claude-plugins-officialunknown (user, enabled)pr-review-toolkit@claude-plugins-officialunknown (user, disabled)pyright-lsp@claude-plugins-official1.0.0 (user, enabled)remember@claude-plugins-official0.8.3 (user, enabled)rust-analyzer-lsp@claude-plugins-official1.0.0 (user, enabled)security-guidance@claude-plugins-official2.0.6 (user, enabled)skill-creator@claude-plugins-officialunknown (user, enabled)sourcegraph@claude-plugins-official0.1.0 (user, disabled)supabase@claude-plugins-official0.1.12 (user, enabled)typescript-lsp@claude-plugins-official1.0.0 (user, enabled)What problem are you trying to solve?
The
reviewing-prsskill entrypoint served the wrong primary audience.SKILL.mdcontained the setup and operations manual, while dispatched review workers bypassed the skill and received a separatereferences/review-worker-protocol.mdtemplate. That inverted the intended skill boundary: invokingdoperpowers:reviewing-prsdid not load the review worker's operative protocol.This was identified while tracing where finding routing, tech-debt parking, decision-discipline review, self-merge, and
confident-readyescalation actually lived. The protocol content itself was correct; its placement and loading path were not.What does this PR change?
SKILL.mdis now the canonical Review Worker Protocol, and the former operator-oriented skill body lives inreferences/operation-manual.md.review-dispatch.shrenders a thin per-PR bootstrap that explicitly invokesdoperpowers:reviewing-prsand supplies every dynamic placeholder binding, while preserving the protocol text byte-for-byte.Tests and living documentation now enforce and describe that boundary.
Is this change appropriate for the core library?
Yes. This restructures the core autonomous review loop's skill entrypoint and applies equally to every adopting repository and both supported worker species. It adds no project-specific configuration or dependency.
What alternatives did you consider?
SKILL.mdverbatim into every spawn prompt. Better file ownership, but the worker would still bypass skill invocation and static doctrine would still be copied into every prompt.Does this PR contain multiple unrelated changes?
No. The dispatcher, tests, issue-tracker cross-reference, and living-spec notes all change only to support the single skill-entrypoint restructuring.
Existing PRs
PR #9 introduced the native review engine and current worker protocol behavior. It does not address the skill-entrypoint/operator-manual inversion; this PR preserves #9's engine and policy unchanged.
Environment tested
claude-opus-4-8New harness support (required if this PR adds a new harness)
Not applicable. No new harness is added.
Evaluation
SKILL.mdlacked the worker protocol and the dispatcher bypassed the skill entrypoint.reviewing-prsdispatcher, review-engine, and land-dispatch suites pass; implementing-ticket protocol invariants and Codex sync regressions pass; all changed shell files pass shell lint.SKILL.mdexactly equalsorigin/main's formerreview-worker-protocol.md; the operation manual exactly equals the former skill body except for the required protocol-location row.Rigor
doperpowers:writing-skillsand followed a RED/GREEN structure test before modifying the skill layoutorigin/mainenforces thisIndependent reviewer delegation was stopped after the native code-review path began abnormal recursive fan-out (43+ subagents). No result from that runaway review was relied upon; verification above is from direct commands and repository tests.
Human review
This PR is opened as a draft specifically to provide the complete diff for that review. Do not mark ready or merge until this box can be checked truthfully.