Browse without signing up
the registry is public. Preview any skill, including its full SKILL.md body, with no account required.
Install = fork
Installing copies the skill into your org as an independent fork. Your edits don’t affect upstream, and upstream changes don’t auto-overwrite yours.
Publish what works
Once your own skill has 3+ versions and 10+ activations, you can publish it. the registry re-ranks weekly by effectiveness, not by post date.
Every ranking on the registry is a SkillScore — a skill’s proven effectiveness from real benchmark, live-eval, and AI-rating signals. See that guide for how it’s calculated and what’s public vs. private to your team.
1. Discover
Browse the registry
- Web
- SDK
- cURL
Visit
/skills — no login required. Each card shows:- Name + description
- SkillScore — proven effectiveness blended from up to 3 signals (benchmark · live eval · AI rating), not a vanity formula. See SkillScore for the canonical definition.
- Install count (cumulative across all orgs)
- Badge:
verified(DecimalAI-curated),featured(algorithmically promoted),community(user-published),imported(auto-synced from GitHub) - Trend: improving / stable / degrading
Preview a skill (no fork)
Sometimes you want to see what a skill does before committing to fork it.preview returns the body + metadata as an ephemeral snapshot — no fork is created, no fork count is incremented, no row added to your org.
2. Fork into your org
“Fork” is the canonical verb — forking copies the registry skill into your org as an independent skill you own. (The SDK method isinstall(), which forks and writes SKILL.md to disk in one call; an older HTTP /install route is a deprecated alias for the same fork.)
Fork via SDK (recommended)
- Fork on the platform: copies the registry skill into your org with a
forked_from_skill_idpointer - Write to disk: produces
SKILL.md+ bundled scripts/attachments in the right agent directories (e.g..claude/skills/pdf/,.agents/skills/pdf/)
Or install via the web UI
From
/skills, click any skill card → Fork. A modal lets you:- Install only — creates the fork but doesn’t assign it to any agent
- Install & Assign — creates the fork AND subscribes selected agents in one step
Assign to agents (if you didn't in step 1)
A forked skill exists in your org but isn’t loaded by any agent until you assign it. From a skill’s Settings tab or an agent’s Skills tab, pick which agents subscribe to it. The Skill Router only surfaces skills that are subscribed to the requesting agent.See Agent Skill Assignment for the full assignment surface.
What exactly happens when you fork a skill
What exactly happens when you fork a skill
The fork endpoint performs a transaction:
- Validates the source exists and is
visibility='public' - Rejects duplicates — if your org already has a fork of this skill, returns 409 with the existing fork’s name in the
X-Installed-Asheader - Checks your plan’s skill cap (10 / 50 / 250 / unlimited)
- Creates a fork in your org: a new
Skillrow withsource_type='platform', the same body markdown, and two fork pointers —forked_from_skill_idandforked_at_version_id - Copies attachments (scripts, references, templates, assets)
- Increments
source.install_counton the upstream
3. Receive upstream updates
When the author of an installed skill publishes a new version, your fork doesn’t auto-update — you decide whether to merge.Check for updates
A daily background job setshas_upstream_update=True on any fork whose forked_at_version_id differs from upstream’s latest_version_id. Check the flag on a skill’s detail view (web UI badge, or API response field).
Preview before merging
Merge
forked_at_version_id. Your prior versions remain in the history — nothing is lost.
What if the author unpublishes the upstream skill?
What if the author unpublishes the upstream skill?
`update_skills` vs `merge_upstream` — they sound similar, they do different things
`update_skills` vs `merge_upstream` — they sound similar, they do different things
router.update_skills()— pulls platform-state down to your local disk for skills already in your org. It’s a disk sync, not a content-merge. Useful when you’ve made dashboard edits and want SKILL.md files on disk to match.router.merge_upstream(name)— pulls registry upstream content into your forked skill, creating a new version. It’s a content-merge, not a disk operation.
merge_upstream(..., mode="replace") then update_skills().4. Publish your own skill
Once you’ve built a skill in your org that you’d like to share publicly:visibility from org to public:
| Gate | Why |
|---|---|
| You are the skill owner (or org admin) | Prevents teammates from publishing each other’s work-in-progress |
| ≥ 3 versions | Proves you’ve iterated. Encourages refinement before going public. |
| ≥ 10 total activations | Proves real agents have actually used it. Stops the registry from filling with WIP. |
| Name is globally unique among public skills | the registry can’t disambiguate two code-reviews. Rename yours if there’s a collision. |
400 or 409 with a clear error message pointing at which gate.
What the server does on publish
What the server does on publish
The published skill stays in your org — there is no migration into the registry org. The change is purely metadata:
visibility: 'org' → 'public'categoryset (from thecategoryarg)tagsset (lowercased + trimmed)skill_badge: 'community'(registry-curated skills getverified; auto-imported GitHub skills getimported)source_typedefaults to'platform'if unset
Unpublish
visibility back to 'org'. Existing forks are untouched — see the upstream-orphan accordion above for the contract.
How effectiveness is computed
Every published skill gets a SkillScore (0–100) — a quality-only composite. Popularity and maintenance signals are deliberately excluded: a heavily-installed stale skill shouldn’t outrank a skill that actually works. SkillScore is the canonical source for how the score is built; this section summarizes the three signals it blends.| Signal | What it measures |
|---|---|
| Benchmark | A/B run on example tasks (with the skill vs. without it) — did it raise the pass rate? The strongest signal, produced by skillevaluation. |
| Live eval pass rate | Pass rate of evals on production traces where the skill activated |
| AI quality rating | LLM-judge mean (1–10) over sampled activations — gated until ≥ 10 rated traces in the last 30 days |
registry_stats_scheduler.
The registry defaults to sorting by SkillScore. The leaderboard adds three more axes:
| Axis | Ranks by | Signal source |
|---|---|---|
| Biggest Improvement | Measured benchmark lift vs. no-skill baseline | Benchmark (skillevaluation) |
| Most Efficient | Token savings | Benchmark |
| Top live rating | ★ user ratings | AI rating |
"popular", "installs", or "recent" — popularity exists as a sort, it just doesn’t contaminate the score.
All inputs are anonymized across consumer orgs. Per-org data is never exposed on the public registry.
Router vs disk auto-loading
A subtlety worth knowing if you mix DecimalAI with an IDE-managed runtime:Why running Claude Code / Cursor *and* the Router loader at the same time can duplicate skills
Why running Claude Code / Cursor *and* the Router loader at the same time can duplicate skills
Some runtimes (Claude Code, Cursor) auto-discover
The SDK auto-detects known disk runtimes (
SKILL.md files from
.claude/skills/ or .agents/skills/ and inject them into the system
prompt themselves. The Skill Router also
injects skills into the system prompt — from the platform. Running
both means the same skill ends up in the prompt twice.The simplest fix: pick one source of skill injection per agent process.| Setup | What to use |
|---|---|
| Python app with framework adapter (LangChain / OpenAI Agents / Pydantic AI) | Router — install(enable_skill_loader=True) |
| Claude Code / Cursor (IDE-managed agent) | Disk auto-loading; skip the Router |
| Both at once | Pass disk_sync=False to the SDK install and remove local SKILL.md files so the Router is the only source |
CLAUDECODE, CLAUDE_CODE_ENTRYPOINT, CURSOR_AGENT env vars) and logs a one-shot warning when enable_skill_loader=True fires inside one. Silence with DECIMALAI_SUPPRESS_DISK_RUNTIME_WARNING=1 if you’ve chosen the setup deliberately.See the Router’s disk-vs-Router section for the full matrix and the disk_sync=False behavior.Plan limits
| Free | Core | Pro | Enterprise | |
|---|---|---|---|---|
| Skills in your org | 10 | 50 | 250 | Unlimited |
| Install from registry | ✓ | ✓ | ✓ | ✓ |
| Publish to registry | — | ✓ | ✓ | ✓ |
| Registry browse (anonymous) | ✓ | ✓ | ✓ | ✓ |
Related
- Skills Guide — what a skill is, SKILL.md format, manual creation, agent assignment
- Skill Router — the runtime that picks which skills to load per turn
- SkillRouter Python class — full SDK reference
- Skills API endpoints — raw REST surface