.claude/skills/ts-cobra/SKILL.md
You are an expert in Cobra, the most popular Go library for building modern CLI applications. You help developers create command-line tools with subcommands, flags, argument validation, shell completions, and help generation — powering CLIs like kubectl, Hugo, GitHub CLI, and Docker.
npx skillsauth add eliferjunior/Claude cobraInstall 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.
You are an expert in Cobra, the most popular Go library for building modern CLI applications. You help developers create command-line tools with subcommands, flags, argument validation, shell completions, and help generation — powering CLIs like kubectl, Hugo, GitHub CLI, and Docker.
// cmd/root.go — Root command
package cmd
import (
"fmt"
"os"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
var cfgFile string
var verbose bool
var rootCmd = &cobra.Command{
Use: "myctl",
Short: "My CLI tool for managing stuff",
Long: `A comprehensive CLI tool for managing deployments, configs, and services.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
if verbose {
fmt.Println("Verbose mode enabled")
}
},
}
func Execute() {
if err := rootCmd.Execute(); err != nil {
os.Exit(1)
}
}
func init() {
cobra.OnInitialize(initConfig)
rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default $HOME/.myctl.yaml)")
rootCmd.PersistentFlags().BoolVarP(&verbose, "verbose", "v", false, "verbose output")
}
func initConfig() {
if cfgFile != "" {
viper.SetConfigFile(cfgFile)
} else {
home, _ := os.UserHomeDir()
viper.AddConfigPath(home)
viper.SetConfigName(".myctl")
}
viper.AutomaticEnv()
viper.ReadInConfig()
}
// cmd/deploy.go — Subcommand with flags
package cmd
import (
"fmt"
"github.com/spf13/cobra"
)
var deployCmd = &cobra.Command{
Use: "deploy [service]",
Short: "Deploy a service to the target environment",
Long: `Deploy a service to the specified environment with optional version override.`,
Args: cobra.ExactArgs(1), // Require exactly 1 argument
Example: ` myctl deploy api --env production --version v2.1.0
myctl deploy worker --env staging --dry-run`,
RunE: func(cmd *cobra.Command, args []string) error {
service := args[0]
env, _ := cmd.Flags().GetString("env")
version, _ := cmd.Flags().GetString("version")
dryRun, _ := cmd.Flags().GetBool("dry-run")
if dryRun {
fmt.Printf("DRY RUN: Would deploy %s@%s to %s\n", service, version, env)
return nil
}
fmt.Printf("Deploying %s@%s to %s...\n", service, version, env)
return performDeploy(service, env, version)
},
}
func init() {
rootCmd.AddCommand(deployCmd)
deployCmd.Flags().StringP("env", "e", "staging", "target environment")
deployCmd.Flags().String("version", "latest", "version to deploy")
deployCmd.Flags().Bool("dry-run", false, "simulate deployment")
deployCmd.MarkFlagRequired("env")
}
// cmd/status.go — Another subcommand
var statusCmd = &cobra.Command{
Use: "status [service]",
Short: "Show service status",
Aliases: []string{"st"}, // myctl st == myctl status
Args: cobra.MaximumNArgs(1),
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
// Dynamic completion: list available services
services := []string{"api", "worker", "scheduler", "web"}
return services, cobra.ShellCompDirectiveNoFileComp
},
RunE: func(cmd *cobra.Command, args []string) error {
if len(args) == 0 {
return showAllStatus()
}
return showServiceStatus(args[0])
},
}
# Generate completions
myctl completion bash > /etc/bash_completion.d/myctl
myctl completion zsh > "${fpath[1]}/_myctl"
myctl completion fish > ~/.config/fish/completions/myctl.fish
# Cobra generates completions for all commands, flags, and arguments automatically
go get github.com/spf13/cobra
# Scaffolding tool
go install github.com/spf13/cobra-cli@latest
cobra-cli init
cobra-cli add deploy
cobra-cli add status
myctl deploy, myctl status, myctl configRunE (returns error) instead of Run; Cobra handles error display and exit codesArgs: cobra.ExactArgs(1) or custom validators; catch errors before executionValidArgsFunction for dynamic completion--help, usage text, and subcommand lists; customize with Long and Examplest for status, d for deployPersistentFlags() on root for flags that apply to all subcommands (--verbose, --config)development
Expert guidance for Fireworks AI, the platform for running open-source LLMs (Llama, Mixtral, Qwen, etc.) with enterprise-grade speed and reliability. Helps developers integrate Fireworks' inference API, fine-tune models, and deploy custom model endpoints with function calling and structured output support.
development
Convert any website into clean, structured data with Firecrawl — API-first web scraping service. Use when someone asks to "turn a website into markdown", "scrape website for LLM", "Firecrawl", "extract website content as clean text", "crawl and convert to structured data", or "scrape website for RAG". Covers single-page scraping, full-site crawling, structured extraction, and LLM-ready output.
tools
Expert guidance for Firebase, Google's platform for building and scaling web and mobile applications. Helps developers set up authentication, Firestore/Realtime Database, Cloud Functions, hosting, storage, and analytics using Firebase's SDK and CLI.
development
When the user needs to build file upload functionality for a web application. Use when the user mentions "file upload," "image upload," "upload endpoint," "multipart upload," "presigned URL," "S3 upload," "file validation," "upload to cloud storage," or "accept user files." Handles upload endpoints, file validation (type, size, magic bytes), cloud storage integration, and upload status tracking. For image/video processing after upload, see media-transcoder.