Skip to content

fix(development-pr-workflow): Opus 5 migration fixes - #569

Merged
wkoutre merged 4 commits into
nextfrom
nickkoutrelakos/opus5-development-pr-workflow-fixes
Aug 5, 2026
Merged

fix(development-pr-workflow): Opus 5 migration fixes#569
wkoutre merged 4 commits into
nextfrom
nickkoutrelakos/opus5-development-pr-workflow-fixes

Conversation

@wkoutre

@wkoutre wkoutre commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Applies Opus 5 migration fixes to packages/plugins/development-pr-workflow (39 audit findings). Surgical edits only — no wholesale rewrites, no effortLevel or model: frontmatter changes.

Deltas addressed

Delta 1 — Opus 5 self-verifies; drop mandated verification ceremony

  • agents/stack-splitter.md: the trailing 8-item self-review checklist over just-written output is reframed as upfront constraints on a valid split. The substance (DAG validity, one purpose per PR, tests with implementations) is kept; the post-hoc verification pass is not.
  • skills/update-graphite-stack: removed the optional "invoke refactorer-agent to verify changes maintain quality" second-agent pass.
  • Kept agents/review-executor.md's "run the tests before claiming a fix works" — that constrains claims against reality, not ceremony.

Delta 2 — floors become ceilings, plus when-NOT-to-delegate

  • skills/review-code: the Review Depth table read | Standard | 4 | / | Comprehensive | 8+ | under an Agents column — a quota. Now "up to 4" / "up to 8" with an explicit note that these are ceilings, that only dimensions the diff actually raises should be staffed, and that analysis finishing in a handful of direct tool calls should not get an agent.
  • commands/review-pr.md: the 4-phase / ~11-agent comprehensive pipeline now says up front that it is the maximum staffing for a broad cross-cutting diff, not a roster to complete. Same note added to the standard 4-agent sequence.
  • skills/resolve-pr-issues: the inline-comment-group dispatch path had no concurrency cap while its CI-failure and review-body siblings capped at 3. Added a matching cap of 3, with the reason (more concurrent writers raises the cross-agent file-conflict rate Phase 5 then has to untangle). Mirrored into pr-guide.md's dispatch table.
  • Kept resolve-pr-issues' existing 3-concurrent CI-agent cap and its "orchestrator handles these directly — no subagent needed" routing, and resolve-all-prs' max (default 5).

Delta 3 — coverage-first, filter downstream

  • commands/review-pr.md and skills/review-code: findings sections had no coverage instruction. Both now say to report every genuine finding, mark severity rather than dropping, and record uncertainty on the finding instead of discarding it — with the explicit statement that --focus / --severity filter what is presented, never what is looked for.
  • agents/comment-resolver.md and agents/review-executor.md: both now require reporting on every comment received, including unresolved ones, since an omitted comment reads to the caller as handled.
  • Decorative CRITICAL: / ALL-CAPS emphasis softened in the two Linear commands. The underlying sequencing instructions are unchanged.
  • Kept the --focus / --severity / --scope flags (user-selected, defaulting to all) and "skip nitpicks" where scoped to style tiers, and resolve-pr-issues' blocking: false (changes priority, drops nothing).

Delta 4 — explicit length instructions

  • Added a short length line to the output sections of review-pr, review-code, stack-splitter, comment-resolver, and review-executor. Highest priority on the last two, whose reports land directly in a caller's context.
  • stack-splitter's ~260-line worked example now carries a note that it shows structure, not target length, and the Output Format section carries a concrete budget (~10-15 lines per PR, under ~150 total).

Broken references

Every agent dispatch name was checked against frontmatter name: across all plugins.

  • skills/review-code dispatched 7 agents (style-enforcer, refactorer, code-explainer, security-analyzer, performance-analyzer, test-writer, context-loader) with neither the -agent suffix their frontmatter declares nor the plugin: qualifier they need. All 7 corrected — 6 to development-codebase-tools:*-agent, test-writer to development-productivity:test-writer-agent.
  • commands/review-pr.md dispatched 12 agents with the correct -agent suffix but no plugin qualifier. All qualified, including plan-reviewer-agentdevelopment-planning: and migration-assistant-agentuniswap-integrations:. The allowed-tools Task(subagent_type:agent-orchestrator-agent) entry was qualified too.
  • commands/work-through-pr-comments.md: allowed-tools listed mcp__github__get_pull_request, _comments, and _reviews — all three consolidated into pull_request_read. Replaced, and Step 2 now names the three methods.
  • commands/start-linear-task.md and commands/linear-task-and-pr-from-changes.md: mcp__linear__create_issue does not exist. Verified against the live Linear MCP tool list — the real name is save_issue. The neighbouring get_user, get_issue, list_teams, list_projects, list_issue_labels are all real and were left alone. shared/linear-task-config.md was checked and uses only real names.
  • skills/update-graphite-stack: two references to a pr-issue-resolver skill that does not exist; the skill is resolve-pr-issues.
  • agents/review-executor.md: /agent review-executor-agent is not a slash command; replaced with the real Task(subagent_type: ...) form.
  • agents/stack-splitter.md: await Bash(...) presented as executable; replaced with the actual bash command plus a sentence naming the mcp__nx-mcp__nx_project_details call.
  • CLAUDE.md:30 listed a graphite-stack-updater component that does not exist on disk (the real component is the update-graphite-stack skill).
  • CLAUDE.md:105 claimed every skill has user-invocable: true; grep returns nothing. Replaced with what is actually true, plus the dispatch-name rule.
  • README.md:67 showed /review-pr 123; the command takes a branch or commit range.

Invented numbers

  • agents/stack-splitter.md: removed Estimated total review time: 2-3 hours (vs 3-4 hours...) and Faster review velocity expected. Both sat inside the canonical example output, so they reproduced every run, and the model cannot measure review time.
  • commands/review-pr.md output schema:
    • risk.breakdown 0-10 numeric → qualitative low | medium | high bands, all optional.
    • testQuality.score 0-100 → qualitative strong | adequate | thin | absent.
    • testingReview.coverage → optional, with a required source field naming the command or report the numbers came from. A real coverage run is a legitimate measured input; an estimated percentage is not.
    • performanceReview.complexity → optional, with a required tool field, and a comment stating that an eyeballed cyclomatic number is a fabrication and the field should be omitted instead.
    • benchmark narrowed from "Expected improvement" to "only if an actual benchmark was run".
    • Added a blanket rule above the schema: every numeric field must come from a tool actually run; omit rather than estimate.

Other repo-rule fixes

  • commands/linear-task-and-pr-from-changes.md:308 used git add -A. Replaced with explicit per-file staging plus a git status --short check, and an inline note on why (blanket staging sweeps in untracked secrets and unrelated work).
  • commands/start-linear-task.md:406 documented a --skip-graphite flag absent from that command's own argument table. Corrected to --use-graphite false, which the table does define.

Version bump

packages/plugins/development-pr-workflow/.claude-plugin/plugin.json 2.3.0 → 2.4.0, with the matching row in the root CLAUDE.md. Both files read 2.3.0 before this change, so they were already in agreement — no drift found.

MINOR is the right bump: dispatch names and fan-out caps change behavior, and nothing was removed or renamed.

Findings in the brief that do not exist here

  • agents/pr-creator.md with ~60 lines of fabricated MCP tool names (mcp__git_status, mcp__github_create_pr, mcp__graphite_stack_info). That file lives in packages/plugins/development-planning/agents/, not this plugin. A grep for those three names across this plugin returns nothing. Not fixed here — out of scope.

Decisions (not resolved, need a human call)

  1. agents/stack-splitter.md reviewability-score bands (1-10). Left as-is. In favour of keeping: the bands are a defined rubric, not a model estimate — each tier is anchored to observable inputs (lines changed, number of purposes, test presence, dependency clarity), and lines changed is directly measurable from the diff. In favour of removing: the resulting 1-10 number is presented with false precision ("Reviewability Score: 8/10", "Average reviewability score: 7.8/10"), the boundaries between the anchors are judgment calls, and averaging ordinal scores across PRs to one decimal place is not meaningful. A middle option is keeping the five named tiers (Excellent / Good / Acceptable / Challenging / Difficult) and dropping the numerals.
  2. skills/split-graphite-stack: "Be small enough to review in 15-30 minutes." Left as-is. It reads as a design target for the human author rather than a number the model reports, unlike the stack-splitter estimate that was removed. Flagging it because it is the same shape of claim.

Test plan

Agent dispatch names enumerated from frontmatter (the source used for every correction):

$ find packages/plugins -path '*/agents/*.md' -exec sh -c 'printf "%s -> " "$1"; grep -m1 "^name:" "$1"' _ {} \;
packages/plugins/development-pr-workflow/agents/comment-resolver.md -> name: comment-resolver-agent
packages/plugins/development-pr-workflow/agents/review-executor.md -> name: review-executor-agent
packages/plugins/development-pr-workflow/agents/stack-splitter.md -> name: stack-splitter-agent
packages/plugins/development-productivity/agents/prompt-engineer.md -> name: prompt-engineer-agent
packages/plugins/development-productivity/agents/researcher.md -> name: researcher-agent
packages/plugins/development-productivity/agents/claude-docs-initializer.md -> name: claude-docs-initializer-agent
packages/plugins/development-productivity/agents/test-writer.md -> name: test-writer-agent
packages/plugins/development-productivity/agents/documentation.md -> name: documentation-agent
packages/plugins/development-productivity/agents/agent-tester.md -> name: agent-tester-agent
packages/plugins/development-planning/agents/execute-plan.md -> name: execute-plan-agent
packages/plugins/development-planning/agents/commit-message-generator.md -> name: commit-message-generator-agent
packages/plugins/development-planning/agents/pr-creator.md -> name: pr-creator-agent
packages/plugins/development-planning/agents/planner.md -> name: planner-agent
packages/plugins/development-planning/agents/plan-reviewer.md -> name: plan-reviewer-agent
packages/plugins/uniswap-integrations/agents/cicd-agent.md -> name: cicd-agent
packages/plugins/uniswap-integrations/agents/infrastructure-agent.md -> name: infrastructure-agent
packages/plugins/uniswap-integrations/agents/migration-assistant.md -> name: migration-assistant-agent
packages/plugins/development-codebase-tools/agents/context-loader.md -> name: context-loader-agent
packages/plugins/development-codebase-tools/agents/pattern-learner.md -> name: pattern-learner-agent
packages/plugins/development-codebase-tools/agents/code-explainer.md -> name: code-explainer-agent
packages/plugins/development-codebase-tools/agents/debug-assistant.md -> name: debug-assistant-agent
packages/plugins/development-codebase-tools/agents/performance-analyzer.md -> name: performance-analyzer-agent
packages/plugins/development-codebase-tools/agents/agent-orchestrator.md -> name: agent-orchestrator-agent
packages/plugins/development-codebase-tools/agents/refactorer.md -> name: refactorer-agent
packages/plugins/development-codebase-tools/agents/code-generator.md -> name: code-generator-agent
packages/plugins/development-codebase-tools/agents/style-enforcer.md -> name: style-enforcer-agent
packages/plugins/development-codebase-tools/agents/security-analyzer.md -> name: security-analyzer-agent

Plugin structure validation:

$ node scripts/validate-plugin.cjs packages/plugins/development-pr-workflow
Validating plugin: packages/plugins/development-pr-workflow

  ✓ plugin.json: development-pr-workflow v2.4.0
  ✓ package.json: @uniswap/development-pr-workflow
  ✓ project.json: development-pr-workflow
  ✓ skills/: 6 item(s)
  ✓ agents/: 3 item(s)
  ✓ commands/: 5 item(s)
  ✓ .mcp.json: 1 MCP server(s)

--- Validation Results ---

Validation PASSED

Markdown lint (repo config):

$ bunx markdownlint-cli2 --fix "packages/plugins/development-pr-workflow/**/*.md"
markdownlint-cli2 v0.20.0 (markdownlint v0.40.0)
Linting: 200 file(s)
Summary: 0 error(s)

bunx nx format:write --uncommitted ran clean (no diagnostics beyond node deprecation warnings).

Residual fabricated references, post-fix — the single hit is the new prose warning against the pattern:

$ grep -rn "mcp__linear__create_issue\|mcp__github__get_pull_request_\|graphite-stack-updater\|pr-issue-resolver\|git add -A\|await Bash\|/agent \|skip-graphite\|Estimated total review" packages/plugins/development-pr-workflow
packages/plugins/development-pr-workflow/commands/linear-task-and-pr-from-changes.md:306:Stage the files this task actually changed, named individually. Never `git add -A` or

@wkoutre
wkoutre requested a review from a team as a code owner August 5, 2026 20:10
@vercel

vercel Bot commented Aug 5, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ai-toolkit-slack-oauth-backend Ready Ready Preview Aug 5, 2026 11:27pm

Request Review

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

📚 Documentation Check ✅

Verdict: Passed

The mandatory plugin version bump (2.3.0 → 2.4.0) was made correctly in both plugin.json and the root CLAUDE.md table in the same change. All cross-plugin agent references introduced by the fix (e.g. development-codebase-tools:agent-orchestrator-agent, uniswap-integrations:migration-assistant-agent, development-planning:plan-reviewer-agent) were verified to exist. No stale references to renamed/removed items (old Linear tool name, graphite-stack-updater, pr-issue-resolver, numeric reviewability scores) remain anywhere in the plugin.


PR #569 is a documentation/consistency fix-up pass on the development-pr-workflow plugin (Opus 5 migration cleanup). It corrects several classes of drift between the plugin's markdown and actual system behavior:

  1. Version bump — done correctly. packages/plugins/development-pr-workflow/.claude-plugin/plugin.json bumps 2.3.0 → 2.4.0, and the matching row in root CLAUDE.md's plugin table is updated in the same diff. Verified against the repo: all agent names referenced in plugin.json's agents array match files on disk, and the same is true for skills/commands.
  2. Tool/agent name corrections verified as real. mcp__linear__create_issuemcp__linear__save_issue, and bare agent names (code-explainer-agent, security-analyzer-agent, migration-assistant-agent, etc.) qualified with their owning plugin (development-codebase-tools:, development-productivity:, development-planning:, uniswap-integrations:). I independently grepped each target plugin's agents/ directory and confirmed every referenced agent file actually exists there — no invented or mistyped names.
  3. Stale-reference sweep — clean. Grepped the whole packages/plugins/ tree for the old names this PR retires (linear__create_issue, graphite-stack-updater, pr-issue-resolver, Reviewability Score) and found zero remaining hits outside what the diff already fixed.
  4. Numeric scoring removed for unmeasured claims. Reviewability 1-10 scores, cyclomatic complexity deltas, and coverage percentages in review-pr.md/stack-splitter.md are replaced with qualitative tiers or made conditional on an actual tool run — consistent with the CLAUDE.md guidance against fabricated estimates.
  5. README.md correctly reflects the /review-pr argument semantics (branch/commit-range, not PR number), matching the command's actual argument-hint.

One caveat unrelated to the PR content itself: the local working tree has an uncommitted modification reverting CLAUDE.md's version-table row for development-pr-workflow back to 2.3.0. This is not part of the PR diff (the diff and the commit history both show 2.4.0 landing correctly), and other unrelated files (.node-version, .nvmrc, .npmrc, bunfig.toml, slack-oauth-backend env examples) are also shown deleted in the working tree — this looks like local sandbox/checkout noise, not part of PR #569, and was excluded from this review.

✨ No Documentation Updates Needed

All documentation appears to be up to date with the code changes.


🤖 Generated by Claude Documentation Validator | Mode: suggest

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

● Reviewed · against e845c70 · 2026-08-05 23:31 UTC · 2 reviews · view run ↗

Latest: ✅ approved (2) ← prior: 🚨 changes requested (3)

Note

Approved — two nits in stack-splitter.md's example template.

Corrects broken agent and MCP tool references across the development-pr-workflow plugin (bare agent names → plugin:agent-name, retired GitHub comment tools → mcp__github__pull_request_read), drops fabricated metrics, caps agent fan-out, and replaces git add -A with explicit staging.

Suggestions

  • stack-splitter.md:567 — the example's stack summary says two PRs landed at Challenging, but the per-PR tiers assigned earlier in the same example are Excellent / Good / Acceptable / Acceptable. The block is the agent's canonical output template, so the inconsistency reproduces every run. view inline thread →
  • stack-splitter.md:628 — the reframed constraints drop the PR-size-balance rule while the example stats still present balanced sizes as a benefit; nothing left in the constraints drives it. view inline thread →
Iteration history · 2 reviews
2026-08-05 23:31 UTC · ✅ approved · 2 findings · e845c70 · run ↗
  • packages/plugins/development-pr-workflow/agents/stack-splitter.md:567 — warning · correctness
  • packages/plugins/development-pr-workflow/agents/stack-splitter.md:628 — info · correctness
2026-08-05 20:24 UTC · 🚨 changes requested · 3 findings · 8324cd8 · run ↗
  • packages/plugins/development-pr-workflow/commands/review-pr.md:151 — warning · correctness
  • packages/plugins/development-pr-workflow/commands/linear-task-and-pr-from-changes.md:4 — warning · correctness
  • packages/plugins/development-pr-workflow/commands/review-pr.md:99 — info · security

Tip

Teach the reviewer. React 👍 on findings that helped, 👎 on false positives. Reply to push back or add context — we aggregate this weekly to tune the bot.

Comment @request-claude-review to re-run.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2a911de755

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".


- `stack-splitter-agent` - Requires Graphite for PR stacking
- `graphite-stack-updater` - Requires Graphite for stack management
- `update-graphite-stack` (skill) - Requires Graphite for stack management

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Bump the plugin version for this change

This commit changes files under packages/plugins/development-pr-workflow/, but packages/plugins/development-pr-workflow/.claude-plugin/plugin.json still has 2.3.0 both in this commit and its parent. The docs-check workflow defaults fail_on_missing_version to true and explicitly fails when a plugin is modified without a version bump (.github/workflows/_claude-docs-check.yml:76-80,503-540), so this PR will be blocked and the marketplace will not get a distinct plugin release; please bump development-pr-workflow to 2.3.1 and update the root version table in the same commit.

Useful? React with 👍 / 👎.

Report every genuine finding. Assign each a severity rather than dropping it — do not omit
a finding because it is minor, because you are unsure it is real, or because the list is
getting long. Record uncertainty on the finding itself ("possible", "worth confirming").
The `--focus` and `--severity` flags filter what is *presented*; they never narrow what is

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ warning · correctness--severity is defined nowhere: this file declares only --depth, --suggest-fixes, --check-coverage, --focus, and --baseline (lines 11-16), and review-code/SKILL.md:141 carries the same dangling reference against its own input list. A user passing --severity high gets it silently ignored; this is the same broken-reference class the PR removes. Either define the flag or drop it from both files.

description: Take local changes, create a Linear task, create a branch (optionally in a worktree), commit, and publish a PR
argument-hint: [--team <id>] [--trunk <branch>] [--create-worktree] [--use-graphite true/false]
allowed-tools: Bash(*), Read(*), Write(*), AskUserQuestion(*), mcp__graphite__run_gt_cmd(*), mcp__github__create_pull_request(*), mcp__linear__create_issue(*), mcp__linear__get_user(*), mcp__linear__list_teams(*), mcp__linear__list_projects(*), mcp__linear__list_issue_labels(*)
allowed-tools: Bash(*), Read(*), Write(*), AskUserQuestion(*), mcp__graphite__run_gt_cmd(*), mcp__github__create_pull_request(*), mcp__linear__save_issue(*), mcp__linear__get_user(*), mcp__linear__list_teams(*), mcp__linear__list_projects(*), mcp__linear__list_issue_labels(*)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ warning · correctnessmcp__linear__save_issue has no corroboration anywhere in the repo; all four occurrences are introduced here, and every sibling Linear tool on this line uses the hosted server's canonical names, where the create/update pair is create_issue/update_issue. If the name is wrong, /start-linear-task and /linear-task-and-pr-from-changes fail at task creation and allowed-tools stops permitting the tool that exists. Verify against the live mcp.linear.app tool list before merge.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Leaving this as save_issue. I checked it against the live server rather than the repo, and the name is correct.

Which server is in play: packages/plugins/uniswap-integrations/.mcp.json declares Linear as {"type": "http", "url": "https://mcp.linear.app/mcp"} — Linear's official hosted server.

Querying that server's actual tool list, save_issue is there, described verbatim as:

Create or update a Linear issue. If id is provided, updates the existing issue; otherwise creates a new one. When creating, title and team are required.

There is no create_issue and no update_issue on that server. The only create_* issue-adjacent tools are create_issue_label and create_initiative_label. The server uses a consistent save_* family throughout: save_issue, save_comment, save_project, save_document, save_initiative, save_milestone.

So the premise is inverted: reverting to create_issue would break both Linear commands at task creation, which is the exact failure this finding was trying to prevent.

The "no corroboration anywhere in the repo" observation is accurate but not decisive here — the repo isn't the authority on a hosted server's tool surface, and these four occurrences are the first uses of the create/update tool in this plugin. Worth noting there IS stale naming elsewhere: packages/plugins/uniswap-integrations/skills/refine-linear-task/SKILL.md:3 still grants mcp__linear__linear_search_issues, linear_update_issue, and linear_add_comment, none of which exist on the hosted server either. That looks like a real bug, but it's a different plugin and out of scope for this PR.

The other three findings were correct and are addressed in e845c70.


The pipeline below is the **maximum** staffing for a broad, cross-cutting diff — not a
roster to complete. Skip any phase the diff does not raise, and drop individual agents
within a phase for the same reason: a docs-only change needs neither the security nor the

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 info · security — "docs-only" is the wrong example for skipping the security pass: in this plugin, markdown frontmatter carries the allowed-tools capability grants (this file grants Task(subagent_type:*); start-linear-task.md:4 grants Bash(*)). Skipping on "no code, config, or capability grants changed" keeps the fan-out reduction without the misclassification — same wording applies at skills/review-code/SKILL.md:48.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

⚠️ Changes requested — see full review in the sticky comment ↑

wkoutre and others added 4 commits August 5, 2026 16:21
…tion ceilings in review paths

Opus 5 migration, deltas 2/3/4:

- review-code: agent quota table -> ceilings with a when-not-to-delegate rule;
  all 7 dispatched agents were missing both the `-agent` suffix and the
  `plugin:` qualifier they need (all live in sibling plugins)
- review-pr: same plugin qualification for all 12 dispatched agents; the
  4-phase comprehensive pipeline now reads as maximum staffing, not a roster
- review-pr output schema: risk.breakdown 0-10 and testQuality.score 0-100
  become qualitative bands; coverage and cyclomatic complexity become optional
  and require a cited tool run
- both: added coverage-first findings instructions and output length guidance
- CLAUDE.md: `graphite-stack-updater` does not exist on disk; the false
  "all skills have user-invocable: true" claim removed
- README: `/review-pr 123` takes a branch or commit range, not a PR number

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…t, fix retired tool names

Opus 5 migration, deltas 1/2/3/4:

- stack-splitter: removed "Estimated total review time: 2-3 hours" and
  "faster review velocity expected" from the canonical example (both
  reproduce every run and neither is measurable); trailing 8-item self-review
  checklist reframed as upfront constraints on a valid split; `await Bash(...)`
  replaced with the real bash + MCP call; output length budget added
- resolve-pr-issues: inline-comment-group dispatch now caps at 3 concurrent
  agents, matching its CI-failure and review-body siblings
- review-executor: `/agent review-executor-agent` is not a slash command;
  replaced with the real Task dispatch form
- work-through-pr-comments: get_pull_request / _comments / _reviews were
  consolidated into mcp__github__pull_request_read
- comment-resolver, review-executor: report length caps plus coverage
  instructions, since both reports land in a caller's context

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…add -A, bump to 2.4.0

Opus 5 migration, remaining broken references plus the mandatory version bump:

- start-linear-task, linear-task-and-pr-from-changes: `mcp__linear__create_issue`
  does not exist. Verified against the live Linear MCP tool list: the real name
  is `save_issue`. `get_user`, `get_issue`, `list_teams`, `list_projects` and
  `list_issue_labels` alongside it are all real and left alone
- linear-task-and-pr-from-changes: `git add -A` replaced with explicit per-file
  staging, with the reason inline so it does not get reverted
- start-linear-task: the `--skip-graphite` example flag is not in the command's
  own argument table; corrected to `--use-graphite false`
- update-graphite-stack: two references to a `pr-issue-resolver` skill that does
  not exist (the skill is `resolve-pr-issues`); removed the optional
  refactorer-agent "verify changes maintain quality" follow-up pass
- pr-guide: concurrency cap on the inline-comment path, matching SKILL.md
- both Linear commands: decorative CRITICAL/ALL-CAPS emphasis softened, wording
  otherwise unchanged
- plugin.json 2.3.0 -> 2.4.0 and the matching root CLAUDE.md row. Both read
  2.3.0 before this change, so they were already in agreement

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
… skip heuristic, de-numeralize reviewability

- Remove references to a `--severity` flag that review-pr.md never defines in its
  Inputs section. An undefined flag is silently ignored when passed, so the guidance
  described a control that does nothing. Both review-pr.md and review-code/SKILL.md
  now phrase presentation-time filtering without naming a flag.

- Replace the "docs-only change needs no security pass" heuristic with "no code,
  config, or capability grants changed". In this repo markdown frontmatter carries
  `allowed-tools` grants, so a docs-only diff can still change what a component is
  permitted to do.

- Keep the five reviewability tiers in stack-splitter.md and their observable anchors,
  but drop the 1-10 numerals and the averaged aggregate. Averaging ordinal tiers to
  one decimal manufactures precision the judgement does not have. Updated every
  downstream consumer: the per-PR output field, the example outputs in both
  stack-splitter.md and split-graphite-stack/SKILL.md, the stack-stats aggregate, and
  the "no PR scores below 4" constraint (now "no PR lands in the Difficult tier").

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@wkoutre
wkoutre force-pushed the nickkoutrelakos/opus5-development-pr-workflow-fixes branch from 8324cd8 to e845c70 Compare August 5, 2026 23:26
1. PR #3 mixed CRUD + rate limiting
2. PR #4 mixed new UI + major refactor
3. Average reviewability score: 6.5/10
3. Two PRs landed at Challenging, the rest at Acceptable

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ warning · correctness — "Two PRs landed at Challenging, the rest at Acceptable" contradicts the tiers this same example assigns: PR #1 is Excellent (line 391), #2 Good (431), #3 and #4 Acceptable (472, 516). No PR lands at Challenging. This block is the agent's canonical output template, so it reproduces every run and teaches the model to emit a stack summary that disagrees with its own per-PR tiers.

Suggested change
3. Two PRs landed at Challenging, the rest at Acceptable
3. Two PRs mixed concerns, dragging the stack down to Acceptable at the bottom

- [ ] No PR is trivially small (< 50 lines) unless it's purely foundational
- Dependencies must form a valid DAG — a cycle means the split boundary is wrong
- Each PR has one clear primary purpose
- No PR lands in the Difficult tier; 2-6 PRs total is the usual range

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 info · correctness — the reframed constraint list drops "PR sizes are relatively balanced," which isn't among the removals the PR description names. The example's stats section still touts "Average PR size: ~350 lines (reduced from ~540)" (line 557) as a benefit, with nothing left in the constraints to drive it.

@github-actions
github-actions Bot dismissed their stale review August 5, 2026 23:31

Superseded by new review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Approved — see full review in the sticky comment ↑

@wkoutre
wkoutre merged commit a4555f2 into next Aug 5, 2026
25 checks passed
@wkoutre
wkoutre deleted the nickkoutrelakos/opus5-development-pr-workflow-fixes branch August 5, 2026 23:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant