AchillesCLI Documentation

AchillesCLI is a skill-oriented CLI runtime built on AchillesAgentLib. This documentation tracks the implemented runtime and keeps detailed specifications synchronized with the codebase.

Architecture Scope

Runtime package: achilles-cli/ (entrypoint, REPL, UI, schemas, skills)
Tests: tests/ and achilles-cli/tests/
Specifications: docs/specs/DS000-DS010

Ecosystem Integration

AchillesCLI integration boundaries are specified against: Ploinky, AchillesAgentLib, and AchillesIDE in DS010.

Interruption Model

AchillesCLI supports ESC cancellation for long-running prompt and slash-command executions. Cancellation is propagated as an abort signal to runtime calls, interrupted turns are not persisted to command history, and the next user input resumes normal interactive flow. In webchat runtime mode (non-TTY stdin), ESC is accepted as a standalone input line to abort the current prompt.

WebChat Progress

In webchat runtime mode, AchillesCLI emits structured progress metadata before loop-session tool calls. The metadata carries the planner reason for the selected tool and is intended for browser UI progress rendering, not for transcript or final-answer text.

Repository Maintenance

Cloned skill repositories live under .achilles-cli/repos/. The slash command /update repos runs git pull in each cloned repository and reports aggregated per-repository failures with a failed to update repos: message.

MCP Tool Exposure

AchillesCLI exposes its skill catalog as MCP tools via the AgentServer mechanism. Each user skill is exposed as execute_<sanitised_skill_name> with an input schema. WebChat clients query this catalog at session start to populate slash-command autocomplete menus. For AchillesCLI slash commands, WebChat calls the dedicated command-catalog MCP tool (list_achilles_cli_commands) and receives a structured command+subcommand catalog. The tool accepts the WebChat working dir and uses AchillesAgentLib discovery to add available skill names as argument completions for slash commands that operate on skills. If a skill descriptor contains ## Help, that text is returned as the completion description so remote UIs can show invocation guidance beside the skill name. If no tools are available, clients silently fall back to an empty command list.

WebChat Tag Relay

AchillesCLI can opt into generic tagged-message relay only when launched with explicit --tag-relay-* parameters. Ploinky WebChat supplies the envelope and selected-agent invocation token; AchillesCLI owns tag detection for that configured session and does not assume a concrete downstream relay unless the launch URL names one. Launchers may pass --tag-relay-tags to preserve unknown-mention fallthrough without a catalog preflight. Browser attachments are forwarded only when they resolve to supported storage: legacy shared blob ids or cwd-relative Ploinky WebChat session uploads under uploads/<sessionId>/.... In Explorer, the normal Open Copilot here action may receive those parameters from generic file-exp:copilot-launch-extension plugin metadata, so domain agents can extend Copilot without adding a second chat entry point.

Specification Entry Points