Skip to content

[cli-consistency] CLI Consistency Issues - 2026-04-22 #27845

@github-actions

Description

@github-actions

Summary

Automated CLI consistency inspection found 4 inconsistencies across command help text that should be addressed for better user experience.

Breakdown by Severity

  • High: 0
  • Medium: 2 (Confusing or misleading)
  • Low: 2 (Minor inconsistencies)

Issue Categories

  1. Structural help text bug (1 command) — init has Usage: embedded inside the Long description, producing a confusing duplicate Usage section
  2. Misleading flag description (1 command) — trial --clone-repo describes itself as "Alternative to --logical-repo" but the two flags serve fundamentally different purposes
  3. Capitalization inconsistency (1 command) — mcp add --transport lists values as stdio, http, docker while mcp inspect prose uses Docker and HTTP
  4. Incomplete examples in flag description (1 command) — logs --safe-output only examples create-issue, missing-tool, missing-data; omits valid values noop and report-incomplete

Inspection Details

  • Total Commands Inspected: 32 (--help run for every top-level command and all subcommands: add, add-wizard, audit, audit diff, checks, compile, completion, disable, domains, enable, fix, hash-frontmatter, health, init, list, logs, mcp, mcp add, mcp inspect, mcp list, mcp list-tools, mcp-server, new, pr, pr transfer, project, project new, remove, run, secrets, secrets bootstrap, secrets set, status, trial, update, upgrade, validate, version)
  • Commands with Issues: 4
  • Date: 2026-04-22
  • Method: Built binary with make build, executed all CLI commands with --help flags, reviewed source code for each finding

Findings Summary

No issues found in these areas:

  • Flag naming and short-flag consistency (-h, -v, -e, -r, -j, -d, -f used consistently)
  • Example formatting (consistent # comment style throughout)
  • Command group organization (Setup, Development, Execution, Analysis, Utilities)
  • Terminology ("workflow", "workflow-id", "agentic workflow" used consistently)
  • Error handling and output routing references
  • --repeat description consistent across run and trial
  • --approve description consistent across compile, run, and upgrade
  • Documentation in docs/src/content/docs/setup/cli.md matches CLI commands

⚠️ Issues found:

  • Embedded Usage: in init Long description
  • Misleading --clone-repo flag description in trial
  • Capitalization inconsistency in mcp add --transport values
  • Incomplete --safe-output examples in logs
Detailed Findings

1. gh aw init — Embedded "Usage:" Creates Duplicate Section in Help Output

Commands Affected: init
Priority: Medium
Type: Structural bug in help text

Current Output (from running ./gh-aw init --help):

Initialize the repository for agentic workflows by configuring .gitattributes and creating the dispatcher agent file.

Usage:
  gh aw init

This command performs non-interactive repository setup...
...
Usage:
  gh aw init [flags]

Flags:
  ...

Issue: The Long description in pkg/cli/init_command.go (lines 18–21) contains a literal Usage:\n gh aw init block inside the Go string. Cobra renders the Long description verbatim, then appends its own generated Usage: block — resulting in two "Usage:" sections in the final --help output. This is unique to init; no other command has this issue.

Suggested Fix: Remove the embedded Usage: block from the Long description. The information is redundant since Cobra generates the Usage section automatically.

// Before
Long: `Initialize the repository for agentic workflows by configuring .gitattributes and creating the dispatcher agent file.

Usage:
  gh aw init

This command performs non-interactive repository setup...`

// After
Long: `Initialize the repository for agentic workflows by configuring .gitattributes and creating the dispatcher agent file.

This command performs non-interactive repository setup...`

2. gh aw trial --clone-repo — "Alternative to --logical-repo" Is Misleading

Commands Affected: trial
Priority: Medium
Type: Inaccurate flag description

Current Output (from running ./gh-aw trial --help, Flags section):

--clone-repo string   Alternative to --logical-repo: clone the contents of the specified repo into the host repo instead of using logical repository simulation

Issue: The description calls --clone-repo an "alternative to --logical-repo", but the Repository modes section in the same help text makes clear they do fundamentally different things:

  • --logical-repo REPO — changes the github.repository context (simulates execution as if installed in REPO)
  • --clone-repo REPO — copies REPO's file contents into the trial repository before execution

These are not mutually exclusive alternatives; they address different needs. A user might legitimately use both. Describing one as an "alternative" to the other will cause confusion.

Suggested Fix: Update the flag description to accurately describe what --clone-repo does without framing it as an alternative:

--clone-repo string   Clone the contents of the specified repo into the host repo before execution (useful for testing against actual repository state)

3. gh aw mcp add --transport — Inconsistent Capitalization of Transport Type Values

Commands Affected: mcp add, mcp inspect
Priority: Low
Type: Capitalization inconsistency

Current Output (from running ./gh-aw mcp add --help):

--transport string   Preferred transport type (stdio, http, docker)

Current Output (from running ./gh-aw mcp inspect --help):

This command starts each MCP server configured in the workflow, queries its capabilities,
and displays the results in a formatted table. It supports stdio, Docker, and HTTP MCP servers.

Issue: mcp add lists transport types as all-lowercase stdio, http, docker, while mcp inspect uses Docker and HTTP with standard capitalization. The values listed in mcp add are likely intended as the literal flag values (where case matters), but the inconsistency across the two commands creates visual confusion.

Suggested Fix: Use consistent casing. Since these are literal flag values the user must type, lowercase is appropriate for the mcp add flag description. Update mcp inspect prose to use lowercase consistently:

It supports stdio, docker, and http MCP servers.

4. gh aw logs --safe-output — Examples Omit Valid Safe-Output Types

Commands Affected: logs
Priority: Low
Type: Incomplete documentation

Current Output (from running ./gh-aw logs --help):

--safe-output string    Filter to runs containing a specific safe output type (e.g., create-issue, missing-tool, missing-data)

Issue: The examples and flag description only mention three safe-output types. Inspecting pkg/workflow/js/safe_outputs_tools.json shows that noop and report-incomplete are also valid tool names produced by workflows. A user trying to filter for noop completions or report-incomplete failures would not discover these types from the help text.

Suggested Fix: Expand the example list to include the most commonly used types:

--safe-output string    Filter to runs containing a specific safe output type (e.g., create-issue, missing-tool, missing-data, noop, report-incomplete)

Generated by CLI Consistency Checker · ● 1.3M ·

  • expires on Apr 24, 2026, 1:49 PM UTC

Metadata

Metadata

Labels

automationclicookieIssue Monster Loves Cookies!documentationImprovements or additions to documentation

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions