-
Notifications
You must be signed in to change notification settings - Fork 383
[cli-consistency] CLI Consistency Report - 2026-09-10 #2940
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-10
APM Version: Agent Package Manager (APM) CLI version 0.30.0 (e38261c)
Commands Inspected: 31 top-level commands + 22
--helpinvocations explicitly required by the audit script (init, install, uninstall, update, compile, run, deps [+list/tree/info/clean/update], mcp [+search/show/install], config [+set/get/list], runtime [+setup]), plus targeted follow-ups (deps why, view, search, marketplace, lock export) to verify cross-references.Summary
Medium Severity
apm deps update --targethelp text lists a different (and doc-inconsistent) target set thanapm update --targetapm deps update --helpvsapm update --helpapm deps updateis described everywhere, including its own help text, as a "strict superset" alias replaced byapm update), but the live--helpoutput forapm deps update --targetomitscopilot-app,copilot-cowork,grok-cloud, andopenclawfrom its Values list, whileapm update --targetincludes them. The published doc page (docs/src/content/docs/reference/cli/deps.md) documents yet a third variant that also dropscopilot-app/copilot-cowork/grok-cloud/openclaw, so the doc happens to matchdeps update's CLI output but notapm update's.apm update --help:apm deps update --help:deps.mdexplicitly enumerates only:agent-skills, agents, agy, all, antigravity, claude, codex, copilot, cursor, gemini, grok-build, hermes, intellij, kiro, opencode, vscode, windsurf-- omittingcopilot-app,copilot-cowork,grok-cloud, andopenclawwithout noting them as experimental-flag-gated, even though the CLI's live help text for the same flag lists them unconditionally.)docs/src/content/docs/reference/cli/deps.md'sapm deps update --targettable to either include the experimental targets with a footnote (asruntime.md-style docs do elsewhere) or explicitly state "experimental targetscopilot-app,copilot-cowork,grok-cloud,openclawalso accepted when their feature flags are enabled" to match the live CLI output and avoid confusing users who diff CLI help against docs.Top-level command list mixes trailing-period and no-trailing-period one-line descriptions
apm --helpCommands:section inapm --helpis inconsistent in whether the one-line summary ends with a period. Roughly a third of the entries end with.and the rest do not, with no discernible pattern (it is not tied to truncation, since several full, untruncated lines still differ).apm --helpoutput):help=string for the ~12 outlier Click commands (config,pack,publish,self-update,targets,unpack,lifecycle,plugin,policy,preview,lock,doctor,deny,approve,audit) to drop the trailing period, matching the majority style used bycompile,deps,init,mcp, etc.Low Severity
apm search's one-line summary embeds its own usage syntax while sibling commands describe behavior in proseapm search --help(top-level summary:Search plugins in a marketplace (QUERY@MARKETPLACE))apm searchandapm runare outliers:searchappends its own argument syntax(QUERY@MARKETPLACE)in parentheses, andrun/runtimeappend parenthetical(experimental)status tags. This is a minor stylistic inconsistency, not a functional bug -- the(experimental)tags onrun/runtimeare meaningful signals so are reasonable to keep, but(QUERY@MARKETPLACE)onsearchduplicates information already shown in itsUsage:line one level down and reads oddly next to peers.apm --helpline:search Search plugins in a marketplace (QUERY@MARKETPLACE)vs. peeroutdated Show outdated locked dependencies.(QUERY@MARKETPLACE)suffix from the top-level summary (it is already documented inapm search --help's ownUsage:line and indocs/cli/search.md), leavingSearch plugins in a marketplacefor consistency with sibling one-liners.apm view's long-form help text is one of only a few commands using\bexample blocks without a blank-line-separated "Options" lead-in style seen elsewhereapm view --helpapm view --helprenders a distinct multi-section long-form layout (Fields:thenExamples:blocks beforeOptions:), while most other multi-option commands (e.g.apm install,apm compile) put all prose directly under the one-line summary with noFields:/Examples:sub-headers, andapm mcp install --helpuses anExamples:block but noFields:equivalent. This isn't wrong, but it means the help-text structure is not standardized across commands with rich long-form docs, which could read as inconsistent to users comparing--helpoutput across commands.apm view --helpoutput includes:apm mcp install --helpuses only:apm compile --help/apm install --helpinclude no structuredExamples:section in--helpoutput at all (examples live only in the docs site).view,mcp install,deps why) all get anExamples:block in--help, versus commands likeinstall/compilethat rely solely on the docs site. Low priority, cosmetic only.Clean Areas
apm --versionandapm --helpwork correctly on a freshuv syncinstall; version string is well-formed.--helpinvocations (top-level, core commands,depssubcommands,mcpsubcommands,configsubcommands,runtimesubcommands) ran successfully with well-formedUsage:/Options:sections and no crashes.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 exit with code2and print clean, Click-standardUsage:+Error:messages -- no stack traces or tracebacks observed.-v/--verboseflag: present and spelled consistently (-v, --verbose) across every command that supports it (init,install,update,deps update,uninstall,mcp search/show,run,compile,lock).--dry-runflag: spelled identically (no--dryrunvariants found) acrossinstall,update,uninstall,deps clean,compile.-y/--yesflag: consistent acrossdeps clean,update,runtime remove.-g/--globalflag: consistent naming and description pattern ("... user scope (~/.apm/) ...") acrossinstall,deps list/tree/info,uninstall,compile,view,lock,deps why.docs/src/content/docs/reference/cli/*.md(no separatedocs/cli-reference.mdfile exists in this repo -- the doc set lives underdocs/src/content/docs/reference/cli/) matches an existing CLI command;README.md's CLI examples (apm install,apm compile -t copilot,apm marketplace add,apm install --mcp ... --transport http,apm lock export --format cyclonedx|spdx) all correspond to real, working flags and subcommands.apm mcp,apm config,apm runtime,apm depssubcommand groups: all match their respective doc pages' documented subcommand tables exactly (list/search/show/install for mcp; get/set/list/unset for config; setup/list/status/remove for runtime; list/tree/info/why/update/clean for deps).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.