$ apm install --help
--runtime TEXT Target specific runtime only (copilot, claude, codex,
cursor, gemini, antigravity, intellij, kiro, opencode,
vscode, windsurf)
-t, --target TARGET ...Values: copilot, claude, cursor, opencode, codex,
gemini, antigravity, windsurf, kiro, intellij, agent-
skills, all...
CLI Consistency Report
Date: 2026-06-22
APM Version: 0.21.0 (a9a883b)
Commands Inspected: 74
Summary
High Severity
denycommand has no CLI reference documentation pageapm denyapm denyis a fully implemented command (apm deny --helpworks, it revokes executable approval), butdocs/src/content/docs/reference/cli/has nodeny.mdpage. Every other top-level command has a corresponding reference page.ls docs/src/content/docs/reference/cli/contains nodeny.md.docs/src/content/docs/reference/cli/deny.mdcovering synopsis, description, options, examples, and relationship toapm approve.doctorcommand has no CLI reference documentation pageapm doctorapm doctoris a fully implemented diagnostic command, butdocs/src/content/docs/reference/cli/has nodoctor.mdpage. It is also absent from the reference index command table.ls docs/src/content/docs/reference/cli/contains nodoctor.md.docs/src/content/docs/reference/cli/doctor.mdcovering what diagnostics are run, exit codes, and usage in CI/onboarding flows.Medium Severity
apm cache clean:--forceand--yeshave identical descriptionsapm cache clean-f/--forceand-y/--yes) share the exact same description: "Skip confirmation prompt".--forceconventionally means "overwrite/ignore collision" (as it does inapm install,apm update,apm pack). Having it mean "skip confirmation" here is semantically inconsistent with every other use of--forcein the CLI and may confuse users.apm install --force: "Overwrite locally-authored files on collision".-f/--forcefromapm cache clean(or change its description to match--yes). Standardize on-y/--yesfor "skip confirmation" across all commands.apm install --runtimehelp text is stale: listsvscodebut not--target-compatible valuesapm install --runtime--runtimeis a legacy alias for--target, but its help text listsvscodeas a valid value while--targetdoes not listvscode. Additionally,--runtimeomitsagent-skillsandallwhich--targetsupports. This creates confusion about what values each flag accepts.vscodeappears in--runtimebut not--target.agent-skillsandallappear in--targetbut not--runtime.The
compile.mddocs note: "vscodeandagentsare accepted as deprecated aliases forcopilot".--runtimehelp text to note it is a deprecated legacy alias for--targetand either list the same values as--target(noting deprecated aliases) or simply redirect users to--target.apm install --runtimehas no deprecation notice in help textapm install --runtimedocs/src/content/docs/reference/cli/install.md) describe--runtimeas "Legacy alias for--target(single value only). Still accepted; prefer--target." However, the CLI help text contains no deprecation marker, so users do not see any indication that the flag is legacy.--runtimehelp string, consistent with howapm install --updateis annotated: "deprecated: prefer 'apm update'...".apm compile --no-dedup/--no-force-instructionsdouble-negative flag namingapm compile--no-dedup / --no-force-instructions. The description says "Include the instructions section in CLAUDE.md..." (the positive action), but the primary flag name--no-dedupuses a "no" prefix meaning "disable deduplication = include instructions". The complementary flag--no-force-instructionsis also prefixed with "no". Both options in the pair use "no", making it hard to remember which enables the behavior.--force-instructionsis clearer but is only mentioned at the end of the description.--force-instructions(the alias is already clearer), making the pair--force-instructions / --no-force-instructions. Drop--no-dedupas the primary name (keep as an alias if backward compatibility is needed).Reference index command table is missing 8 commands
Command:
docs/src/content/docs/reference/index.mdProblem: The phase-based command reference table omits 8 commands that exist in the CLI and each have their own docs pages.
Evidence:
The table in
reference/index.mdcovers:init,install,update,uninstall,view,deps,outdated,list,audit,compile,prune,targets,runtime,cache,config,run,pack,unpack,preview,marketplace,search,policy,mcp,experimental.Missing from the table (but present in CLI and with docs pages):
approve(approve.mdexists)deny(no docs page -- separate issue above)doctor(no docs page -- separate issue above)find(find.mdexists)lock(lock.mdexists)plugin(plugin.mdexists)publish(publish.mdexists)self-update(self-update.mdexists)Suggested Fix: Add all 8 missing commands to the reference index table under appropriate phases (e.g.,
approve/denyunder Governance;doctor/self-updateunder a new "Maintenance" phase;find/lockunder Inspect and audit;plugin/publishunder Author and distribute).apm config --helpdoes not mention the no-subcommand config display behaviorapm configapm configwith no subcommand displays a useful merged project+global configuration table. This behavior is documented indocs/src/content/docs/reference/cli/config.mdbut is completely absent from the CLI--helptext. Users relying only on--helpwill not discover it.apm configshowing the table. Contrast with actual behavior:apm configgroup description, e.g.: "With no subcommand, prints the merged project + global configuration table."Low Severity
apm mcp listandapm mcp searchhave inconsistent--limitdefaultsapm mcp list,apm mcp search--limitflag for the same conceptual purpose (cap the number of results), but default to different values:listdefaults to 20,searchdefaults to 10.mcp.md) correctly reflect the current values, so update whichever command is changed.apm targets --helpshowsCOMMAND [ARGS]...in usage with no listed subcommandsapm targetsapm targets [OPTIONS] COMMAND [ARGS]...suggesting subcommands exist, but noCommands:section appears in the help. CLI-only users have no way to discover this is intentional (future subcommands are reserved). Thetargets.mddocs explain it clearly, but the help text does not.Commands:section shown. Thetargets.mddocs note: "no subcommands ship today... reserved for future use."apm targetsas a plain command (not a group) until subcommands are implemented.apm deps updateis listed inapm deps --helpwithout a visible deprecation markerapm deps updateapm deps updateis deprecated in favor ofapm update, which the docs note prominently. However, theapm deps --helpoutput listsupdatewith the plain description "Update APM dependencies to latest refs" -- no deprecation signal. Users must runapm deps update --helpto see the deprecation caution block in the detailed docs.apm install --update: "Update dependencies to latest Git references (deprecated: prefer 'apm update'...)" -- which clearly labels the deprecation inline.apm deps updatedescription with "(deprecated: use 'apm update' instead)" to match the inline deprecation pattern used byapm install --update.Clean Areas
The following commands/areas passed all checks with no issues found:
apm init-- clear help, consistent-v/--verbose,-y/--yesflagsapm install(core behavior) -- comprehensive flag documentation, good error messages for missing argsapm uninstall-- consistent flags, sensible error handlingapm update-- consistent deprecation labeling of--updateapm compile(except--no-dedup) -- thorough option docsapm run/apm preview-- symmetric, consistent flag setapm deps list/tree/info/clean/why-- clear descriptions, correct required-arg error messagesapm mcp search/show/install-- well-documented, consistent verbose flagapm config get/set/unset-- correct behavior, good validation error messagesapm runtime setup/list/remove/status-- consistent, complete helpapm audit-- exceptionally thorough flag documentationapm cache info/prune-- clean, minimal, clearapm marketplace(all subcommands) -- comprehensive and consistentapm experimental(all subcommands) -- clear flag behavior, good JSON flagapm lock / apm lock export-- dual command/group pattern works wellapm approve-- clear with good examples in helpapm outdated-- concise and correctapm pack-- very detailed, good exit code documentationapm publish-- clear experimental gatingapm search-- minimal and correctapm self-update-- clear check-only modeapm find-- good exit code behaviorapm list-- simple, correctapm plugin init-- consistent withapm initapm policy status-- thorough output format optionsapm prune-- consistent--dry-runusageapm view-- clear field documentationapm unpack-- clear deprecation notice inlineapm install --nonexistent-flag,apm deps info,apm config set,apm mcp show) produce clean "Missing argument" / "No such option" messages with usage hints. No stack traces observed.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.