Claude Code Plugins

Community-maintained marketplace

Feedback

CLI application patterns and best practices

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name go-cli
description CLI application patterns and best practices
sasmp_version 1.3.0
bonded_agent 06-go-cli
bond_type SECONDARY_BOND

Go CLI Skill

Supplementary CLI patterns and utilities.

Overview

Additional CLI patterns for argument parsing, progress indicators, and user interaction.

Parameters

Parameter Type Required Default Description
feature string yes - Feature: "progress", "prompt", "color"

Core Topics

Argument Validation

var cmd = &cobra.Command{
    Use:   "process [file]",
    Args:  cobra.ExactArgs(1),
    RunE: func(cmd *cobra.Command, args []string) error {
        file := args[0]
        if _, err := os.Stat(file); os.IsNotExist(err) {
            return fmt.Errorf("file not found: %s", file)
        }
        return process(file)
    },
}

Progress Bar

func DownloadWithProgress(url, dest string) error {
    resp, err := http.Get(url)
    if err != nil {
        return err
    }
    defer resp.Body.Close()

    file, err := os.Create(dest)
    if err != nil {
        return err
    }
    defer file.Close()

    bar := progressbar.DefaultBytes(resp.ContentLength, "downloading")
    _, err = io.Copy(io.MultiWriter(file, bar), resp.Body)
    return err
}

Interactive Prompt

func ConfirmAction(message string) bool {
    reader := bufio.NewReader(os.Stdin)
    fmt.Printf("%s [y/N]: ", message)

    input, _ := reader.ReadString('\n')
    input = strings.TrimSpace(strings.ToLower(input))

    return input == "y" || input == "yes"
}

Colored Output

import "github.com/fatih/color"

var (
    successColor = color.New(color.FgGreen).SprintFunc()
    errorColor   = color.New(color.FgRed).SprintFunc()
    warnColor    = color.New(color.FgYellow).SprintFunc()
)

func PrintSuccess(msg string) {
    fmt.Println(successColor("✓"), msg)
}

func PrintError(msg string) {
    fmt.Fprintln(os.Stderr, errorColor("✗"), msg)
}

Troubleshooting

Failure Modes

Symptom Cause Fix
Colors not showing No TTY Check isatty
Input hangs Stdin closed Handle EOF

Usage

Skill("go-cli")