Documentation Index
Fetch the complete documentation index at: https://docs.uniskill.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
Every request to/v1/execute (or /v1/execute/:skillName) passes through 8 sequential gates before a response is returned. All gates after ⑦ are non-blocking via ctx.waitUntil.
Native vs. Generic Execution
Native Skills (Hardcoded)
Eight official skills bypass the Generic Executor and use dedicated TypeScript handlers:| Skill ID | Handler | Upstream |
|---|---|---|
uniskill_weather | routes/weather.ts | Open-Meteo |
uniskill_scrape | routes/scrape.ts | Jina AI Reader |
uniskill_math | routes/math.ts | Local engine |
uniskill_time | routes/time.ts | System timezone |
uniskill_geo | routes/geo.ts | Mapbox Geocoding |
uniskill_crypto_util | routes/crypto_util.ts | Web Crypto API |
uniskill_github_tracker | routes/github-tracker.ts | GitHub API |
uniskill_smart_chart | routes/uniskill-smart-chart.ts | QuickChart.io |
Generic Executor (engine/executor.ts)
All registry/market/private skills run through the declarative template engine:
{{param}}placeholders — resolved in URL, headers, and request body{{SECRETS.KEY}}— decrypted from user’s AES-256 encrypted KV secrets- Declarative template detection — suppresses auto-appending when
{{...}}is present - Response mapping — JSONPath extraction via
response_mapping - 10s hard timeout via
AbortController - Fail-fast circuit breaker — missing SECRETS placeholder → immediate error, no upstream call
Experience Injection Detail
Before execution (step ⑥.₅), the gateway performs a semantic similarity search:- Noise keys (
session_id,trace_id, etc.) are pruned from params - Remaining params are vectorized via Voyage AI (
voyage-code-3, 1024-dim) - Vector queried against
skill_learningstable viamatch_learnings_by_inputRPC (threshold: 0.85) - On match:
preventionPatchstring is retrieved and injected via:- Tactic B (native handlers): appended as plaintext suffix to error response body
- Tactic C (LLM skills): injected into
messages[-1].contentin the request body