CLI Consistency Report
Date: 2026-04-09
APM Version: 0.8.11 (5c81b95)
Commands Inspected: 40 (20 top-level + 20 subcommands across deps, mcp, config, runtime, marketplace groups)
Summary
| Severity |
Count |
| High |
1 |
| Medium |
6 |
| Low |
2 |
High Severity
apm compile progress message is misleading for cursor, opencode, and codex targets
- Command:
apm compile --target cursor, apm compile --target opencode, apm compile --target codex
- Problem: All three targets fall through to the
else branch in the compile target-message handler (which is labelled # "all"), producing the message "Compiling for AGENTS.md + CLAUDE.md". This is factually incorrect for cursor (.cursor/agents/ + .cursor/skills/ + .cursor/rules/), opencode (.opencode/agents/ + .opencode/commands/), and codex (.agents/skills/ + .codex/agents/ + .codex/hooks.json).
- Evidence:
$ apm compile --target cursor --dry-run
[i] Compiling for AGENTS.md + CLAUDE.md - explicit --target flag
$ apm compile --target opencode --dry-run
[i] Compiling for AGENTS.md + CLAUDE.md - explicit --target flag
$ apm compile --target codex --dry-run
[i] Compiling for AGENTS.md + CLAUDE.md - explicit --target flag
$ apm compile --target all --dry-run
[i] Compiling for AGENTS.md + CLAUDE.md - explicit --target flag
```
- Location:
src/apm_cli/commands/compile/cli.py, the if/elif/else block around line 390 that builds the progress message. The else comment says # "all" but cursor/opencode/codex also reach it.
- Suggested Fix: Add explicit
elif branches for cursor, opencode, and codex (using get_target_description() from target_detection.py which already has correct descriptions), and restrict the final else to only the all case.
Medium Severity
1. apm compile docs --target option missing copilot and cursor values
- Location:
docs/src/content/docs/reference/cli-commands.md, line 1169
- Problem: The documented valid values for
--target are [vscode|agents|claude|codex|opencode|all], but the actual CLI accepts [copilot|claude|cursor|opencode|codex|vscode|agents|all]. The canonical target copilot and the valid target cursor are both absent.
- Evidence:
- Docs:
- \-t, --target [vscode|agents|claude|codex|opencode|all]``
- CLI help:
-t, --target [copilot|claude|cursor|opencode|codex|vscode|agents|all]
- Suggested Fix: Update the docs option value list to
[copilot|claude|cursor|opencode|codex|vscode|agents|all] and note that vscode and agents are deprecated aliases for copilot.
2. apm compile docs describe deprecated alias relationship incorrectly
- Location:
docs/src/content/docs/reference/cli-commands.md, line 1169
- Problem: The docs say
`agents` is an alias for `vscode`, but the CLI help says both vscode and agents are deprecated aliases for copilot. These are contradictory statements, and the docs lead users toward using the deprecated target name.
- Evidence:
- Docs:
Target agent format. \agents` is an alias for `vscode`. Auto-detects if not specified.`
- CLI help:
'vscode' and 'agents' are deprecated aliases for 'copilot'. Auto-detects if not specified.
- Suggested Fix: Update the docs description to:
`copilot` is the canonical target. `vscode` and `agents` are deprecated aliases for `copilot`. `cursor`, `opencode`, `codex` are additional valid targets.
3. apm compile docs Auto-Detection table and example YAML use deprecated vscode target without deprecation notice
- Location:
docs/src/content/docs/reference/cli-commands.md, lines 1185-1200
- Problem: The Auto-Detection table shows
.github/ exists only maps to target vscode. The example YAML shows target: vscode. Both use the deprecated alias without indicating copilot is preferred. This will confuse users who read the docs separately from the CLI help.
- Evidence:
| .github/ exists only | `vscode` | AGENTS.md + .github/ |
target: vscode # or claude, codex, opencode, or all
```
- Suggested Fix: Replace
vscode with copilot in the auto-detection table and example YAML, and add a note: vscode and agents are accepted as deprecated aliases.
4. apm compile docs Target Formats table missing copilot and cursor entries
- Location:
docs/src/content/docs/reference/cli-commands.md, lines ~1200-1210
- Problem: The Target Formats table lists
vscode, claude, codex, opencode, and all — but copilot (the canonical replacement for vscode) and cursor (a valid, distinct target) are absent.
- Evidence: The table has no row for
copilot or cursor.
- Suggested Fix: Add a
copilot row (replacing or aliasing the vscode row) and a cursor row describing .cursor/agents/, .cursor/skills/, .cursor/rules/.
5. apm install docs: --verbose missing short form -v
- Location:
docs/src/content/docs/reference/cli-commands.md, line 95
- Problem: The install options list documents
--verbose without its -v short form, even though the CLI has -v, --verbose. Every other command that documents verbose uses -v, --verbose in the docs.
- Evidence:
- Docs:
- \--verbose` - Show individual file paths and full error details...`
- CLI:
-v, --verbose Show detailed installation information
- Suggested Fix: Change the docs entry to
- \-v, --verbose` - Show individual file paths and full error details in the diagnostic summary`.
6. apm deps update docs list verbose flag in wrong order
- Location:
docs/src/content/docs/reference/cli-commands.md, line 824
- Problem: The docs format is
--verbose, -v (long flag first), while the standard pattern throughout the rest of the docs is -v, --verbose (short flag first). This is inconsistent with all other occurrences.
- Evidence:
- Docs (deps update):
- \--verbose, -v` - Show detailed update information`
- Docs (all other commands):
- \-v, --verbose` - Show detailed output`
- Suggested Fix: Change to
- \-v, --verbose` - Show detailed update information`.
Low Severity
1. Trailing period in one-line descriptions for outdated and view
- Command:
apm outdated, apm view
- Problem: These two commands have trailing periods in their single-line description shown in
apm --help and in each command's usage header. All 18 other commands have no trailing period.
- Evidence (from
apm --help):
outdated Show outdated locked dependencies.
view View package metadata or list remote versions.
Compare with: compile Compile APM context into distributed AGENTS.md files (no period)
- Location: First line of docstrings in
src/apm_cli/commands/outdated.py:122 and src/apm_cli/commands/view.py:320
- Suggested Fix: Remove the trailing period from both docstrings.
2. apm compile internal docstring references outdated target aliases
- Location:
src/apm_cli/commands/compile/cli.py, lines ~240-243
- Problem: The command's internal Python docstring (not shown to users via
--help) says * vscode/agents: Generates AGENTS.md + .github/ structure (VSCode/GitHub Copilot) without mentioning copilot as the preferred target.
- Evidence:
* vscode/agents: Generates AGENTS.md + .github/ structure (VSCode/GitHub Copilot)
- Suggested Fix: Update to:
* copilot: Generates AGENTS.md + .github/ structure (VSCode/GitHub Copilot). vscode/agents are deprecated aliases.
Clean Areas
The following commands and areas passed all checks with no issues found:
apm init — Help text, flags, and documentation are consistent.
apm uninstall — Help text and docs match; --dry-run, -v, --verbose, -g, --global all correctly documented.
apm update — Simple and consistent.
apm run / apm preview — Flags -p, --param and -v, --verbose are consistent between CLI and docs.
apm deps list/tree/info/clean — All consistent between CLI and docs.
apm deps update — CLI flags are accurate (aside from medium-severity verbose flag ordering in docs).
apm mcp list/search/show — All consistent; no mcp install subcommand exists or is documented.
apm config get/set — Behavior (including apm config bare showing full config) matches docs; no config list subcommand exists or is documented.
apm runtime setup/list/remove/status — All consistent between CLI and docs.
apm marketplace add/browse/list/remove/update — All consistent.
apm audit — All flags (--ci, --policy, --no-cache, --no-fail-fast, --strip, --dry-run, -f/--format, -o/--output) are consistent between CLI and docs.
apm outdated — Flags and docs match (aside from low-severity trailing period).
apm pack / apm unpack — All flags consistent.
apm prune — Consistent.
apm search — Consistent.
apm view — Consistent (aside from low-severity trailing period).
apm list — Consistent.
- Error handling — All tested invalid inputs (
--nonexistent-flag, missing required args) produce clean, user-friendly error messages with no stack traces.
Generated by CLI Consistency Checker · ◷
CLI Consistency Report
Date: 2026-04-09
APM Version: 0.8.11 (5c81b95)
Commands Inspected: 40 (20 top-level + 20 subcommands across deps, mcp, config, runtime, marketplace groups)
Summary
High Severity
apm compileprogress message is misleading for cursor, opencode, and codex targetsapm compile --target cursor,apm compile --target opencode,apm compile --target codexelsebranch in the compile target-message handler (which is labelled# "all"), producing the message "Compiling for AGENTS.md + CLAUDE.md". This is factually incorrect for cursor (.cursor/agents/ + .cursor/skills/ + .cursor/rules/), opencode (.opencode/agents/ + .opencode/commands/), and codex (.agents/skills/ + .codex/agents/ + .codex/hooks.json).src/apm_cli/commands/compile/cli.py, theif/elif/elseblock around line 390 that builds the progress message. Theelsecomment says# "all"but cursor/opencode/codex also reach it.elifbranches forcursor,opencode, andcodex(usingget_target_description()fromtarget_detection.pywhich already has correct descriptions), and restrict the finalelseto only theallcase.Medium Severity
1.
apm compiledocs--targetoption missingcopilotandcursorvaluesdocs/src/content/docs/reference/cli-commands.md, line 1169--targetare[vscode|agents|claude|codex|opencode|all], but the actual CLI accepts[copilot|claude|cursor|opencode|codex|vscode|agents|all]. The canonical targetcopilotand the valid targetcursorare both absent.- \-t, --target [vscode|agents|claude|codex|opencode|all]``-t, --target [copilot|claude|cursor|opencode|codex|vscode|agents|all][copilot|claude|cursor|opencode|codex|vscode|agents|all]and note thatvscodeandagentsare deprecated aliases forcopilot.2.
apm compiledocs describe deprecated alias relationship incorrectlydocs/src/content/docs/reference/cli-commands.md, line 1169`agents` is an alias for `vscode`, but the CLI help says bothvscodeandagentsare deprecated aliases forcopilot. These are contradictory statements, and the docs lead users toward using the deprecated target name.Target agent format. \agents` is an alias for `vscode`. Auto-detects if not specified.`'vscode' and 'agents' are deprecated aliases for 'copilot'. Auto-detects if not specified.`copilot` is the canonical target. `vscode` and `agents` are deprecated aliases for `copilot`. `cursor`, `opencode`, `codex` are additional valid targets.3.
apm compiledocs Auto-Detection table and example YAML use deprecatedvscodetarget without deprecation noticedocs/src/content/docs/reference/cli-commands.md, lines 1185-1200.github/ exists onlymaps to targetvscode. The example YAML showstarget: vscode. Both use the deprecated alias without indicatingcopilotis preferred. This will confuse users who read the docs separately from the CLI help.vscodewithcopilotin the auto-detection table and example YAML, and add a note:vscodeandagentsare accepted as deprecated aliases.4.
apm compiledocs Target Formats table missingcopilotandcursorentriesdocs/src/content/docs/reference/cli-commands.md, lines ~1200-1210vscode,claude,codex,opencode, andall— butcopilot(the canonical replacement forvscode) andcursor(a valid, distinct target) are absent.copilotorcursor.copilotrow (replacing or aliasing thevscoderow) and acursorrow describing.cursor/agents/,.cursor/skills/,.cursor/rules/.5.
apm installdocs:--verbosemissing short form-vdocs/src/content/docs/reference/cli-commands.md, line 95--verbosewithout its-vshort form, even though the CLI has-v, --verbose. Every other command that documents verbose uses-v, --verbosein the docs.- \--verbose` - Show individual file paths and full error details...`-v, --verbose Show detailed installation information- \-v, --verbose` - Show individual file paths and full error details in the diagnostic summary`.6.
apm deps updatedocs list verbose flag in wrong orderdocs/src/content/docs/reference/cli-commands.md, line 824--verbose, -v(long flag first), while the standard pattern throughout the rest of the docs is-v, --verbose(short flag first). This is inconsistent with all other occurrences.- \--verbose, -v` - Show detailed update information`- \-v, --verbose` - Show detailed output`- \-v, --verbose` - Show detailed update information`.Low Severity
1. Trailing period in one-line descriptions for
outdatedandviewapm outdated,apm viewapm --helpand in each command's usage header. All 18 other commands have no trailing period.apm --help):compile Compile APM context into distributed AGENTS.md files(no period)src/apm_cli/commands/outdated.py:122andsrc/apm_cli/commands/view.py:3202.
apm compileinternal docstring references outdated target aliasessrc/apm_cli/commands/compile/cli.py, lines ~240-243--help) says* vscode/agents: Generates AGENTS.md + .github/ structure (VSCode/GitHub Copilot)without mentioningcopilotas the preferred target.* copilot: Generates AGENTS.md + .github/ structure (VSCode/GitHub Copilot). vscode/agents are deprecated aliases.Clean Areas
The following commands and areas passed all checks with no issues found:
apm init— Help text, flags, and documentation are consistent.apm uninstall— Help text and docs match;--dry-run,-v, --verbose,-g, --globalall correctly documented.apm update— Simple and consistent.apm run/apm preview— Flags-p, --paramand-v, --verboseare consistent between CLI and docs.apm deps list/tree/info/clean— All consistent between CLI and docs.apm deps update— CLI flags are accurate (aside from medium-severity verbose flag ordering in docs).apm mcp list/search/show— All consistent; nomcp installsubcommand exists or is documented.apm config get/set— Behavior (includingapm configbare showing full config) matches docs; noconfig listsubcommand exists or is documented.apm runtime setup/list/remove/status— All consistent between CLI and docs.apm marketplace add/browse/list/remove/update— All consistent.apm audit— All flags (--ci,--policy,--no-cache,--no-fail-fast,--strip,--dry-run,-f/--format,-o/--output) are consistent between CLI and docs.apm outdated— Flags and docs match (aside from low-severity trailing period).apm pack/apm unpack— All flags consistent.apm prune— Consistent.apm search— Consistent.apm view— Consistent (aside from low-severity trailing period).apm list— Consistent.--nonexistent-flag, missing required args) produce clean, user-friendly error messages with no stack traces.