Patch 1.0.10#140
Open
hanatyan128 wants to merge 61 commits into
Open
Conversation
Move agent definitions to .claude/agents/ as standalone custom agents and slim CLAUDE.md to reference them. Add lua-sensei for OBS Lua Script, and tighten review-rounds exclusion rule to require 2+ past rejections. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move review-rounds, parallel-review, review-respond, review-resolve
from .claude/commands/ to .claude/skills/{name}/SKILL.md.
Also restructure review workflow to respect subagent nesting
prohibition: the orchestrator now launches reviewers and performs
fixes directly, delegating only triage and verification to
subagents. Report format switches from tables to sections for
richer finding descriptions.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Restructure Step 2 to split triage from fixes: a dedicated subagent handles triage and review document editing in a separate context, then per-finding fixes are delegated to specialist subagents. Remove cross-round deduplication to avoid bias, enforce a strict max-rounds stop, and clarify role separation between orchestrator and subagents. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
List explicit categories that justify marking a finding as Won't Fix (out-of-scope diffs, pre-existing bugs, technically incorrect findings, purpose-compatible behavior, preference-only refactors), and require flagging Critical/Major cases for a follow-up PR. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Step 2.6 now only performs the max-rounds check. Move the --confirm-round user gate to the end of Step 2.5 where the unresolved count is naturally known, and note that the round-exit decision by absence of Will Fix findings is already handled in Step 2.2. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- review-rounds: Rephrase Step 2.6 as positive conditions to proceed to the next round (max-rounds not reached AND at least one fix applied). - parallel-review: Emit empty severity sections with a "No findings" body instead of omitting them. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…workflow Eliminate cross-skill duplication so each concept (reviewer roster, fix prompts, triage rules, status format) has a single source of truth. Replace [Action Required]/[No Action Needed] action lines with append-only Status lines (Will Fix → Fixed, Won't Fix), and let review-rounds reuse the parallel-review and review-respond leader roles via overrides instead of inlining their bodies.
…viewers Reviewers no longer rerun git diff/log/show themselves. The leader fetches the diff in Step 1 and embeds it in each reviewer prompt (or saves it to an OS temp file when it exceeds 1,000 lines, with the path passed instead). A new Step 4 cleans up the temp file after report integration.
Specialist subagents now estimate fix cost and decide Maintain / Downgrade / Alternative for each Will Fix to gate diffusion-prone fixes. Judgment lines are split into Triage / Estimate / Status prefixes with emoji markers.
…ensitive collisions
Step 1 returns by_assignee instead of writing findings.json; Step 2 launches one Sub per specialist that batch-verifies its assigned ids. review-rounds SKILL and the sequencer program are updated to match. Also trim redundant preambles and chat-context-dependent wording from the review-resolve SKILL and sequencer prompts per .claude/rules/prompt.md.
…ce in parallel-review SKILL
…nts by assignee - Merge the parsing sub-agent into the triage sub-agent (drop findings.json). - Group estimate and fix sub-agents by assignee for parallel batched processing. - Add a Sub-Agent Prompt Completeness directive to prevent prompt omission. - Renumber steps (1-7 -> 1-6) and propagate to review-rounds and review_rounds.py.
…ate_id verification - Move launch prompts for parallel-review / review-respond / review-resolve / review-rounds sub-agents into templates/*.md, each carrying a frontmatter template_id UUID - Have leaders pass only the template path + variables + round-specific overrides; require sub-agents to return template_id and verify against the per-step UUID - Strengthen Read directive (Read template before any other action) to suppress prompt compression on parallel launches - Specify subagent_type=general-purpose for review-respond triage - Consolidate launch-prompt-completeness rules into rules/sub-agent.md - Align review_rounds.py final-report instruction with the same pattern; renumber Step labels to match the SKILL (2.1-2.5 / Step 3)
…alyze/format-build sub-agents through it - Add .claude/agents/review-helper.md with model: sonnet and a narrow allowed-tools list (no broad pwsh:*; only pwsh ./build.ps1:* for the project build script) - Replace all SKILL-side model="sonnet" specifications with subagent_type="review-helper" launches in parallel-review / review-respond / review-resolve / review-rounds - Update review-rounds § Sub-Agent Usage Rules so model selection is fully delegated to agent definitions; SKILLs no longer mention model="..." - Align review_rounds.py _TPL_FINAL_REPORT with the new review-helper invocation form
…eview-rounds SKILLs Build / format commands run inside review-helper Sub, not at the leader level. The wildcard pwsh permission allowed arbitrary 'pwsh -Command' execution from the leader, which is unnecessary and overly broad. The review-helper agent retains a narrow 'Bash(pwsh ./build.ps1:*)' for the project build script.
Mirrors four upstream changes: - Specify build-invocation forms and accept Windows PowerShell in review-helper. Pin pwsh ./build.ps1 / powershell ./build.ps1 forms on Windows, mandate `>` redirection for log capture, and forbid `-Command` and `tee` / `Tee-Object`. - Bundle the final-report compile prompt next to the sequencer .py (mirror of final-report-format.md), and exclude future-recommendation candidates whose same-location finding ended up Fixed in a later round. - Pass previous-round doc paths to the triage sub-agent so findings matching prior-round Fixed / Won't Fix / Downgrade verdicts are treated as Won't Fix. - Render future-recommendation findings as full-text subsections (one subsection per finding, full text quoted from the source review document) in place of the previous table.
Mirrors six upstream changes:
- Drop the PowerShell wrapper from build verification. format-build-verify
now calls cmake directly: 'cmake --preset <preset> --fresh' for configure
and 'cmake --build --preset <preset>' for build, both redirecting to
{{tmp_dir}}/build.log. Compound commands and tee piping are forbidden.
--fresh is mandatory to avoid stale CMakeCache.txt mismatches when
switching presets or toolchains.
- Drop Bash(pwsh ./build.ps1:*) / Bash(powershell ./build.ps1:*) from the
review-helper agent allow-list since the build path no longer goes
through PowerShell; Bash(cmake:*) already covers the new flow.
- Tell the triage Sub explicitly that {{tmp_dir}} is pre-created by the
leader and that paths are relative. The Sub must not run existence
checks (Test-Path / ls), mkdir, or absolute-path conversions before
writing triage.json.
- Inline the verification logic into review-resolve/templates/verify.md so
the verify Sub has the comment.md / document.md discipline checks
in-prompt rather than referencing SKILL.md. The duplicated section is
removed from SKILL.md.
- Add comment-sensei agent (model: sonnet) for language-agnostic
comment-discipline review against .claude/rules/comment.md and FIXME /
TODO usage. Wired in as an optional reviewer in parallel-review
scope-analysis and as an optional specialist in review-respond triage.
The _skip suffix in analyze.md and verify.md had inverted semantics. In review-respond's triage.md, _skip stages (wontfix_skip / downgrade_skip / fixed_skip) are correctly skipped from triage. In review-resolve's analyze.md, the same names were applied even though verify.md treats those stages as the *primary* verification targets. The LLM, reading the same _skip suffix, occasionally interpreted them as "skip from output" semantics, dropping Status: 🟢 Fixed findings out of by_assignee with empty assignee.
by_stage was never actually used downstream: SKILL.md / verify.md / compile.md never reference stage names (compile categorizes by outcome; verify branches on the trailing field). by_assignee dispatch also doesn't use stage names.
Drop stage classification from analyze.md entirely and pin its responsibility to "determine assignee per finding". triage.md (review-respond) is left as-is since stage classification there is essential to its pending_triage / feedback branch logic.
- analyze.md: remove the 7-rule stage classification, drop by_stage from the return value, add explicit "include all findings in by_assignee regardless of METADATA marker state", and pin the final fallback to cpp-sensei when Reviewers is empty.
- SKILL.md: update the Step 1 return-value spec from {total, by_stage, by_assignee, template_id} to {total, by_assignee, template_id}.
Step 1 now requires a concrete file:line plan and the JSON output carries it in a new fix_plan field, so cost / future / decision reflect the actual planned edits.
…iew format rules
- review-respond/resolve compile sub-agents now write events.jsonl to
{tmp_dir}/events.jsonl so the leader's bulk rm-tmp.sh cleans it up.
Drop the now-unused events_path return value and launch variable.
- parallel-review adds --output option with a .claude/tmp default for
{final_doc_path}, unifies the empty-document path variable to
{final_doc_path}, and moves the format rules from SKILL.md into
aggregator.md so the aggregator no longer reads SKILL.md.
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.
Changes