library/specializations/cli-mcp-development/skills/bubble-tea-scaffolder/SKILL.md
Generate Bubble Tea (Go) TUI application structure with models, commands, and views using the Elm architecture.
npx skillsauth add a5c-ai/babysitter bubble-tea-scaffolderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate Bubble Tea TUI applications with Go and Elm architecture.
Invoke this skill when you need to:
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | projectName | string | Yes | Project name | | modulePath | string | Yes | Go module path | | components | array | No | Component definitions |
package main
import (
"fmt"
"os"
tea "github.com/charmbracelet/bubbletea"
)
func main() {
p := tea.NewProgram(initialModel(), tea.WithAltScreen())
if _, err := p.Run(); err != nil {
fmt.Printf("Error: %v", err)
os.Exit(1)
}
}
package main
import (
"github.com/charmbracelet/bubbles/list"
"github.com/charmbracelet/bubbles/textinput"
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
)
type model struct {
list list.Model
textInput textinput.Model
err error
quitting bool
}
func initialModel() model {
ti := textinput.New()
ti.Placeholder = "Enter search term..."
ti.Focus()
items := []list.Item{
item{title: "Option 1", desc: "First option"},
item{title: "Option 2", desc: "Second option"},
}
l := list.New(items, list.NewDefaultDelegate(), 0, 0)
l.Title = "Select an option"
return model{
textInput: ti,
list: l,
}
}
func (m model) Init() tea.Cmd {
return textinput.Blink
}
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
switch msg := msg.(type) {
case tea.KeyMsg:
switch msg.String() {
case "ctrl+c", "q":
m.quitting = true
return m, tea.Quit
case "enter":
// Handle selection
return m, nil
}
case tea.WindowSizeMsg:
m.list.SetSize(msg.Width, msg.Height-4)
}
var cmd tea.Cmd
m.list, cmd = m.list.Update(msg)
return m, cmd
}
func (m model) View() string {
if m.quitting {
return "Goodbye!\n"
}
return lipgloss.JoinVertical(
lipgloss.Left,
m.textInput.View(),
m.list.View(),
)
}
package main
type item struct {
title string
desc string
}
func (i item) Title() string { return i.title }
func (i item) Description() string { return i.desc }
func (i item) FilterValue() string { return i.title }
package main
import "github.com/charmbracelet/lipgloss"
var (
titleStyle = lipgloss.NewStyle().
Bold(true).
Foreground(lipgloss.Color("205")).
MarginBottom(1)
selectedStyle = lipgloss.NewStyle().
Foreground(lipgloss.Color("170")).
Bold(true)
normalStyle = lipgloss.NewStyle().
Foreground(lipgloss.Color("252"))
helpStyle = lipgloss.NewStyle().
Foreground(lipgloss.Color("241"))
)
require (
github.com/charmbracelet/bubbletea v0.25.0
github.com/charmbracelet/bubbles v0.17.0
github.com/charmbracelet/lipgloss v0.9.0
)
development
Model documentation skill for generating model cards following Google's model card framework.
development
MLflow integration skill for experiment tracking, model registry, and artifact management. Enables LLMs to log experiments, compare runs, manage model lifecycle, and retrieve artifacts through the MLflow API.
data-ai
LIME-based local explanation skill for individual predictions across tabular, text, and image data.
devops
Kubeflow Pipelines skill for ML workflow orchestration, component management, and Kubernetes-native ML.