/agent skills.
Concepts
Default Registries
ChatCLI ships with three registries:
New default registries are automatically added after upgrades β no need to edit config manually.
skills.sh
skills.sh is the open agent skills directory, compatible with 30+ agents (Claude Code, Cursor, Codex, Gemini CLI, etc.). Skills hosted on GitHub are indexed with installation metrics and security audits. ChatCLI consumes 3 skills.sh APIs:- Search API β fuzzy search with install counts
- Download API β pre-packaged snapshots with all skill files
- Audit API β partner security assessments (ATH, Socket, Snyk)
/skill Commands
Search Skills
(214K installs)β install count (skills.sh)[installed](green) β skill installed from that registry[installed from other source](yellow) β same-name skill exists from another source[SUSPICIOUS]/[BLOCKED]β moderation flags
Install Skill
--from resolves the ambiguity:
Uninstall Skill
List Installed Skills
Skill Info
--from, prioritizes the registry with richest data (skills.sh with installs and security). With --from, queries only that registry.
Manage Registries
Source Preferences
Pin Skills for the Session (/skill pin)
When you want a skill considered on every turn of the conversation β regardless of whether the message matches its triggers: or paths: β pin it with /skill pin. The skill stays injected in the system prompt until you /skill unpin it or end the session.
- Injects the skill into a dedicated
# Pinned Skillsblock in the system prompt, before the# Auto-loaded Skillsblock. Onmodel:/effort:hint conflicts, pinned beats auto-activation (but loses to a manual/<skill-name>invocation). - The pinned block carries
cache_control: ephemeralβ the provider keeps the cache warm across turns as long as the pinned set doesnβt change. - Auto-activation still runs: if a skill is pinned and matches by
triggers:/paths:, itβs injected exactly once (deduplicated by name). - Skills uninstalled/renamed during the session silently drop from the set on the next turn (re-resolved through the persona manager).
/skill listshows[pinned]next to pinned skills.
- Skills with
disable-model-invocation: truecannot be pinned β the flag exists precisely to forbid automatic injection. Use manual/<skill-name>for those. - The pinned set is session-scoped; it does not persist across chatcli runs (by design β pinning expresses current-session intent).
How to Activate a Skill: Three Modes
model:/effort: hint precedence when multiple modes fire on the same turn:
Skill Injection Budget
Injected skill bodies respect a per-block character budget:CHATCLI_SKILL_INJECT_BUDGET (default 24000, 0 = unlimited/legacy). Skills are rendered in their stable order; once the budget is spent, later skills keep their header and description but the body degrades to a read-on-demand pointer at the skillβs source file:
Why this exists: a single prompt can auto-activate a burst of skills (e.g. nine ServiceNow skills matching one question), adding tens of KB to every subsequent request. Behind a corporate proxy/WAF with a body-size cap, that alone can push the session over the rejection threshold β see Context Recovery. The default is generous: typical sessions inline every activated skill untouched.
/config agent (token efficiency section).
Help
Namespace and Collisions
How Skills Are Stored on Disk
Registry skills use qualified names to avoid collisions:-- separator is safe because the agentskills.io spec forbids consecutive hyphens in skill names.
Users Never Need to Type Qualified Names
Daily usage is transparent:Configuration
Registries File
~/.chatcli/registries.yaml controls the registries:
Preferences File
~/.chatcli/skill-preferences.yaml stores source preferences:
/skill prefer β no manual editing needed.
Environment Variables
Security and Moderation
Moderation Flags
Security Audits (skills.sh)
For skills.sh skills,/skill info shows security assessments from three partner providers:
Data is fetched from
https://add-skill.vercel.sh/audit with a 3-second timeout β failures are silent (advisory data, never blocks).
Atomic Installation
Skills are installed using atomic writes:- Content downloaded to temporary directory (
.tmp-*) - YAML frontmatter validated
- Moderation flags checked
- Scripts receive executable permission
sourceandsnapshot_hashfields injected into frontmatter- Directory atomically renamed to final destination
- On failure, temporary directory is automatically removed
Search Cache (Trigram)
ChatCLI implements a trigram-based fuzzy cache to reduce network calls:
The cache is automatically invalidated after installing or uninstalling a skill, and recreated when enabling/disabling a registry.
Architecture
Packages
Next Steps
- Customizable Agents β How to create and use agents with skills
- Command Reference β Complete list of all commands
- Configuration (.env) β Available environment variables