-
Notifications
You must be signed in to change notification settings - Fork 383
[cli-consistency] CLI Consistency Report — 2026-09-11 #2945
Copy link
Copy link
Closed as not planned
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).automationLegacy classification name; prefer type/automation. Retained while active writers are migrated.Legacy classification name; prefer type/automation. Retained while active writers are migrated.documentationLegacy classification name; prefer type/docs. Retained while active writers are migrated.Legacy classification name; prefer type/docs. Retained while active writers are migrated.
Description
Activity
Metadata
Metadata
Assignees
Labels
area/cliCLI command surface, flags, help text (cross-cutting).CLI command surface, flags, help text (cross-cutting).automationLegacy classification name; prefer type/automation. Retained while active writers are migrated.Legacy classification name; prefer type/automation. Retained while active writers are migrated.documentationLegacy classification name; prefer type/docs. Retained while active writers are migrated.Legacy classification name; prefer type/docs. Retained while active writers are migrated.
Type
Projects
- StatusShow more project fieldsNo status
CLI Consistency Report
Date: 2026-09-11
APM Version: 0.30.0 (e38261c)
Commands Inspected: 23 (
apm --helpplus every subcommand listed in the audit scope, includingdeps,mcp,config, andruntimesubcommand groups)Summary
Medium Severity
Inconsistent trailing-period style in top-level command summaries (
apm --help)apm --helpCommands:table mix sentences that end with a period and sentences that do not, with no discernible rule (it is not simply "short vs. long" — some short ones have periods and some long ones don't).apm --help, full untruncated text viaclick.testing.CliRunner):config("Configure APM CLI.") anddeny("...a narrowing override).") which both end with a period, againstcache,compile,deps,doctor,find,lock,targets,update,view, which are equally short/complete sentences but have no trailing period.@click.command(help=...)/ docstring-derived summaries insrc/apm_cli/cli.pyand the command modules undersrc/apm_cli/commands/.Subcommand group help text mixes deprecation notice into the description inconsistently (
apm deps update/apm deps --help)apm deps --help,apm deps update --helpapm deps update's one-line summary in the parentapm depscommand table is written as a deprecation notice only ("DEPRECATED: use 'apm update' instead (strict superset)."), while its own--helpoutput states the deprecation notice and then still describes what it does ("...Update APM dependencies to latest refs"). No other deprecated command uses this exact two-part pattern in its parent-listing row —unpackinstead prefixes with[Deprecated]in brackets, a different, non-uniform convention for the same concept (deprecation) used only two places in the whole CLI.--helpheader — pick either the[Deprecated] <description>prefix style (used byunpack) or theDEPRECATED: <reason>. <description>style (used bydeps update), and apply it to both commands identically.Low Severity
--targetvalue list presentation differs between CLI help anddocs/src/content/docs/reference/cli/deps.mdapm deps update --helpvs.docs/src/content/docs/reference/cli/deps.md-t, --targethelp text forapm deps updatelists all target tokens (including experimental onescopilot-app,copilot-cowork,grok-cloud,openclaw) inline in one flat comma list. The docs page instead splits the same option into a "stable" list and a separate parenthetical "Experimental targets (...)" callout. Functionally equivalent, but the two presentations don't match token-for-token, so a reader diffing CLI output against docs may think a token is missing.Clean Areas
apm --versionandapm --helpwork correctly from a freshuv syncinstall.apm --help(approve,audit,cache,compile,config,deny,deps,doctor,experimental,find,init,install,lifecycle,list,lock,marketplace,mcp,outdated,pack,plugin,policy,preview,prune,publish,run,runtime,search,self-update,targets,uninstall,unpack,update,view) is documented underdocs/src/content/docs/reference/cli/and cross-referenced fromdocs/src/content/docs/reference/index.md. The README'sCLI Referencelink (/reference/cli-commands/) correctly redirects viadocs/astro.config.mjsto/reference/cli/install/.deps,mcp,config,runtimesubcommand groups: All subcommands (deps list/tree/info/clean/update/why,mcp list/search/show/install,config get/set/list/unset,runtime list/setup/status/remove) run--helpsuccessfully and match their respective docs pages in required arguments, flags, and defaults (e.g.,mcp search --limitdefault10,mcp list --limitdefault20, both matchingdocs/src/content/docs/reference/cli/mcp.md).--verbose/-v,--dry-run,-y/--yes, and-g/--globalare spelled identically everywhere they appear across all inspected commands — no--dryrunor other naming drift found.apm install --nonexistent-flag,apm deps info(missing arg),apm config set(missing args),apm mcp show(missing arg), andapm runtime setup badruntime(invalid choice) all produce Click's standardUsage:+Error:messages with exit code2, no stack traces.apm install --frozencombined with--mcpor positional packages produces a clear, documented error (exit code1) matching the CLI help text's stated mutual-exclusivity behavior.apm configresolution-order documentation,APM_POLICY_DISABLEescape hatch (verified present insrc/apm_cli/install/phases/policy_gate.pyandsrc/apm_cli/policy/discovery.py), andapm runtimesupported runtime list (copilot,codex,llm,gemini) all matched actual CLI behavior and output.Warning
Firewall blocked 2 domains
The following domains were blocked by the firewall during workflow execution:
astral.shindex.crates.ioTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.