Skip to main content

add-command

Add a new cobra subcommand to the CLI

Source facts

Repository
bendrucker/honeycomb-cli
Last source activity
September 23, 2026 at 03:25
Detected SKILL.md language
English
Stars
2
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
add-command
description
Add a new cobra subcommand to the CLI
user-invocable
true
# Add Command Add a cobra subcommand that matches its siblings. The command is done when it builds, its tests pass, and it appears under its parent in `honeycomb --help`. ## Steps 1. Read the sibling commands in the resource's package (`cmd/<resource>/`) and copy their shape. `cmd/marker` covers full CRUD plus a nested sub-resource. 2. Create `cmd/<resource>/<verb>.go` with a `New<Verb>Cmd(opts *options.RootOptions, ...)` factory: - Take any parent-scoped flag, such as `--dataset`, as a pointer argument. - Give every input a flag. Resolve missing required inputs with `command.Resolve`, which prompts when it can and returns the non-interactive error otherwise. - Build the client with `opts.ClientFor`. - Write output with `opts.OutputWriter()` for detail commands or `opts.OutputWriterList()` for lists. `--format` is a root persistent flag, so the command defines no format flag. 3. Register it with `AddCommand` in the resource's `NewCmd`. 4. Create `cmd/<resource>/<verb>_test.go` using the package's existing test helper (usually `setupTest`), which wires `iostreams.Test`, `httptest.NewServer`, and the mock keyring. ## Command Pattern ```go func NewListCmd(opts *options.RootOptions, dataset *string) *cobra.Command { return &cobra.Command{ Use: "list", Short: "List markers", RunE: func(cmd *cobra.Command, _ []string) error { return runMarkerList(cmd.Context(), opts, *dataset) }, } } ```
View on GitHub