existential-birds/beagle/bubbletea-code-review
Claude Code and agent skill by existential-birds/beagle
Trust tier 2
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Reviews BubbleTea TUI code for proper Elm architecture, model/update/view patterns, and Lipgloss styling. Use when reviewing terminal UI code using charmbracelet/bubbletea.
Install
npx vskill@latest install existential-birds/beagle/bubbletea-code-reviewSKILL.md
BubbleTea Code Review
Hard gates (sequence)
Advance only when each pass condition is objectively true (reduces false positives on tea.Cmd and unsubstantiated blocking claims):
| Gate | Pass condition | |
|---|---|---|
| G1 — Anti–false-positive | You skimmed NOT Issues below or read references/elm-architecture.md before recording a finding about tea.Cmd returns, value receivers on Update, or nested child Update. | |
| G2 — Evidence for blocking / suspicious I/O | Each Critical/Major finding names file path + line (or a short quoted snippet) showing the blocking call, huh.Form.Run in the wrong place, or other asserted anti-pattern—not a hypothetical. | |
| G3 — Verification | Before publishing review output, you applied the [review-verification-protocol](../review-verification-protocol/SKILL.md) to each proposed finding. |
Quick Reference
| Issue Type | Reference | |
|---|---|---|
| Elm architecture, tea.Cmd as data | references/elm-architecture.md | |
| Model state, message handling | references/model-update.md | |
| View rendering, Lipgloss styling | references/view-styling.md | |
| Component composition, Huh forms | references/composition.md | |
| Bubbles components (list, table, etc.) | references/bubbles-components.md |
CRITICAL: Avoid False Positives
Read [elm-architecture.md](references/elm-architecture.md) first! The most common review mistake is flagging correct patterns as bugs.
NOT Issues (Do NOT Flag These)
| Pattern | Why It's Correct | |
|---|---|---|
return m, m.loadData() | tea.Cmd is returned immediately; runtime executes async | |
Value receiver on Update() | Standard BubbleTea pattern; model returned by value | |
Nested m.child, cmd = m.child.Update(msg) | Normal component composition | |
Helper functions returning tea.Cmd | Creates command descriptor, no I/O in Update | |
tea.Batch(cmd1, cmd2) | Commands execute concurrently by runtime |
ACTUAL Issues (DO Flag These)
| Pattern | Why It's Wrong | |
|---|---|---|
os.ReadFile() in Update | Blocks UI thread | |
http.Get() in Update | Network I/O blocks | |
time.Sleep() in Update | Freezes UI | |
<-channel in Update (blocking) | May block indefinitely | |
huh.Form.Run() in Update | Blocking call |
Review Checklist
Architecture
- [ ] No blocking I/O in Update() (file, network, sleep)
- [ ] Helper functions returning
tea.Cmdare NOT flagged as blocking - [ ] Commands used for all async operations
Model & Update
- [ ] Model is immutable (Update returns new model, not mutates)
- [ ] Init returns proper initial command (or nil)
- [ ] Update handles all expected message types
- [ ] WindowSizeMsg handled for responsive layout
- [ ] tea.Batch used for multiple commands
- [ ] tea.Quit used correctly for exit
View & Styling
- [ ] View is a pure function (no side effects)
- [ ] Lipgloss styles defined once, not in View
- [ ] Key bindings use key.Matches with help.KeyMap
Components
- [ ] Sub-component updates propagated correctly
- [ ] Bubbles components initialized with dimensions
- [ ] Huh forms embedded via Update loop (not Run())
Critical Patterns
Model Must Be Immutable
Commands for Async/IO
Styles Defined Once
When to Load References
- First time reviewing BubbleTea → elm-architecture.md (prevents false positives)
- Reviewing Update function logic → model-update.md
- Reviewing View function, styling → view-styling.md
- Reviewing component hierarchy → composition.md
- Using Bubbles components → bubbles-components.md
Review Questions
- Is Update() free of blocking I/O? (NOT: "is the cmd helper blocking?")
- Is the model immutable in Update?
- Are Lipgloss styles defined once, not in View?
- Is WindowSizeMsg handled for resizing?
- Are key bindings documented with help.KeyMap?
- Are Bubbles components sized correctly?
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/beagle-go/skills/bubbletea-code-review/SKILL.md
Popularity
- Repository stars
- 83
- Repository forks
- 8
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/existential-birds/beagle/bubbletea-code-review)