[object Object]

← back to Cli Printing Press

feat(cli): add Example fields to all Cobra commands

633eefc3f9810172f5baebd7ea42af51949edb11 · 2026-03-27 13:19:45 -0700 · Trevin Chow

Adds usage examples to generate, dogfood, scorecard, print, vision,
and version commands. Cobra renders these in --help output automatically.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

Files touched

Diff

commit 633eefc3f9810172f5baebd7ea42af51949edb11
Author: Trevin Chow <trevin@trevinchow.com>
Date:   Fri Mar 27 13:19:45 2026 -0700

    feat(cli): add Example fields to all Cobra commands
    
    Adds usage examples to generate, dogfood, scorecard, print, vision,
    and version commands. Cobra renders these in --help output automatically.
    
    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---
 internal/cli/dogfood.go   |  5 +++++
 internal/cli/root.go      | 26 +++++++++++++++++++++++---
 internal/cli/scorecard.go |  5 +++++
 internal/cli/vision.go    |  2 ++
 4 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/internal/cli/dogfood.go b/internal/cli/dogfood.go
index c97d7fdf..5f6ab6cf 100644
--- a/internal/cli/dogfood.go
+++ b/internal/cli/dogfood.go
@@ -20,6 +20,11 @@ func newDogfoodCmd() *cobra.Command {
 		Use:   "dogfood",
 		Short: "Validate a generated CLI against its source spec",
 		Long:  "Mechanically verify that a generated CLI's commands hit valid API paths, auth matches the spec protocol, no dead flags/functions exist, and the data pipeline is wired correctly.",
+		Example: `  # Evaluate a generated CLI directory
+  printing-press dogfood --dir ./generated/stripe-cli
+
+  # Output as JSON for programmatic use
+  printing-press dogfood --dir ./generated/stripe-cli --json`,
 		RunE: func(cmd *cobra.Command, args []string) error {
 			report, err := pipeline.RunDogfood(dir, specPath)
 			if err != nil {
diff --git a/internal/cli/root.go b/internal/cli/root.go
index 68b169d8..8cbe2840 100644
--- a/internal/cli/root.go
+++ b/internal/cli/root.go
@@ -59,6 +59,17 @@ func newGenerateCmd() *cobra.Command {
 	cmd := &cobra.Command{
 		Use:   "generate",
 		Short: "Generate a Go CLI project from an API spec",
+		Example: `  # Generate from a local OpenAPI spec
+  printing-press generate --spec ./openapi.yaml
+
+  # Generate from a URL with force overwrite
+  printing-press generate --spec https://api.example.com/openapi.json --force
+
+  # Generate from API documentation
+  printing-press generate --docs https://docs.stripe.com/api --name stripe
+
+  # Multiple specs merged into one CLI
+  printing-press generate --spec api-v1.yaml --spec api-v2.yaml --name myapi`,
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if docsURL != "" {
 				apiName := cliName
@@ -341,8 +352,9 @@ func fetchOrCacheSpec(specURL string, refresh bool) ([]byte, error) {
 
 func newVersionCmd() *cobra.Command {
 	return &cobra.Command{
-		Use:   "version",
-		Short: "Print version",
+		Use:     "version",
+		Short:   "Print version",
+		Example: `  printing-press version`,
 		Run: func(cmd *cobra.Command, args []string) {
 			fmt.Printf("printing-press %s\n", version)
 		},
@@ -358,7 +370,15 @@ func newPrintCmd() *cobra.Command {
 		Use:   "print <api-name>",
 		Short: "Create an autonomous CLI generation pipeline",
 		Long:  "Creates a pipeline directory with plan seeds for each phase. Use /ce:work on each plan to execute.",
-		Args:  cobra.ExactArgs(1),
+		Example: `  # Run full pipeline for a catalog API
+  printing-press print stripe
+
+  # Force overwrite existing pipeline
+  printing-press print stripe --force
+
+  # Resume an interrupted pipeline
+  printing-press print stripe --resume`,
+		Args: cobra.ExactArgs(1),
 		RunE: func(cmd *cobra.Command, args []string) error {
 			apiName := args[0]
 
diff --git a/internal/cli/scorecard.go b/internal/cli/scorecard.go
index 8e6286b9..8c884b73 100644
--- a/internal/cli/scorecard.go
+++ b/internal/cli/scorecard.go
@@ -17,6 +17,11 @@ func newScorecardCmd() *cobra.Command {
 	cmd := &cobra.Command{
 		Use:   "scorecard",
 		Short: "Score a generated CLI against the Steinberger bar",
+		Example: `  # Score a generated CLI directory
+  printing-press scorecard --dir ./generated/stripe-cli
+
+  # Output as JSON
+  printing-press scorecard --dir ./generated/stripe-cli --json`,
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if dir == "" {
 				return fmt.Errorf("--dir is required")
diff --git a/internal/cli/vision.go b/internal/cli/vision.go
index 3a309466..f2bbe7c7 100644
--- a/internal/cli/vision.go
+++ b/internal/cli/vision.go
@@ -22,6 +22,8 @@ which uses LLM + web search to discover usage patterns, non-wrapper tools,
 workflows, and architecture decisions.
 
 The vision command produces the structure; Phase 0 fills it with intelligence.`,
+		Example: `  # Generate visionary research for an API
+  printing-press vision --api stripe --output ./research`,
 		RunE: func(cmd *cobra.Command, args []string) error {
 			if apiName == "" {
 				return fmt.Errorf("--api is required")

← d174491e docs: add ONBOARDING.md for new contributor orientation  ·  back to Cli Printing Press  ·  docs: prevent concurrent worktree build collisions f6f63599 →