Buenas Prácticas para Herramientas CLI
Pruebas de CLIs, versionado y distribución a través de go install.
Busca en todas las páginas de la documentación
Pruebas de CLIs, versionado y distribución a través de go install.
Aplica estas reglas en la revisión de código, pipelines de lanzamiento y plantillas de plataforma internas para que cada binario de Go se instale de forma predecible, falle claramente y se mantenga testeable sin contaminación de flags globales.
kubectl se mantienen limpios.NO_COLOR y deshabilita ANSI cuando no sea una TTY. Los registros de CI y las políticas de accesibilidad dependen de ello.main delgado; pon la lógica en paquetes internal/. Permite pruebas unitarias sin os.Exit.flag.CommandLine global en bibliotecas. Usa FlagSet o cobra por comando.argv.internal/. CLI y API se mantienen alineados en enums e IDs.API_URL a api.url de forma predecible.config.example.yaml con marcadores de posición.PersistentFlags solo en la raíz. Evita nombres de flags duplicados en el padre e hijo.Args o enums. Los recuentos de argumentos incorrectos producen mensajes accionables.run(args []string) error sin analizar os.Args reales. La lógica central se mantiene segura en paralelo.cobra.Command.SetArgs o FlagSet.Parse aislado en pruebas CLI. Sin sangrado de flags entre pruebas.os/exec para códigos de salida y salida de ayuda. Detecta errores de cableado en main.--help cuando la superficie del comando sea estable. Los cambios de nombre de flags no intencionados rompen scripts.go test ./... con el detector de carreras para CLIs concurrentes. Los trabajadores y las TUI exponen las carreras temprano.-ldflags "-X main.version=…" en CI. El soporte puede mapear informes de errores a compilaciones.--version o version. Coincide con las etiquetas de la imagen de contenedor y las etiquetas de git.go install module/path@version para módulos públicos. Documenta la ruta de importación en README.go.sum y notas de compilación reproducibles en los lanzamientos. La revisión de la cadena de suministro depende de ello.Update de bubbletea. Envía mensajes de finalización de vuelta al modelo.ctrl+c y señales para CLIs por lotes. Las escrituras parciales no deben corromper el estado remoto.La separación de stdout/stderr, los códigos de salida documentados, main delgado, la validación de configuración y al menos una prueba de integración CLI son fuertes bloqueadores de CI.
Documenta las excepciones en el README de la herramienta.
Sí.
cobra maneja el análisis; las reglas de flujos, pruebas, versionado y distribución aún se aplican.
Los conceptos básicos enseñan la mecánica de flags y subcomandos.
Esta lista codifica hábitos de producción para equipos que envían CLIs a operadores y CI.
Cuando los subcomandos son manuales, los flags son pocos y el texto de ayuda se mantiene manualmente.
Reevalúa cuando la finalización o los flags persistentes se conviertan en elementos pendientes en cada sprint.
Incluso las herramientas internas se benefician de los binarios de CI de Linux.
Los desarrolladores de macOS todavía necesitan compilaciones nativas o go install de etiquetas de módulo.
Versiones de Stack: Esta página fue escrita para Go 1.26.x (predeterminado Green Tea GC, go fix modernizers - verifica el parche en la compilación), chi (última - verifica en la compilación), gin (última - verifica en la compilación), echo (última - verifica en la compilación), google.golang.org/grpc (última - verifica en la compilación), sigs.k8s.io/controller-runtime (última - verifica en la compilación), kubebuilder (última - verifica en la compilación), tinygo (última - verifica objetivos de placa en la compilación), wazero (última - verifica en la compilación), y golangci-lint (última - verifica el conjunto de linters en la compilación).
Revisado por Chris St. John·Última actualización: 18 jul 2026