Detailed analysis
[HIGH-1] webui is not a verb
CLI Standard citation: Commands are verbs — "Commands are verbs. Every command that acts on a primary object of a command must be a verb."
Evidence:
// cmd/cli/commands/webui.go:20
cobraCmd := &cobra.Command{
Use: "webui",
Short: "Launch web UI",
Long: "Open the snap's builtin web user interface in the default browser",
The command name webui is a noun (acronym for "web user interface"). Per the standard, every command that acts on a primary object must be a verb. This command launches/opens a web UI — the action is launching, not the interface itself.
Remediation: Rename to a verb-noun form. Recommended options:
launch-webui — follows verb-noun pattern
open-webui — uses a standard verb to match open semantics
[HIGH-2] Dual short and long flags for verbose
CLI Standard citation: Do not offer dual flags — "As a policy, do not offer both short and long flags for the same action."
Evidence:
// cmd/cli/main.go:66
rootCmd.PersistentFlags().BoolVarP(&ctx.Verbose, "verbose", "v", false, "Enable verbose logging")
The BoolVarP function creates both --verbose (long) and -v (short) for the same flag. The CLI standard explicitly forbids this pattern. Since this is a persistent global flag used infrequently, the long form --verbose is more appropriate.
Remediation: Change BoolVarP to BoolVar to remove the short -v flag:
rootCmd.PersistentFlags().BoolVar(&ctx.Verbose, "verbose", false, "Enable verbose logging")
[UNRATED-1] Table headers are lowercase instead of uppercase
CLI Standard citation: Table format — "Column headers should use upper case (e.g. NAME, STATUS, etc) and bold font." (SHOULD rule)
Evidence:
// cmd/cli/commands/list-engines.go:104
var headerRow = []string{"engine", "vendor", "summary", "compat"}
The column headers use lowercase words. The standard recommends uppercase headers with bold font for better readability and consistency.
Remediation: Change headers to uppercase: "ENGINE", "VENDOR", "SUMMARY", "COMPAT".
[UNRATED-2] Missing --no-headers flag on list-engines
CLI Standard citation: Table format — "Show column headers by default but allow them to be hidden with --no-headers." (SHOULD rule)
Evidence:
// cmd/cli/commands/list-engines.go — no --no-headers flag defined
cobraCmd.Flags().StringVar(
&cmd.format,
"format",
"table",
fmt.Sprintf("output format (%s)", strings.Join(supportedFormats, ", ")),
)
The list-engines command renders a table but does not provide a --no-headers flag to allow hiding column headers. This is useful for scripting and automated processing of table output.
Remediation: Add a --no-headers bool flag to list-engines (and any other command rendering tables).
[UNRATED-3] list-models does not render a proper table for --format table
CLI Standard citation: Table format — the standard defines proper table rendering expectations. (SHOULD rule, implied by format expectations)
Evidence:
// cmd/cli/commands/list-models.go:56-58
for _, model := range engineManifest.Model.Options {
fmt.Println(model)
}
When --format table is specified (the default), the command prints plain text lines instead of a structured table. The code includes a TODO comment acknowledging this gap. This means the table format option is misleading.
Remediation: Implement proper table rendering for list-models using tablewriter (as list-engines does), or remove the table format option until it's implemented.
Canonical CLI automated review report
This report is AI-generated. Please report issues with the cli-skill so we can improve this report.
Scope: CLI standard compliance review of
cmd/cli/Workflow: CLI skill version (mock local run)
Reference: Canonical CLI standards
Limitations: Detection of clear CLI standards violations. Does not guarantee full compliance with CLI standards
Findings
webuiis a noun, not a verb. Source:cmd/cli/commands/webui.goline 20:Use: "webui"launch-webuioropen-webui--verbose/-vdual flag pattern. Source:cmd/cli/main.goline 66:BoolVarP(&ctx.Verbose, "verbose", "v", false, ...)--verbose(preferred for infrequent use) or-v. Remove the other.list-enginestable headers are lowercase:"engine","vendor","summary","compat". Source:cmd/cli/commands/list-engines.goline 104ENGINE,VENDOR,SUMMARY,COMPAT--no-headers(SHOULD)list-engineslacks a--no-headersflag. Source:cmd/cli/commands/list-engines.go--no-headersflag tolist-engineslist-modelswith--format tableprints plain text lines, not a proper table. Source:cmd/cli/commands/list-models.goline 56-58: printsfmt.Println(model)list-modelsDetailed analysis
[HIGH-1]
webuiis not a verbCLI Standard citation: Commands are verbs — "Commands are verbs. Every command that acts on a primary object of a command must be a verb."
Evidence:
The command name
webuiis a noun (acronym for "web user interface"). Per the standard, every command that acts on a primary object must be a verb. This command launches/opens a web UI — the action is launching, not the interface itself.Remediation: Rename to a verb-noun form. Recommended options:
launch-webui— follows verb-noun patternopen-webui— uses a standard verb to matchopensemantics[HIGH-2] Dual short and long flags for
verboseCLI Standard citation: Do not offer dual flags — "As a policy, do not offer both short and long flags for the same action."
Evidence:
The
BoolVarPfunction creates both--verbose(long) and-v(short) for the same flag. The CLI standard explicitly forbids this pattern. Since this is a persistent global flag used infrequently, the long form--verboseis more appropriate.Remediation: Change
BoolVarPtoBoolVarto remove the short-vflag:[UNRATED-1] Table headers are lowercase instead of uppercase
CLI Standard citation: Table format — "Column headers should use upper case (e.g. NAME, STATUS, etc) and bold font." (SHOULD rule)
Evidence:
The column headers use lowercase words. The standard recommends uppercase headers with bold font for better readability and consistency.
Remediation: Change headers to uppercase:
"ENGINE","VENDOR","SUMMARY","COMPAT".[UNRATED-2] Missing
--no-headersflag onlist-enginesCLI Standard citation: Table format — "Show column headers by default but allow them to be hidden with --no-headers." (SHOULD rule)
Evidence:
The
list-enginescommand renders a table but does not provide a--no-headersflag to allow hiding column headers. This is useful for scripting and automated processing of table output.Remediation: Add a
--no-headersbool flag tolist-engines(and any other command rendering tables).[UNRATED-3]
list-modelsdoes not render a proper table for--format tableCLI Standard citation: Table format — the standard defines proper table rendering expectations. (SHOULD rule, implied by format expectations)
Evidence:
When
--format tableis specified (the default), the command prints plain text lines instead of a structured table. The code includes a TODO comment acknowledging this gap. This means thetableformat option is misleading.Remediation: Implement proper table rendering for
list-modelsusingtablewriter(aslist-enginesdoes), or remove thetableformat option until it's implemented.CLI changes in this PR
No PR context available — this was a mock workflow run triggered manually against
cmd/cli/.Summary
Overall score: 85.7%