09 — Hooks and Commands
Extension surfaces that let users customize agent behavior without forking the codebase. Hooks fire at well-defined transitions in the loop. Slash commands extend the TUI's keyboard surface. User-defined commands compose tools into named workflows. The agent's behavior should never be opaque or unmodifiable.
Hooks
On the CLI path hooks are advisory: they observe tool calls but cannot block one (the fireHook pre-act/post-act seam of the engine adapter). The blocking in-runtime bridge mounts only in the Mac relay.
Slash commands
The TUI and the Mac share one registry of 83 slash commands, packages/commands/command-manifest.json; the full list with usage is in 10-tui.md. /hooks list|add|enable|disable|remove|test|validate [id] and picasso hooks manage shell hooks. /init (and picasso init) writes PICASSO.md and names only the skills installed for you, from the project and home skill roots.
Skills
picasso skills add <source> installs a skill from a GitHub URL, owner/repo or a local git path (it shows the plan first; --yes installs), picasso skills remove <name> removes it, picasso skills scan lists what is installed, and picasso skills import <path> brings in a skill directory. In the TUI, /skills add <owner/repo>; on the Mac, Extensions › Add skills. In the composer, $ opens a skill picker that inserts /<skill-name> .
Schedules
Local schedules message a thread or start a new one, once or repeating. You can create, edit, pause, resume and delete them, see their history, and missed runs are reported until you dismiss them. Schedules need a runner: Picasso for Mac while it is open, or the resident runner (Settings › General › "Keep threads running when Picasso quits", or picasso service install).
- Mac: the Schedules page (Extensions › Schedules).
- TUI:
/schedules(alias/schedule): list, new, edit, pause, resume, delete, history, missed; it says how to turn on a runner when none is up. - CLI:
picasso schedules list|create|show|pause|resume|queue-due|review|runs(aliaspicasso schedule).
Runtime note
Picasso slash commands come from Picasso's own manifest; the engine's interaction commands and its Claude Code/Codex-style hook bridge apply underneath. See architecture.