Skip to main content
ChatCLI now embeds a set of essential skills inside the binary and seeds them into ~/.chatcli/skills/ on startup. Previously skills only existed in the project’s .agent/skills/ (visible only inside the repo checkout) or via skills.sh (opt-in remote install) — a user installing via go install/brew had no skills at all. Now they ship by default.
Inspired by hermes-agent’s skill spectrum, but each skill is rewritten for ChatCLI’s own tools (@coder/Bash, @webfetch/@websearch, @send, @scheduler, @read/@search) — no third-party closed infra. Keyless-first and OS-agnostic (branches for macOS, Linux and Windows).

How seeding works

On startup, pkg/persona/builtin materializes each embedded SKILL.md into ~/.chatcli/skills/<name>/. It is idempotent and edit-safe via a content-hash manifest (.builtin-manifest.json):
SituationAction
Skill missinginstall
Unedited but stale (new release)refresh
User-editedpreserve (never clobber)
Already currentnothing
It works for every install method (go install, Homebrew, downloaded release), not just repo checkouts. Skills stay visible and editable on disk.

Included skills

Productivity & system send-message · email · calendar · reminders · notes · imessage Research & knowledge web-research · arxiv · obsidian · huggingface Documents & media pdf-tools · ocr · youtube · presentations · paper-writing · mermaid-diagrams · ascii-art Location & home maps (OpenStreetMap/OSRM, keyless) · hue-lights (local bridge, keyless) Dev & data github (gh CLI) · jupyter · webhooks Services (user’s own token) notion · linear · airtable Meta skill-authoring — teaches the agent to author and evolve its own skills

Auto-activation

Each skill declares triggers: in frontmatter; when a user phrase matches a trigger, the skill is injected into context automatically (FindAutoActivatedSkills). You can also invoke one manually via /<skill-name>.
Skills prefer the OS-agnostic tools (@send, @scheduler) and detect the available native CLI (himalaya/gcalcli/osascript/PowerShell), degrading with an install hint instead of guessing.