TUI Code Review Arguments - : Spawn specialized subagents per technology area - Path: Target directory (default: current working directory) Gates (sequence) Advance only when each pass condition is true (reduces scope drift and unsubstantiated blocking claims): | Gate | Pass condition | |------|----------------| | G1 — Scope | Step 1 produced a concrete list of target paths (from the git command or an explicit user path). If the list is empty, you stopped for scope clarification or recorded an agreed non-git scope (e.g. single file/dir) before reviewing. | | G2 — Skills before review | , , an…

\n```\n\n## Step 2: Detect Technologies\n\n```bash\n# Detect BubbleTea (required for TUI review)\ngrep -r \"charmbracelet/bubbletea\" --include=\"*.go\" -l | head -3\n\n# Detect Lipgloss styling\ngrep -r \"charmbracelet/lipgloss\\|lipgloss\\.Style\" --include=\"*.go\" -l | head -3\n\n# Detect Bubbles components\ngrep -r \"charmbracelet/bubbles\\|list\\.Model\\|textinput\\.Model\\|viewport\\.Model\" --include=\"*.go\" -l | head -3\n\n# Detect Wish SSH server\ngrep -r \"charmbracelet/wish\\|ssh\\.Session\" --include=\"*.go\" -l | head -3\n\n# Check for test files\ngit diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '_test\\.go

TUI Code Review Arguments - : Spawn specialized subagents per technology area - Path: Target directory (default: current working directory) Gates (sequence) Advance only when each pass condition is true (reduces scope drift and unsubstantiated blocking claims): | Gate | Pass condition | |------|----------------| | G1 — Scope | Step 1 produced a concrete list of target paths (from the git command or an explicit user path). If the list is empty, you stopped for scope clarification or recorded an agreed non-git scope (e.g. single file/dir) before reviewing. | | G2 — Skills before review | , , an…

\n```\n\n## Step 3: Load Verification Protocol\n\nLoad `beagle-go:review-verification-protocol` skill and keep its checklist in mind throughout the review.\n\n## Step 4: Load Skills\n\nUse the `Skill` tool to load each applicable skill (e.g., `Skill(skill: \"beagle-go:go-code-review\")`).\n\n**Always load:**\n- `beagle-go:go-code-review`\n- `beagle-go:bubbletea-code-review`\n\n**Conditionally load based on detection:**\n\n| Condition | Skill |\n|-----------|-------|\n| Test files changed | `beagle-go:go-testing-code-review` |\n| Wish SSH detected | `beagle-go:wish-ssh-code-review` |\n\n## Step 5: Review Focus Areas\n\n### Model/Update/View (Elm Architecture)\n\n- [ ] Model is immutable (Update returns new model)\n- [ ] Init returns proper initial command\n- [ ] Update handles all message types\n- [ ] View is pure function (no side effects)\n- [ ] tea.Quit used correctly for exit\n\n### Lipgloss Styling\n\n- [ ] Styles defined once at package level\n- [ ] Styles not created in View function\n- [ ] Colors use AdaptiveColor for light/dark themes\n- [ ] Layout responds to WindowSizeMsg\n\n### Component Composition\n\n- [ ] Sub-component updates propagated\n- [ ] WindowSizeMsg passed to resizable components\n- [ ] Focus management for multiple components\n- [ ] Clear state machine for view transitions\n\n### SSH Server (if applicable)\n\n- [ ] Host keys persisted\n- [ ] Graceful shutdown implemented\n- [ ] PTY window size passed to TUI\n- [ ] Per-session Lipgloss renderer\n\n## Step 6: Review\n\n**Sequential (default):**\n1. Load applicable skills\n2. Review Go code quality\n3. Review BubbleTea patterns (Model/Update/View)\n4. Review Lipgloss styling\n5. Review component composition\n6. Review SSH server (if applicable)\n7. Consolidate findings\n\n**Parallel (--parallel flag):**\n1. Detect all technologies upfront\n2. Spawn subagents for: Go quality, BubbleTea, SSH\n3. Wait for all agents\n4. Consolidate findings\n\n## Step 7: Verify Findings\n\nBefore reporting any issue:\n1. Re-read the actual code (not just diff context)\n2. For \"unused\" claims - did you search all references?\n3. For \"missing\" claims - did you check framework/parent handling?\n4. For syntax issues - did you verify against current version docs?\n5. Remove any findings that are style preferences, not actual issues\n\n## Step 8: Review Convergence\n\n### Single-Pass Completeness\n\nYou MUST report ALL issues across ALL categories (style, logic, types, tests, security, performance) in a single review pass. Do not hold back issues for later rounds.\n\nBefore submitting findings, ask yourself:\n- \"If all my recommended fixes are applied, will I find NEW issues in the fixed code?\"\n- \"Am I requesting new code (tests, types, modules) that will itself need review?\"\n\nIf yes to either: include those anticipated downstream issues NOW, in this review, so the author can address everything at once.\n\n### Scope Rules\n\n- Review ONLY the code in the diff and directly related existing code\n- Do NOT request new features, test infrastructure, or architectural changes that didn't exist before the diff\n- If test coverage is missing, flag it as ONE Minor issue (\"Missing test coverage for X, Y, Z\") — do NOT specify implementation details like mock libraries, behaviour extraction, or dependency injection patterns that would introduce substantial new code\n- Typespecs, documentation, and naming issues are Minor unless they affect public API contracts\n- Do NOT request adding new dependencies (e.g. Mox, testing libraries, linter plugins)\n\n### Fix Complexity Budget\n\nFixes to existing code should be flagged at their real severity regardless of size.\n\nHowever, requests for **net-new code that didn't exist before the diff** must be classified as Informational:\n- Adding a new dependency (e.g. Mox, a linter plugin)\n- Creating entirely new modules, files, or test suites\n- Extracting new behaviours, protocols, or abstractions\n\nThese are improvement suggestions for the author to consider in future work, not review blockers.\n\n### Iteration Policy\n\nIf this is a re-review after fixes were applied:\n- ONLY verify that previously flagged issues were addressed correctly\n- Do NOT introduce new findings unrelated to the previous review's issues\n- Accept Minor/Nice-to-Have issues that weren't fixed — do not re-flag them\n- The goal of re-review is VERIFICATION, not discovery\n\n## Output Format\n\n```markdown\n## Review Summary\n\n[1-2 sentence overview of findings]\n\n## Issues\n\n### Critical (Blocking)\n\n1. [FILE:LINE] ISSUE_TITLE\n - Issue: Description of what's wrong\n - Why: Why this matters (UI freeze, crash, resource leak)\n - Fix: Specific recommended fix\n\n### Major (Should Fix)\n\n2. [FILE:LINE] ISSUE_TITLE\n - Issue: ...\n - Why: ...\n - Fix: ...\n\n### Minor (Nice to Have)\n\nN. [FILE:LINE] ISSUE_TITLE\n - Issue: ...\n - Why: ...\n - Fix: ...\n\n### Informational (For Awareness)\n\nN. [FILE:LINE] SUGGESTION_TITLE\n - Suggestion: ...\n - Rationale: ...\n\n## Good Patterns\n\n- [FILE:LINE] Pattern description (preserve this)\n\n## Verdict\n\nReady: Yes | No | With fixes 1-N (Critical/Major only; Minor items are acceptable)\nRationale: [1-2 sentences]\n```\n\n## Post-Fix Verification\n\nAfter fixes are applied, run:\n\n```bash\ngo build ./...\ngo vet ./...\ngolangci-lint run\ngo test -v -race ./...\n```\n\nAll checks must pass before approval.\n\n## Rules\n\n- Load skills BEFORE reviewing (not after)\n- Number every issue sequentially (1, 2, 3...)\n- Include FILE:LINE for each issue\n- Separate Issue/Why/Fix clearly\n- Categorize by actual severity\n- Pay special attention to:\n - Blocking operations in Update (freezes UI)\n - Style creation in View (performance)\n - Missing WindowSizeMsg handling (broken resize)\n- Run verification after fixes\n- Report ALL issues in a single pass — do not hold back findings for later iterations\n- Re-reviews verify previous fixes ONLY — no new discovery\n- Requests for net-new code (new modules, dependencies, test suites) are Informational, not blocking\n- The Verdict ignores Minor and Informational items — only Critical and Major block approval\n---","attachment_filenames":[],"attachments":[],"content_json":{"type":"doc","content":[{"type":"heading","attrs":{"level":1},"content":[{"text":"TUI Code Review","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Arguments","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"--parallel","type":"text","marks":[{"type":"code_inline"}]},{"text":": Spawn specialized subagents per technology area","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Path: Target directory (default: current working directory)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Gates (sequence)","type":"text"}]},{"type":"paragraph","content":[{"text":"Advance only when each ","type":"text"},{"text":"pass condition","type":"text","marks":[{"type":"strong"}]},{"text":" is true (reduces scope drift and unsubstantiated blocking claims):","type":"text"}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Gate","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Pass condition","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"G1 — Scope","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Step 1 produced a concrete list of target ","type":"text"},{"text":".go","type":"text","marks":[{"type":"code_inline"}]},{"text":" paths (from the git command or an explicit user path). If the list is empty, you ","type":"text"},{"text":"stopped","type":"text","marks":[{"type":"strong"}]},{"text":" for scope clarification ","type":"text"},{"text":"or","type":"text","marks":[{"type":"strong"}]},{"text":" recorded an agreed non-git scope (e.g. single file/dir) before reviewing.","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"G2 — Skills before review","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"beagle-go:review-verification-protocol","type":"text","marks":[{"type":"code_inline"}]},{"text":", ","type":"text"},{"text":"beagle-go:go-code-review","type":"text","marks":[{"type":"code_inline"}]},{"text":", and ","type":"text"},{"text":"beagle-go:bubbletea-code-review","type":"text","marks":[{"type":"code_inline"}]},{"text":" are loaded; Step 4 conditionals (tests → ","type":"text"},{"text":"go-testing-code-review","type":"text","marks":[{"type":"code_inline"}]},{"text":", Wish → ","type":"text"},{"text":"wish-ssh-code-review","type":"text","marks":[{"type":"code_inline"}]},{"text":") are loaded ","type":"text"},{"text":"before","type":"text","marks":[{"type":"strong"}]},{"text":" Step 5.","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"G3 — Evidence for Critical/Major","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Each Critical/Major finding cites ","type":"text"},{"text":"file path + line","type":"text","marks":[{"type":"strong"}]},{"text":" (or a short quoted snippet) from the ","type":"text"},{"text":"opened","type":"text","marks":[{"type":"strong"}]},{"text":" source—not from diff hunks alone.","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"G4 — Pre-output hygiene","type":"text","marks":[{"type":"strong"}]}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Each retained finding was checked against Step 7 ","type":"text"},{"text":"and","type":"text","marks":[{"type":"strong"}]},{"text":" the loaded verification protocol ","type":"text"},{"text":"before","type":"text","marks":[{"type":"strong"}]},{"text":" writing the Issues section.","type":"text"}]}]}]}]},{"type":"paragraph","content":[{"text":"Do not start Step 5 until ","type":"text"},{"text":"G2","type":"text","marks":[{"type":"strong"}]},{"text":" passes. Do not publish Critical/Major until ","type":"text"},{"text":"G3","type":"text","marks":[{"type":"strong"}]},{"text":" and ","type":"text"},{"text":"G4","type":"text","marks":[{"type":"strong"}]},{"text":" pass.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 1: Identify Changed Files","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\\.go

TUI Code Review Arguments - : Spawn specialized subagents per technology area - Path: Target directory (default: current working directory) Gates (sequence) Advance only when each pass condition is true (reduces scope drift and unsubstantiated blocking claims): | Gate | Pass condition | |------|----------------| | G1 — Scope | Step 1 produced a concrete list of target paths (from the git command or an explicit user path). If the list is empty, you stopped for scope clarification or recorded an agreed non-git scope (e.g. single file/dir) before reviewing. | | G2 — Skills before review | , , an…

","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 2: Detect Technologies","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"# Detect BubbleTea (required for TUI review)\ngrep -r \"charmbracelet/bubbletea\" --include=\"*.go\" -l | head -3\n\n# Detect Lipgloss styling\ngrep -r \"charmbracelet/lipgloss\\|lipgloss\\.Style\" --include=\"*.go\" -l | head -3\n\n# Detect Bubbles components\ngrep -r \"charmbracelet/bubbles\\|list\\.Model\\|textinput\\.Model\\|viewport\\.Model\" --include=\"*.go\" -l | head -3\n\n# Detect Wish SSH server\ngrep -r \"charmbracelet/wish\\|ssh\\.Session\" --include=\"*.go\" -l | head -3\n\n# Check for test files\ngit diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '_test\\.go

TUI Code Review Arguments - : Spawn specialized subagents per technology area - Path: Target directory (default: current working directory) Gates (sequence) Advance only when each pass condition is true (reduces scope drift and unsubstantiated blocking claims): | Gate | Pass condition | |------|----------------| | G1 — Scope | Step 1 produced a concrete list of target paths (from the git command or an explicit user path). If the list is empty, you stopped for scope clarification or recorded an agreed non-git scope (e.g. single file/dir) before reviewing. | | G2 — Skills before review | , , an…

","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 3: Load Verification Protocol","type":"text"}]},{"type":"paragraph","content":[{"text":"Load ","type":"text"},{"text":"beagle-go:review-verification-protocol","type":"text","marks":[{"type":"code_inline"}]},{"text":" skill and keep its checklist in mind throughout the review.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 4: Load Skills","type":"text"}]},{"type":"paragraph","content":[{"text":"Use the ","type":"text"},{"text":"Skill","type":"text","marks":[{"type":"code_inline"}]},{"text":" tool to load each applicable skill (e.g., ","type":"text"},{"text":"Skill(skill: \"beagle-go:go-code-review\")","type":"text","marks":[{"type":"code_inline"}]},{"text":").","type":"text"}]},{"type":"paragraph","content":[{"text":"Always load:","type":"text","marks":[{"type":"strong"}]}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"beagle-go:go-code-review","type":"text","marks":[{"type":"code_inline"}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"beagle-go:bubbletea-code-review","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"paragraph","content":[{"text":"Conditionally load based on detection:","type":"text","marks":[{"type":"strong"}]}]},{"type":"table","attrs":{"layout":null},"content":[{"type":"tr","content":[{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Condition","type":"text"}]}]},{"type":"th","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Skill","type":"text"}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Test files changed","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"beagle-go:go-testing-code-review","type":"text","marks":[{"type":"code_inline"}]}]}]}]},{"type":"tr","content":[{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"Wish SSH detected","type":"text"}]}]},{"type":"td","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"alignment":""},"content":[{"type":"paragraph","content":[{"text":"beagle-go:wish-ssh-code-review","type":"text","marks":[{"type":"code_inline"}]}]}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 5: Review Focus Areas","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Model/Update/View (Elm Architecture)","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Model is immutable (Update returns new model)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Init returns proper initial command","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Update handles all message types","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"View is pure function (no side effects)","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"tea.Quit used correctly for exit","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Lipgloss Styling","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Styles defined once at package level","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Styles not created in View function","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Colors use AdaptiveColor for light/dark themes","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Layout responds to WindowSizeMsg","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Component Composition","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Sub-component updates propagated","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"WindowSizeMsg passed to resizable components","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Focus management for multiple components","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Clear state machine for view transitions","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"SSH Server (if applicable)","type":"text"}]},{"type":"checkbox_list","attrs":{"id":null},"content":[{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Host keys persisted","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Graceful shutdown implemented","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"PTY window size passed to TUI","type":"text"}]}]},{"type":"checkbox_item","attrs":{"checked":false},"content":[{"type":"paragraph","content":[{"text":"Per-session Lipgloss renderer","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 6: Review","type":"text"}]},{"type":"paragraph","content":[{"text":"Sequential (default):","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Load applicable skills","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review Go code quality","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review BubbleTea patterns (Model/Update/View)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review Lipgloss styling","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review component composition","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review SSH server (if applicable)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Consolidate findings","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"Parallel (--parallel flag):","type":"text","marks":[{"type":"strong"}]}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Detect all technologies upfront","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Spawn subagents for: Go quality, BubbleTea, SSH","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Wait for all agents","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Consolidate findings","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 7: Verify Findings","type":"text"}]},{"type":"paragraph","content":[{"text":"Before reporting any issue:","type":"text"}]},{"type":"ordered_list","attrs":{"order":1,"listStyle":"number"},"content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Re-read the actual code (not just diff context)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For \"unused\" claims - did you search all references?","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For \"missing\" claims - did you check framework/parent handling?","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"For syntax issues - did you verify against current version docs?","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Remove any findings that are style preferences, not actual issues","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Step 8: Review Convergence","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Single-Pass Completeness","type":"text"}]},{"type":"paragraph","content":[{"text":"You MUST report ALL issues across ALL categories (style, logic, types, tests, security, performance) in a single review pass. Do not hold back issues for later rounds.","type":"text"}]},{"type":"paragraph","content":[{"text":"Before submitting findings, ask yourself:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"If all my recommended fixes are applied, will I find NEW issues in the fixed code?\"","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"\"Am I requesting new code (tests, types, modules) that will itself need review?\"","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"If yes to either: include those anticipated downstream issues NOW, in this review, so the author can address everything at once.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Scope Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Review ONLY the code in the diff and directly related existing code","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Do NOT request new features, test infrastructure, or architectural changes that didn't exist before the diff","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"If test coverage is missing, flag it as ONE Minor issue (\"Missing test coverage for X, Y, Z\") — do NOT specify implementation details like mock libraries, behaviour extraction, or dependency injection patterns that would introduce substantial new code","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Typespecs, documentation, and naming issues are Minor unless they affect public API contracts","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Do NOT request adding new dependencies (e.g. Mox, testing libraries, linter plugins)","type":"text"}]}]}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Fix Complexity Budget","type":"text"}]},{"type":"paragraph","content":[{"text":"Fixes to existing code should be flagged at their real severity regardless of size.","type":"text"}]},{"type":"paragraph","content":[{"text":"However, requests for ","type":"text"},{"text":"net-new code that didn't exist before the diff","type":"text","marks":[{"type":"strong"}]},{"text":" must be classified as Informational:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Adding a new dependency (e.g. Mox, a linter plugin)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Creating entirely new modules, files, or test suites","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Extracting new behaviours, protocols, or abstractions","type":"text"}]}]}]},{"type":"paragraph","content":[{"text":"These are improvement suggestions for the author to consider in future work, not review blockers.","type":"text"}]},{"type":"heading","attrs":{"level":3},"content":[{"text":"Iteration Policy","type":"text"}]},{"type":"paragraph","content":[{"text":"If this is a re-review after fixes were applied:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"ONLY verify that previously flagged issues were addressed correctly","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Do NOT introduce new findings unrelated to the previous review's issues","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Accept Minor/Nice-to-Have issues that weren't fixed — do not re-flag them","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"The goal of re-review is VERIFICATION, not discovery","type":"text"}]}]}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Output Format","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"markdown"},"content":[{"text":"## Review Summary\n\n[1-2 sentence overview of findings]\n\n## Issues\n\n### Critical (Blocking)\n\n1. [FILE:LINE] ISSUE_TITLE\n - Issue: Description of what's wrong\n - Why: Why this matters (UI freeze, crash, resource leak)\n - Fix: Specific recommended fix\n\n### Major (Should Fix)\n\n2. [FILE:LINE] ISSUE_TITLE\n - Issue: ...\n - Why: ...\n - Fix: ...\n\n### Minor (Nice to Have)\n\n14. [FILE:LINE] ISSUE_TITLE\n - Issue: ...\n - Why: ...\n - Fix: ...\n\n### Informational (For Awareness)\n\n14. [FILE:LINE] SUGGESTION_TITLE\n - Suggestion: ...\n - Rationale: ...\n\n## Good Patterns\n\n- [FILE:LINE] Pattern description (preserve this)\n\n## Verdict\n\nReady: Yes | No | With fixes 1-N (Critical/Major only; Minor items are acceptable)\nRationale: [1-2 sentences]","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Post-Fix Verification","type":"text"}]},{"type":"paragraph","content":[{"text":"After fixes are applied, run:","type":"text"}]},{"type":"code_block","attrs":{"wrap":false,"language":"bash"},"content":[{"text":"go build ./...\ngo vet ./...\ngolangci-lint run\ngo test -v -race ./...","type":"text"}]},{"type":"paragraph","content":[{"text":"All checks must pass before approval.","type":"text"}]},{"type":"heading","attrs":{"level":2},"content":[{"text":"Rules","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Load skills BEFORE reviewing (not after)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Number every issue sequentially (1, 2, 3...)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Include FILE:LINE for each issue","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Separate Issue/Why/Fix clearly","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Categorize by actual severity","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Pay special attention to:","type":"text"}]},{"type":"bullet_list","content":[{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Blocking operations in Update (freezes UI)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Style creation in View (performance)","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Missing WindowSizeMsg handling (broken resize)","type":"text"}]}]}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Run verification after fixes","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Report ALL issues in a single pass — do not hold back findings for later iterations","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Re-reviews verify previous fixes ONLY — no new discovery","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"Requests for net-new code (new modules, dependencies, test suites) are Informational, not blocking","type":"text"}]}]},{"type":"list_item","content":[{"type":"paragraph","content":[{"text":"The Verdict ignores Minor and Informational items — only Critical and Major block approval","type":"text"}]}]}]},{"type":"hr","attrs":{"markup":"---"}}]},"metadata":{"date":"2026-06-05","name":"review-tui","author":"@skillopedia","source":{"stars":61,"repo_name":"beagle","origin_url":"https://github.com/existential-birds/beagle/blob/HEAD/plugins/beagle-go/skills/review-tui/SKILL.md","repo_owner":"existential-birds","body_sha256":"bbf5caf0ad209a50bc3b4981c01fd3b58f44db5be74e346c274b087e0c8361cb","cluster_key":"53fb41b91a4f9304858b3a7559fe78ec33a523f1723fa0496645d827217aee7e","clean_bundle":{"format":"clean-skill-bundle-v1","source":"existential-birds/beagle/plugins/beagle-go/skills/review-tui/SKILL.md","bundle_sha256":"920472bab59434996b9d7fd5b25e0d7b66c681d380dd6e877458be8b3c099146","attachment_count":0,"text_attachments":0,"binary_attachments":0},"cluster_size":1,"skill_md_path":"plugins/beagle-go/skills/review-tui/SKILL.md","import_metadata":{"date":"2026-06-05","author":"@skillopedia","version":"v1","category":"web-development","category_label":"Web"},"exact_dupes_collapsed_into_this":0},"version":"v1","category":"web-development","import_tag":"clean-skills-v1","description":"Comprehensive BubbleTea TUI code review for terminal applications","disable-model-invocation":true}},"renderedAt":1782988214570}

TUI Code Review Arguments - : Spawn specialized subagents per technology area - Path: Target directory (default: current working directory) Gates (sequence) Advance only when each pass condition is true (reduces scope drift and unsubstantiated blocking claims): | Gate | Pass condition | |------|----------------| | G1 — Scope | Step 1 produced a concrete list of target paths (from the git command or an explicit user path). If the list is empty, you stopped for scope clarification or recorded an agreed non-git scope (e.g. single file/dir) before reviewing. | | G2 — Skills before review | , , an…