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. |
||
|---|---|---|
| .. | ||
| api | ||
| commands | ||
| extensions | ||
| helpers | ||
| skills/commands-create-slash-command | ||
| tests | ||
| webui | ||
| __init__.py | ||
| AGENTS.md | ||
| LICENSE | ||
| plugin.yaml | ||
| README.md | ||
Commands
YAML-configured slash commands for Agent Zero.
This plugin lets you define reusable /commands as .command.yaml files with either:
- a
.txttemplate body - a
.pyscript 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.yamlconfig 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 -qor/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)dictwith: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/orusr/plugins/<plugin>/commands/
Precedence in the chat picker:
- Project
- Global
- Built-in
_commands - 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/intousr/plugins/_commands/commands/ - Copies
usr/plugins/commands/skills/intousr/plugins/_commands/skills/ - Copies project and agent scoped
plugins/commands/commands/folders to matchingplugins/_commands/commands/folders - Skips existing destination files
- Disables the legacy
commandsplugin 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.