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:| Field | Required | Description |
|---|---|---|
name | ✅ | Unique identifier (lowercase, hyphens) |
description | ✅ | Short description (used for routing and registry) |
license | MIT, Apache-2.0, etc. | |
allowed-tools | Tools the skill may invoke | |
category | Grouping category | |
stability | stable, experimental, or deprecated |
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:| Location | Scope |
|---|---|
.agents/skills/ | Universal (Cursor, Copilot, Cline, Warp) |
.claude/skills/ | Claude Code |
.windsurf/skills/ | Windsurf |
.continue/skills/ | Continue |
~/.claude/skills/ | Global / personal |
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
| Version | Date | Pass rate | Trend |
|---|---|---|---|
| v3 (current) | Apr 17 | 88% | ↗ Improved by 4% |
| v2 | Apr 10 | 84% | ↗ Improved by 12% |
| v1 | Apr 1 | 72% | — |
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 quality composite from benchmark lift, live eval pass rates, and AI-judge quality
- 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.Bidirectional Sync
Skills sync automatically between your local files and the platform:| Disk State | Platform State | Action |
|---|---|---|
| SKILL.md exists | Same hash | Nothing (in sync) |
| SKILL.md exists | Different hash | Platform wins — disk updated |
| SKILL.md exists | Doesn’t exist | Push disk → platform |
| No SKILL.md | Skill exists | Pull platform → disk |
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:| Metric | Description |
|---|---|
| Skills Used | Number of distinct skills that have activated on this agent’s traces |
| Total Activations | Cumulative skill activation count across all traces (30d) |
| Avg Pass Rate | Mean eval pass rate across all skills |
| Avg Effectiveness | Mean SkillScore across all skills — a quality composite, not volume |
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:| Column | Description |
|---|---|
| Uses | Activation count for this agent (30d) |
| % Evals Passed | Percentage of evals that passed on traces using this skill |
| % Trace Success | Percentage of traces that completed without errors |
| Effectiveness | Composite score with color-coded bar (green ≥70%, amber ≥40%, red <40%) |
| Trend | Direction indicator: ↑ improving, → stable, ↓ degrading |
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:
| What Changes | New Manifest? | Why |
|---|---|---|
| Skill registry updated (add/remove/edit) | ✅ Yes | Different available behaviors |
| Different skills activated per task | ❌ No | Same agent, different runtime path |
| Skill content edited (body changed) | ✅ Yes | Available instructions changed |
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
Do
- ✅ Be specific: “Check for SQL injection by looking for string concatenation in queries”
- ✅ Include examples: Show expected inputs and outputs
- ✅ Use structured output: Define tables, JSON schemas, or templates
- ✅ Break into steps: Numbered instructions for clarity
- ✅ Reference attachments:
See scripts/scan.py for the scanning utility
Don’t
- ❌ Be vague: “Review the code” — review for what?
- ❌ Duplicate: If two skills overlap, merge them
- ❌ Include secrets: No API keys, credentials, or tokens
- ❌ Use absolute paths: Use relative paths from the skill directory
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.