Skills

Extend Foxl with installable skill packages for productivity, communication, media, and dev tooling

Skills are installable capability packages that extend what Foxl can do. Each skill is a SKILL.md file containing instructions, tool requirements, and domain expertise that the agent loads on demand.

How Skills Work

Skills use a lazy-loading pattern for efficiency:

  1. Only skill names and short descriptions are included in the system prompt
  2. When the agent decides a skill is relevant, it reads the full SKILL.md file
  3. The skill's instructions guide the agent through the task

This keeps the agent fast while providing deep expertise when needed.

The skill library is versioned in the foxl-ai/skills repo. A fresh install is seeded into ~/.foxl/skills/ from the copy bundled with the app; after that, launching Foxl only adds skills you do not have yet and never rewrites one you already have. Updates come from the Sync button on the Skills tab (below), which shows you the diff first. You can enable, disable, or customize any skill from that tab, and add your own local skills by dropping a SKILL.md file in the skills directory.

Skill Categories

Document processors, communication skills, and coding helpers all live in one flat directory. The groupings below describe intent, not filesystem layout.

Productivity and documents

SkillDefaultDescription
githubonInteract with GitHub using the gh CLI for issues, PRs, and CI runs
notiononCreate and manage Notion pages, databases, and blocks via API
obsidianonWork with Obsidian vaults and notes using obsidian-cli
gwsonGoogle Workspace CLI - Gmail, Calendar, Drive, Sheets, Docs, Chat, Tasks, Meet
outlookonOutlook email, calendar, and Microsoft To-Do via Microsoft Graph API
outlook-webonLegacy browser-extension Outlook skill (fallback when Graph is unavailable)
quiponManage Amazon Quip documents via REST API
himalayaoffCLI email client via IMAP/SMTP - list, read, write, reply, search
docxonCreate, read, edit, or manipulate Word (.docx) documents
xlsxonRead, edit, or produce spreadsheets (.xlsx, .xlsm, .csv, .tsv)
pptxonCreate or edit PowerPoint (.pptx) presentations
pdfonRead, extract, merge, split, watermark, fill, or OCR PDF files

Media and audio

SkillDefaultDescription
spotifyoffControl Spotify playback and search via terminal
spotify-playeroffTerminal Spotify playback via spogo or spotify_player
sonosoffControl Sonos speakers - discover, play, volume, group
voice-calloffStart voice calls via Twilio, Telnyx, or Plivo
sherpa-onnx-ttsoffLocal text-to-speech via sherpa-onnx (offline, no cloud)
video-framesoffExtract frames or clips from videos using ffmpeg

Agent tooling (built-ins as skills)

These ship as skills so you can toggle them off to reclaim system-prompt tokens on simpler conversations.

SkillDefaultDescription
browser-toolonBrowser automation - provides both the browser (agent-browser) and browser_extension tools, see Browser Automation
code-search-toolonSearch code with grep / ripgrep for patterns, symbols, and functions
exec-toolonExecute shell commands and manage background processes
git-toolonGit subcommand shortcuts - status, diff, log, branch, checkout, commit, push, pull
web-fetch-toolonFetch content from URLs - web pages, APIs, online resources

Coding assistants

SkillDefaultDescription
claude-codeoffUse the Claude Code CLI with your Claude Pro/Max subscription
codex-clioffUse the OpenAI Codex CLI with your ChatGPT subscription
gemini-clioffUse the Gemini CLI with your Google AI subscription or API key
geminioffGemini CLI for one-shot Q&A and generation
coding-agentoffRun Codex CLI, Claude Code, or other coding agents as a background process
electronoffAutomate Electron desktop apps (VS Code, Slack, Discord, Figma, etc.) via CDP
skill-creatoronCreate, edit, optimize, or benchmark skills with eval runs and variance analysis

Research and automation

SkillDefaultDescription
research-assistantonHelp with research tasks and information gathering
autoresearchoffAutonomous ML research loop that edits train.py, runs experiments, keeps improvements
tmuxoffRemote-control tmux sessions for interactive CLIs

Utility

SkillDefaultDescription
weatheronGet current weather and forecasts (no API key required)
healthcheckoffHost security hardening and risk-tolerance configuration

Browsing and Installing Skills

Skills live under Settings > Connect > Integrations, on the Skills tab. That page has four tabs and they answer different questions:

TabWhat is on it
IntegrationsThe third-party services worth connecting first, as cards - the two sign-in integrations (Microsoft 365, Slack) and the SaaS-shaped skills (github, notion, obsidian, gws, weather, outlook, outlook-web, quip, himalaya, spotify, spotify-player, sonos, voice-call)
SkillsThe full catalog - every skill shipped with Foxl plus anything you added locally
SharedSkills a workspace you belong to publishes
ChannelsThe inbound bots (Telegram, Slack, Signal) - see Channels

Each skill row on the Skills tab shows:

  • Name and description
  • Enable / disable toggle (flips the default above). Your choice is kept in ~/.foxl/data/skills-settings.json, not written into the skill file, so syncing a newer version of the skill never undoes it
  • Required tools, binaries, or credentials
  • Stored environment variables (API keys), editable in place

/skills, /shared and /channels remain real URLs, so an existing link or bookmark still opens the right tab.

Some skills require external tools. For example, spotify-player needs the spogo or spotify_player binary on PATH, and sherpa-onnx-tts needs the sherpa-onnx runtime. The Skills tab shows compatibility status per skill and flags missing dependencies inline.

A missing binary or API key does not hide the skill - it is still offered to the agent, with the install step in its own body. So a skill can be available and not yet runnable, which is why the requirement is shown on the row.

Updating skills is a two-step, reversible operation. Syncing from foxl-ai/skills shows you a per-file diff first and writes nothing until you confirm; applying it snapshots every affected skill first, so it can be reverted. Skills you wrote yourself are never touched - sync only considers skills that exist in the repo.

Creating Custom Skills

Create your own skill by adding a SKILL.md file:

~/.foxl/skills/my-skill/SKILL.md

The file uses YAML frontmatter for metadata and markdown for instructions:

---
name: my-skill
description: Short description of what this skill does
enabled: true
requires:
  env: [MY_SERVICE_API_KEY]
  bins: [my-cli]
---

## Instructions

Tell the agent how to use this skill...

requires.env entries become editable in the UI, so API keys are managed there rather than in shell profiles - and a value you store that way satisfies the requirement even if the variable is not in your shell. requires.bins get a PATH check at load time, with inline setup hints when a binary is missing. The agent will discover your skill automatically on next conversation.

The enabled line is only the starting value - switching the skill on or off in the app is recorded in skills-settings.json and outranks it.

On this page