From 1625f23c79e15963af8cffe9e848e57d71d6301e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:23:25 +0000 Subject: [PATCH 1/3] Initial plan From 1e8e1e33f5b2a0202b8cced0d0964614f595826f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:42:33 +0000 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20CLI=20consistency=20=E2=80=94=20add?= =?UTF-8?q?=20short=20aliases,=20show=20defaults,=20clarify=20help=20text?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> Agent-Logs-Url: https://github.com/microsoft/apm/sessions/78aadfdd-539f-425c-906b-27636a5ed359 --- CHANGELOG.md | 4 ++++ docs/src/content/docs/reference/cli-commands.md | 14 +++++++------- src/apm_cli/commands/audit.py | 2 +- src/apm_cli/commands/compile/cli.py | 2 +- src/apm_cli/commands/config.py | 2 +- src/apm_cli/commands/install.py | 2 +- src/apm_cli/commands/mcp.py | 2 +- src/apm_cli/commands/pack.py | 1 + src/apm_cli/commands/runtime.py | 2 +- 9 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 566b3460..2735352e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Fixed + +- CLI consistency: added `-v` short alias to `apm install --verbose`, `-y` to `apm runtime remove --yes`, `show_default` to `apm mcp list --limit` and `apm pack --format`, and clarified help text for `apm audit`, `apm config get`, and `apm compile -o` + ## [0.8.3] - 2026-03-20 ### Added diff --git a/docs/src/content/docs/reference/cli-commands.md b/docs/src/content/docs/reference/cli-commands.md index 92707b59..9c766467 100644 --- a/docs/src/content/docs/reference/cli-commands.md +++ b/docs/src/content/docs/reference/cli-commands.md @@ -91,7 +91,7 @@ apm install [PACKAGES...] [OPTIONS] - `--force` - Overwrite locally-authored files on collision; bypass security scan blocks - `--dry-run` - Show what would be installed without installing - `--parallel-downloads INTEGER` - Max concurrent package downloads (default: 4, 0 to disable) -- `--verbose` - Show individual file paths and full error details in the diagnostic summary +- `-v, --verbose` - Show individual file paths and full error details in the diagnostic summary - `--trust-transitive-mcp` - Trust self-defined MCP servers from transitive packages (skip re-declaration requirement) - `--dev` - Add packages to [`devDependencies`](../manifest-schema/#5-devdependencies) instead of `dependencies`. Dev deps are installed locally but excluded from `apm pack --format plugin` bundles @@ -342,7 +342,7 @@ apm prune --dry-run ### `apm audit` - Scan for hidden Unicode characters -Scan installed packages or arbitrary files for hidden Unicode characters that could embed invisible instructions in prompt files. +Scan installed packages or any file for hidden Unicode characters that could embed invisible instructions in prompt files. ```bash apm audit [PACKAGE] [OPTIONS] @@ -716,7 +716,7 @@ apm mcp list [OPTIONS] ``` **Options:** -- `--limit INTEGER` - Number of results to show +- `--limit INTEGER` - Number of results to show (default: 20) **Examples:** ```bash @@ -724,7 +724,7 @@ apm mcp list [OPTIONS] apm mcp list # Limit results -apm mcp list --limit 20 +apm mcp list --limit 50 ``` #### `apm mcp search` - Search MCP servers @@ -868,7 +868,7 @@ apm compile [OPTIONS] ``` **Options:** -- `-o, --output TEXT` - Output file path (for single-file mode) +- `-o, --output TEXT` - Output file path (use with `--single-agents` legacy mode) - `-t, --target [vscode|agents|claude|opencode|all]` - Target agent format. `agents` is an alias for `vscode`. Auto-detects if not specified. - `--chatmode TEXT` - Chatmode to prepend to the AGENTS.md file - `--dry-run` - Preview compilation without writing files (shows placement decisions) @@ -1044,7 +1044,7 @@ apm config apm config ``` -#### `apm config get` - Get a configuration value +#### `apm config get` - Get one or all configuration values Get a specific configuration value or display all configuration values. @@ -1187,7 +1187,7 @@ apm runtime remove [OPTIONS] {copilot|codex|llm} - `{copilot|codex|llm}` - Runtime to remove **Options:** -- `--yes` - Confirm the action without prompting +- `-y, --yes` - Confirm the action without prompting #### `apm runtime status` - Show runtime status diff --git a/src/apm_cli/commands/audit.py b/src/apm_cli/commands/audit.py index fe2c7f16..7c629818 100644 --- a/src/apm_cli/commands/audit.py +++ b/src/apm_cli/commands/audit.py @@ -379,7 +379,7 @@ def _preview_strip( # ── Command ──────────────────────────────────────────────────────── -@click.command(help="Scan installed packages for hidden Unicode characters") +@click.command(help="Scan installed packages (or any file) for hidden Unicode characters") @click.argument("package", required=False) @click.option( "--file", diff --git a/src/apm_cli/commands/compile/cli.py b/src/apm_cli/commands/compile/cli.py index 2dd61d9b..d0b34919 100644 --- a/src/apm_cli/commands/compile/cli.py +++ b/src/apm_cli/commands/compile/cli.py @@ -170,7 +170,7 @@ def _get_validation_suggestion(error_msg): "--output", "-o", default=AGENTS_MD_FILENAME, - help="Output file path (for single-file mode)", + help="Output file path (use with --single-agents legacy mode)", ) @click.option( "--target", diff --git a/src/apm_cli/commands/config.py b/src/apm_cli/commands/config.py index 93429a4b..b882e97e 100644 --- a/src/apm_cli/commands/config.py +++ b/src/apm_cli/commands/config.py @@ -136,7 +136,7 @@ def set(key, value): sys.exit(1) -@config.command(help="Get a configuration value") +@config.command(help="Get one or all configuration values") @click.argument("key", required=False) def get(key): """Get a configuration value or show all configuration. diff --git a/src/apm_cli/commands/install.py b/src/apm_cli/commands/install.py index cde1ff48..a3a08d5f 100644 --- a/src/apm_cli/commands/install.py +++ b/src/apm_cli/commands/install.py @@ -321,7 +321,7 @@ def _validate_package_exists(package): "--dry-run", is_flag=True, help="Show what would be installed without installing" ) @click.option("--force", is_flag=True, help="Overwrite locally-authored files on collision and deploy despite critical security findings") -@click.option("--verbose", is_flag=True, help="Show detailed installation information") +@click.option("--verbose", "-v", is_flag=True, help="Show detailed installation information") @click.option( "--trust-transitive-mcp", is_flag=True, diff --git a/src/apm_cli/commands/mcp.py b/src/apm_cli/commands/mcp.py index 26a18f00..57afc6f1 100644 --- a/src/apm_cli/commands/mcp.py +++ b/src/apm_cli/commands/mcp.py @@ -288,7 +288,7 @@ def show(ctx, server_name): @mcp.command(help="List all available MCP servers") -@click.option("--limit", default=20, help="Number of results to show") +@click.option("--limit", default=20, show_default=True, help="Number of results to show") @click.pass_context def list(ctx, limit): """List all available MCP servers in the registry.""" diff --git a/src/apm_cli/commands/pack.py b/src/apm_cli/commands/pack.py index ca5e6ab6..8ea52077 100644 --- a/src/apm_cli/commands/pack.py +++ b/src/apm_cli/commands/pack.py @@ -16,6 +16,7 @@ "fmt", type=click.Choice(["apm", "plugin"]), default="apm", + show_default=True, help="Bundle format.", ) @click.option( diff --git a/src/apm_cli/commands/runtime.py b/src/apm_cli/commands/runtime.py index 22bbadc8..26417028 100644 --- a/src/apm_cli/commands/runtime.py +++ b/src/apm_cli/commands/runtime.py @@ -124,7 +124,7 @@ def list(): @runtime.command(help="Remove an installed runtime") @click.argument("runtime_name", type=click.Choice(["copilot", "codex", "llm"])) -@click.confirmation_option(prompt="Are you sure you want to remove this runtime?", help="Confirm the action without prompting") +@click.confirmation_option("-y", "--yes", prompt="Are you sure you want to remove this runtime?", help="Confirm the action without prompting") def remove(runtime_name): """Remove an installed runtime from APM management.""" try: From b7514e8985b8f9bf970ecac88455af2cf8404065 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 20 Mar 2026 15:44:56 +0000 Subject: [PATCH 3/3] fix: split CHANGELOG entry into separate bullets per convention Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> Agent-Logs-Url: https://github.com/microsoft/apm/sessions/78aadfdd-539f-425c-906b-27636a5ed359 --- CHANGELOG.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2735352e..66e4934e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- CLI consistency: added `-v` short alias to `apm install --verbose`, `-y` to `apm runtime remove --yes`, `show_default` to `apm mcp list --limit` and `apm pack --format`, and clarified help text for `apm audit`, `apm config get`, and `apm compile -o` +- CLI consistency: added `-v` short alias to `apm install --verbose` and `-y` to `apm runtime remove --yes` +- CLI consistency: added default value display to `apm mcp list --limit` and `apm pack --format` +- CLI consistency: clarified help text for `apm audit`, `apm config get`, and `apm compile -o` ## [0.8.3] - 2026-03-20