Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add llama-farm/llamafarm --skill "cli-skills"
Install specific skill from multi-skill repository
# Description
CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
# SKILL.md
name: cli-skills
description: CLI best practices for LlamaFarm. Covers Cobra, Bubbletea, Lipgloss patterns for Go CLI development.
allowed-tools: Read, Grep, Glob
user-invocable: false
CLI Skills for LlamaFarm
Framework-specific patterns for the LlamaFarm CLI. These guidelines extend the shared Go skills with Cobra, Bubbletea, and Lipgloss best practices.
Tech Stack
- Go 1.24+
- Cobra (CLI framework)
- Bubbletea (TUI framework)
- Lipgloss (terminal styling)
- Bubbles (TUI components)
Directory Structure
cli/
cmd/ # Cobra command implementations
config/ # Configuration types and loading
orchestrator/ # Service management and process control
utils/ # Shared utilities (HTTP, output, logging)
version/ # Version and upgrade handling
internal/ # Internal packages (not exported)
tui/ # Reusable TUI components
buildinfo/ # Build-time information
Quick Reference
Cobra Commands
- Use
RunEoverRunfor error handling - Register flags in
init()functions - Use persistent flags for shared options
- Validate arguments with
Argsfield
Bubbletea TUI
- Implement
Init(),Update(),View()interface - Use message types for state changes
- Return
tea.Cmdfor async operations - Keep state immutable in
Update()
Lipgloss Styling
- Define styles as package-level constants
- Use
lipgloss.NewStyle()for styling - Handle terminal width dynamically
- Support color themes via style variables
Shared Go Skills
This skill extends the base Go skills. See:
| Link | Description |
|---|---|
| go-skills/SKILL.md | Overview and quick reference |
| go-skills/patterns.md | Idiomatic Go patterns |
| go-skills/concurrency.md | Goroutines, channels, sync |
| go-skills/error-handling.md | Error wrapping, sentinels |
| go-skills/testing.md | Table-driven tests, mocks |
| go-skills/security.md | Input validation, secure coding |
CLI-Specific Checklists
| File | Description |
|---|---|
| cobra.md | Cobra command patterns, flags, validation |
| bubbletea.md | Bubbletea Model/Update/View patterns |
| performance.md | CLI-specific optimizations |
Key Patterns in This Codebase
Command Registration Pattern
var myCmd = &cobra.Command{
Use: "mycommand [args]",
Short: "Brief description",
Long: `Extended description with examples.`,
Args: cobra.MaximumNArgs(1),
RunE: func(cmd *cobra.Command, args []string) error {
// Implementation with error returns
return nil
},
}
func init() {
rootCmd.AddCommand(myCmd)
myCmd.Flags().StringVar(&flagVar, "flag", "default", "Flag description")
}
TUI Model Pattern
type myModel struct {
viewport viewport.Model
textarea textarea.Model
width int
height int
err error
}
func (m myModel) Init() tea.Cmd {
return tea.Batch(m.textarea.Focus(), doAsyncWork())
}
func (m myModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
var cmds []tea.Cmd
switch msg := msg.(type) {
case tea.WindowSizeMsg:
m.width = msg.Width
m.height = msg.Height
case tea.KeyMsg:
switch msg.String() {
case "ctrl+c":
return m, tea.Quit
}
}
return m, tea.Batch(cmds...)
}
func (m myModel) View() string {
return lipgloss.JoinVertical(lipgloss.Left,
m.viewport.View(),
m.textarea.View(),
)
}
Output API Pattern
// Use the output API for consistent messaging
utils.OutputInfo("Starting service %s...", serviceName)
utils.OutputSuccess("Service started successfully")
utils.OutputError("Failed to start service: %v", err)
utils.OutputProgress("Downloading model...")
utils.OutputWarning("Service already running")
Service Orchestration Pattern
// Ensure services are running before operations
factory := GetServiceConfigFactory()
config := factory.ServerOnly(serverURL)
orchestrator.EnsureServicesOrExitWithConfig(config, "server")
// Or with multiple services
config := factory.RAGCommand(serverURL)
orchestrator.EnsureServicesOrExitWithConfig(config, "server", "rag", "universal-runtime")
Guidelines
- User Experience First: CLI should feel responsive and provide clear feedback
- Graceful Degradation: Handle missing services, network errors, and timeouts gracefully
- Consistent Output: Use the output API for all user-facing messages
- Cross-Platform: Test on macOS, Linux, and Windows
- Terminal Compatibility: Test with different terminal emulators and sizes
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.