What Ships by Default
These capabilities are included in the default workspace when Wolffish creates~/.wolffish/workspace/ on first launch. Each lives in its own folder under brain/cerebellum/.
Self-Management
Wolffish can read, manage, and write its own capabilities at runtime — no code change, no restart. This is the heart of what makes it extensible: a workflow you do often can become a permanent tool just by asking.skills — Manage and author its own capabilities
skills — Manage and author its own capabilities
automations — Manage its own scheduled heartbeat jobs
automations — Manage its own scheduled heartbeat jobs
In (15m) / Once (2026-...)) fire once and delete themselves.Tools:automation_list— List every automation: schedule, plain-English timing, instruction, and whether it’s valid/runningautomation_create— Create a job (recurring or one-time) from a schedule + instructionautomation_edit— Change a job’s schedule and/or instructionautomation_delete— Permanently remove a job (asks you to confirm)automation_check— Runtime status: what’s running now and how recent runs wentautomation_run— Run a job immediately, to test it
Asking Wolffish to build a skill for itself
You don’t write any code — you describe the ability in plain language and Wolffish authors the capability for you. The clearest requests signal a recurring need:- “From now on, whenever I send you a CSV, clean it up and reply with a summary table.”
- “Make yourself a skill that posts a daily standup to our Slack channel.”
- “You keep doing this resize-and-watermark dance by hand — turn it into a reusable tool.”
- “Teach yourself to look up parcel tracking from a tracking number.”
- Picks the kind of skill — a pure skill (a written procedure it follows with tools it already has), a plugin skill (a real new tool backed by JavaScript), or a plugin with npm dependencies — choosing the smallest that does the job.
- Writes the files via
skill_create— theSKILL.md(name, description, triggers) plusplugin/index.mjsand apackage.jsononly when a real new tool is needed. - Loads and tests it live, then it’s available from your next message — triggered automatically whenever your wording matches what the skill is for.
Core System
shell — Execute shell commands
shell — Execute shell commands
child_process to execute shell commands. The workhorse tool that many other capabilities depend on.Tools:shell_exec— Run a command with optional cwd and timeout. Commands run until they exit naturally. Passtimeoutonly when you want fast failure (e.g. 5000ms for a quickwhichcheck). Omit for installs, builds, or anything with unpredictable duration.
- Block:
mkfs,dd if=(disk-level destruction) - Destructive:
rm -rf,sudo(requires approval) - Confirm: package installs, docker operations
background: true) detaches the process and returns its PID immediately — use for dev servers, watchers, and long-running processes.filesystem — Read, write, and edit files
filesystem — Read, write, and edit files
fs for precise file operations without needing shell access.Tools:file_read— Read file contents with optional line range (startLine/endLine)file_write— Create or overwrite a file (supports append mode)file_patch— Find and replace a literal string in a file (all occurrences)
shell_exec for file operations — they’re faster, safer, and produce cleaner audit trails.package-manager — Cross-platform package installation
package-manager — Cross-platform package installation
pkg_check— Check which package manager is availablepkg_install_manager— Install Homebrew on macOS if missing (no-op elsewhere)pkg_install— Install a package with platform-specific name resolution
packages field in SKILL.md — the package-manager resolves the correct name per platform.node — Node.js runtime
node — Node.js runtime
node_check— Verify Node.js is installed and get versionnode_install— Install Node.js via system package manager
shell_exec for node, npm, and npx commands.Web & Search
web-search — Search the web and read pages
web-search — Search the web and read pages
web_search— Search the web, returns titles, snippets, and URLs. Defaults to 5 results, no upper limit enforced.web_fetch— Fetch full text content of a web page. No length floor — the LLM decides how much content to request.
web_search for discovery, then web_fetch to read specific results in detail. If a Brave API key is configured in Variables, the agent prefers the Brave search tool instead.browser — Headless browser automation
browser — Headless browser automation
timeout_ms.Tools:browser_launch— Start a browser session (headed/headless, viewport size, locale)browser_navigate— Go to a URLbrowser_click— Click an element by CSS selectorbrowser_type— Type text into an inputbrowser_screenshot— Capture the current pagebrowser_evaluate— Execute JavaScript in the page contextbrowser_close— End the session
web_fetch for static pages — only use the browser when you need interaction.Documents & Media
document — Word documents and rich text
document — Word documents and rich text
document_read— Extract content as text, HTML, or markdown from any documentdocument_create— Create .docx with headings, paragraphs, tables, images, lists, headers/footersdocument_modify— Edit existing documentsdocument_convert— Convert between formatsdocument_merge— Combine multiple documents
pdf — PDF creation and manipulation
pdf — PDF creation and manipulation
pdf_read— Extract text, metadata, and structure (with optional page range)pdf_create— Create PDFs with headings, paragraphs, images, tables (supports RTL with custom fonts)pdf_merge— Combine multiple PDFspdf_split— Extract page ranges into separate filespdf_secure— Encrypt/decrypt with passwordspdf_compress— Reduce file sizepdf_watermark— Add text watermarks
spreadsheet — Excel and CSV files
spreadsheet — Excel and CSV files
spreadsheet_read— Read xlsx/csv/tsv with optional sheet selection and cell rangespreadsheet_create— Create new spreadsheets with multiple sheets, columns, rows, and stylesspreadsheet_modify— Edit existing files (add rows, update cells, add sheets)spreadsheet_analyze— Compute statistics, summaries, and derived columns
ffmpeg — Audio and video processing
ffmpeg — Audio and video processing
ffmpeg_check— Verify ffmpeg is installedffmpeg_install— Install via package-managerffmpeg_run— Run any ffmpeg command (pass args afterffmpeg)
Voice
speech-to-text — Transcribe audio with faster-whisper
speech-to-text — Transcribe audio with faster-whisper
stt_transcribe— Transcribe an audio file at a given pathstt_transcribe_upload— Transcribe a file uploaded in the current conversationstt_transcribe_voice_memo— Transcribe a voice memo generated by text-to-speechstt_detect_language— Detect the spoken language without a full transcription
text-to-speech — Generate voice memos
text-to-speech — Generate voice memos
voice_generate— Convert text to MP3 (returns file path)voice_respond— Respond entirely as a voice memo (the audio IS the response)voice_list— List all voice memo files in the workspace
af_/am_, e.g. the default af_bella) and British (bf_/bm_). The voice and speech rate are chosen in Settings → Text-to-Speech and applied automatically; the model installs into a managed Python runtime on first use (or on demand from Settings, with a live progress bar and a real in-app preview).Version Control & Code
git — Git operations (pure skill)
git — Git operations (pure skill)
shell_exec for Git with the user’s conventions. Instructions include:- Always run
git statusbefore making changes - Use Conventional Commits format:
type(scope): subject - Show diffs and proposed commit messages before executing
- Branch naming:
feature/,fix/,chore/prefixes with kebab-case
github — GitHub API integration
github — GitHub API integration
per_page at 100. For larger result sets, page through with multiple calls.See GitHub Integration for full setup and usage.External Services
google — Google Workspace
google — Google Workspace
notion — Notion pages and databases
notion — Notion pages and databases
cloudflared — Expose local services
cloudflared — Expose local services
cloudflared_check— Check if cloudflared is installedcloudflared_install— Install via package-managercloudflared_tunnel— Create a tunnel for a local port (returns public URL)
Desktop Automation
computer-use — Screen interaction
computer-use — Screen interaction
computer_screenshot— Capture the full screen (or specific display)computer_mouse_move— Move cursor to x,y coordinatescomputer_mouse_click— Click at position (left/right/double)computer_keyboard_type— Type textcomputer_keyboard_press— Press key combinationscomputer_scroll— Scroll at position
Interaction
ask — Ask the user with multiple-choice cards
ask — Ask the user with multiple-choice cards
ask_user— Pose a multiple-choice question and wait for the answer. Returns the option you picked or the custom instructions you typed.
Fun
memes — Generate and find memes
memes — Generate and find memes
meme_generate— Create a meme from a template (drake, fry, buzz, distracted-boyfriend, this-is-fine, etc.)meme_templates— List available templatesgif_search— Search for reaction GIFsgif_trending— Get trending GIFsadd_to_chat— Insert the generated meme/GIF into the conversation
introspect — Self-awareness
introspect — Self-awareness
wolffish_status— Uptime, active provider, loaded capabilities, channel connectivity, and system healthchannel_status— Whether each messaging channel (Telegram, WhatsApp, in-app) is connected, and the exact steps to reconnect one that isn’twolffish_performance— Task success rates, most used tools, error rateswolffish_memory— Recent conversation topics and knowledge areas
channel_status before sending you an out-of-band message — Telegram and WhatsApp are connected channels reached through their own tools, never desktop apps to launch.Task Execution (Motor Runtime)
The motor cortex executes all tool calls with these defaults:- Output buffer: 100KB per tool result — the LLM sees substantial output without truncation
- Retries: Up to 10 attempts for retryable errors (network, timeout). Non-retryable errors (permission, validation, not-found) bail immediately. Backoff scales up to 60s between attempts.
- No global timeout: Tools run until they complete or the user stops them
Customizing Capabilities
Built-in capabilities are managed and updated by Wolffish — don’t edit them directly, as your changes will be overwritten on the next update. Instead:- Disable a built-in capability from Settings if you don’t need it
- Fork it — copy the folder to a new name, then edit the copy however you like
- Create your own from scratch following the same structure