What's a skill?
The SKILL.md format and frontmatter fields.
Get skills in
Auto-discovery from disk, SDK sync, or platform-first authoring.
Routing & sync
Smart routing, bidirectional sync, skill-specific evaluators.
Registry
Publish to the public registry with SkillScore effectiveness.
Agents
Per-agent skill assignment, dashboard, manifest tracking.
Playground
Test skill edits against real production traces before saving.
Benchmark (eval.yaml)
A/B benchmark the skill via the open
skillevaluation spec.What Is a Skill?
A skill is a directory containing aSKILL.md file and optional supporting files:
SKILL.md and follows the instructions.
Skills are not tools. Tools are functions the agent can call (search, calculate, etc.). Skills are instructions that tell the agent how to approach a task — they’re composable behavior units.
SKILL.md Format
Every skill has YAML frontmatter and a markdown body:On-demand skills cost zero context until called. A skill with
invocation: user is excluded from the ambient skill menu and smart routing — it never occupies your agent’s context until you explicitly invoke it (e.g. router.get_skill_body(name)). Claude Code’s disable-model-invocation: true means the same thing; DecimalAI round-trips both spellings on import and export.Getting Skills Into DecimalAI
There are two separate questions, and it helps to keep them apart:- How does a skill get into your workspace? Three sources, covered below: auto-discovery from disk, install from the public registry, or manual creation.
- How does a skill reach a running agent? Once it’s in your workspace, pick one delivery path per runtime: hosted routing via the Skill Router (your SDK agent asks the platform which skills to load on each query — this is the path that measures effectiveness and powers the leaderboard) or disk export (DecimalAI writes the open-format
SKILL.mdinto the directories Claude Code / Cursor / etc. already scan, and the runtime loads it itself).
1. Auto-Discovery (Bring Your Own)
If you already have SKILL.md files, DecimalAI discovers them automatically:2. From the Public Registry
Browse community skills and install them:SKILL.md + attachments to disk, and creates a lockfile at .decimal/skills.lock.
3. Manual Creation
Create skills directly via the SDK or API:How Skills Are Tracked
Auto-Versioning
Every time you edit a SKILL.md and restart your app, the SDK:- Re-discovers the file
- Computes a content hash
- If the hash changed → creates a new version automatically
Activation Detection
The SDK detects which skills were activated by comparing the LLM’s rendered prompt against known skill bodies. This works automatically across all frameworks — no code changes needed. Each trace includesactive_skills metadata:
Effectiveness Scoring
The platform correlates skill activations with trace evals to compute:- Pass rate: % of traces with the skill that evaluated as “pass”
- Effectiveness: The skill’s SkillScore — a 0–100 composite from benchmark lift (the with-vs-without improvement), live eval pass rates, AI-judge quality, and cross-org adoption
- Trend: Improvement or regression over time
How activation detection works internally
How activation detection works internally
The SDK uses a three-tier approach:
- Prompt-diff matching — Compares the rendered LLM prompt against known skill bodies using fuzzy content matching
- Span attribute detection — Checks for
decimal.active_skillsspan attributes (OTel frameworks) - Explicit declaration —
trace.log_skill_activation(name="code-review")for manual control
Skill Routing
When your agent needs to select which skills to load, DecimalAI offers two routing strategies:Menu Injection (Simple)
Dump all skill names + descriptions into the system prompt and let the LLM decide:Smart Routing (Semantic)
For larger skill sets, smart routing uses semantic search + performance-weighted re-ranking:get_menu_prompt(query=...) returns just the ready-to-inject prompt string. If you want the ranked skills plus the fragment together, call router.smart_route(query=...) — same semantic + effectiveness ranking, but it returns the full result dict (skills, prompt_fragment, strategy). The pricing page and Skill Router reference use smart_route(); both are real.Progressive Disclosure (Bodies on Demand)
Both strategies above surface skill descriptions — a one-line menu row per skill. The full instructions (theSKILL.md body) load on demand: on the openai_agents and pydantic_ai adapters, enabling the skill loader auto-registers a load_skill(name) tool on every agent. The model reads the menu, decides a skill applies, calls load_skill("skill-name"), and the body arrives as a tool result — then it executes with the full instructions in context.
Descriptions stay cheap (budgeted at ~1,500 estimated tokens / 30 rows) and bodies are budgeted too (at most 3 per turn, ~6,000 tokens total, 8 KB per body), so a growing registry can’t blow the context window. Adapters without a tool loop (anthropic, langchain) deliver bodies by prompt injection instead (inject_skill_body=True), with the same trim and budget.
The routing menu only offers skills the calling user may see:
personal skills surface only to their creator and workspace skills only to members of the owning workspace (plus explicit shares); org and public skills surface org-wide. API-key-authenticated agents see the org-wide set.Bidirectional Sync
Skills sync automatically between your local files and the platform:Community Registry
Browse, install, fork, and publish skills in the public registry. The full lifecycle — discover, install, receive upstream updates, publish your own — is covered in its own guide:Community Registry guide
Browse without signing up · install in one call · receive upstream
updates · publish your own with effectiveness data attached.
Agent Skill Assignment
Once a skill is in your organization (created manually or installed from the registry), you need to assign it to specific agents. This gives you fine-grained control over which agents use which skills.Assigning from the Skill Settings Tab
Navigate to any skill detail page → Settings tab → Agent Assignments section:- Select an agent from the dropdown and click “Assign”
- Remove an assignment by clicking the “Remove” button next to an assigned agent
- Each assignment shows the version mode: Latest (auto-updates) or Pinned (locked to a specific version)
Assigning from the Agent Skills Tab
Navigate to any agent → Skills tab:- Click ”+ Add Skill” in the table header → a picker modal shows all org skills not yet assigned
- Search, multi-select, and click “Assign” to batch-assign skills
- Click “Browse Registry →” to discover and install new skills from the public registry
How Assignment Works at Runtime
When an agent runs, the Skill Router checks which skills are subscribed to that agent:Agent Skills Dashboard
The Skills tab on each agent’s dashboard provides full observability into how skills perform for that specific agent.Summary Cards
Four metrics at the top:Activation Timeline (30d Heatmap)
A GitHub-style heatmap grid showing daily activation intensity for each skill over the last 30 days:- Rows = skills (top 6 by effectiveness)
- Columns = days (30 cells, left = 30 days ago, right = today)
- Color intensity = activation volume (darker green = more activations)
- Hover = exact date, activation count, and pass rate
- Which skills are used most frequently
- Whether a skill’s usage is increasing or declining
- Days with unusually high or low activity
Skill Insights
Auto-generated insight cards based on the data:- 🏆 Top Skill — The skill with the highest SkillScore, shown with its pass rate and usage count
- 📈 Improving — Skills whose pass rate is trending upward over the last 15 days
- ⚠️ Degrading — Skills whose pass rate is declining, with a suggestion to review the latest version
Leaderboard Table
All skills ranked by effectiveness with columns:Skills and Manifests
Skills are tracked as askill_registry surface in your agent’s version manifest. When the skill registry changes, a new manifest version is registered:
Skill changes follow the same compatibility policy as other surfaces (keep/repair/replay/drop). See Manifests & Versioning for details.
Testing Skill Changes in the Playground
Before saving a skill edit, test it against real production traces in the Playground — open a skill detail page, click “Test in Playground”, edit the body, and run it side-by-side against the original output. See the Playground guide for the full procedure.Writing Effective Skills
The five tips that matter most:- Only teach what the model can’t infer. Skills lift when they supply knowledge the model doesn’t have — your house conventions, a spec’s exact rules, a new API. Generic advice (“write clean code”, “be thorough”) measures zero lift.
- Write the description as the trigger. State what the skill does and when to use it, in third person, with one “Do NOT use for …” clause. Both search retrieval and the model’s skill menu read this one string — it decides whether the skill ever fires.
- Directives, not essays. “Always use
client.interactions.create()for chat. Never usegenerate_content(it drops session state)” beats a paragraph of background. One worked before→after example beats five paragraphs. - If a program can check it, make it a validator; if exact steps are required, write a script. Put deterministic checks in your eval’s
validators, and fragile step-by-step operations inscripts/— code is exact, prose pretending to be code is not. - Every line costs tokens on every activation. Apply the no-op test: remove the line — does output change? No → delete it. Shed real depth into
references/instead of bloating the body.
Authoring Skills — the full guide
Classify your skill on two axes (capability / preference, public / private), write the description as the trigger, build an honest eval suite with trigger cases, and know when the skill should retire.
Next Steps
Skills Observability tutorial
See per-skill activation counts, pass rates, and smart routing in action.
Skills API
REST reference for create, sync, fork, publish, version diff.
Skills & Data Pipeline
Conceptual model — skills vs tools, activation tracking, effectiveness.
Public registry
Browse community skills ranked by SkillScore — measured quality from live activations, not install counts.