Reads apm.yml for the package name/version, packs a flat registry zip
archive (``apm.yml`` + ``.apm/`` at the archive root -- not ``apm pack``
plugin bundles), or uses a pre-built zip via --zip, then uploads to the
registry via PUT /v1/packages/{owner}/{repo}/versions/{version}.
Requires the 'registries' experimental feature: apm experimental enable
registries
Examples:
# Auto-pack and publish to the only configured registry: apm publish
--package acme/my-skill
CLI Consistency Report
Date: 2026-07-15
APM Version: 0.25.0 (defafe3)
Commands Inspected: 56 (all top-level commands plus all documented subcommands)
Summary
Medium Severity
apm pack: Multi-line examples section garbled in help outputapm packExamples:block andExit codes:block in_PACK_HELPare reflowed by Click into single run-on lines, making them unreadable. Click merges adjacent lines in a paragraph unless they are preceded by\b(form-feed). The source (pack.pylines 36-59) has correct multi-line formatting, but the rendered output collapses it.COLUMNS=200):\b\n(Click's no-reformat sentinel). For example:apm publish: Multi-line examples garbled and RST backticks visible in terminalapm publishapm pack-- theExamples:section in_PUBLISH_HELP(publish.pylines 34-47) collapses into run-on lines. Additionally, the description body uses RST-style double backticks (apm.yml,.apm/) that render literally in the terminal instead of as code.``RST backticks with single backticks or plain text since Click does not render RST. (2) Protect theExamples:section with\b\nsame asapm packfix above.apm cache clean:-f/--forceand-y/--yesboth described as "Skip confirmation prompt"apm cache clean-f/--forceand-y/--yes) with identical help text. Everywhere else in the APM CLI,--forcemeans "overwrite locally-authored files on collision" (install, uninstall, update, compile, pack). Using--forceto skip a confirmation prompt incache cleanis semantically inconsistent with the rest of the CLI. A user who reads--forcewill expect file-overwrite semantics, not "skip confirmation".apm cache clean --help):apm deps clean --help(the analogous clean command for the same workflow):-f/--forcefromapm cache clean. Keep only-y/--yesto be consistent withapm deps cleanand the rest of the CLI. If backward compatibility requires keeping--force, at minimum update the help text to say "Alias for --yes; skip confirmation prompt" to flag it as non-standard.Low Severity
apm targetsusage line advertises[COMMAND] [ARGS]...but has no subcommandsapm targetsUsage: apm targets [OPTIONS] [COMMAND] [ARGS]...implying users can run subcommands, but no subcommands are listed and none exist. The code comment intargets.pyacknowledges this is aclick.groupreserved for future subcommands, but it creates a confusing experience for users who see the[COMMAND]placeholder.apm targets --help):[COMMAND]has no corresponding entries.invoke_without_command=Trueand note in the description that subcommands are coming, or (b) keep the current group structure but suppress the[COMMAND] [ARGS]...from the usage line viacontext_settings={"max_content_width": ...}or a custom formatter. The simplest short-term fix is to add a one-line note: "No subcommands yet; runapm targetsto print the table."apm deps updateandapm unpackuse inconsistent deprecation stylesapm deps update,apm unpackapm deps updateembeds the deprecation as a prefix in the description text (DEPRECATED: use 'apm update'...), whileapm unpackwraps it in square brackets at the start ([Deprecated] Extract an APM bundle...). This inconsistency makes deprecations harder to scan.[Deprecated]used byapm unpackis more consistent with standard CLI conventions and scans better in the command list. Updateapm deps updateto match.apm rundescription adds "(experimental)" inapm --helplisting but not in its own help headerapm runapm --helpcommand listing,runappears as "Run a script with parameters (experimental)". Butapm run --helpprints "Run a script with parameters (experimental)" (this is consistent). Small note: theapm runtime --helpsynopsis also says "(experimental)", so the labeling is consistent -- this is a very minor observation.apm --helpandapm run --helpsay "(experimental)" -- no real inconsistency found; listing for completeness.Clean Areas
docs/src/content/docs/reference/cli/. No undocumented commands found; no documented commands missing from the CLI.--help/-h: Works on every command and subcommand tested (56 total). No crashes or stack traces.--verbose/-v: Present and consistent across all commands that support it.--dry-run: Present and consistently named across all commands that support it (install, compile, update, uninstall, deps clean, audit, pack, prune, unpack, publish).--yes/-y: Consistent across deps clean, runtime remove, update, cache clean.apm install --nonexistent-flag,apm deps info(no arg),apm config set(no args) all produce clean usage errors -- no stack traces.apm depssubcommands: list, tree, info, clean, update, why -- all present and documented.apm mcpsubcommands: list, search, show, install -- all present and documented.apm configsubcommands: get, set, list, unset -- all present and documented.apm runtimesubcommands: list, setup, remove, status -- all present and documented.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.