From 353ebd9d1d3b749600042bcad727797b0bbc62fe Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:08:27 +0000 Subject: [PATCH 1/6] Initial plan From 3e85bcb5b593e39f0432dfe04498d0d6d49369ac Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:13:29 +0000 Subject: [PATCH 2/6] fix: CLI consistency - add emojis to commands and align help text with docs Co-authored-by: sergio-sisternes-epam <207026618+sergio-sisternes-epam@users.noreply.github.com> --- docs/cli-reference.md | 10 +++++----- src/apm_cli/cli.py | 22 +++++++++++----------- src/apm_cli/commands/deps.py | 2 +- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 87b257fa..f92baeca 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -264,11 +264,11 @@ This makes all package prompts available in VSCode, Claude Code, and compatible Remove installed APM packages and their integrated files. ```bash -apm uninstall PACKAGE [OPTIONS] +apm uninstall [OPTIONS] PACKAGES... ``` **Arguments:** -- `PACKAGE` - Package to uninstall. Accepts any format โ€” shorthand (`owner/repo`), HTTPS URL, SSH URL, or FQDN. APM resolves it to the canonical identity stored in `apm.yml`. +- `PACKAGES...` - One or more packages to uninstall. Accepts any format โ€” shorthand (`owner/repo`), HTTPS URL, SSH URL, or FQDN. APM resolves each to the canonical identity stored in `apm.yml`. **Options:** - `--dry-run` - Show what would be removed without removing @@ -681,14 +681,14 @@ apm compile [OPTIONS] ``` **Options:** -- `-o, --output TEXT` - Output file path (default: AGENTS.md) +- `-o, --output TEXT` - Output file path (for single-file mode) - `-t, --target [vscode|agents|claude|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` - Generate content without writing file +- `--dry-run` - Preview compilation without writing files (shows placement decisions) - `--no-links` - Skip markdown link resolution - `--with-constitution/--no-constitution` - Include Spec Kit `memory/constitution.md` verbatim at top inside a delimited block (default: `--with-constitution`). When disabled, any existing block is preserved but not regenerated. - `--watch` - Auto-regenerate on changes (file system monitoring) -- `--validate` - Validate context without compiling +- `--validate` - Validate primitives without compiling - `--single-agents` - Force single-file compilation (legacy mode) - `-v, --verbose` - Show detailed source attribution and optimizer analysis - `--local-only` - Ignore dependencies, compile only local primitives diff --git a/src/apm_cli/cli.py b/src/apm_cli/cli.py index 7fa71762..486afebb 100644 --- a/src/apm_cli/cli.py +++ b/src/apm_cli/cli.py @@ -313,7 +313,7 @@ def cli(ctx): @cli.command(help="๐Ÿš€ Initialize a new APM project") @click.argument("project_name", required=False) @click.option( - "--yes", "-y", is_flag=True, help="Skip prompts and use auto-detected defaults" + "--yes", "-y", is_flag=True, help="Skip interactive prompts and use auto-detected defaults" ) @click.pass_context def init(ctx, project_name, yes): @@ -808,7 +808,7 @@ def install(ctx, packages, runtime, exclude, only, update, dry_run, force, verbo sys.exit(1) -@cli.command(help="Remove APM packages not listed in apm.yml") +@cli.command(help="๐Ÿงน Remove APM packages not listed in apm.yml") @click.option( "--dry-run", is_flag=True, help="Show what would be removed without removing" ) @@ -1064,7 +1064,7 @@ def update(check): sys.exit(1) -@cli.command(help="Remove APM packages from apm.yml and apm_modules") +@cli.command(help="๐Ÿ—‘๏ธ Remove APM packages from apm.yml and apm_modules") @click.argument("packages", nargs=-1, required=True) @click.option( "--dry-run", is_flag=True, help="Show what would be removed without removing" @@ -3143,7 +3143,7 @@ def _list_available_scripts(): return {} -@cli.command(help="Run a script with parameters") +@cli.command(help="๐Ÿš€ Run a script with parameters") @click.argument("script_name", required=False) @click.option("--param", "-p", multiple=True, help="Parameter in format name=value") @click.pass_context @@ -3218,7 +3218,7 @@ def run(ctx, script_name, param): sys.exit(1) -@cli.command(help="Preview a script's compiled prompt files") +@cli.command(help="๐Ÿ‘€ Preview a script's compiled prompt files") @click.argument("script_name", required=False) @click.option("--param", "-p", multiple=True, help="Parameter in format name=value") @click.pass_context @@ -3345,7 +3345,7 @@ def preview(ctx, script_name, param): sys.exit(1) -@cli.command(help="List available scripts in the current project") +@cli.command(help="๐Ÿ“‹ List available scripts in the current project") @click.pass_context def list(ctx): """List all available scripts from apm.yml.""" @@ -4151,7 +4151,7 @@ def compile( sys.exit(1) -@cli.group(help="Configure APM CLI") +@cli.group(help="โš™๏ธ Configure APM CLI") @click.pass_context def config(ctx): """Configure APM CLI settings.""" @@ -4241,7 +4241,7 @@ def config(ctx): click.echo(f" APM CLI Version: {get_version()}") -@config.command(help="Set configuration value") +@config.command(help="โš™๏ธ Set a configuration value") @click.argument("key") @click.argument("value") def set(key, value): @@ -4272,7 +4272,7 @@ def set(key, value): sys.exit(1) -@config.command(help="Get configuration value") +@config.command(help="โš™๏ธ Get a configuration value") @click.argument("key", required=False) def get(key): """Get a configuration value or show all configuration. @@ -4306,7 +4306,7 @@ def get(key): click.echo(f" {k}: {v}") -@cli.group(help="Manage Coding Agent CLI runtimes") +@cli.group(help="๐Ÿค– Manage Coding Agent CLI runtimes") def runtime(): """Manage Coding Agent CLI runtime installations and configurations.""" pass @@ -4330,7 +4330,7 @@ def _atomic_write(path: Path, data: str) -> None: raise -@cli.group(help="Manage MCP servers") +@cli.group(help="๐Ÿ”Œ Manage MCP servers") def mcp(): """Manage MCP server discovery and information.""" pass diff --git a/src/apm_cli/commands/deps.py b/src/apm_cli/commands/deps.py index a2c32dbb..2e5a92c4 100644 --- a/src/apm_cli/commands/deps.py +++ b/src/apm_cli/commands/deps.py @@ -16,7 +16,7 @@ -@click.group(help="Manage APM package dependencies") +@click.group(help="๐Ÿ”— Manage APM package dependencies") def deps(): """APM dependency management commands.""" pass From a57fa119796062f1659dc493eefdc8cc5e2dc4e5 Mon Sep 17 00:00:00 2001 From: Sergio Sisternes Date: Fri, 6 Mar 2026 16:42:25 +0000 Subject: [PATCH 3/6] Update src/apm_cli/cli.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/apm_cli/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apm_cli/cli.py b/src/apm_cli/cli.py index 486afebb..3485fda1 100644 --- a/src/apm_cli/cli.py +++ b/src/apm_cli/cli.py @@ -4306,7 +4306,7 @@ def get(key): click.echo(f" {k}: {v}") -@cli.group(help="๐Ÿค– Manage Coding Agent CLI runtimes") +@cli.group(help="๐Ÿค– Manage AI runtimes") def runtime(): """Manage Coding Agent CLI runtime installations and configurations.""" pass From 417486d8490eac21086da428575d231370bdecb2 Mon Sep 17 00:00:00 2001 From: Sergio Sisternes Date: Fri, 6 Mar 2026 16:42:33 +0000 Subject: [PATCH 4/6] Update src/apm_cli/cli.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/apm_cli/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apm_cli/cli.py b/src/apm_cli/cli.py index 3485fda1..39d178dd 100644 --- a/src/apm_cli/cli.py +++ b/src/apm_cli/cli.py @@ -4330,7 +4330,7 @@ def _atomic_write(path: Path, data: str) -> None: raise -@cli.group(help="๐Ÿ”Œ Manage MCP servers") +@cli.group(help="๐Ÿ”Œ Browse MCP server registry") def mcp(): """Manage MCP server discovery and information.""" pass From ab0f47860e3eb20bbb56be0d28818e3b47ac3bae Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Mar 2026 16:45:34 +0000 Subject: [PATCH 5/6] fix: align runtime/mcp CLI help with docs, update compile section header and config headings in docs Co-authored-by: sergio-sisternes-epam <207026618+sergio-sisternes-epam@users.noreply.github.com> --- docs/cli-reference.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/cli-reference.md b/docs/cli-reference.md index f92baeca..13041dbb 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -672,9 +672,9 @@ Available scripts: debug: RUST_LOG=debug codex hello-world.prompt.md ``` -### `apm compile` - ๐Ÿ“ Compile APM context files into AGENTS.md +### `apm compile` - ๐Ÿš€ Compile APM context into distributed AGENTS.md files -Compile APM context files (chatmodes, instructions, contexts) into a single intelligent AGENTS.md file with conditional sections, markdown link resolution, and project setup auto-detection. +Compile APM context files (chatmodes, instructions, contexts) into distributed AGENTS.md files with conditional sections, markdown link resolution, and project setup auto-detection. ```bash apm compile [OPTIONS] @@ -853,7 +853,7 @@ apm config apm config ``` -#### `apm config get` - Get a configuration value +#### `apm config get` - โš™๏ธ Get a configuration value Get a specific configuration value or display all configuration values. @@ -876,7 +876,7 @@ apm config get auto-integrate apm config get ``` -#### `apm config set` - Set a configuration value +#### `apm config set` - โš™๏ธ Set a configuration value Set a configuration value globally for APM CLI. From c6ace2eee0482b44f1ef81aaf14283fafbb4f9e0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 7 Mar 2026 08:25:33 +0000 Subject: [PATCH 6/6] fix: remove emojis from CLI command help strings per owner feedback Co-authored-by: danielmeppiel <51440732+danielmeppiel@users.noreply.github.com> --- docs/cli-reference.md | 6 +++--- src/apm_cli/cli.py | 20 ++++++++++---------- src/apm_cli/commands/deps.py | 2 +- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/cli-reference.md b/docs/cli-reference.md index 13041dbb..3f065802 100644 --- a/docs/cli-reference.md +++ b/docs/cli-reference.md @@ -672,7 +672,7 @@ Available scripts: debug: RUST_LOG=debug codex hello-world.prompt.md ``` -### `apm compile` - ๐Ÿš€ Compile APM context into distributed AGENTS.md files +### `apm compile` - ๐Ÿ“ Compile APM context into distributed AGENTS.md files Compile APM context files (chatmodes, instructions, contexts) into distributed AGENTS.md files with conditional sections, markdown link resolution, and project setup auto-detection. @@ -853,7 +853,7 @@ apm config apm config ``` -#### `apm config get` - โš™๏ธ Get a configuration value +#### `apm config get` - Get a configuration value Get a specific configuration value or display all configuration values. @@ -876,7 +876,7 @@ apm config get auto-integrate apm config get ``` -#### `apm config set` - โš™๏ธ Set a configuration value +#### `apm config set` - Set a configuration value Set a configuration value globally for APM CLI. diff --git a/src/apm_cli/cli.py b/src/apm_cli/cli.py index 39d178dd..7ec09a01 100644 --- a/src/apm_cli/cli.py +++ b/src/apm_cli/cli.py @@ -808,7 +808,7 @@ def install(ctx, packages, runtime, exclude, only, update, dry_run, force, verbo sys.exit(1) -@cli.command(help="๐Ÿงน Remove APM packages not listed in apm.yml") +@cli.command(help="Remove APM packages not listed in apm.yml") @click.option( "--dry-run", is_flag=True, help="Show what would be removed without removing" ) @@ -1064,7 +1064,7 @@ def update(check): sys.exit(1) -@cli.command(help="๐Ÿ—‘๏ธ Remove APM packages from apm.yml and apm_modules") +@cli.command(help="Remove APM packages from apm.yml and apm_modules") @click.argument("packages", nargs=-1, required=True) @click.option( "--dry-run", is_flag=True, help="Show what would be removed without removing" @@ -3143,7 +3143,7 @@ def _list_available_scripts(): return {} -@cli.command(help="๐Ÿš€ Run a script with parameters") +@cli.command(help="Run a script with parameters") @click.argument("script_name", required=False) @click.option("--param", "-p", multiple=True, help="Parameter in format name=value") @click.pass_context @@ -3218,7 +3218,7 @@ def run(ctx, script_name, param): sys.exit(1) -@cli.command(help="๐Ÿ‘€ Preview a script's compiled prompt files") +@cli.command(help="Preview a script's compiled prompt files") @click.argument("script_name", required=False) @click.option("--param", "-p", multiple=True, help="Parameter in format name=value") @click.pass_context @@ -3345,7 +3345,7 @@ def preview(ctx, script_name, param): sys.exit(1) -@cli.command(help="๐Ÿ“‹ List available scripts in the current project") +@cli.command(help="List available scripts in the current project") @click.pass_context def list(ctx): """List all available scripts from apm.yml.""" @@ -4151,7 +4151,7 @@ def compile( sys.exit(1) -@cli.group(help="โš™๏ธ Configure APM CLI") +@cli.group(help="Configure APM CLI") @click.pass_context def config(ctx): """Configure APM CLI settings.""" @@ -4241,7 +4241,7 @@ def config(ctx): click.echo(f" APM CLI Version: {get_version()}") -@config.command(help="โš™๏ธ Set a configuration value") +@config.command(help="Set a configuration value") @click.argument("key") @click.argument("value") def set(key, value): @@ -4272,7 +4272,7 @@ def set(key, value): sys.exit(1) -@config.command(help="โš™๏ธ Get a configuration value") +@config.command(help="Get a configuration value") @click.argument("key", required=False) def get(key): """Get a configuration value or show all configuration. @@ -4306,7 +4306,7 @@ def get(key): click.echo(f" {k}: {v}") -@cli.group(help="๐Ÿค– Manage AI runtimes") +@cli.group(help="Manage AI runtimes") def runtime(): """Manage Coding Agent CLI runtime installations and configurations.""" pass @@ -4330,7 +4330,7 @@ def _atomic_write(path: Path, data: str) -> None: raise -@cli.group(help="๐Ÿ”Œ Browse MCP server registry") +@cli.group(help="Browse MCP server registry") def mcp(): """Manage MCP server discovery and information.""" pass diff --git a/src/apm_cli/commands/deps.py b/src/apm_cli/commands/deps.py index 2e5a92c4..a2c32dbb 100644 --- a/src/apm_cli/commands/deps.py +++ b/src/apm_cli/commands/deps.py @@ -16,7 +16,7 @@ -@click.group(help="๐Ÿ”— Manage APM package dependencies") +@click.group(help="Manage APM package dependencies") def deps(): """APM dependency management commands.""" pass