Built-in commands¶
Every slash command shipped with CraftBot, with its aliases, subcommands, and behavior. All of them work in both interfaces. The two marked otherwise say so.
At a glance:
| Command | Aliases | What it does |
|---|---|---|
/help [command] |
/h, /? |
List commands, or detail one |
/clear |
/cls |
Clear the chat and action log |
/clear-tasks |
/cleartasks |
Remove finished tasks from the task panel |
/reset |
(none) | Reset agent state and clear history |
/exit |
/quit, /q |
Shut down CraftBot |
/menu |
(none) | Open the settings menu (browser only) |
/provider [name] [key] |
(none) | View or change the LLM provider |
/mcp <subcommand> |
(none) | Manage MCP servers |
/skill <subcommand> |
(none) | Manage skills |
/cred <subcommand> |
(none) | Credentials and integration status |
/update [--check] |
/upgrade |
Check for and install updates |
/tokens |
(none) | Show this session's token usage |
Beyond these, the registry also holds integration commands (/gmail, /slack, ...) and skill commands (/pdf, /docx, ...), covered at the end.
/help¶
/help # list all commands with descriptions and aliases
/help mcp # usage, subcommands, and examples for one command
The leading slash on the argument is optional (/help mcp and /help /mcp both work). Skill shortcuts are hidden from the main list to keep it short. /skill list shows them.
/clear¶
Clears the chat transcript and the action log in the current interface, and also drops the agent's persisted conversation memory, so a restart won't resurrect the cleared chat. Task history and dashboard data are unaffected. Use it when the conversation is cluttered. Use /reset when the agent needs a fresh start.
/clear-tasks¶
Removes tasks whose status is completed, failed, or cancelled from the task panel, along with their child actions. Running and waiting tasks are preserved, and dashboard usage data and task history are untouched. Requires an action panel, so it's effectively a browser command. In the CLI it reports that no action panel is available.
/reset¶
Resets the agent to its initial state: clears the current task, action history, and conversation context, and wipes the chat view. Saved settings and credentials are not affected. Feedback arrives as system messages while the reset runs in the background.
/exit¶
Stops the agent cleanly and ends the session. In service mode the service manager may restart it. Use python craftbot.py stop to keep it down.
/menu¶
Opens the settings menu. Browser only. In the CLI it points you to /help instead. (In practice you'll click Settings in the sidebar; the command exists mainly for keyboard-first use.)
/provider¶
View or switch the LLM provider without opening settings.
/provider # show current provider and masked API key
/provider anthropic # switch provider (keeps any stored key)
/provider anthropic sk-ant-... # switch and set the key in one line
Accepted names:
| Name | Provider | Key |
|---|---|---|
openai |
OpenAI | OPENAI_API_KEY |
gemini |
Google Gemini | GOOGLE_API_KEY |
anthropic |
Anthropic | ANTHROPIC_API_KEY |
byteplus |
BytePlus | BYTEPLUS_API_KEY |
deepseek |
DeepSeek | DEEPSEEK_API_KEY |
grok |
Grok (xAI) | XAI_API_KEY |
glm |
Z.ai (GLM) | ZAI_API_KEY |
fugu |
Sakana (Fugu) | SAKANA_API_KEY |
openrouter |
OpenRouter | OPENROUTER_API_KEY |
remote |
Ollama (local) | none |
The change is saved to settings.json and the LLM reinitializes immediately, with no restart. Model selection, base URLs, and subscription login live in Settings → Model; see LLM providers.
/mcp¶
Manage MCP servers. /mcp with no arguments prints usage.
| Subcommand | Does |
|---|---|
list [--all] |
List enabled servers; --all includes disabled ones |
add <name> --transport stdio -- <cmd...> |
Add a stdio server (everything after -- is the launch command) |
add <name> --transport http <url> |
Add an HTTP server |
add-json <name> '<json>' |
Add a server from a JSON config block |
remove <name> |
Remove a server |
enable <name> / disable <name> |
Toggle a server without removing it |
env <name> <key> <value> |
Set an environment variable for a server |
/mcp add myserver --transport stdio -- python server.py
/mcp add remote-tools --transport http https://example.com/mcp
/mcp env myserver API_KEY my-secret-key
/mcp list --all
The browser's Settings → MCPs page edits the same configuration.
/skill¶
Manage skills. /skill with no arguments prints usage.
| Subcommand | Does |
|---|---|
list [--all] |
List enabled skills; --all includes disabled ones |
info <name> |
Description, version, author, path, and the skill's actions |
enable <name> / disable <name> |
Toggle a skill; this also registers/unregisters its slash command |
install <path> |
Install from a local directory |
install <git-url> |
Install from a GitHub/GitLab URL |
create <name> [description] |
Scaffold a new skill |
remove <name> |
Remove a skill |
reload |
Re-scan skills from disk |
dirs |
Show the directories scanned for skills |
/skill info pdf
/skill enable cli-anything
/skill install https://github.com/user/skill.git
/skill create my_skill "My custom skill"
/cred¶
Read-only overview of credentials and integrations. Connecting happens with the per-integration commands or Settings → Integrations.
| Subcommand | Does |
|---|---|
list |
Every integration with connected / not connected |
status |
Same, with account names for connected integrations and a connected count |
integrations |
Every available integration with its /command and description |
/update¶
/update # check GitHub for a newer version and install it
/update --check # check only, don't install
An update pulls the latest code, installs dependencies, and restarts CraftBot automatically, streaming progress as system messages. If you're already current, it says so.
/tokens¶
Prints the cumulative token usage of the chat it's typed in, as a system message:
Input is genuinely new prompt tokens (cache reads excluded), Cached is prompt tokens served from the provider's cache, and Total is Input + Output. Totals accumulate across every run in the session and survive restarts and /clear (clearing wipes the conversation, not the session's lifetime counters). A brand-new chat that hasn't sent a message yet reports zeros. Sessions created before this command existed start counting from their next run.
Integration commands¶
Every available integration registers its own command named after itself: /gmail, /slack, /discord, /telegram_bot, /notion, and so on (run /cred integrations for the live list). Each supports:
/<integration> # help, including integration-specific subcommands
/<integration> connect # start the connect flow (token, OAuth, or interactive/QR)
/<integration> disconnect
/<integration> status # connection state and accounts
Token-based integrations take their credentials as arguments, like /telegram_bot connect <token> (running connect bare tells you which fields it needs). OAuth ones open the provider's flow. Interactive ones (like WhatsApp Web) walk you through it. Some handlers add extra subcommands (QR login, invites), listed in that integration's help. Details per service are on the integration pages.
Skill commands¶
Every enabled skill is also a slash command: /pdf, /docx, /xlsx, and whatever else you've enabled. These don't run UI code. They hand your text to the agent with that skill pre-selected:
Arguments flow into the skill's instructions through $ARGUMENTS substitution (skills can also grab positional pieces with $ARGUMENTS[0], $1, ...). Invoked bare, the agent asks what you need. Enabling or disabling a skill registers or removes its command immediately, and a skill whose name collides with an existing command is skipped. They're hidden from /help. See them with /skill list or the browser's / autocomplete.
Related¶
- Commands overview: how dispatch works
- CLI-anything: the desktop-app automation skill
- UI layer: the registry these commands live in
- Credentials: where connected secrets are stored