Three-Tier Priority
Skills are stored in Cloudflare KV under three namespaced layers, resolved with strict priority:
Resolution stops at the first hit. A private skill always shadows an official skill of the same name.
Unified JSON Format
Every skill entry is stored as a single JSON blob:Full KV Namespace
Deprecated (self-healing migration in progress):credits:{uid},tier:{uid},user:uid:{hash}
Parsing
engine/parser.ts (SkillParser.parse()) handles two formats:
- Unified JSON (primary) — detected by
input.trim().startsWith('{'), parsed directly - Legacy Markdown (fallback) — H1 as name, YAML block as implementation, JSON block as parameters
SkillSpec struct before execution.
Admin Sync
Skills are pushed into KV byuniskill-web via:
POST /v1/admin/sync_skill— single skill upsert (acceptsADMIN_KEYorINTERNAL_API_SECRET)POST /v1/admin/sync_cache— bulk cache invalidationPOST /v1/admin/refresh-tools— writesmcp_broadcast:tools_changedto trigger global MCP tool list refresh