agent-zero/plugins/_commands
Alessandro 84c13dab01 Add built-in goal management plugin
Adds the always-enabled _goal plugin with per-chat goal storage, WebUI goal strip, /goal slash command, and agent-facing goal tools.

Includes command-picker integration, focused plugin tests, and the generated 256x256 thumbnail asset.
2026-07-09 17:09:08 +02:00
..
api Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
commands Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
extensions Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
helpers Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
skills/commands-create-slash-command Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
tests Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
webui Add built-in goal management plugin 2026-07-09 17:09:08 +02:00
__init__.py Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
AGENTS.md Add built-in goal management plugin 2026-07-09 17:09:08 +02:00
LICENSE Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
plugin.yaml Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00
README.md Add built-in slash commands plugin 2026-07-09 16:00:30 +02:00

Commands

YAML-configured slash commands for Agent Zero.

This plugin lets you define reusable /commands as .command.yaml files with either:

  • a .txt template body
  • a .py script hook

Commands are managed from the plugin modal and can be inserted directly from the chat composer when the first token starts with /.

Features

  • .command.yaml config files with command metadata
  • Text template commands with {} placeholders and parsed args
  • Python hook commands with parsed args and optional chat history payload
  • Unified parser for positional args, free-form tail, and flags
  • Scope-aware command resolution across project and global scopes
  • Built-in A0 CLI connector command pack for common session, queue, model, project, browser, and connector status commands
  • Slash picker in the chat composer with keyboard navigation and create-on-empty flow

Command File Model

Each command is defined by one config file plus one content file in the same scope directory. Set webui_hidden: true to keep a command resolvable while omitting it from the chat composer picker.

Example text command:

scan.command.yaml

name: scan
description: Scan a Git repository.
argument_hint: /scan --git-url https://github.com/org/repo
type: text
template_path: scan.txt

scan.txt

Please scan repository: {args.flags.git_url}

Raw input:
{raw}

Example python hook command:

optimize.command.yaml

name: optimize
description: Optimize the current request.
argument_hint: /optimize 30%
type: script
script_path: optimize.py
include_history: true

optimize.py

def run(payload):
    args = payload["arguments"]
    pct = args["positional"][0] if args["positional"] else "10%"
    return {
        "text": f"Optimize this response by {pct}.",
        "effects": [],
    }

Argument Parsing

The parser supports:

  • Positional input: /scan https://github.com/org/repo
  • Long flags: /scan --git-url https://github.com/org/repo
  • Long flags with equals: /scan --git-url=https://github.com/org/repo
  • Short flags and bundles: /scan -v -q or /scan -vq

Parsed data is available to:

  • Text templates via {} placeholders:
    • {raw}
    • {args.positional.0}
    • {args.flags.git_url}
  • Python scripts via payload["arguments"]

Script Hook Contract

Python hook file must expose:

def run(payload): ...

It can return:

  • str (used as replacement text)
  • dict with:
    • text: str (replacement text)
    • effects: list[dict]

Supported frontend effects:

  • {"type": "replace_input", "text": "..."}
  • {"type": "append_input", "text": "..."}
  • {"type": "toast", "level": "info|error|success", "message": "..."}
  • Built-in UI effects for existing WebUI actions such as chat switching, modals, attachments, compaction, queue actions, transcript copy, and toast output

Scope Resolution

Commands are discovered from these scope folders:

  • Project: usr/projects/<project>/.a0proj/plugins/_commands/commands/
  • Global fallback: usr/plugins/_commands/commands/
  • Built-in defaults: plugins/_commands/commands/
  • Other enabled plugins: plugins/<plugin>/commands/ or usr/plugins/<plugin>/commands/

Precedence in the chat picker:

  1. Project
  2. Global
  3. Built-in _commands
  4. Other plugin-distributed commands

Legacy Community Plugin Migration

When the built-in _commands plugin starts, it migrates files from the older community commands plugin namespace:

  • Copies usr/plugins/commands/commands/ into usr/plugins/_commands/commands/
  • Copies usr/plugins/commands/skills/ into usr/plugins/_commands/skills/
  • Copies project and agent scoped plugins/commands/commands/ folders to matching plugins/_commands/commands/ folders
  • Skips existing destination files
  • Disables the legacy commands plugin roots so the WebUI does not load two slash-command popovers

UI Surfaces

  • Plugin modal: open the Commands manager from the Plugins dialog
  • Sidebar quick action: terminal icon next to the Plugins button
  • Chat composer: type / at the start of the inline input to browse commands

Agent Skill

The plugin ships with commands-create-slash-command, a plugin-scoped skill that helps Agent Zero create or update command files.