-
Notifications
You must be signed in to change notification settings - Fork 208
[cli-consistency] CLI Consistency Report -- 2026-05-27 #1508
Copy link
Copy link
Closed as not planned
Labels
automationDeprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0.cliDeprecated: use area/cli. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/cli. Kept for issue history; will be removed in milestone 0.10.0.documentationDeprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0.
Metadata
Metadata
Assignees
Labels
automationDeprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/automation. Kept for issue history; will be removed in milestone 0.10.0.cliDeprecated: use area/cli. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use area/cli. Kept for issue history; will be removed in milestone 0.10.0.documentationDeprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0.Deprecated: use type/docs. Kept for issue history; will be removed in milestone 0.10.0.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Projects
Status
Done
CLI Consistency Report
Date: 2026-05-27
APM Version: 0.15.0 (3f3d8ad)
Commands Inspected: 27 (top-level + 6 core + 6 deps subcommands + 4 mcp subcommands + 3 config subcommands + 2 runtime subcommands + extras)
Summary
High Severity
CLI output contains non-ASCII Unicode box-drawing characters
apm config,apm runtime list┏, U+2501━, U+2503┃, U+2533┳, etc.). The project encoding rules explicitly prohibit all characters outside printable ASCII (U+0020-U+007E) in CLI output to preventUnicodeEncodeError: 'charmap' codec can't encode characteron Windows cp1252 terminals.apm configoutput contains 45 lines with non-ASCII bytes (codepoints 0x250f, 0x2501, 0x2533).rich.table.Tablerendering inapm configandapm runtime listwith ASCII-safe output. Usetabulatewithtablefmt="simple"or a custom formatter, and theSTATUS_SYMBOLSdict fromsrc/apm_cli/utils/console.pyfor status indicators. Theapm configdocs already note it "Falls back to plain text if rich is unavailable" -- the ASCII fallback should become the default.Medium Severity
apm mcp install --helpdoes not expose its options as CLI flagsapm mcp install --helpapm mcp installis documented as an alias forapm install --mcp. However, its--helpoutput lists only--helpas a formal option; all other flags (--transport,--url,--env,--header,--registry,--mcp-version,--dev,--dry-run,--force,--verbose,--no-policy) appear only as inline prose in a footer note. Users cannot discover or tab-complete these options fromapm mcp install --help. The inline note is also poorly formatted with mid-flag line breaks.apm mcp installso they appear in--helpproperly, or (b) state clearly in the command description that this is a thin forwarder and direct users toapm install --mcp --help, removing the malformed inline note.apm install --helpembeds cross-command deprecation note inside--targetdescriptionapm install --help--targetoption description inapm install --helpends with a note about a different command: "Note: '--target all' on 'apm compile' is deprecated; use 'apm compile --all' instead." This note is aboutapm compile, notapm install, and is confusing in context.apm compile-specific deprecation note fromapm install --help. The deprecation should live inapm compile's own help text or docs. If a cross-reference is needed, add a "See also" note in theapm installdescription section rather than embedding it inside an option description.apm configgroup inconsistently lacks alistsubcommandapm config --helplistsubcommand (apm deps list,apm mcp list,apm runtime list).apm confighas nolistsubcommand -- to view config, users run bareapm config. This breaks the consistent pattern and produces a confusing error when users tryapm config listby analogy.apm config listas an alias for bareapm config(showing the merged project + global config table). Alternatively, document the bareapm configbehavior prominently in the help group description so the intentional pattern difference is clear to users.Low Severity
apm runtime listStatus column truncates text mid-wordapm runtime list[+]symbol and status text on separate lines within the same cell, making the table hard to read. This is a secondary symptom of the Unicode table rendering issue.[+] installedand[ ] not installedthat fits on one line per row. This also resolves the Unicode issue in this command.apm deps updateandapm updatelack differentiation guidanceapm deps update,apm updateapm install --updateis deprecated in favour ofapm update, butapm deps updatecarries no similar guidance.apm update-- "Interactive upgrade planner (use --yes for CI)."apm deps update-- "Low-level re-install of specific packages; prefer 'apm update' for routine upgrades."Clean Areas
--nonexistent-flag, missing required arguments likeapm deps info,apm config set).--help/-hworks on every tested command and subcommand.apm init,apm install,apm uninstall,apm compile,apm runhelp text is well-structured and consistent.apm deps list,apm deps tree,apm deps info,apm deps clean,apm deps whyare clean and well-documented.apm mcp search,apm mcp show,apm mcp listare consistent with docs.apm config get,apm config set,apm config unsetare well-documented.apm runtime setupis clean.--dry-run,--verbose,-v,--yes,-y,-g/--global) is consistent across all commands that share them.docs/src/content/docs/reference/cli/are comprehensive and accurately reflect the CLI -- no phantom commands or missing command pages found.Warning
Firewall blocked 2 domains
The following domains were blocked by the firewall during workflow execution:
astral.shindex.crates.ioSee Network Configuration for more information.