Review Tui
by @anderskev
Comprehensive BubbleTea TUI code review for terminal applications. Use when reviewing charmbracelet/bubbletea, lipgloss, bubbles, or Wish SSH code; optionall...
clawhub install review-tuiπ About This Skill
description: Comprehensive BubbleTea TUI code review for terminal applications name: review-tui disable-model-invocation: true
TUI Code Review
Arguments
--parallel: Spawn specialized subagents per technology areaGates (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 .go 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 | beagle-go:review-verification-protocol, beagle-go:go-code-review, and beagle-go:bubbletea-code-review are loaded; Step 4 conditionals (tests β go-testing-code-review, Wish β wish-ssh-code-review) are loaded before Step 5. |
| G3 β Evidence for Critical/Major | Each Critical/Major finding cites file path + line (or a short quoted snippet) from the opened sourceβnot from diff hunks alone. |
| G4 β Pre-output hygiene | Each retained finding was checked against Step 7 and the loaded verification protocol before writing the Issues section. |
Do not start Step 5 until G2 passes. Do not publish Critical/Major until G3 and G4 pass.
Step 1: Identify Changed Files
git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '\.go$'
Step 2: Detect Technologies
# Detect BubbleTea (required for TUI review)
grep -r "charmbracelet/bubbletea" --include="*.go" -l | head -3Detect Lipgloss styling
grep -r "charmbracelet/lipgloss\|lipgloss\.Style" --include="*.go" -l | head -3Detect Bubbles components
grep -r "charmbracelet/bubbles\|list\.Model\|textinput\.Model\|viewport\.Model" --include="*.go" -l | head -3Detect Wish SSH server
grep -r "charmbracelet/wish\|ssh\.Session" --include="*.go" -l | head -3Check for test files
git diff --name-only $(git merge-base HEAD main)..HEAD | grep -E '_test\.go$'
Step 3: Load Verification Protocol
Load beagle-go:review-verification-protocol skill and keep its checklist in mind throughout the review.
Step 4: Load Skills
Use the Skill tool to load each applicable skill (e.g., Skill(skill: "beagle-go:go-code-review")).
Always load:
beagle-go:go-code-reviewbeagle-go:bubbletea-code-reviewConditionally load based on detection:
| Condition | Skill |
|-----------|-------|
| Test files changed | beagle-go:go-testing-code-review |
| Wish SSH detected | beagle-go:wish-ssh-code-review |
Step 5: Review Focus Areas
Model/Update/View (Elm Architecture)
Lipgloss Styling
Component Composition
SSH Server (if applicable)
Step 6: Review
Sequential (default): 1. Load applicable skills 2. Review Go code quality 3. Review BubbleTea patterns (Model/Update/View) 4. Review Lipgloss styling 5. Review component composition 6. Review SSH server (if applicable) 7. Consolidate findings
Parallel (--parallel flag): 1. Detect all technologies upfront 2. Spawn subagents for: Go quality, BubbleTea, SSH 3. Wait for all agents 4. Consolidate findings
Step 7: Verify Findings
Before reporting any issue: 1. Re-read the actual code (not just diff context) 2. For "unused" claims - did you search all references? 3. For "missing" claims - did you check framework/parent handling? 4. For syntax issues - did you verify against current version docs? 5. Remove any findings that are style preferences, not actual issues
Step 8: Review Convergence
Single-Pass Completeness
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.
Before submitting findings, ask yourself:
If yes to either: include those anticipated downstream issues NOW, in this review, so the author can address everything at once.
Scope Rules
Fix Complexity Budget
Fixes to existing code should be flagged at their real severity regardless of size.
However, requests for net-new code that didn't exist before the diff must be classified as Informational:
These are improvement suggestions for the author to consider in future work, not review blockers.
Iteration Policy
If this is a re-review after fixes were applied:
Output Format
## Review Summary[1-2 sentence overview of findings]
Issues
Critical (Blocking)
1. [FILE:LINE] ISSUE_TITLE
- Issue: Description of what's wrong
- Why: Why this matters (UI freeze, crash, resource leak)
- Fix: Specific recommended fix
Major (Should Fix)
2. [FILE:LINE] ISSUE_TITLE
- Issue: ...
- Why: ...
- Fix: ...
Minor (Nice to Have)
N. [FILE:LINE] ISSUE_TITLE
- Issue: ...
- Why: ...
- Fix: ...
Informational (For Awareness)
N. [FILE:LINE] SUGGESTION_TITLE
- Suggestion: ...
- Rationale: ...
Good Patterns
[FILE:LINE] Pattern description (preserve this) Verdict
Ready: Yes | No | With fixes 1-N (Critical/Major only; Minor items are acceptable)
Rationale: [1-2 sentences]
Post-Fix Verification
After fixes are applied, run:
go build ./...
go vet ./...
golangci-lint run
go test -v -race ./...
All checks must pass before approval.