Skip to content
Registry

iii-directory

v0.8.1

Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus function search ranked by the judge worker (falling back to local hybrid/lexical) with a conditional pre-generate hint.

Install

bash
iii trigger compose::add worker=iii-directory@0.8.1

Run in your project with the iii engine running. Exact versions are immutable and digest-pinned.

iii-config.yaml
- download_timeout_ms: 60000
  registry_url: https://api.workers.iii.dev
  skills_folder: ./skills

iii-directory

Workers registry HTTP proxy and filesystem-backed skill + prompt reader for the iii engine. Every public function sits under a single directory::* namespace, split into three sub-namespaces (all MCP-agnostic):

Surface What clients see When to use it
Skills (directory::skills::*) Enriched listing via directory::skills::list ({ id, title, type, description, bytes, modified_at } per row), a single-skill reader directory::skills::get { id } returning { id, title, type, description, body, modified_at }, and directory::skills::index which renders a short per-worker overview document (one ## </code> + first paragraph + <code class="readme-inline-code">read more</code> link per <code class="readme-inline-code">type: index</code> skill). <code class="readme-inline-code">title</code> prefers the YAML frontmatter <code class="readme-inline-code">title:</code> over the body H1; <code class="readme-inline-code">type</code> is lifted from frontmatter <code class="readme-inline-code">type:</code> (e.g. <code class="readme-inline-code">index</code>, <code class="readme-inline-code">how-to</code>, <code class="readme-inline-code">reference</code>) and serialised as <code class="readme-inline-code">null</code> when absent.</td> <td>Orientation: "when and why to use my worker's tools"</td> </tr> <tr> <td><strong>Prompts</strong> (<code class="readme-inline-code">directory::prompts::*</code>)</td> <td>Static prompt templates listed by <code class="readme-inline-code">directory::prompts::list</code> and read by <code class="readme-inline-code">directory::prompts::get</code></td> <td>Parametric command templates the <em>user</em> invokes</td> </tr> <tr> <td><strong>Registry</strong> (<code class="readme-inline-code">directory::registry::*</code>)</td> <td>HTTP proxy over <code class="readme-inline-code">api.workers.iii.dev</code> with <code class="readme-inline-code">workers::{list,info}</code>. Rows share the core <code class="readme-inline-code">name</code> / <code class="readme-inline-code">description</code> / <code class="readme-inline-code">version</code> fields with the engine's <code class="readme-inline-code">engine::workers::list</code> and add publication metadata (<code class="readme-inline-code">type</code>, <code class="readme-inline-code">config</code>, <code class="readme-inline-code">supported_targets</code>, <code class="readme-inline-code">total_downloads</code>, <code class="readme-inline-code">dependencies</code>, optional <code class="readme-inline-code">image</code>). <code class="readme-inline-code">workers::list</code> is cursor-paginated with a server-authored page size.</td> <td>"What's published in the public registry?"</td> </tr> </tbody></table> <p>Engine introspection (functions / triggers / registered triggers / workers) is served by the engine natively at <code class="readme-inline-code">engine::functions::*</code>, <code class="readme-inline-code">engine::triggers::*</code>, <code class="readme-inline-code">engine::registered-triggers::*</code>, and <code class="readme-inline-code">engine::workers::*</code>. Earlier versions of this crate wrapped those calls under <code class="readme-inline-code">directory::engine::*</code> helpers; the wrappers have been removed — call the engine ids directly.</p> <p>Skills and prompts are sourced from a single configured folder on disk (<code class="readme-inline-code">skills_folder</code>). The only write path is the <strong><code class="readme-inline-code">directory::skills::download</code></strong> function, which pulls markdown into <code class="readme-inline-code">skills_folder</code> from either the <a href="https://workers.iii.dev">workers registry</a> or a GitHub repo. Once downloaded, files belong to the developer — edit them however you want.</p> <p><code class="readme-inline-code">directory::registry::workers::*</code> and the engine's <code class="readme-inline-code">engine::workers::*</code> share the core <code class="readme-inline-code">name</code> / <code class="readme-inline-code">description</code> / <code class="readme-inline-code">version</code> fields so a parser that touches only those keys works against either surface; the registry view also surfaces publication metadata (<code class="readme-inline-code">type</code>, <code class="readme-inline-code">config</code>, <code class="readme-inline-code">supported_targets</code>, <code class="readme-inline-code">total_downloads</code>, <code class="readme-inline-code">dependencies</code>, optional <code class="readme-inline-code">image</code>) and the engine view adds runtime / connection state.</p> <h2 id="table-of-contents" class="scroll-mt-20">Table of contents</h2> <ol> <li><a href="#install">Install</a></li> <li><a href="#configuration">Configuration</a></li> <li><a href="#quickstart-download-some-skills">Quickstart: download some skills</a></li> <li><a href="#on-disk-layout">On-disk layout</a></li> <li><a href="#skill-ids">Skill ids</a></li> <li><a href="#functions">Functions</a></li> <li><a href="#custom-trigger-types">Custom trigger types</a></li> <li><a href="#local-development--testing">Local development & testing</a></li> <li><a href="#migration-from-skills-v02x">Migration from skills v0.2.x</a></li> </ol> <hr> <h2 id="install" class="scroll-mt-20">Install</h2> <pre class="shiki shiki-themes min-light vesper" style="--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">iii</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> worker</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> add</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> iii-directory</span></span></code></pre><p><code class="readme-inline-code">iii worker add</code> fetches the binary, writes a config block into <code class="readme-inline-code">~/.iii/config.yaml</code>, and the engine starts the worker on the next <code class="readme-inline-code">iii start</code>.</p> <hr> <h2 id="configuration" class="scroll-mt-20">Configuration</h2> <pre class="shiki shiki-themes min-light vesper" style="--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010" tabindex="0"><code><span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Folder that backs every read (`directory::skills::list`,</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># `directory::skills::get`, `directory::prompts::*`) and every write</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># from `directory::skills::download`. Relative paths are resolved</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># against the process current working directory; absolute paths are</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># used as-is.</span></span> <span class="line"><span style="--shiki-light:#D32F2F;--shiki-dark:#FFC799">skills_folder</span><span style="--shiki-light:#D32F2F;--shiki-dark:#FFF">:</span><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4"> ./skills</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Workers registry base URL — used by `directory::skills::download`</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># and the `directory::registry::*` proxies when a `worker=` source is</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># specified. Override for self-hosted deployments.</span></span> <span class="line"><span style="--shiki-light:#D32F2F;--shiki-dark:#FFC799">registry_url</span><span style="--shiki-light:#D32F2F;--shiki-dark:#FFF">:</span><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4"> https://api.workers.iii.dev</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Timeout for a single download (`git clone` or HTTP request) in ms.</span></span> <span class="line"><span style="--shiki-light:#D32F2F;--shiki-dark:#FFC799">download_timeout_ms</span><span style="--shiki-light:#D32F2F;--shiki-dark:#FFF">:</span><span style="--shiki-light:#1976D2;--shiki-dark:#FFC799"> 60000</span></span></code></pre><p>The folder is created on first download if it doesn't exist.</p> <hr> <h2 id="quickstart-download-some-skills" class="scroll-mt-20">Quickstart: download some skills</h2> <pre class="shiki shiki-themes min-light vesper" style="--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010" tabindex="0"><code><span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Pull a specific worker's skills + prompts at a fixed semver from</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># the registry. Files land under `<skills_folder>/agent-memory/`.</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">iii</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> trigger</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --function-id=directory::skills::download</span><span style="--shiki-light:#24292EFF;--shiki-dark:#A0A0A0"> \</span></span> <span class="line"><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --payload=</span><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4">'{"worker": "agent-memory", "version": "1.2.3"}'</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Same, but always fetch whatever's tagged `latest` (also the default</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># when neither version nor tag is given).</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">iii</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> trigger</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --function-id=directory::skills::download</span><span style="--shiki-light:#24292EFF;--shiki-dark:#A0A0A0"> \</span></span> <span class="line"><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --payload=</span><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4">'{"worker": "agent-memory"}'</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Pull a single subfolder out of a public GitHub repo via</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># `git clone --depth 1 --branch main`. Files land under</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># `<skills_folder>/frontend-design/`. The `branch` field defaults to</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># `main`; pass `"master"` for older repos that haven't migrated.</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">iii</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> trigger</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --function-id=directory::skills::download</span><span style="--shiki-light:#24292EFF;--shiki-dark:#A0A0A0"> \</span></span> <span class="line"><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --payload=</span><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4">'{</span></span> <span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4"> "repo": "https://github.com/anthropics/skills",</span></span> <span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4"> "skill": "frontend-design"</span></span> <span class="line"><span style="--shiki-light:#22863A;--shiki-dark:#99FFE4"> }'</span></span></code></pre><p>The response is <code class="readme-inline-code">{ namespace, skills_written, prompts_written, source }</code> where <code class="readme-inline-code">skills_written</code> and <code class="readme-inline-code">prompts_written</code> are arrays of relative paths / prompt names that were materialised in this run.</p> <p>After every successful download the worker fires the <code class="readme-inline-code">directory::skills::on-change</code> and/or <code class="readme-inline-code">directory::prompts::on-change</code> trigger types so that subscribers like the <a href="../mcp/"><code class="readme-inline-code">mcp</code></a> worker can forward MCP <code class="readme-inline-code">notifications/list_changed</code> to their clients.</p> <hr> <h2 id="on-disk-layout" class="scroll-mt-20">On-disk layout</h2> <p>The worker assumes a fixed layout under <code class="readme-inline-code">skills_folder</code>:</p> <pre><code>skills_folder/ <namespace>/ # one folder per `directory::skills::download` namespace index.md # → iii://<namespace>/index contacts.md # → iii://<namespace>/contacts emails/send-email.md # → iii://<namespace>/emails/send-email prompts/ # ← magic marker for prompts send-email.md # ← MCP slash-command (needs YAML frontmatter) triage.md</code></pre><p>A few rules:</p> <ul> <li><strong>Skill ids</strong> are the relative path under <code class="readme-inline-code">skills_folder</code> with <code class="readme-inline-code">.md</code> stripped. Each segment must satisfy <code class="readme-inline-code">[a-z0-9_-]{1,64}</code>.</li> <li><strong>Skill frontmatter is optional.</strong> When present, the reader honours two keys: <code class="readme-inline-code">title:</code> (used by <code class="readme-inline-code">directory::skills::list</code> and <code class="readme-inline-code">directory::skills::get</code> in preference to a body <code class="readme-inline-code"># H1</code>) and <code class="readme-inline-code">type:</code> (free-form classifier surfaced verbatim on both responses). Any other YAML keys are ignored.</li> <li><strong>Prompts</strong> live under any <code class="readme-inline-code">*/prompts/*.md</code> path. They must start with a YAML frontmatter block declaring at least <code class="readme-inline-code">description</code>; <code class="readme-inline-code">name</code> is optional and overrides the file-stem default.</li> <li>Files anywhere else (i.e. <em>not</em> in a <code class="readme-inline-code">prompts/</code> segment) are skills.</li> </ul> <p>The download function namespaces by source:</p> <table> <thead> <tr> <th>Source</th> <th>Destination</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">repo=URL skill=NAME branch?=main</code></td> <td><code class="readme-inline-code"><skills_folder>/<NAME>/...</code></td> </tr> <tr> <td><code class="readme-inline-code">worker=NAME version=…</code></td> <td><code class="readme-inline-code"><skills_folder>/<NAME>/...</code></td> </tr> <tr> <td><code class="readme-inline-code">worker=NAME tag=…</code> (default <code class="readme-inline-code">tag=latest</code>)</td> <td><code class="readme-inline-code"><skills_folder>/<NAME>/...</code></td> </tr> </tbody></table> <p>Re-pulling the same source overwrites files <strong>file-by-file</strong> — existing siblings outside the response set are preserved (so hand-edited additions survive a re-pull).</p> <hr> <h2 id="skill-ids" class="scroll-mt-20">Skill ids</h2> <p>Skills are addressed by their relative path under <code class="readme-inline-code">skills_folder</code> with <code class="readme-inline-code">.md</code> stripped — e.g. <code class="readme-inline-code"><skills_folder>/agent-memory/observe.md</code> → id <code class="readme-inline-code">"agent-memory/observe"</code>. The same string is what <code class="readme-inline-code">directory::skills::list</code> returns and what <code class="readme-inline-code">directory::skills::get</code> expects in <code class="readme-inline-code">{ "id": ... }</code>. The legacy <code class="readme-inline-code">iii://{id}</code> link form is still accepted on <code class="readme-inline-code">get</code> (the prefix is auto-stripped), but the worker no longer parses any other <code class="readme-inline-code">iii://</code> URI shape — bodies are read solely by id, and the auto-rendered tree-shaped index that previous releases served at <code class="readme-inline-code">iii://directory/skills</code> is gone. Consumers that want a tree-shaped picker iterate <code class="readme-inline-code">list</code> rows themselves and indent by <code class="readme-inline-code">id.matches('/').count()</code>.</p> <hr> <h2 id="functions" class="scroll-mt-20">Functions</h2> <p>Sixteen functions, all under <code class="readme-inline-code">directory::*</code>. All registrations are namespace-clean; this worker is intentionally agnostic to MCP and any other adapter.</p> <h3 id="directoryskills-filesystem-reader" class="scroll-mt-20"><code class="readme-inline-code">directory::skills::*</code> (filesystem reader)</h3> <table> <thead> <tr> <th>Function ID</th> <th>Description</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">directory::skills::download</code></td> <td>Pull markdown into <code class="readme-inline-code">skills_folder</code>. Either <code class="readme-inline-code">{repo, skill, branch?}</code> (defaults <code class="readme-inline-code">branch=main</code>) or `{worker, version?</td> </tr> <tr> <td><code class="readme-inline-code">directory::skills::list</code></td> <td>Enriched listing of every fs-backed skill: <code class="readme-inline-code">{ id, title, type, description, bytes, modified_at }</code> per row. <code class="readme-inline-code">title</code> prefers the YAML frontmatter <code class="readme-inline-code">title:</code> over the body H1, <code class="readme-inline-code">type</code> is lifted from frontmatter <code class="readme-inline-code">type:</code> (<code class="readme-inline-code">null</code> when absent), and <code class="readme-inline-code">description</code> is the first paragraph of the body — so consumers can render a picker without a follow-up <code class="readme-inline-code">get</code> per row.</td> </tr> <tr> <td><code class="readme-inline-code">directory::skills::get</code></td> <td>Fetch one skill by id. Returns <code class="readme-inline-code">{ id, title, type, description, body, modified_at }</code> — same shape <code class="readme-inline-code">directory::skills::list</code> rows use, plus the raw markdown <code class="readme-inline-code">body</code>. Same title-resolution and <code class="readme-inline-code">type</code> precedence as <code class="readme-inline-code">list</code>. Accepts a bare id or the same id prefixed with <code class="readme-inline-code">iii://</code>.</td> </tr> <tr> <td><code class="readme-inline-code">directory::skills::index</code></td> <td>Render one short markdown entry per installed worker (skills with frontmatter <code class="readme-inline-code">type: index</code>). Returns <code class="readme-inline-code">{ body, workers_count }</code> where <code class="readme-inline-code">body</code> is a ready-to-paste page: <code class="readme-inline-code"># Skills index</code>, then one <code class="readme-inline-code">## <worker title></code> heading + the worker's first overview paragraph + a <code class="readme-inline-code">Read iii://<ns>/index</code> pointer the agent can follow with <code class="readme-inline-code">directory::skills::get</code>. Token-light by design; use <code class="readme-inline-code">directory::skills::list</code> for per-skill rows.</td> </tr> </tbody></table> <h3 id="directoryprompts-filesystem-reader" class="scroll-mt-20"><code class="readme-inline-code">directory::prompts::*</code> (filesystem reader)</h3> <table> <thead> <tr> <th>Function ID</th> <th>Description</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">directory::prompts::list</code></td> <td>Metadata-only listing of every fs-backed prompt.</td> </tr> <tr> <td><code class="readme-inline-code">directory::prompts::get</code></td> <td>Fetch one prompt's body + <code class="readme-inline-code">{name, description, modified_at}</code>. Plain shape, no envelope.</td> </tr> </tbody></table> <h3 id="engine-introspection-native" class="scroll-mt-20">Engine introspection (native)</h3> <p>Engine introspection is no longer wrapped here. Call the engine's native ids directly — every one takes the same filters (<code class="readme-inline-code">prefix</code>, <code class="readme-inline-code">search</code>, <code class="readme-inline-code">worker</code>, <code class="readme-inline-code">include_internal</code> where applicable):</p> <table> <thead> <tr> <th>Function ID</th> <th>Description</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">engine::functions::list</code></td> <td>List functions registered with the engine.</td> </tr> <tr> <td><code class="readme-inline-code">engine::functions::info</code></td> <td>Single-function detail: schemas, owning worker.</td> </tr> <tr> <td><code class="readme-inline-code">engine::triggers::list</code></td> <td>List trigger TYPES (the providers, e.g. <code class="readme-inline-code">http</code>, <code class="readme-inline-code">cron</code>).</td> </tr> <tr> <td><code class="readme-inline-code">engine::triggers::info</code></td> <td>Single trigger-type detail: configuration schema, return schema.</td> </tr> <tr> <td><code class="readme-inline-code">engine::registered-triggers::list</code></td> <td>List trigger INSTANCES (subscriber rows).</td> </tr> <tr> <td><code class="readme-inline-code">engine::registered-triggers::info</code></td> <td>Single registered-trigger detail.</td> </tr> <tr> <td><code class="readme-inline-code">engine::workers::list</code></td> <td>List workers with an open engine WS connection. Daemon-managed providers (<code class="readme-inline-code">iii-http</code>, <code class="readme-inline-code">iii-cron</code>, <code class="readme-inline-code">iii-state</code>) won't appear — call <code class="readme-inline-code">worker::list</code> from the supervisor to see those.</td> </tr> <tr> <td><code class="readme-inline-code">engine::workers::info</code></td> <td>One worker's detail by <code class="readme-inline-code">name</code>.</td> </tr> </tbody></table> <h3 id="directoryregistry-workers-registry-http-proxy" class="scroll-mt-20"><code class="readme-inline-code">directory::registry::*</code> (workers registry HTTP proxy)</h3> <table> <thead> <tr> <th>Function ID</th> <th>Description</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">directory::registry::workers::list</code></td> <td>Browse / search published workers in <code class="readme-inline-code">api.workers.iii.dev</code>. Optional free-text <code class="readme-inline-code">search</code> (matched fuzzy by <code class="readme-inline-code">pg_trgm</code>) and opaque <code class="readme-inline-code">cursor</code> for pagination; page size is server-authored. Response is <code class="readme-inline-code">{ workers: [...], pagination: { next_cursor, has_more, page_size } }</code>. Shares the core <code class="readme-inline-code">name</code> / <code class="readme-inline-code">description</code> / <code class="readme-inline-code">version</code> fields with the engine's <code class="readme-inline-code">engine::workers::list</code>.</td> </tr> <tr> <td><code class="readme-inline-code">directory::registry::workers::info</code></td> <td>Full registry detail for one worker. Fans out two parallel registry calls — <code class="readme-inline-code">GET /w/{slug}</code> for the worker envelope (publication metadata + readme + functions + triggers) and <code class="readme-inline-code">GET /w/{slug}/skills</code> for the skills/prompts tree — and merges them into <code class="readme-inline-code">{ worker, readme, api_reference, skills_tree }</code>. The user-facing input still accepts <code class="readme-inline-code">version:</code> (semver) or <code class="readme-inline-code">tag:</code> (e.g. <code class="readme-inline-code">latest</code>); both go on the wire as <code class="readme-inline-code">?version=…</code>.</td> </tr> </tbody></table> <p>Both <code class="readme-inline-code">directory::registry::*</code> responses are cached in-process for <code class="readme-inline-code">registry_cache_ttl_ms</code> (default 60s).</p> <p>There is <strong>no</strong> <code class="readme-inline-code">directory::skills::register</code> / <code class="readme-inline-code">directory::prompts::register</code> — see <a href="#migration-from-skills-v02x">Migration</a> below.</p> <hr> <h2 id="custom-trigger-types" class="scroll-mt-20">Custom trigger types</h2> <table> <thead> <tr> <th>Trigger type</th> <th>Fires when</th> <th>Payload to subscribers</th> </tr> </thead> <tbody><tr> <td><code class="readme-inline-code">directory::skills::on-change</code></td> <td>After a <code class="readme-inline-code">directory::skills::download</code> that wrote at least one skill markdown file</td> <td><code class="readme-inline-code">{ "op": "download", "namespace": "<ns>", "source": "repo" | "registry" }</code></td> </tr> <tr> <td><code class="readme-inline-code">directory::prompts::on-change</code></td> <td>After a <code class="readme-inline-code">directory::skills::download</code> that wrote at least one prompt markdown file</td> <td><code class="readme-inline-code">{ "op": "download", "namespace": "<ns>", "source": "repo" | "registry" }</code></td> </tr> </tbody></table> <p>Dispatches are fire-and-forget (Void), so the download path doesn't block on downstream latency.</p> <hr> <h2 id="local-development-testing" class="scroll-mt-20">Local development & testing</h2> <h3 id="run-from-source" class="scroll-mt-20">Run from source</h3> <pre class="shiki shiki-themes min-light vesper" style="--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010" tabindex="0"><code><span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">cargo</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> run</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --release</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --url</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> ws://127.0.0.1:49134</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --config</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> ./config.yaml</span></span></code></pre><h3 id="tests" class="scroll-mt-20">Tests</h3> <pre class="shiki shiki-themes min-light vesper" style="--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010" tabindex="0"><code><span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Fast, offline — exercises the pure helpers (markdown / id validators</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># / fs source) without needing an iii engine.</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">cargo</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> test</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --lib</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># Full BDD suite — requires an iii engine on ws://127.0.0.1:49134</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># (or III_ENGINE_WS_URL). The git-backed download scenarios spin up</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># a local fixture repo via `git init`; the registry-backed scenarios</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># point a wiremock server at the worker's `registry_url` config.</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">cargo</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> test</span></span> <span class="line"></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># One feature group at a time. Available tags:</span></span> <span class="line"><span style="--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94"># @engine @read @prompts @download @download_repo @download_registry</span></span> <span class="line"><span style="--shiki-light:#6F42C1;--shiki-dark:#FFC799">cargo</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> test</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --test</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> bdd</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> --tags</span><span style="--shiki-light:#2B5581;--shiki-dark:#99FFE4"> @download</span></span></code></pre><p>The BDD harness lives under <a href="tests/">tests/</a>. Feature files mirror the modules in <a href="src/functions/">src/functions/</a>. Step definitions under <a href="tests/steps/">tests/steps/</a> drive each feature through the same <code class="readme-inline-code">iii.trigger</code> path the production binary uses.</p> </div></div></section></div><aside class="flex min-w-0 flex-col gap-y-6 @4xl:col-start-2 @4xl:row-start-2 @4xl:self-start"><dl class="grid grid-cols-2 gap-x-6"><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2"><dt class="text-[13px] text-muted-foreground">Repository</dt><dd class="min-w-0 text-foreground"><a href="https://github.com/iii-hq/workers" target="_blank" rel="noreferrer" class="inline-flex max-w-full items-center gap-x-2 text-[14px] font-medium transition-colors duration-150 hover:text-brand"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.69922C6.762 2.69922 2.5 6.96122 2.5 12.1992C2.5 16.3252 5.24 20.0532 9.164 21.2662C9.324 21.3182 9.498 21.2822 9.627 21.1762C9.757 21.0702 9.825 20.9062 9.809 20.7392C9.669 19.3462 10.47 17.8702 10.812 17.5162C10.944 17.3812 10.988 17.1822 10.925 17.0042C10.862 16.8252 10.704 16.6962 10.516 16.6732C8.725 16.4452 7.067 15.8372 7.067 12.9472C7.063 12.2282 7.337 11.5412 7.836 11.0122C7.968 10.8732 8.009 10.6712 7.941 10.4922C7.75 9.98722 7.729 9.42222 7.877 8.90022C8.168 8.94822 8.731 9.11922 9.608 9.70522C9.728 9.78622 9.877 9.80722 10.015 9.77222C11.312 9.42422 12.682 9.42422 13.979 9.77222C14.116 9.80722 14.266 9.78622 14.386 9.70522C15.27 9.11422 15.835 8.94522 16.115 8.89622C16.264 9.42022 16.245 9.98622 16.054 10.4932C15.986 10.6732 16.027 10.8752 16.16 11.0132C16.654 11.5332 16.927 12.2172 16.927 12.9382C16.927 15.8772 15.273 16.4642 13.486 16.6612C13.296 16.6812 13.135 16.8092 13.071 16.9882C13.006 17.1682 13.049 17.3692 13.182 17.5062C13.512 17.8472 14.321 19.3622 14.185 20.7502C14.168 20.9172 14.236 21.0812 14.367 21.1862C14.457 21.2612 14.569 21.2992 14.682 21.2992C14.732 21.2992 14.783 21.2912 14.832 21.2752C18.82 20.0202 21.5 16.3732 21.5 12.1992C21.5 6.96122 17.238 2.69922 12 2.69922Z"></path></svg><span class="truncate">iii-hq/workers</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right size-3.5 shrink-0 text-muted-foreground" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2"><dt class="text-[13px] text-muted-foreground">Weekly installs</dt><dd class="min-w-0 text-foreground"><span class="font-[550] tabular-nums text-[24px] tracking-[-0.03em]">815</span><div role="img" aria-label="Daily installs over the last 7 completed days: 67, 114, 150, 79, 287, 83, 35" class="relative min-w-0 mt-3"><svg viewBox="0 0 340 52" aria-hidden="true" class="block h-auto w-full overflow-visible text-foreground"><defs><linearGradient id="installs-_R_k9sav5ubspb_" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="currentColor" stop-opacity="0.16"></stop><stop offset="100%" stop-color="currentColor" stop-opacity="0"></stop></linearGradient><linearGradient id="installs-_R_k9sav5ubspb_-fade" x1="0" y1="0" x2="1" y2="0"><stop offset="0%" stop-color="white" stop-opacity="0"></stop><stop offset="25%" stop-color="white" stop-opacity="1"></stop></linearGradient><mask id="installs-_R_k9sav5ubspb_-mask"><rect width="340" height="52" fill="url(#installs-_R_k9sav5ubspb_-fade)"></rect></mask></defs><path d="M4.00,41.67 C22.44,39.06 40.89,36.14 59.33,33.83 C77.78,31.53 96.22,27.83 114.67,27.83 C133.11,27.83 151.56,39.67 170.00,39.67 C188.44,39.67 206.89,5.00 225.33,5.00 C243.78,5.00 262.22,32.00 280.67,39.00 C299.11,46.00 317.56,44.33 336.00,47.00 L336,52 L4,52 Z" fill="url(#installs-_R_k9sav5ubspb_)" mask="url(#installs-_R_k9sav5ubspb_-mask)" style="opacity:0;transition:opacity 500ms cubic-bezier(0.2, 0.8, 0.3, 1) 200ms"></path><line x1="0" x2="0" y1="0" y2="52" stroke="currentColor" stroke-width="1" stroke-dasharray="2 2" style="opacity:0;translate:336px 0;transition:opacity 150ms cubic-bezier(0.2, 0.8, 0.3, 1), translate 180ms cubic-bezier(0.2, 0.8, 0.3, 1)"></line><path d="M4.00,41.67 C22.44,39.06 40.89,36.14 59.33,33.83 C77.78,31.53 96.22,27.83 114.67,27.83 C133.11,27.83 151.56,39.67 170.00,39.67 C188.44,39.67 206.89,5.00 225.33,5.00 C243.78,5.00 262.22,32.00 280.67,39.00 C299.11,46.00 317.56,44.33 336.00,47.00" pathLength="1" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1 1.1" style="stroke-dashoffset:1.05;transition:stroke-dashoffset 650ms cubic-bezier(0.2, 0.8, 0.3, 1)"></path><g style="translate:336px 47px;transition:translate 180ms cubic-bezier(0.2, 0.8, 0.3, 1)"><circle r="3.25" fill="var(--background)" stroke="currentColor" stroke-width="1.5" class="origin-center [transform-box:fill-box]" style="scale:0;transition:scale 250ms cubic-bezier(0.34, 1.56, 0.64, 1) 550ms"></circle></g></svg></div></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Version</dt><dd class="min-w-0 text-foreground"><span class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate">v<!-- -->0.8.1</span></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">License</dt><dd class="min-w-0 text-foreground"><span class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate">—</span></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Total installs</dt><dd class="min-w-0 text-foreground"><span class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums">5,963</span></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Type</dt><dd class="min-w-0 text-foreground"><span class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate">binary</span></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Functions</dt><dd class="min-w-0 text-foreground"><a class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand" href="/registry/workers/iii-directory?version=0.8.1&tab=api">12</a></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Triggers</dt><dd class="min-w-0 text-foreground"><a class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand" href="/registry/workers/iii-directory?version=0.8.1&tab=api">2</a></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Skills</dt><dd class="min-w-0 text-foreground"><a class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand" href="/registry/workers/iii-directory?version=0.8.1&tab=skills">1</a></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Dependencies</dt><dd class="min-w-0 text-foreground"><a class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand" href="/registry/workers/iii-directory?version=0.8.1&tab=deps">0</a></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3"><dt class="text-[13px] text-muted-foreground">Last publish</dt><dd class="min-w-0 text-foreground"><time dateTime="2026-06-02T17:54:42.602Z" title="2026-06-02T17:54:42.602Z" class="text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate">4mo ago</time></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2"><dt class="text-[13px] text-muted-foreground">Platforms</dt><dd class="min-w-0 text-foreground"><ul aria-label="Supported platforms" class="flex flex-wrap items-center gap-2 mt-1"><li title="macOS: arm64, x64" class="inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]"><img alt="" aria-hidden="true" loading="lazy" width="209" height="256" decoding="async" data-nimg="1" class="shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto" style="color:transparent" src="/registry/icons/apple_dark.svg?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC"/><span class="sr-only">macOS<!-- -->: </span><span class="tabular-nums">arm64 · x64</span></li><li title="Linux: arm64, armv7, x64" class="inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]"><img alt="" aria-hidden="true" loading="lazy" width="256" height="295" decoding="async" data-nimg="1" class="shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto" style="color:transparent" src="/registry/icons/linux.svg?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC"/><span class="sr-only">Linux<!-- -->: </span><span class="tabular-nums">arm64 · armv7 · x64</span></li><li title="Windows: arm64, x64, x86" class="inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]"><img alt="" aria-hidden="true" loading="lazy" width="88" height="88" decoding="async" data-nimg="1" class="shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto" style="color:transparent" src="/registry/icons/windows.svg?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC"/><span class="sr-only">Windows<!-- -->: </span><span class="tabular-nums">arm64 · x64 · x86</span></li></ul></dd></div><div class="flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2"><dt class="text-[13px] text-muted-foreground">Author</dt><dd class="min-w-0 text-foreground"><span class="inline-flex min-w-0 items-center gap-x-2"><img src="https://iii.dev/docs/_mintlify/favicons/motiadev/AFkVbz_UcSL_5jsm/_generated/favicon/apple-touch-icon.png" alt="" class="size-5 shrink-0 rounded-full border border-line object-cover"/><span class="truncate text-[13px] font-medium text-foreground">iii</span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em" fill="currentColor" focusable="false" class="size-3.5 shrink-0 text-verified" aria-label="Verified author"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.5837 10.5577L11.5107 14.6327C11.3697 14.7737 11.1787 14.8527 10.9797 14.8527C10.7807 14.8527 10.5897 14.7737 10.4497 14.6327L8.47274 12.6527C8.18075 12.3587 8.18075 11.8837 8.47375 11.5907C8.76775 11.2987 9.24174 11.2997 9.53475 11.5917L10.9807 13.0407L14.5227 9.49667C14.8157 9.20367 15.2907 9.20367 15.5837 9.49667C15.8767 9.78967 15.8767 10.2647 15.5837 10.5577ZM20.7037 10.0857L20.0047 9.38667C19.6857 9.06667 19.5107 8.64067 19.5107 8.18967V7.18967C19.5107 5.70067 18.2987 4.48967 16.8107 4.48967H15.8087C15.3557 4.48967 14.9307 4.31467 14.6127 3.99667L13.9017 3.28667C12.8447 2.23867 11.1327 2.24367 10.0837 3.29767L9.38674 3.99667C9.06574 4.31567 8.64075 4.49067 8.18875 4.49067H7.18775C5.71675 4.49167 4.51675 5.67567 4.48975 7.14167C4.48874 7.15767 4.48775 7.17367 4.48775 7.19067V8.18767C4.48775 8.63967 4.31275 9.06467 3.99375 9.38367L3.28575 10.0927C3.28475 10.0957 3.28175 10.0967 3.27975 10.0987C2.23475 11.1567 2.24375 12.8687 3.29675 13.9117L3.99575 14.6127C4.31375 14.9317 4.48975 15.3557 4.48975 15.8077V16.8127C4.48975 18.3007 5.69975 19.5117 7.18775 19.5117H8.18675C8.63975 19.5127 9.06475 19.6877 9.38275 20.0047L10.0957 20.7157C10.6037 21.2207 11.2777 21.4987 11.9947 21.4987H12.0067C12.7277 21.4957 13.4037 21.2117 13.9097 20.7027L14.6107 20.0027C14.9257 19.6887 15.3617 19.5087 15.8067 19.5087H16.8127C18.2977 19.5087 19.5087 18.2997 19.5117 16.8127V15.8097C19.5117 15.3587 19.6867 14.9337 20.0037 14.6147L20.7147 13.9037C21.7647 12.8477 21.7587 11.1347 20.7037 10.0857Z"></path></svg></span></dd></div></dl><section id="used-in-kits" aria-labelledby="used-in-kits-title" class="overflow-hidden rounded-xl border border-line bg-paper scroll-mt-20"><div class="flex min-h-11 items-center justify-between gap-x-3 border-b border-line px-4"><span id="used-in-kits-title" class="font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground">Used in <!-- -->1<!-- --> <!-- -->kit</span></div><ul class="flex flex-col p-2"><li><a class="group flex items-start gap-x-3 rounded-lg px-2 py-2 transition-colors duration-150 hover:bg-code focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand" href="/registry/kits/iii/deepwork"><span class="grid size-8 shrink-0 place-items-center rounded-[9px] border border-line bg-background"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="1em" height="1em" fill="currentColor" focusable="false" aria-hidden="true" class="shrink-0 text-foreground size-3.5"><g transform="translate(2 2)"><path d="M5.9199,11.4697 C7.3299,11.4697 8.4599,12.6107 8.4599,14.0307 L8.4599,14.0307 L8.4599,17.4397 C8.4599,18.8497 7.3299,19.9997 5.9199,19.9997 L5.9199,19.9997 L2.5399,19.9997 C1.1399,19.9997 -0.0001,18.8497 -0.0001,17.4397 L-0.0001,17.4397 L-0.0001,14.0307 C-0.0001,12.6107 1.1399,11.4697 2.5399,11.4697 L2.5399,11.4697 Z M17.46,11.4697 C18.86,11.4697 20,12.6107 20,14.0307 L20,14.0307 L20,17.4397 C20,18.8497 18.86,19.9997 17.46,19.9997 L17.46,19.9997 L14.08,19.9997 C12.67,19.9997 11.54,18.8497 11.54,17.4397 L11.54,17.4397 L11.54,14.0307 C11.54,12.6107 12.67,11.4697 14.08,11.4697 L14.08,11.4697 Z M5.9199,-9.32587341e-14 C7.3299,-9.32587341e-14 8.4599,1.15 8.4599,2.561 L8.4599,2.561 L8.4599,5.97 C8.4599,7.39 7.3299,8.53 5.9199,8.53 L5.9199,8.53 L2.5399,8.53 C1.1399,8.53 -0.0001,7.39 -0.0001,5.97 L-0.0001,5.97 L-0.0001,2.561 C-0.0001,1.15 1.1399,-9.32587341e-14 2.5399,-9.32587341e-14 L2.5399,-9.32587341e-14 Z M17.46,-9.32587341e-14 C18.86,-9.32587341e-14 20,1.15 20,2.561 L20,2.561 L20,5.97 C20,7.39 18.86,8.53 17.46,8.53 L17.46,8.53 L14.08,8.53 C12.67,8.53 11.54,7.39 11.54,5.97 L11.54,5.97 L11.54,2.561 C11.54,1.15 12.67,-9.32587341e-14 14.08,-9.32587341e-14 L14.08,-9.32587341e-14 Z"></path></g></svg></span><span class="min-w-0 flex flex-col gap-y-0.5"><span class="truncate text-[13px] font-medium text-foreground"><span class="text-muted-foreground">iii<!-- -->/</span>deepwork</span><span class="font-mono text-[13px] tabular-nums text-muted-foreground">v<!-- -->0.4.3<!-- --> · <!-- -->6<!-- --> <!-- -->profiles</span></span></a></li></ul></section><section class="shrink-0 overflow-hidden rounded-xl border border-line bg-paper scroll-mt-20"><div class="flex min-h-11 items-center justify-between gap-x-3 border-b border-line px-4"><span class="font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground">api</span></div><div class="flex flex-col p-0 gap-y-0"><div class="flex flex-col gap-y-5 p-4"><div class="flex flex-col gap-y-2"><div class="flex items-baseline justify-between font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground"><span>functions</span><span class="tabular-nums">12</span></div><ul class="-mx-2 flex flex-col"><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::prompts::get">directory::prompts::get</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::prompts::list">directory::prompts::list</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::download_from_repo">directory::skills::download_from_repo</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::__on_worker_added">directory::__on_worker_added</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::download">directory::skills::download</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::download_from_registry">directory::skills::download_from_registry</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::registry::workers::list">directory::registry::workers::list</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::registry::workers::info">directory::registry::workers::info</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::index">directory::skills::index</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::engine::functions::info">directory::engine::functions::info</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::get">directory::skills::get</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#fn-directory::skills::list">directory::skills::list</a></li></ul></div><div class="flex flex-col gap-y-2"><div class="flex items-baseline justify-between font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground"><span>triggers</span><span class="tabular-nums">2</span></div><ul class="-mx-2 flex flex-col"><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#trigger-directory::prompts::on-change">directory::prompts::on-change</a></li><li><a class="block truncate rounded-md px-2 py-1 font-mono text-[12px] transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand text-muted-foreground hover:bg-code hover:text-foreground" href="/registry/workers/iii-directory?tab=api&version=0.8.1#trigger-directory::skills::on-change">directory::skills::on-change</a></li></ul></div></div></div></section></aside></div></div></div><!--$--><!--/$--></main></div></div><footer class="border-t border-line bg-background text-foreground"><div class="mx-auto max-w-[1280px] px-9 pt-16 max-sm:px-[22px] max-sm:pt-11"><div class="grid grid-cols-[minmax(0,1fr)_minmax(0,1.4fr)] gap-20 max-[900px]:grid-cols-1 max-[900px]:gap-10"><div><a href="https://iii.dev" aria-label="iii home" class="inline-flex size-7 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><svg viewBox="0 0 1075.74 1075.74" aria-hidden="true" focusable="false" class="block shrink-0 size-full" fill="currentColor"><rect x="0" y="0.05" width="268.94" height="268.94"></rect><rect x="403.4" y="0.05" width="268.94" height="268.94"></rect><rect x="806.81" y="0.05" width="268.94" height="268.94"></rect><rect x="0" y="403.45" width="268.94" height="672.24"></rect><rect x="403.4" y="403.45" width="268.94" height="672.24"></rect><rect x="806.81" y="403.45" width="268.94" height="672.24"></rect></svg></a><p class="mt-[18px] max-w-[340px] text-[15px] leading-[1.65] text-muted-foreground">A next-generation software system.<br/>Workers. Triggers. Functions.</p><p class="mt-2 max-w-[340px] text-[13px] leading-[1.65] text-muted-foreground">Pronounced<!-- --> <span class="text-foreground">"three eye"</span></p></div><nav aria-label="Footer" class="grid grid-cols-3 gap-8 max-sm:grid-cols-2 max-sm:gap-x-4 max-sm:gap-y-6"><div><h3 class="mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase">Product</h3><ul class="list-none p-0"><li><a href="https://iii.dev/docs" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Docs</span></a></li><li><a href="https://iii.dev/docs/quickstart" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Quickstart</span></a></li><li><a href="/registry" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Worker registry</span></a></li><li><a href="https://iii.dev/roadmap" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Roadmap</span></a></li><li><a href="https://iii.dev/manifesto" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Manifesto</span></a></li><li><a href="https://iii.dev/blog" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground"><span>Blog</span></a></li></ul></div><div><h3 class="mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase">Community</h3><ul class="list-none p-0"><li><a href="https://github.com/iii-hq/iii" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 2.69922C6.762 2.69922 2.5 6.96122 2.5 12.1992C2.5 16.3252 5.24 20.0532 9.164 21.2662C9.324 21.3182 9.498 21.2822 9.627 21.1762C9.757 21.0702 9.825 20.9062 9.809 20.7392C9.669 19.3462 10.47 17.8702 10.812 17.5162C10.944 17.3812 10.988 17.1822 10.925 17.0042C10.862 16.8252 10.704 16.6962 10.516 16.6732C8.725 16.4452 7.067 15.8372 7.067 12.9472C7.063 12.2282 7.337 11.5412 7.836 11.0122C7.968 10.8732 8.009 10.6712 7.941 10.4922C7.75 9.98722 7.729 9.42222 7.877 8.90022C8.168 8.94822 8.731 9.11922 9.608 9.70522C9.728 9.78622 9.877 9.80722 10.015 9.77222C11.312 9.42422 12.682 9.42422 13.979 9.77222C14.116 9.80722 14.266 9.78622 14.386 9.70522C15.27 9.11422 15.835 8.94522 16.115 8.89622C16.264 9.42022 16.245 9.98622 16.054 10.4932C15.986 10.6732 16.027 10.8752 16.16 11.0132C16.654 11.5332 16.927 12.2172 16.927 12.9382C16.927 15.8772 15.273 16.4642 13.486 16.6612C13.296 16.6812 13.135 16.8092 13.071 16.9882C13.006 17.1682 13.049 17.3692 13.182 17.5062C13.512 17.8472 14.321 19.3622 14.185 20.7502C14.168 20.9172 14.236 21.0812 14.367 21.1862C14.457 21.2612 14.569 21.2992 14.682 21.2992C14.732 21.2992 14.783 21.2912 14.832 21.2752C18.82 20.0202 21.5 16.3732 21.5 12.1992C21.5 6.96122 17.238 2.69922 12 2.69922Z"></path></svg><span>GitHub</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://discord.gg/iiidev" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M10.4919 12.798C10.4928 12.7793 10.4916 12.7606 10.489 12.7421C10.4613 12.5469 10.4514 12.347 10.3951 12.1599C10.1841 11.4539 9.74808 10.9469 9.00608 10.7969C8.29208 10.6539 7.71308 10.9269 7.28508 11.5059C6.70508 12.2879 6.76108 13.4529 7.40208 14.1859C8.09108 14.9729 9.21108 14.9939 9.92408 14.2269C10.2967 13.8258 10.4673 13.3434 10.4919 12.798ZM17.1383 12.7812C17.1389 12.7644 17.1379 12.7475 17.1357 12.7308C17.1132 12.5616 17.1039 12.3878 17.0601 12.2239C16.8721 11.5239 16.4651 11.0089 15.7441 10.8189C15.1071 10.6509 14.5481 10.8339 14.0951 11.3089C13.3501 12.0899 13.3461 13.4249 14.0781 14.2169C14.7981 14.9939 15.9331 14.9789 16.6201 14.1779C16.9636 13.7773 17.1191 13.306 17.1383 12.7812ZM17.0985 17.278C17.2735 17.1939 17.3406 16.9478 17.1827 16.8346C17.0669 16.7515 16.9741 16.7834 16.7571 16.8759C13.5891 18.2239 10.4191 18.2099 7.24908 16.8849C7.02096 16.7895 6.93273 16.7517 6.82128 16.8227C6.65302 16.93 6.71802 17.1898 6.89748 17.277C7.23862 17.4429 7.58015 17.609 7.93832 17.7829C8.09958 17.8613 8.15678 18.0626 8.06083 18.214C7.77618 18.6633 7.49507 19.108 7.20508 19.5459C7.17408 19.5919 7.04108 19.6069 6.97208 19.5859C5.25708 19.0449 3.67108 18.2459 2.22008 17.1829C2.14608 17.1289 2.08208 17.0159 2.07408 16.9239C1.74508 13.2929 2.51308 9.90588 4.35508 6.75988C5.05808 5.55888 5.05608 5.53788 6.55408 5.06188C7.34208 4.81188 8.15408 4.63988 8.95308 4.42288C9.12908 4.37588 9.21708 4.42788 9.28708 4.58688C9.37508 4.78388 9.50608 4.96388 9.57408 5.16688C9.65508 5.40888 9.77908 5.46588 10.0301 5.42988C11.4051 5.23188 12.7811 5.26188 14.1551 5.44288C14.2295 5.45351 14.3008 5.4087 14.3344 5.34142C14.4633 5.08312 14.5955 4.82606 14.7171 4.56288C14.7801 4.42488 14.8581 4.38688 15.0111 4.41588C16.3001 4.65988 17.5471 5.03488 18.7421 5.57688C18.8641 5.63288 18.9861 5.73388 19.0601 5.84488C20.4731 7.95488 21.4261 10.2489 21.8121 12.7659C22.0241 14.1449 22.0491 15.5309 21.9241 16.9189C21.9151 17.0179 21.8391 17.1399 21.7561 17.1989C20.3161 18.2439 18.7501 19.0439 17.0491 19.5739C16.9661 19.5999 16.8091 19.5849 16.7731 19.5309C16.4849 19.0998 16.2096 18.6599 15.9282 18.2116C15.8329 18.0598 15.8907 17.8587 16.0522 17.781C16.4087 17.6095 16.7514 17.4448 17.0985 17.278Z"></path></svg><span>Discord</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://x.com/iiidevs" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path transform="translate(1.5 1.5) scale(0.875)" d="M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z"></path></svg><span>Twitter / X</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://www.linkedin.com/company/iii-dev" class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.4 2.5h13.2a2.9 2.9 0 0 1 2.9 2.9v13.2a2.9 2.9 0 0 1-2.9 2.9H5.4a2.9 2.9 0 0 1-2.9-2.9V5.4a2.9 2.9 0 0 1 2.9-2.9Zm2.33 7.1H5.6v7.9h2.13V9.6ZM6.67 6.1a1.24 1.24 0 1 0 0 2.48 1.24 1.24 0 0 0 0-2.48Zm11.73 7.1c0-2.26-1.21-3.31-2.82-3.31-1.3 0-1.88.72-2.21 1.22V9.6H11.2c.03.6 0 7.9 0 7.9h2.17v-4.41c0-.24.02-.47.09-.64.19-.47.62-.96 1.35-.96.95 0 1.33.73 1.33 1.79v4.22h2.26V13.2Z"></path></svg><span>LinkedIn</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li></ul></div><div><h3 class="mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase">Ask about iii</h3><ul class="list-none p-0"><li><a href="https://chatgpt.com/?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service." class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path d="M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"></path></svg><span>ChatGPT</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://claude.ai/new?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service." class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path d="m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"></path></svg><span>Claude</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://www.perplexity.ai/search?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service." class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path d="M22.3977 7.0896h-2.3106V.0676l-7.5094 6.3542V.1577h-1.1554v6.1966L4.4904 0v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318 6.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676 4.8691 4.4634H5.6458V2.6262zM2.7576 16.332V8.245h7.8476l-6.1149 6.1147v1.9723H2.7576zm2.8882 5.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764 5.2993zm7.0212-7.0212v-7.0111l5.7764 5.7764v2.6488h.0001v3.8852l-5.7765-5.2993zm8.9765 2.0444h-1.9727l-6.1149-6.1147h8.0876v6.1147z"></path></svg><span>Perplexity</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li><li><a href="https://grok.com/?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service." class="group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground" target="_blank" rel="noopener noreferrer"><svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" focusable="false" class="size-4 shrink-0"><path d="M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815"></path></svg><span>Grok</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a></li></ul></div></nav></div><div class="mt-13 border-t border-line py-[22px] text-[13px] text-muted-foreground max-sm:mt-9"><p class="flex items-center gap-2">© <!-- -->2026<!-- --> Motia LLC<!-- --> <span aria-hidden="true">·</span> <a href="https://iii.dev/privacy-policy" class="hover:text-foreground focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground">Privacy</a></p></div></div></footer><div data-slot="dialog-header" class="flex flex-col gap-2 sr-only"><h2 id="base-ui-_R_2v9b_" data-slot="dialog-title" class="font-heading text-base leading-none font-medium">Search the registry</h2><p id="base-ui-_R_4v9b_" data-slot="dialog-description" class="text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground">Find workers, kits and executables, or jump to a page.</p></div><script src="/registry/_next/static/chunks/06o3ty5hs.tzu.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n3:I[90280,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"default\"]\n4:I[69616,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"default\"]\n6:I[51557,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"OutletBoundary\"]\n7:\"$Sreact.suspense\"\na:I[51557,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"ViewportBoundary\"]\nc:I[51557,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"MetadataBoundary\"]\ne:I[50609,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0w_agc1b2gf-n.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"default\"]\n:HL[\"/registry/_next/static/chunks/0qh42370pyoqz.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"style\"]\n:HL[\"/registry/_next/static/chunks/0.-bsgr3_7ked.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"style\"]\n:HL[\"/registry/_next/static/media/797e433ab948586e-s.p.08e28id.o-okb.woff2?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/registry/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"c\":[\"\",\"workers\",\"iii-directory?version=0.8.1\"],\"q\":\"?version=0.8.1\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"workers\",{\"children\":[[\"slug\",\"iii-directory\",\"d\",null],{\"children\":[\"__PAGE__?{\\\"version\\\":\\\"0.8.1\\\"}\",{}]}]}]},\"$undefined\",\"$undefined\",16],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/registry/_next/static/chunks/0qh42370pyoqz.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/registry/_next/static/chunks/0.-bsgr3_7ked.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-2\",{\"src\":\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-3\",{\"src\":\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"async\":true,\"nonce\":\"$undefined\"}]],\"$L2\"]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L5\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L6\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@8\"}]}]]}],{},null,false,null]},null,false,\"$@9\"]},null,false,\"$@9\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$La\",null,{\"children\":\"$Lb\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lc\",null,{\"children\":[\"$\",\"$7\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Ld\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/registry/_next/static/chunks/0qh42370pyoqz.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/registry/_next/static/chunks/0.-bsgr3_7ked.css?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":false,\"h\":null,\"s\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"f:[]\n9:\"$Wf\"\nb:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"11:I[77792,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"Providers\"]\n12:I[84148,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"SiteHeader\"]\n13:I[92439,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"Link\"]\n16:I[18418,[\"/registry/_next/static/chunks/04ylibgf-0e6d.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0f8jgu0hu0~vn.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"IconMark\"]\n10:[\"$\",\"iframe\",null,{\"src\":\"https://www.googletagmanager.com/ns.html?id=GTM-N8DCTFB8\",\"height\":\"0\",\"width\":\"0\",\"style\":{\"display\":\"none\",\"visibility\":\"hidden\"},\"title\":\"Google Tag Manager\"}]\n"])</script><script>self.__next_f.push([1,"2:[\"$\",\"html\",null,{\"lang\":\"en\",\"className\":\"antialiased inter_fe8b9d92-module__LINzvG__variable geist_mono_8d43a2aa-module__8Li5zG__variable\",\"data-theme\":\"light\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"bg-background text-foreground font-sans min-h-full flex flex-col\",\"children\":[[[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n try {\\n var stored = localStorage.getItem('iii-theme');\\n if (stored === 'dark' || stored === 'light') {\\n document.documentElement.dataset.theme = stored;\\n } else {\\n document.documentElement.dataset.theme = 'light';\\n }\\n } catch (_) {\\n document.documentElement.dataset.theme = 'light';\\n }\\n\"}}],[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\\n (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\\n new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\\n j=d.createElement(s),dl=l!='dataLayer'?'\u0026l='+l:'';j.async=true;j.src=\\n 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\\n })(window,document,'script','dataLayer','GTM-N8DCTFB8');\\n\"}}]],[\"$\",\"noscript\",null,{\"children\":\"$10\"}],[\"$\",\"a\",null,{\"href\":\"#main-content\",\"className\":\"sr-only focus:not-sr-only focus:fixed focus:top-3 focus:left-3 focus:z-[60] focus:rounded-lg focus:bg-foreground focus:px-3 focus:py-2 focus:text-sm focus:font-medium focus:text-background\",\"children\":\"Skip to content\"}],[\"$\",\"$L11\",null,{\"basePath\":\"/registry\",\"children\":[[\"$\",\"$L12\",null,{\"stats\":{\"stars\":\"18,848\",\"members\":\"2.4k\",\"starsCount\":18848,\"membersCount\":2405}}],[\"$\",\"div\",null,{\"className\":\"mx-auto w-full max-w-7xl has-[.registry-home]:max-w-none @container flex-1 bg-bg flex flex-col\",\"children\":[\"$\",\"div\",null,{\"className\":\"flex-1 overflow-x-clip flex flex-col\",\"children\":[\"$\",\"main\",null,{\"id\":\"main-content\",\"className\":\"flex-1\",\"tabIndex\":-1,\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"div\",null,{\"className\":\"page-transition flex flex-1 flex-col\",\"children\":[[\"$\",\"header\",null,{\"className\":\"flex items-end justify-between flex-wrap gap-x-8 gap-y-5 px-[22px] pt-12 sm:px-9 sm:pt-16 pb-0 sm:pb-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"min-w-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 font-mono text-[10px] leading-[normal] uppercase tracking-[0.08em] text-muted-foreground\",\"children\":\"error / not found\"}],[\"$\",\"div\",null,{\"className\":\"flex items-center flex-wrap gap-x-3 gap-y-2\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-[32px] sm:text-[40px] font-[550] leading-[1.1] tracking-[-0.04em] text-foreground text-balance\",\"children\":[\"$\",\"span\",null,{\"className\":\"block text-[64px] leading-none tracking-[-0.05em] tabular-nums sm:text-[88px]\",\"children\":\"404\"}]}],\"$undefined\",null]}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-[60ch] text-[15px] leading-[1.7] text-muted-foreground text-pretty\",\"children\":\"This page isn’t in the registry. It may have been renamed, or never published.\"}]]}],null]}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-3 px-[22px] pt-8 pb-24 sm:px-9 sm:pb-32\",\"children\":[[\"$\",\"$L13\",null,{\"href\":\"/\",\"className\":\"inline-flex items-center justify-center gap-x-2 whitespace-nowrap rounded-xl font-medium transition-[background-color,color,border-color,opacity,transform] duration-150 ease-out focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand disabled:pointer-events-none disabled:opacity-50 select-none active:scale-[0.96] motion-reduce:active:scale-100 [\u0026_svg]:size-3.5 [\u0026_svg]:shrink-0 bg-foreground text-background hover:opacity-[0.88] h-10 px-4 text-[14px]\",\"children\":\"Back to the registry\"}],[\"$\",\"$L13\",null,{\"href\":\"/search\",\"className\":\"inline-flex items-center justify-center gap-x-2 whitespace-nowrap rounded-xl font-medium transition-[background-color,color,border-color,opacity,transform] duration-150 ease-out focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand disabled:pointer-events-none disabled:opacity-50 select-none active:scale-[0.96] motion-reduce:active:scale-100 [\u0026_svg]:size-3.5 [\u0026_svg]:shrink-0 border border-line bg-background text-foreground hover:border-[color-mix(in_srgb,var(--foreground)_22%,var(--line))] hover:bg-paper h-10 px-4 text-[14px]\",\"children\":[\"$L14\",\"Search\"]}]]}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}],\"$L15\"]}]]}]}]\n"])</script><script>self.__next_f.push([1,"8:null\n"])</script><script>self.__next_f.push([1,"d:[[\"$\",\"title\",\"0\",{\"children\":\"iii-directory worker · iii Registry\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus…\"}],[\"$\",\"meta\",\"2\",{\"name\":\"application-name\",\"content\":\"iii Registry\"}],[\"$\",\"meta\",\"3\",{\"name\":\"publisher\",\"content\":\"iii\"}],[\"$\",\"meta\",\"4\",{\"name\":\"robots\",\"content\":\"index, follow\"}],[\"$\",\"meta\",\"5\",{\"name\":\"googlebot\",\"content\":\"index, follow, max-image-preview:large, max-snippet:-1\"}],[\"$\",\"link\",\"6\",{\"rel\":\"canonical\",\"href\":\"https://iii.dev/registry/workers/iii-directory\"}],[\"$\",\"link\",\"7\",{\"rel\":\"alternate\",\"type\":\"text/markdown\",\"href\":\"https://iii.dev/registry/workers/iii-directory.md\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:title\",\"content\":\"iii-directory worker · iii Registry\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:description\",\"content\":\"Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus…\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:url\",\"content\":\"https://iii.dev/registry/workers/iii-directory\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:site_name\",\"content\":\"iii Registry\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"13\",{\"property\":\"og:image\",\"content\":\"https://iii.dev/registry/workers/iii-directory/opengraph-image?b747c5eeb0667fcb\"}],[\"$\",\"meta\",\"14\",{\"property\":\"og:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"15\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"16\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"17\",{\"property\":\"og:image:alt\",\"content\":\"An iii worker on the iii Registry\"}],[\"$\",\"meta\",\"18\",{\"property\":\"og:type\",\"content\":\"website\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"20\",{\"name\":\"twitter:site\",\"content\":\"@iiidevs\"}],[\"$\",\"meta\",\"21\",{\"name\":\"twitter:creator\",\"content\":\"@iiidevs\"}],[\"$\",\"meta\",\"22\",{\"name\":\"twitter:title\",\"content\":\"iii-directory worker · iii Registry\"}],[\"$\",\"meta\",\"23\",{\"name\":\"twitter:description\",\"content\":\"Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus…\"}],[\"$\",\"meta\",\"24\",{\"name\":\"twitter:image\",\"content\":\"https://iii.dev/registry/workers/iii-directory/opengraph-image?b747c5eeb0667fcb\"}],[\"$\",\"meta\",\"25\",{\"name\":\"twitter:image:alt\",\"content\":\"An iii worker on the iii Registry\"}],[\"$\",\"meta\",\"26\",{\"name\":\"twitter:image:type\",\"content\":\"image/png\"}],[\"$\",\"meta\",\"27\",{\"name\":\"twitter:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"28\",{\"name\":\"twitter:image:height\",\"content\":\"630\"}],[\"$\",\"link\",\"29\",{\"rel\":\"icon\",\"href\":\"/registry/favicon.ico\",\"sizes\":\"48x48\"}],[\"$\",\"link\",\"30\",{\"rel\":\"icon\",\"href\":\"/registry/favicon.svg\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"31\",{\"rel\":\"apple-touch-icon\",\"href\":\"/registry/apple-touch-icon.png\",\"sizes\":\"180x180\"}],[\"$\",\"$L16\",\"32\",{}]]\n"])</script><script>self.__next_f.push([1,"17:I[41074,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"default\"]\n14:[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"m21 21-4.34-4.34\",\"key\":\"14j7rj\"}],[\"circle\",{\"cx\":\"11\",\"cy\":\"11\",\"r\":\"8\",\"key\":\"4ej97u\"}]],\"className\":\"lucide-search\",\"aria-hidden\":\"true\"}]\n"])</script><script>self.__next_f.push([1,"15:[\"$\",\"footer\",null,{\"className\":\"border-t border-line bg-background text-foreground\",\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-[1280px] px-9 pt-16 max-sm:px-[22px] max-sm:pt-11\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid grid-cols-[minmax(0,1fr)_minmax(0,1.4fr)] gap-20 max-[900px]:grid-cols-1 max-[900px]:gap-10\",\"children\":[[\"$\",\"div\",null,{\"children\":[[\"$\",\"a\",null,{\"href\":\"https://iii.dev\",\"aria-label\":\"iii home\",\"className\":\"inline-flex size-7 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[\"$\",\"svg\",null,{\"viewBox\":\"0 0 1075.74 1075.74\",\"aria-hidden\":\"true\",\"focusable\":\"false\",\"className\":\"block shrink-0 size-full\",\"fill\":\"currentColor\",\"children\":[[\"$\",\"rect\",\"0\",{\"x\":0,\"y\":0.05,\"width\":268.94,\"height\":268.94}],[\"$\",\"rect\",\"403.4\",{\"x\":403.4,\"y\":0.05,\"width\":268.94,\"height\":268.94}],[\"$\",\"rect\",\"806.81\",{\"x\":806.81,\"y\":0.05,\"width\":268.94,\"height\":268.94}],[\"$\",\"rect\",\"stem-0\",{\"x\":0,\"y\":403.45,\"width\":268.94,\"height\":672.24}],[\"$\",\"rect\",\"stem-403.4\",{\"x\":403.4,\"y\":403.45,\"width\":268.94,\"height\":672.24}],[\"$\",\"rect\",\"stem-806.81\",{\"x\":806.81,\"y\":403.45,\"width\":268.94,\"height\":672.24}]]}]}],[\"$\",\"p\",null,{\"className\":\"mt-[18px] max-w-[340px] text-[15px] leading-[1.65] text-muted-foreground\",\"children\":[\"A next-generation software system.\",[\"$\",\"br\",null,{}],\"Workers. Triggers. Functions.\"]}],[\"$\",\"p\",null,{\"className\":\"mt-2 max-w-[340px] text-[13px] leading-[1.65] text-muted-foreground\",\"children\":[\"Pronounced\",\" \",[\"$\",\"span\",null,{\"className\":\"text-foreground\",\"children\":\"\\\"three eye\\\"\"}]]}]]}],[\"$\",\"nav\",null,{\"aria-label\":\"Footer\",\"className\":\"grid grid-cols-3 gap-8 max-sm:grid-cols-2 max-sm:gap-x-4 max-sm:gap-y-6\",\"children\":[[\"$\",\"div\",\"Product\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase\",\"children\":\"Product\"}],[\"$\",\"ul\",null,{\"className\":\"list-none p-0\",\"children\":[[\"$\",\"li\",\"Docs\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://iii.dev/docs\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Docs\"}],null]}]}],[\"$\",\"li\",\"Quickstart\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://iii.dev/docs/quickstart\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Quickstart\"}],null]}]}],[\"$\",\"li\",\"Worker registry\",{\"children\":[\"$\",\"a\",null,{\"href\":\"/registry\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Worker registry\"}],null]}]}],[\"$\",\"li\",\"Roadmap\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://iii.dev/roadmap\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Roadmap\"}],null]}]}],[\"$\",\"li\",\"Manifesto\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://iii.dev/manifesto\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Manifesto\"}],null]}]}],\"$L18\"]}]]}],\"$L19\",\"$L1a\"]}]]}],\"$L1b\"]}]}]\n"])</script><script>self.__next_f.push([1,"18:[\"$\",\"li\",\"Blog\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://iii.dev/blog\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":[null,[\"$\",\"span\",null,{\"children\":\"Blog\"}],null]}]}]\n1c:T4c4,M12 2.69922C6.762 2.69922 2.5 6.96122 2.5 12.1992C2.5 16.3252 5.24 20.0532 9.164 21.2662C9.324 21.3182 9.498 21.2822 9.627 21.1762C9.757 21.0702 9.825 20.9062 9.809 20.7392C9.669 19.3462 10.47 17.8702 10.812 17.5162C10.944 17.3812 10.988 17.1822 10.925 17.0042C10.862 16.8252 10.704 16.6962 10.516 16.6732C8.725 16.4452 7.067 15.8372 7.067 12.9472C7.063 12.2282 7.337 11.5412 7.836 11.0122C7.968 10.8732 8.009 10.6712 7.941 10.4922C7.75 9.98722 7.729 9.42222 7.877 8.90022C8.168 8.94822 8.731 9.11922 9.608 9.70522C9.728 9.78622 9.877 9.80722 10.015 9.77222C11.312 9.42422 12.682 9.42422 13.979 9.77222C14.116 9.80722 14.266 9.78622 14.386 9.70522C15.27 9.11422 15.835 8.94522 16.115 8.89622C16.264 9.42022 16.245 9.98622 16.054 10.4932C15.986 10.6732 16.027 10.8752 16.16 11.0132C16.654 11.5332 16.927 12.2172 16.927 12.9382C16.927 15.8772 15.273 16.4642 13.486 16.6612C13.296 16.6812 13.135 16.8092 13.071 16.9882C13.006 17.1682 13.049 17.3692 13.182 17.5062C13.512 17.8472 14.321 19.3622 14.185 20.7502C14.168 20.9172 14.236 21.0812 14.367 21.1862C14.457 21.2612 14.569 21.2992 14.682 21.2992C14.732 21.2992 14.783 21.2912 14.832 21.2752C18.82 20.0202 21.5 16.3732 21.5 12.1992C21.5 6.96122 17.238 2.69922 12 2.69922Z1d:T894,"])</script><script>self.__next_f.push([1,"M10.4919 12.798C10.4928 12.7793 10.4916 12.7606 10.489 12.7421C10.4613 12.5469 10.4514 12.347 10.3951 12.1599C10.1841 11.4539 9.74808 10.9469 9.00608 10.7969C8.29208 10.6539 7.71308 10.9269 7.28508 11.5059C6.70508 12.2879 6.76108 13.4529 7.40208 14.1859C8.09108 14.9729 9.21108 14.9939 9.92408 14.2269C10.2967 13.8258 10.4673 13.3434 10.4919 12.798ZM17.1383 12.7812C17.1389 12.7644 17.1379 12.7475 17.1357 12.7308C17.1132 12.5616 17.1039 12.3878 17.0601 12.2239C16.8721 11.5239 16.4651 11.0089 15.7441 10.8189C15.1071 10.6509 14.5481 10.8339 14.0951 11.3089C13.3501 12.0899 13.3461 13.4249 14.0781 14.2169C14.7981 14.9939 15.9331 14.9789 16.6201 14.1779C16.9636 13.7773 17.1191 13.306 17.1383 12.7812ZM17.0985 17.278C17.2735 17.1939 17.3406 16.9478 17.1827 16.8346C17.0669 16.7515 16.9741 16.7834 16.7571 16.8759C13.5891 18.2239 10.4191 18.2099 7.24908 16.8849C7.02096 16.7895 6.93273 16.7517 6.82128 16.8227C6.65302 16.93 6.71802 17.1898 6.89748 17.277C7.23862 17.4429 7.58015 17.609 7.93832 17.7829C8.09958 17.8613 8.15678 18.0626 8.06083 18.214C7.77618 18.6633 7.49507 19.108 7.20508 19.5459C7.17408 19.5919 7.04108 19.6069 6.97208 19.5859C5.25708 19.0449 3.67108 18.2459 2.22008 17.1829C2.14608 17.1289 2.08208 17.0159 2.07408 16.9239C1.74508 13.2929 2.51308 9.90588 4.35508 6.75988C5.05808 5.55888 5.05608 5.53788 6.55408 5.06188C7.34208 4.81188 8.15408 4.63988 8.95308 4.42288C9.12908 4.37588 9.21708 4.42788 9.28708 4.58688C9.37508 4.78388 9.50608 4.96388 9.57408 5.16688C9.65508 5.40888 9.77908 5.46588 10.0301 5.42988C11.4051 5.23188 12.7811 5.26188 14.1551 5.44288C14.2295 5.45351 14.3008 5.4087 14.3344 5.34142C14.4633 5.08312 14.5955 4.82606 14.7171 4.56288C14.7801 4.42488 14.8581 4.38688 15.0111 4.41588C16.3001 4.65988 17.5471 5.03488 18.7421 5.57688C18.8641 5.63288 18.9861 5.73388 19.0601 5.84488C20.4731 7.95488 21.4261 10.2489 21.8121 12.7659C22.0241 14.1449 22.0491 15.5309 21.9241 16.9189C21.9151 17.0179 21.8391 17.1399 21.7561 17.1989C20.3161 18.2439 18.7501 19.0439 17.0491 19.5739C16.9661 19.5999 16.8091 19.5849 16.7731 19.5309C16.4849 19.0998 16.2096 18.6599 15.9282 18.2116C15.8329 18.0598 15.8907 17.8587 16.0522 17.781C16.4087 17.6095 16.7514 17.4448 17.0985 17.278Z"])</script><script>self.__next_f.push([1,"19:[\"$\",\"div\",\"Community\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase\",\"children\":\"Community\"}],[\"$\",\"ul\",null,{\"className\":\"list-none p-0\",\"children\":[[\"$\",\"li\",\"GitHub\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/iii-hq/iii\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"$1c\"}]}],[\"$\",\"span\",null,{\"children\":\"GitHub\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":[[\"path\",{\"d\":\"M7 7h10v10\",\"key\":\"1tivn9\"}],[\"path\",{\"d\":\"M7 17 17 7\",\"key\":\"1vkiza\"}]],\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}],[\"$\",\"li\",\"Discord\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://discord.gg/iiidev\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"$1d\"}]}],\"$L1e\",\"$L1f\"]}]}],\"$L20\",\"$L21\"]}]]}]\n"])</script><script>self.__next_f.push([1,"22:T5b4,"])</script><script>self.__next_f.push([1,"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"])</script><script>self.__next_f.push([1,"1a:[\"$\",\"div\",\"Ask about iii\",{\"children\":[[\"$\",\"h3\",null,{\"className\":\"mb-3 text-[13px] font-medium tracking-[0.06em] text-muted-foreground uppercase\",\"children\":\"Ask about iii\"}],[\"$\",\"ul\",null,{\"className\":\"list-none p-0\",\"children\":[[\"$\",\"li\",\"ChatGPT\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://chatgpt.com/?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service.\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"d\":\"$22\"}]}],[\"$\",\"span\",null,{\"children\":\"ChatGPT\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}],[\"$\",\"li\",\"Claude\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://claude.ai/new?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service.\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":\"$L23\"}],\"$L24\",\"$L25\"]}]}],\"$L26\",\"$L27\"]}]]}]\n"])</script><script>self.__next_f.push([1,"1b:[\"$\",\"div\",null,{\"className\":\"mt-13 border-t border-line py-[22px] text-[13px] text-muted-foreground max-sm:mt-9\",\"children\":[\"$\",\"p\",null,{\"className\":\"flex items-center gap-2\",\"children\":[\"© \",2026,\" Motia LLC\",\" \",[\"$\",\"span\",null,{\"aria-hidden\":\"true\",\"children\":\"·\"}],\" \",[\"$\",\"a\",null,{\"href\":\"https://iii.dev/privacy-policy\",\"className\":\"hover:text-foreground focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"children\":\"Privacy\"}]]}]}]\n"])</script><script>self.__next_f.push([1,"1e:[\"$\",\"span\",null,{\"children\":\"Discord\"}]\n1f:[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]\n20:[\"$\",\"li\",\"Twitter / X\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://x.com/iiidevs\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"transform\":\"translate(1.5 1.5) scale(0.875)\",\"d\":\"M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z\"}]}],[\"$\",\"span\",null,{\"children\":\"Twitter / X\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}]\n21:[\"$\",\"li\",\"LinkedIn\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://www.linkedin.com/company/iii-dev\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"M5.4 2.5h13.2a2.9 2.9 0 0 1 2.9 2.9v13.2a2.9 2.9 0 0 1-2.9 2.9H5.4a2.9 2.9 0 0 1-2.9-2.9V5.4a2.9 2.9 0 0 1 2.9-2.9Zm2.33 7.1H5.6v7.9h2.13V9.6ZM6.67 6.1a1.24 1.24 0 1 0 0 2.48 1.24 1.24 0 0 0 0-2.48Zm11.73 7.1c0-2.26-1.21-3.31-2.82-3.31-1.3 0-1.88.72-2.21 1.22V9.6H11.2c.03.6 0 7.9 0 7.9h2.17v-4.41c0-.24.02-.47.09-.64.19-.47.62-.96 1.35-.96.95 0 1.33.73 1.33 1.79v4.22h2.26V13.2Z\"}]}],[\"$\",\"span\",null,{\"children\":\"LinkedIn\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}]\n28:T713,"])</script><script>self.__next_f.push([1,"m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z"])</script><script>self.__next_f.push([1,"23:[\"$\",\"path\",null,{\"d\":\"$28\"}]\n24:[\"$\",\"span\",null,{\"children\":\"Claude\"}]\n25:[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]\n"])</script><script>self.__next_f.push([1,"26:[\"$\",\"li\",\"Perplexity\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://www.perplexity.ai/search?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service.\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"d\":\"M22.3977 7.0896h-2.3106V.0676l-7.5094 6.3542V.1577h-1.1554v6.1966L4.4904 0v7.0896H1.6023v10.3976h2.8882V24l6.932-6.3591v6.2005h1.1554v-6.0469l6.9318 6.1807v-6.4879h2.8882V7.0896zm-3.4657-4.531v4.531h-5.355l5.355-4.531zm-13.2862.0676 4.8691 4.4634H5.6458V2.6262zM2.7576 16.332V8.245h7.8476l-6.1149 6.1147v1.9723H2.7576zm2.8882 5.0404v-3.8852h.0001v-2.6488l5.7763-5.7764v7.0111l-5.7764 5.2993zm7.0212-7.0212v-7.0111l5.7764 5.7764v2.6488h.0001v3.8852l-5.7765-5.2993zm8.9765 2.0444h-1.9727l-6.1149-6.1147h8.0876v6.1147z\"}]}],[\"$\",\"span\",null,{\"children\":\"Perplexity\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}]\n"])</script><script>self.__next_f.push([1,"27:[\"$\",\"li\",\"Grok\",{\"children\":[\"$\",\"a\",null,{\"href\":\"https://grok.com/?q=Read%20https%3A%2F%2Fiii.dev%2Fllms.txt%20and%20explain%20iii%20to%20me%3A%20its%20three%20primitives%20(Worker%2C%20Trigger%2C%20Function)%2C%20what%20it%20replaces%20in%20a%20typical%20backend%2C%20and%20how%20I%20would%20install%20it%20and%20build%20a%20first%20service.\",\"className\":\"group flex min-h-9 items-center gap-2.5 text-[14px] text-muted-foreground transition-[color] duration-150 ease-[ease] hover:text-foreground max-sm:min-h-11 focus-visible:rounded-xs focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-foreground\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"d\":\"M9.27 15.29l7.978-5.897c.391-.29.95-.177 1.137.272.98 2.369.542 5.215-1.41 7.169-1.951 1.954-4.667 2.382-7.149 1.406l-2.711 1.257c3.889 2.661 8.611 2.003 11.562-.953 2.341-2.344 3.066-5.539 2.388-8.42l.006.007c-.983-4.232.242-5.924 2.75-9.383.06-.082.12-.164.179-.248l-3.301 3.305v-.01L9.267 15.292M7.623 16.723c-2.792-2.67-2.31-6.801.071-9.184 1.761-1.763 4.647-2.483 7.166-1.425l2.705-1.25a7.808 7.808 0 00-1.829-1A8.975 8.975 0 005.984 5.83c-2.533 2.536-3.33 6.436-1.962 9.764 1.022 2.487-.653 4.246-2.34 6.022-.599.63-1.199 1.259-1.682 1.925l7.62-6.815\"}]}],[\"$\",\"span\",null,{\"children\":\"Grok\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right ml-auto size-3 opacity-0 group-hover:opacity-100\",\"aria-hidden\":\"true\"}]]}]}]\n"])</script><script>self.__next_f.push([1,"29:T79d,"])</script><script>self.__next_f.push([1,"{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"ItemPage\",\"@id\":\"https://iii.dev/registry/workers/iii-directory#page\",\"url\":\"https://iii.dev/registry/workers/iii-directory\",\"name\":\"iii-directory · iii Registry\",\"isPartOf\":{\"@id\":\"https://iii.dev/registry#website\"},\"breadcrumb\":{\"@id\":\"https://iii.dev/registry/workers/iii-directory#breadcrumb\"},\"mainEntity\":{\"@id\":\"https://iii.dev/registry/workers/iii-directory#subject\"}},{\"@type\":\"SoftwareApplication\",\"@id\":\"https://iii.dev/registry/workers/iii-directory#subject\",\"name\":\"iii-directory\",\"description\":\"Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus function search ranked by the judge worker (falling back to local hybrid/lexical) with a conditional pre-generate hint.\",\"url\":\"https://iii.dev/registry/workers/iii-directory\",\"applicationCategory\":\"DeveloperApplication\",\"applicationSubCategory\":\"iii worker\",\"softwareVersion\":\"0.8.1\",\"operatingSystem\":\"macOS, Linux, Windows\",\"softwareRequirements\":\"iii engine\",\"keywords\":\"agents, directory, functions, introspect, kits, registry, search, skills\",\"isAccessibleForFree\":true,\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"},\"interactionStatistic\":{\"@type\":\"InteractionCounter\",\"interactionType\":\"https://schema.org/DownloadAction\",\"userInteractionCount\":5963},\"author\":{\"@id\":\"https://iii.dev/#organization\"},\"subjectOf\":{\"@type\":\"SoftwareSourceCode\",\"codeRepository\":\"https://github.com/iii-hq/workers\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://iii.dev/registry/workers/iii-directory#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"iii Registry\",\"item\":\"https://iii.dev/registry\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workers\",\"item\":\"https://iii.dev/registry/workers\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"iii-directory\",\"item\":\"https://iii.dev/registry/workers/iii-directory\"}]}]}"])</script><script>self.__next_f.push([1,"5:[\"$\",\"div\",null,{\"className\":\"page-transition\",\"children\":[[\"$\",\"script\",null,{\"type\":\"application/ld+json\",\"dangerouslySetInnerHTML\":{\"__html\":\"$29\"}}],[\"$\",\"header\",null,{\"className\":\"flex items-end justify-between flex-wrap gap-x-8 gap-y-5 px-[22px] pt-12 sm:px-9 sm:pt-16 pb-6 sm:pb-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"min-w-0\",\"children\":[[\"$\",\"div\",null,{\"className\":\"mb-3 font-mono text-[10px] leading-[normal] uppercase tracking-[0.08em] text-muted-foreground\",\"children\":[\"$\",\"nav\",null,{\"aria-label\":\"Breadcrumb\",\"className\":\"flex items-center gap-x-1.5\",\"children\":[[\"$\",\"$L13\",null,{\"href\":\"/\",\"className\":\"transition-colors duration-150 hover:text-foreground\",\"children\":\"Registry\"}],[\"$\",\"span\",null,{\"aria-hidden\":true,\"children\":\"/\"}],[\"$\",\"$L13\",null,{\"href\":\"/workers\",\"className\":\"transition-colors duration-150 hover:text-foreground\",\"children\":\"Workers\"}]]}]}],[\"$\",\"div\",null,{\"className\":\"flex items-center flex-wrap gap-x-3 gap-y-2\",\"children\":[[\"$\",\"h1\",null,{\"className\":\"text-[32px] sm:text-[40px] font-[550] leading-[1.1] tracking-[-0.04em] text-foreground text-balance\",\"children\":\"iii-directory\"}],\"$undefined\",[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center gap-1.5 rounded-md bg-code px-2 font-mono text-[13px] tabular-nums text-muted-foreground\",\"children\":\"v0.8.1\"}]]}],[\"$\",\"p\",null,{\"className\":\"mt-4 max-w-[60ch] text-[15px] leading-[1.7] text-muted-foreground text-pretty\",\"children\":\"Engine introspection, workers registry proxy, filesystem-backed skills, system prompts, and agent profiles, kit install and update with reviewed plans, plus function search ranked by the judge worker (falling back to local hybrid/lexical) with a conditional pre-generate hint.\"}]]}],null]}],\"$L2a\",\"$L2b\"]}]\n"])</script><script>self.__next_f.push([1,"2e:I[21158,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"InstallPanel\"]\n2f:I[84938,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"PageTabs\"]\n30:I[8192,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"ConfigBlock\"]\n"])</script><script>self.__next_f.push([1,"2a:[\"$\",\"div\",null,{\"className\":\"flex flex-col gap-y-5 px-[22px] pb-10 sm:px-9 sm:pb-12\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex flex-wrap items-center gap-x-2.5 gap-y-2 text-[13px] text-muted-foreground\",\"children\":[[\"$\",\"span\",\"0\",{\"className\":\"contents\",\"children\":[null,[\"$\",\"time\",\"published\",{\"dateTime\":\"2026-06-02T17:54:42.602Z\",\"title\":\"2026-06-02T17:54:42.602Z\",\"className\":\"tabular-nums\",\"children\":[\"Published \",\"4mo ago\"]}]]}],[\"$\",\"span\",\"1\",{\"className\":\"contents\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"className\":\"text-[color-mix(in_srgb,var(--muted-foreground)_55%,transparent)] max-sm:hidden\",\"children\":\"·\"}],[\"$\",\"a\",\"kits\",{\"href\":\"#used-in-kits\",\"className\":\"transition-colors duration-150 hover:text-foreground\",\"children\":[\"Used in\",\" \",[\"$\",\"strong\",null,{\"className\":\"font-medium tabular-nums text-foreground\",\"children\":1}],\" \",\"kit\"]}]]}],[\"$\",\"span\",\"2\",{\"className\":\"contents\",\"children\":[[\"$\",\"span\",null,{\"aria-hidden\":true,\"className\":\"text-[color-mix(in_srgb,var(--muted-foreground)_55%,transparent)] max-sm:hidden\",\"children\":\"·\"}],[\"$\",\"span\",\"tags\",{\"className\":\"flex flex-wrap items-center gap-1.5\",\"children\":[[\"$\",\"$L13\",\"agents\",{\"href\":\"/search?tag=agents\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"agents\"}]}],[\"$\",\"$L13\",\"directory\",{\"href\":\"/search?tag=directory\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"directory\"}]}],[\"$\",\"$L13\",\"functions\",{\"href\":\"/search?tag=functions\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"functions\"}]}],[\"$\",\"$L13\",\"introspect\",{\"href\":\"/search?tag=introspect\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"introspect\"}]}],[\"$\",\"$L13\",\"kits\",{\"href\":\"/search?tag=kits\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"kits\"}]}],[\"$\",\"$L13\",\"registry\",{\"href\":\"/search?tag=registry\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"registry\"}]}],[\"$\",\"$L13\",\"search\",{\"href\":\"/search?tag=search\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":\"$L2c\"}],\"$L2d\"]}]]}]]}],null,null,false,false]}]\n"])</script><script>self.__next_f.push([1,"32:T4c4,M12 2.69922C6.762 2.69922 2.5 6.96122 2.5 12.1992C2.5 16.3252 5.24 20.0532 9.164 21.2662C9.324 21.3182 9.498 21.2822 9.627 21.1762C9.757 21.0702 9.825 20.9062 9.809 20.7392C9.669 19.3462 10.47 17.8702 10.812 17.5162C10.944 17.3812 10.988 17.1822 10.925 17.0042C10.862 16.8252 10.704 16.6962 10.516 16.6732C8.725 16.4452 7.067 15.8372 7.067 12.9472C7.063 12.2282 7.337 11.5412 7.836 11.0122C7.968 10.8732 8.009 10.6712 7.941 10.4922C7.75 9.98722 7.729 9.42222 7.877 8.90022C8.168 8.94822 8.731 9.11922 9.608 9.70522C9.728 9.78622 9.877 9.80722 10.015 9.77222C11.312 9.42422 12.682 9.42422 13.979 9.77222C14.116 9.80722 14.266 9.78622 14.386 9.70522C15.27 9.11422 15.835 8.94522 16.115 8.89622C16.264 9.42022 16.245 9.98622 16.054 10.4932C15.986 10.6732 16.027 10.8752 16.16 11.0132C16.654 11.5332 16.927 12.2172 16.927 12.9382C16.927 15.8772 15.273 16.4642 13.486 16.6612C13.296 16.6812 13.135 16.8092 13.071 16.9882C13.006 17.1682 13.049 17.3692 13.182 17.5062C13.512 17.8472 14.321 19.3622 14.185 20.7502C14.168 20.9172 14.236 21.0812 14.367 21.1862C14.457 21.2612 14.569 21.2992 14.682 21.2992C14.732 21.2992 14.783 21.2912 14.832 21.2752C18.82 20.0202 21.5 16.3732 21.5 12.1992C21.5 6.96122 17.238 2.69922 12 2.69922Z"])</script><script>self.__next_f.push([1,"2b:[\"$\",\"div\",null,{\"className\":\"px-[22px] pb-16 sm:px-9\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 gap-x-12 gap-y-8 @4xl:grid-cols-[minmax(0,1fr)_360px] @4xl:grid-rows-[auto_1fr]\",\"children\":[[\"$\",\"section\",null,{\"aria-label\":\"Install\",\"className\":\"flex min-w-0 flex-col gap-y-3 @4xl:col-start-2 @4xl:row-start-1\",\"children\":[[\"$\",\"h2\",null,{\"className\":\"text-[15px] font-[550] tracking-[-0.01em] text-foreground\",\"children\":\"Install\"}],[\"$\",\"$L2e\",null,{\"command\":\"iii trigger compose::add worker=iii-directory@0.8.1\",\"html\":\"\u003cpre class=\\\"shiki shiki-themes min-light vesper\\\" style=\\\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\\\" tabindex=\\\"0\\\"\u003e\u003ccode\u003e\u003cspan class=\\\"line\\\"\u003e\u003cspan style=\\\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\\\"\u003eiii\u003c/span\u003e\u003cspan style=\\\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\\\"\u003e trigger\u003c/span\u003e\u003cspan style=\\\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\\\"\u003e compose::add\u003c/span\u003e\u003cspan style=\\\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\\\"\u003e worker=iii-directory@0.8.1\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\",\"workerName\":\"iii-directory\",\"version\":\"0.8.1\",\"kind\":\"worker\"}],[\"$\",\"p\",null,{\"className\":\"text-[13px] leading-[1.6] text-pretty text-muted-foreground\",\"children\":\"Run in your project with the iii engine running. Exact versions are immutable and digest-pinned.\"}]]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 flex flex-col gap-y-8 @4xl:col-start-1 @4xl:row-span-2 @4xl:row-start-1\",\"children\":[[\"$\",\"$L2f\",null,{\"slug\":\"iii-directory\",\"activeTab\":\"readme\",\"version\":\"0.8.1\",\"basePath\":\"/workers\",\"tabs\":\"$undefined\"}],[[\"$\",\"section\",null,{\"aria-label\":\"Configuration\",\"children\":[\"$\",\"$L30\",null,{\"config\":{\"download_timeout_ms\":60000,\"registry_url\":\"https://api.workers.iii.dev\",\"skills_folder\":\"./skills\"}}]}],[\"$\",\"section\",null,{\"aria-label\":\"Readme\",\"children\":\"$L31\"}]],false,false,false,false,false,false]}],[\"$\",\"aside\",null,{\"className\":\"flex min-w-0 flex-col gap-y-6 @4xl:col-start-2 @4xl:row-start-2 @4xl:self-start\",\"children\":[[\"$\",\"dl\",null,{\"className\":\"grid grid-cols-2 gap-x-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Repository\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://github.com/iii-hq/workers\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"inline-flex max-w-full items-center gap-x-2 text-[14px] font-medium transition-colors duration-150 hover:text-brand\",\"children\":[[\"$\",\"svg\",null,{\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"aria-hidden\":true,\"focusable\":\"false\",\"className\":\"size-4 shrink-0\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"$32\"}]}],\"$L33\",\"$L34\"]}]}]]}],\"$L35\",\"$L36\",\"$L37\",\"$L38\",\"$L39\",\"$L3a\",\"$L3b\",\"$L3c\",\"$L3d\",null,\"$L3e\",null,\"$L3f\"]}],\"$L40\",\"$L41\"]}]]}]}]\n"])</script><script>self.__next_f.push([1,"42:I[56877,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"InstallsChart\"]\n43:I[33516,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"Image\"]\n46:I[42794,[\"/registry/_next/static/chunks/0ov4a9hzi1oek.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/02q_l477hmi84.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0xkym.2ps9qyc.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0tclp6.7qxzgs.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\",\"/registry/_next/static/chunks/0jm9zdrfsajnq.js?dpl=dpl_7ms9wUW4fXckQVSyXNpxPeemM6aC\"],\"SummaryList\"]\n:HL[\"https://iii.dev/docs/_mintlify/favicons/motiadev/AFkVbz_UcSL_5jsm/_generated/favicon/apple-touch-icon.png\",\"image\"]\n2c:[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"search\"}]\n2d:[\"$\",\"$L13\",\"skills\",{\"href\":\"/search?tag=skills\",\"className\":\"rounded-md transition-opacity duration-150 hover:opacity-80 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-brand\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex h-6 items-center rounded-md bg-[color-mix(in_srgb,var(--foreground)_6%,transparent)] px-2 font-mono text-[13px] lowercase text-muted-foreground\",\"children\":\"skills\"}]}]\n33:[\"$\",\"span\",null,{\"className\":\"truncate\",\"children\":\"iii-hq/workers\"}]\n34:[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right size-3.5 shrink-0 text-muted-foreground\",\"aria-hidden\":true}]\n35:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Weekly installs\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-[550] tabular-nums text-[24px] tracking-[-0.03em]\",\"children\":\"815\"}],[\"$\",\"$L42\",null,{\"series\":[67,114,150,79,287,83,35],\"width\":340,\"height\":52,\"className\":\"mt-3\"}]]}]]}]\n36:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Version\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate\",\"children\":[\"v\",\"0.8.1\"]}]}]]}]\n37:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"License\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate\",\"children\":\"—\"}]}]]}]\n38:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Total installs\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums\",\"childre"])</script><script>self.__next_f.push([1,"n\":\"5,963\"}]}]]}]\n39:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Type\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate\",\"children\":\"binary\"}]}]]}]\n3a:[[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Functions\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"$L13\",null,{\"href\":\"/workers/iii-directory?version=0.8.1\u0026tab=api\",\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand\",\"children\":\"12\"}]}]]}],[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Triggers\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"$L13\",null,{\"href\":\"/workers/iii-directory?version=0.8.1\u0026tab=api\",\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand\",\"children\":\"2\"}]}]]}]]\n3b:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Skills\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"$L13\",null,{\"href\":\"/workers/iii-directory?version=0.8.1\u0026tab=skills\",\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand\",\"children\":\"1\"}]}]]}]\n3c:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Dependencies\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"$L13\",null,{\"href\":\"/workers/iii-directory?version=0.8.1\u0026tab=deps\",\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums transition-colors duration-150 hover:text-brand\",\"children\":\"0\"}]}]]}]\n3d:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Last publish\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"time\",null,{\"dateTime\":\"2026-06-02T17:54:42.602Z\",\"title\":\"2026-06-02T17:54:42.602Z\",\"className\":\"text-[16px] font-[550] leading-tight tracking-[-0.02em] tabular-nums block truncate\",\"children\":\"4mo ago\"}]}]]}]\n"])</script><script>self.__next_f.push([1,"3e:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Platforms\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"ul\",null,{\"aria-label\":\"Supported platforms\",\"className\":\"flex flex-wrap items-center gap-2 mt-1\",\"children\":[[\"$\",\"li\",\"apple\",{\"title\":\"macOS: arm64, x64\",\"className\":\"inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]\",\"children\":[[\"$\",\"$L43\",null,{\"src\":\"/registry/icons/apple_dark.svg\",\"alt\":\"\",\"aria-hidden\":true,\"width\":209,\"height\":256,\"className\":\"shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":[\"macOS\",\": \"]}],[\"$\",\"span\",null,{\"className\":\"tabular-nums\",\"children\":\"arm64 · x64\"}]]}],[\"$\",\"li\",\"linux\",{\"title\":\"Linux: arm64, armv7, x64\",\"className\":\"inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]\",\"children\":[[\"$\",\"$L43\",null,{\"src\":\"/registry/icons/linux.svg\",\"alt\":\"\",\"aria-hidden\":true,\"width\":256,\"height\":295,\"className\":\"shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":[\"Linux\",\": \"]}],[\"$\",\"span\",null,{\"className\":\"tabular-nums\",\"children\":\"arm64 · armv7 · x64\"}]]}],[\"$\",\"li\",\"windows\",{\"title\":\"Windows: arm64, x64, x86\",\"className\":\"inline-flex items-center rounded-md border border-line bg-background font-mono text-muted-foreground h-8 gap-x-2 px-2.5 text-[13px]\",\"children\":[[\"$\",\"$L43\",null,{\"src\":\"/registry/icons/windows.svg\",\"alt\":\"\",\"aria-hidden\":true,\"width\":88,\"height\":88,\"className\":\"shrink-0 opacity-80 [filter:brightness(0)] dark:[filter:brightness(0)_invert(1)] h-3.5 w-auto\"}],[\"$\",\"span\",null,{\"className\":\"sr-only\",\"children\":[\"Windows\",\": \"]}],[\"$\",\"span\",null,{\"className\":\"tabular-nums\",\"children\":\"arm64 · x64 · x86\"}]]}]]}]}]]}]\n"])</script><script>self.__next_f.push([1,"44:T5da,"])</script><script>self.__next_f.push([1,"M15.5837 10.5577L11.5107 14.6327C11.3697 14.7737 11.1787 14.8527 10.9797 14.8527C10.7807 14.8527 10.5897 14.7737 10.4497 14.6327L8.47274 12.6527C8.18075 12.3587 8.18075 11.8837 8.47375 11.5907C8.76775 11.2987 9.24174 11.2997 9.53475 11.5917L10.9807 13.0407L14.5227 9.49667C14.8157 9.20367 15.2907 9.20367 15.5837 9.49667C15.8767 9.78967 15.8767 10.2647 15.5837 10.5577ZM20.7037 10.0857L20.0047 9.38667C19.6857 9.06667 19.5107 8.64067 19.5107 8.18967V7.18967C19.5107 5.70067 18.2987 4.48967 16.8107 4.48967H15.8087C15.3557 4.48967 14.9307 4.31467 14.6127 3.99667L13.9017 3.28667C12.8447 2.23867 11.1327 2.24367 10.0837 3.29767L9.38674 3.99667C9.06574 4.31567 8.64075 4.49067 8.18875 4.49067H7.18775C5.71675 4.49167 4.51675 5.67567 4.48975 7.14167C4.48874 7.15767 4.48775 7.17367 4.48775 7.19067V8.18767C4.48775 8.63967 4.31275 9.06467 3.99375 9.38367L3.28575 10.0927C3.28475 10.0957 3.28175 10.0967 3.27975 10.0987C2.23475 11.1567 2.24375 12.8687 3.29675 13.9117L3.99575 14.6127C4.31375 14.9317 4.48975 15.3557 4.48975 15.8077V16.8127C4.48975 18.3007 5.69975 19.5117 7.18775 19.5117H8.18675C8.63975 19.5127 9.06475 19.6877 9.38275 20.0047L10.0957 20.7157C10.6037 21.2207 11.2777 21.4987 11.9947 21.4987H12.0067C12.7277 21.4957 13.4037 21.2117 13.9097 20.7027L14.6107 20.0027C14.9257 19.6887 15.3617 19.5087 15.8067 19.5087H16.8127C18.2977 19.5087 19.5087 18.2997 19.5117 16.8127V15.8097C19.5117 15.3587 19.6867 14.9337 20.0037 14.6147L20.7147 13.9037C21.7647 12.8477 21.7587 11.1347 20.7037 10.0857Z"])</script><script>self.__next_f.push([1,"3f:[\"$\",\"div\",null,{\"className\":\"flex min-w-0 flex-col gap-y-1 border-t border-line py-3 col-span-2\",\"children\":[[\"$\",\"dt\",null,{\"className\":\"text-[13px] text-muted-foreground\",\"children\":\"Author\"}],[\"$\",\"dd\",null,{\"className\":\"min-w-0 text-foreground\",\"children\":[\"$\",\"span\",null,{\"className\":\"inline-flex min-w-0 items-center gap-x-2\",\"children\":[[\"$\",\"img\",null,{\"src\":\"https://iii.dev/docs/_mintlify/favicons/motiadev/AFkVbz_UcSL_5jsm/_generated/favicon/apple-touch-icon.png\",\"alt\":\"\",\"className\":\"size-5 shrink-0 rounded-full border border-line object-cover\"}],[\"$\",\"span\",null,{\"className\":\"truncate text-[13px] font-medium text-foreground\",\"children\":\"iii\"}],[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":\"1em\",\"height\":\"1em\",\"fill\":\"currentColor\",\"focusable\":\"false\",\"aria-hidden\":\"$undefined\",\"className\":\"size-3.5 shrink-0 text-verified\",\"aria-label\":\"Verified author\",\"children\":[\"$\",\"path\",null,{\"fillRule\":\"evenodd\",\"clipRule\":\"evenodd\",\"d\":\"$44\"}]}]]}]}]]}]\n45:T4a7,M5.9199,11.4697 C7.3299,11.4697 8.4599,12.6107 8.4599,14.0307 L8.4599,14.0307 L8.4599,17.4397 C8.4599,18.8497 7.3299,19.9997 5.9199,19.9997 L5.9199,19.9997 L2.5399,19.9997 C1.1399,19.9997 -0.0001,18.8497 -0.0001,17.4397 L-0.0001,17.4397 L-0.0001,14.0307 C-0.0001,12.6107 1.1399,11.4697 2.5399,11.4697 L2.5399,11.4697 Z M17.46,11.4697 C18.86,11.4697 20,12.6107 20,14.0307 L20,14.0307 L20,17.4397 C20,18.8497 18.86,19.9997 17.46,19.9997 L17.46,19.9997 L14.08,19.9997 C12.67,19.9997 11.54,18.8497 11.54,17.4397 L11.54,17.4397 L11.54,14.0307 C11.54,12.6107 12.67,11.4697 14.08,11.4697 L14.08,11.4697 Z M5.9199,-9.32587341e-14 C7.3299,-9.32587341e-14 8.4599,1.15 8.4599,2.561 L8.4599,2.561 L8.4599,5.97 C8.4599,7.39 7.3299,8.53 5.9199,8.53 L5.9199,8.53 L2.5399,8.53 C1.1399,8.53 -0.0001,7.39 -0.0001,5.97 L-0.0001,5.97 L-0.0001,2.561 C-0.0001,1.15 1.1399,-9.32587341e-14 2.5399,-9.32587341e-14 L2.5399,-9.32587341e-14 Z M17.46,-9.32587341e-14 C18.86,-9.32587341e-14 20,1.15 20,2.561 L20,2.561 L20,5.97 C20,7.39 18.86,8.53 17.46,8.53 L17.46,8.53 L14.08,8.53 C12.67,8.53 11.54,7.39 11.54,5.97 L11.54,5.97 L11.54,2.561 C11.54,1.15 12.67,-9.32587341e-14 14.08,-9.32587341e-14 L14.08,-9.32587341e-14 Z"])</script><script>self.__next_f.push([1,"40:[\"$\",\"section\",null,{\"id\":\"used-in-kits\",\"aria-labelledby\":\"used-in-kits-title\",\"className\":\"overflow-hidden rounded-xl border border-line bg-paper scroll-mt-20\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-11 items-center justify-between gap-x-3 border-b border-line px-4\",\"children\":[\"$\",\"span\",null,{\"id\":\"used-in-kits-title\",\"className\":\"font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground\",\"children\":[\"Used in \",1,\" \",\"kit\"]}]}],[\"$\",\"ul\",null,{\"className\":\"flex flex-col p-2\",\"children\":[[\"$\",\"li\",\"iii/deepwork\",{\"children\":[\"$\",\"$L13\",null,{\"href\":\"/kits/iii/deepwork\",\"className\":\"group flex items-start gap-x-3 rounded-lg px-2 py-2 transition-colors duration-150 hover:bg-code focus-visible:outline-2 focus-visible:outline-offset-0 focus-visible:outline-brand\",\"children\":[[\"$\",\"span\",null,{\"className\":\"grid size-8 shrink-0 place-items-center rounded-[9px] border border-line bg-background\",\"children\":[\"$\",\"svg\",null,{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 24 24\",\"width\":\"1em\",\"height\":\"1em\",\"fill\":\"currentColor\",\"focusable\":\"false\",\"aria-hidden\":\"true\",\"className\":\"shrink-0 text-foreground size-3.5\",\"children\":[\"$\",\"g\",null,{\"transform\":\"translate(2 2)\",\"children\":[\"$\",\"path\",null,{\"d\":\"$45\"}]}]}]}],[\"$\",\"span\",null,{\"className\":\"min-w-0 flex flex-col gap-y-0.5\",\"children\":[[\"$\",\"span\",null,{\"className\":\"truncate text-[13px] font-medium text-foreground\",\"children\":[[\"$\",\"span\",null,{\"className\":\"text-muted-foreground\",\"children\":[\"iii\",\"/\"]}],\"deepwork\"]}],[\"$\",\"span\",null,{\"className\":\"font-mono text-[13px] tabular-nums text-muted-foreground\",\"children\":[\"v\",\"0.4.3\",\" · \",6,\" \",\"profiles\"]}]]}]]}]}]]}]]}]\n"])</script><script>self.__next_f.push([1,"41:[\"$\",\"section\",null,{\"id\":\"$undefined\",\"className\":\"shrink-0 overflow-hidden rounded-xl border border-line bg-paper scroll-mt-20\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex min-h-11 items-center justify-between gap-x-3 border-b border-line px-4\",\"children\":[[\"$\",\"span\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground\",\"children\":\"api\"}],\"$undefined\"]}],[\"$\",\"div\",null,{\"className\":\"flex flex-col p-0 gap-y-0\",\"children\":[\"$\",\"$L46\",null,{\"slug\":\"iii-directory\",\"version\":\"0.8.1\",\"functions\":[{\"name\":\"directory::prompts::get\",\"anchor\":\"fn-directory::prompts::get\"},{\"name\":\"directory::prompts::list\",\"anchor\":\"fn-directory::prompts::list\"},{\"name\":\"directory::skills::download_from_repo\",\"anchor\":\"fn-directory::skills::download_from_repo\"},{\"name\":\"directory::__on_worker_added\",\"anchor\":\"fn-directory::__on_worker_added\"},{\"name\":\"directory::skills::download\",\"anchor\":\"fn-directory::skills::download\"},{\"name\":\"directory::skills::download_from_registry\",\"anchor\":\"fn-directory::skills::download_from_registry\"},{\"name\":\"directory::registry::workers::list\",\"anchor\":\"fn-directory::registry::workers::list\"},{\"name\":\"directory::registry::workers::info\",\"anchor\":\"fn-directory::registry::workers::info\"},{\"name\":\"directory::skills::index\",\"anchor\":\"fn-directory::skills::index\"},{\"name\":\"directory::engine::functions::info\",\"anchor\":\"fn-directory::engine::functions::info\"},{\"name\":\"directory::skills::get\",\"anchor\":\"fn-directory::skills::get\"},{\"name\":\"directory::skills::list\",\"anchor\":\"fn-directory::skills::list\"}],\"triggers\":[{\"name\":\"directory::prompts::on-change\",\"anchor\":\"trigger-directory::prompts::on-change\"},{\"name\":\"directory::skills::on-change\",\"anchor\":\"trigger-directory::skills::on-change\"}]}]}]]}]\n"])</script><script>self.__next_f.push([1,"47:T75f7,"])</script><script>self.__next_f.push([1,"\u003ch1 id=\"iii-directory\" class=\"scroll-mt-20\"\u003eiii-directory\u003c/h1\u003e\n\u003cp\u003eWorkers registry HTTP proxy and filesystem-backed skill + prompt\nreader for the \u003ca href=\"https://github.com/iii-hq/iii\"\u003eiii engine\u003c/a\u003e. Every\npublic function sits under a single \u003ccode class=\"readme-inline-code\"\u003edirectory::*\u003c/code\u003e namespace, split\ninto three sub-namespaces (all MCP-agnostic):\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSurface\u003c/th\u003e\n\u003cth\u003eWhat clients see\u003c/th\u003e\n\u003cth\u003eWhen to use it\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eSkills\u003c/strong\u003e (\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::*\u003c/code\u003e)\u003c/td\u003e\n\u003ctd\u003eEnriched listing via \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e (\u003ccode class=\"readme-inline-code\"\u003e{ id, title, type, description, bytes, modified_at }\u003c/code\u003e per row), a single-skill reader \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::get { id }\u003c/code\u003e returning \u003ccode class=\"readme-inline-code\"\u003e{ id, title, type, description, body, modified_at }\u003c/code\u003e, and \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::index\u003c/code\u003e which renders a short per-worker overview document (one \u003ccode class=\"readme-inline-code\"\u003e## \u003ctitle\u003e\u003c/code\u003e + first paragraph + \u003ccode class=\"readme-inline-code\"\u003eread more\u003c/code\u003e link per \u003ccode class=\"readme-inline-code\"\u003etype: index\u003c/code\u003e skill). \u003ccode class=\"readme-inline-code\"\u003etitle\u003c/code\u003e prefers the YAML frontmatter \u003ccode class=\"readme-inline-code\"\u003etitle:\u003c/code\u003e over the body H1; \u003ccode class=\"readme-inline-code\"\u003etype\u003c/code\u003e is lifted from frontmatter \u003ccode class=\"readme-inline-code\"\u003etype:\u003c/code\u003e (e.g. \u003ccode class=\"readme-inline-code\"\u003eindex\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003ehow-to\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003ereference\u003c/code\u003e) and serialised as \u003ccode class=\"readme-inline-code\"\u003enull\u003c/code\u003e when absent.\u003c/td\u003e\n\u003ctd\u003eOrientation: \u0026quot;when and why to use my worker\u0026#39;s tools\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003ePrompts\u003c/strong\u003e (\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::*\u003c/code\u003e)\u003c/td\u003e\n\u003ctd\u003eStatic prompt templates listed by \u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::list\u003c/code\u003e and read by \u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eParametric command templates the \u003cem\u003euser\u003c/em\u003e invokes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003cstrong\u003eRegistry\u003c/strong\u003e (\u003ccode class=\"readme-inline-code\"\u003edirectory::registry::*\u003c/code\u003e)\u003c/td\u003e\n\u003ctd\u003eHTTP proxy over \u003ccode class=\"readme-inline-code\"\u003eapi.workers.iii.dev\u003c/code\u003e with \u003ccode class=\"readme-inline-code\"\u003eworkers::{list,info}\u003c/code\u003e. Rows share the core \u003ccode class=\"readme-inline-code\"\u003ename\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003edescription\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003eversion\u003c/code\u003e fields with the engine\u0026#39;s \u003ccode class=\"readme-inline-code\"\u003eengine::workers::list\u003c/code\u003e and add publication metadata (\u003ccode class=\"readme-inline-code\"\u003etype\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003econfig\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003esupported_targets\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003etotal_downloads\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003edependencies\u003c/code\u003e, optional \u003ccode class=\"readme-inline-code\"\u003eimage\u003c/code\u003e). \u003ccode class=\"readme-inline-code\"\u003eworkers::list\u003c/code\u003e is cursor-paginated with a server-authored page size.\u003c/td\u003e\n\u003ctd\u003e\u0026quot;What\u0026#39;s published in the public registry?\u0026quot;\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eEngine introspection (functions / triggers / registered triggers /\nworkers) is served by the engine natively at\n\u003ccode class=\"readme-inline-code\"\u003eengine::functions::*\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003eengine::triggers::*\u003c/code\u003e,\n\u003ccode class=\"readme-inline-code\"\u003eengine::registered-triggers::*\u003c/code\u003e, and \u003ccode class=\"readme-inline-code\"\u003eengine::workers::*\u003c/code\u003e. Earlier\nversions of this crate wrapped those calls under \u003ccode class=\"readme-inline-code\"\u003edirectory::engine::*\u003c/code\u003e\nhelpers; the wrappers have been removed — call the engine ids\ndirectly.\u003c/p\u003e\n\u003cp\u003eSkills and prompts are sourced from a single configured folder on disk\n(\u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e). The only write path is the\n\u003cstrong\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::download\u003c/code\u003e\u003c/strong\u003e function, which pulls markdown into\n\u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e from either the\n\u003ca href=\"https://workers.iii.dev\"\u003eworkers registry\u003c/a\u003e or a GitHub repo. Once\ndownloaded, files belong to the developer — edit them however you want.\u003c/p\u003e\n\u003cp\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::registry::workers::*\u003c/code\u003e and the engine\u0026#39;s \u003ccode class=\"readme-inline-code\"\u003eengine::workers::*\u003c/code\u003e\nshare the core \u003ccode class=\"readme-inline-code\"\u003ename\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003edescription\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003eversion\u003c/code\u003e fields so a parser\nthat touches only those keys works against either surface; the\nregistry view also surfaces publication metadata (\u003ccode class=\"readme-inline-code\"\u003etype\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003econfig\u003c/code\u003e,\n\u003ccode class=\"readme-inline-code\"\u003esupported_targets\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003etotal_downloads\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003edependencies\u003c/code\u003e, optional\n\u003ccode class=\"readme-inline-code\"\u003eimage\u003c/code\u003e) and the engine view adds runtime / connection state.\u003c/p\u003e\n\u003ch2 id=\"table-of-contents\" class=\"scroll-mt-20\"\u003eTable of contents\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003e\u003ca href=\"#install\"\u003eInstall\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#configuration\"\u003eConfiguration\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#quickstart-download-some-skills\"\u003eQuickstart: download some skills\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#on-disk-layout\"\u003eOn-disk layout\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#skill-ids\"\u003eSkill ids\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#functions\"\u003eFunctions\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#custom-trigger-types\"\u003eCustom trigger types\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#local-development--testing\"\u003eLocal development \u0026amp; testing\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#migration-from-skills-v02x\"\u003eMigration from skills v0.2.x\u003c/a\u003e\u003c/li\u003e\n\u003c/ol\u003e\n\u003chr\u003e\n\u003ch2 id=\"install\" class=\"scroll-mt-20\"\u003eInstall\u003c/h2\u003e\n\u003cpre class=\"shiki shiki-themes min-light vesper\" style=\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003eiii\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e worker\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e add\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e iii-directory\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003ccode class=\"readme-inline-code\"\u003eiii worker add\u003c/code\u003e fetches the binary, writes a config block into\n\u003ccode class=\"readme-inline-code\"\u003e~/.iii/config.yaml\u003c/code\u003e, and the engine starts the worker on the next\n\u003ccode class=\"readme-inline-code\"\u003eiii start\u003c/code\u003e.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"configuration\" class=\"scroll-mt-20\"\u003eConfiguration\u003c/h2\u003e\n\u003cpre class=\"shiki shiki-themes min-light vesper\" style=\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Folder that backs every read (`directory::skills::list`,\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# `directory::skills::get`, `directory::prompts::*`) and every write\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# from `directory::skills::download`. Relative paths are resolved\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# against the process current working directory; absolute paths are\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# used as-is.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFC799\"\u003eskills_folder\u003c/span\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFF\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e ./skills\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Workers registry base URL — used by `directory::skills::download`\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# and the `directory::registry::*` proxies when a `worker=` source is\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# specified. Override for self-hosted deployments.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFC799\"\u003eregistry_url\u003c/span\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFF\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e https://api.workers.iii.dev\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Timeout for a single download (`git clone` or HTTP request) in ms.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFC799\"\u003edownload_timeout_ms\u003c/span\u003e\u003cspan style=\"--shiki-light:#D32F2F;--shiki-dark:#FFF\"\u003e:\u003c/span\u003e\u003cspan style=\"--shiki-light:#1976D2;--shiki-dark:#FFC799\"\u003e 60000\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe folder is created on first download if it doesn\u0026#39;t exist.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"quickstart-download-some-skills\" class=\"scroll-mt-20\"\u003eQuickstart: download some skills\u003c/h2\u003e\n\u003cpre class=\"shiki shiki-themes min-light vesper\" style=\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Pull a specific worker's skills + prompts at a fixed semver from\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# the registry. Files land under `\u0026#x3C;skills_folder\u003e/agent-memory/`.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003eiii\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e trigger\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --function-id=directory::skills::download\u003c/span\u003e\u003cspan style=\"--shiki-light:#24292EFF;--shiki-dark:#A0A0A0\"\u003e \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --payload=\u003c/span\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e'{\"worker\": \"agent-memory\", \"version\": \"1.2.3\"}'\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Same, but always fetch whatever's tagged `latest` (also the default\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# when neither version nor tag is given).\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003eiii\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e trigger\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --function-id=directory::skills::download\u003c/span\u003e\u003cspan style=\"--shiki-light:#24292EFF;--shiki-dark:#A0A0A0\"\u003e \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --payload=\u003c/span\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e'{\"worker\": \"agent-memory\"}'\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Pull a single subfolder out of a public GitHub repo via\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# `git clone --depth 1 --branch main`. Files land under\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# `\u0026#x3C;skills_folder\u003e/frontend-design/`. The `branch` field defaults to\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# `main`; pass `\"master\"` for older repos that haven't migrated.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003eiii\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e trigger\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --function-id=directory::skills::download\u003c/span\u003e\u003cspan style=\"--shiki-light:#24292EFF;--shiki-dark:#A0A0A0\"\u003e \\\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --payload=\u003c/span\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e'{\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e \"repo\": \"https://github.com/anthropics/skills\",\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e \"skill\": \"frontend-design\"\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#22863A;--shiki-dark:#99FFE4\"\u003e }'\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe response is \u003ccode class=\"readme-inline-code\"\u003e{ namespace, skills_written, prompts_written, source }\u003c/code\u003e\nwhere \u003ccode class=\"readme-inline-code\"\u003eskills_written\u003c/code\u003e and \u003ccode class=\"readme-inline-code\"\u003eprompts_written\u003c/code\u003e are arrays of relative\npaths / prompt names that were materialised in this run.\u003c/p\u003e\n\u003cp\u003eAfter every successful download the worker fires the\n\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::on-change\u003c/code\u003e and/or \u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::on-change\u003c/code\u003e\ntrigger types so that subscribers like the \u003ca href=\"../mcp/\"\u003e\u003ccode class=\"readme-inline-code\"\u003emcp\u003c/code\u003e\u003c/a\u003e worker can\nforward MCP \u003ccode class=\"readme-inline-code\"\u003enotifications/list_changed\u003c/code\u003e to their clients.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"on-disk-layout\" class=\"scroll-mt-20\"\u003eOn-disk layout\u003c/h2\u003e\n\u003cp\u003eThe worker assumes a fixed layout under \u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003eskills_folder/\n \u0026lt;namespace\u0026gt;/ # one folder per `directory::skills::download` namespace\n index.md # → iii://\u0026lt;namespace\u0026gt;/index\n contacts.md # → iii://\u0026lt;namespace\u0026gt;/contacts\n emails/send-email.md # → iii://\u0026lt;namespace\u0026gt;/emails/send-email\n prompts/ # ← magic marker for prompts\n send-email.md # ← MCP slash-command (needs YAML frontmatter)\n triage.md\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eA few rules:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eSkill ids\u003c/strong\u003e are the relative path under \u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e with \u003ccode class=\"readme-inline-code\"\u003e.md\u003c/code\u003e\nstripped. Each segment must satisfy \u003ccode class=\"readme-inline-code\"\u003e[a-z0-9_-]{1,64}\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eSkill frontmatter is optional.\u003c/strong\u003e When present, the reader honours\ntwo keys: \u003ccode class=\"readme-inline-code\"\u003etitle:\u003c/code\u003e (used by \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e and\n\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::get\u003c/code\u003e in preference to a body \u003ccode class=\"readme-inline-code\"\u003e# H1\u003c/code\u003e) and\n\u003ccode class=\"readme-inline-code\"\u003etype:\u003c/code\u003e (free-form classifier surfaced verbatim on both responses).\nAny other YAML keys are ignored.\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003ePrompts\u003c/strong\u003e live under any \u003ccode class=\"readme-inline-code\"\u003e*/prompts/*.md\u003c/code\u003e path. They must start with\na YAML frontmatter block declaring at least \u003ccode class=\"readme-inline-code\"\u003edescription\u003c/code\u003e; \u003ccode class=\"readme-inline-code\"\u003ename\u003c/code\u003e\nis optional and overrides the file-stem default.\u003c/li\u003e\n\u003cli\u003eFiles anywhere else (i.e. \u003cem\u003enot\u003c/em\u003e in a \u003ccode class=\"readme-inline-code\"\u003eprompts/\u003c/code\u003e segment) are skills.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThe download function namespaces by source:\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eSource\u003c/th\u003e\n\u003cth\u003eDestination\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003erepo=URL skill=NAME branch?=main\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003e\u003cskills_folder\u003e/\u003cNAME\u003e/...\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eworker=NAME version=…\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003e\u003cskills_folder\u003e/\u003cNAME\u003e/...\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eworker=NAME tag=…\u003c/code\u003e (default \u003ccode class=\"readme-inline-code\"\u003etag=latest\u003c/code\u003e)\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003e\u003cskills_folder\u003e/\u003cNAME\u003e/...\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eRe-pulling the same source overwrites files \u003cstrong\u003efile-by-file\u003c/strong\u003e —\nexisting siblings outside the response set are preserved (so\nhand-edited additions survive a re-pull).\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"skill-ids\" class=\"scroll-mt-20\"\u003eSkill ids\u003c/h2\u003e\n\u003cp\u003eSkills are addressed by their relative path under \u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e with\n\u003ccode class=\"readme-inline-code\"\u003e.md\u003c/code\u003e stripped — e.g. \u003ccode class=\"readme-inline-code\"\u003e\u003cskills_folder\u003e/agent-memory/observe.md\u003c/code\u003e →\nid \u003ccode class=\"readme-inline-code\"\u003e\"agent-memory/observe\"\u003c/code\u003e. The same string is what\n\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e returns and what \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::get\u003c/code\u003e\nexpects in \u003ccode class=\"readme-inline-code\"\u003e{ \"id\": ... }\u003c/code\u003e. The legacy \u003ccode class=\"readme-inline-code\"\u003eiii://{id}\u003c/code\u003e link form is still\naccepted on \u003ccode class=\"readme-inline-code\"\u003eget\u003c/code\u003e (the prefix is auto-stripped), but the worker no\nlonger parses any other \u003ccode class=\"readme-inline-code\"\u003eiii://\u003c/code\u003e URI shape — bodies are read solely by\nid, and the auto-rendered tree-shaped index that previous releases\nserved at \u003ccode class=\"readme-inline-code\"\u003eiii://directory/skills\u003c/code\u003e is gone. Consumers that want a\ntree-shaped picker iterate \u003ccode class=\"readme-inline-code\"\u003elist\u003c/code\u003e rows themselves and indent by\n\u003ccode class=\"readme-inline-code\"\u003eid.matches('/').count()\u003c/code\u003e.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"functions\" class=\"scroll-mt-20\"\u003eFunctions\u003c/h2\u003e\n\u003cp\u003eSixteen functions, all under \u003ccode class=\"readme-inline-code\"\u003edirectory::*\u003c/code\u003e. All registrations are\nnamespace-clean; this worker is intentionally agnostic to MCP and any\nother adapter.\u003c/p\u003e\n\u003ch3 id=\"directoryskills-filesystem-reader\" class=\"scroll-mt-20\"\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::*\u003c/code\u003e (filesystem reader)\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFunction ID\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::download\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003ePull markdown into \u003ccode class=\"readme-inline-code\"\u003eskills_folder\u003c/code\u003e. Either \u003ccode class=\"readme-inline-code\"\u003e{repo, skill, branch?}\u003c/code\u003e (defaults \u003ccode class=\"readme-inline-code\"\u003ebranch=main\u003c/code\u003e) or `{worker, version?\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eEnriched listing of every fs-backed skill: \u003ccode class=\"readme-inline-code\"\u003e{ id, title, type, description, bytes, modified_at }\u003c/code\u003e per row. \u003ccode class=\"readme-inline-code\"\u003etitle\u003c/code\u003e prefers the YAML frontmatter \u003ccode class=\"readme-inline-code\"\u003etitle:\u003c/code\u003e over the body H1, \u003ccode class=\"readme-inline-code\"\u003etype\u003c/code\u003e is lifted from frontmatter \u003ccode class=\"readme-inline-code\"\u003etype:\u003c/code\u003e (\u003ccode class=\"readme-inline-code\"\u003enull\u003c/code\u003e when absent), and \u003ccode class=\"readme-inline-code\"\u003edescription\u003c/code\u003e is the first paragraph of the body — so consumers can render a picker without a follow-up \u003ccode class=\"readme-inline-code\"\u003eget\u003c/code\u003e per row.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eFetch one skill by id. Returns \u003ccode class=\"readme-inline-code\"\u003e{ id, title, type, description, body, modified_at }\u003c/code\u003e — same shape \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e rows use, plus the raw markdown \u003ccode class=\"readme-inline-code\"\u003ebody\u003c/code\u003e. Same title-resolution and \u003ccode class=\"readme-inline-code\"\u003etype\u003c/code\u003e precedence as \u003ccode class=\"readme-inline-code\"\u003elist\u003c/code\u003e. Accepts a bare id or the same id prefixed with \u003ccode class=\"readme-inline-code\"\u003eiii://\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::index\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eRender one short markdown entry per installed worker (skills with frontmatter \u003ccode class=\"readme-inline-code\"\u003etype: index\u003c/code\u003e). Returns \u003ccode class=\"readme-inline-code\"\u003e{ body, workers_count }\u003c/code\u003e where \u003ccode class=\"readme-inline-code\"\u003ebody\u003c/code\u003e is a ready-to-paste page: \u003ccode class=\"readme-inline-code\"\u003e# Skills index\u003c/code\u003e, then one \u003ccode class=\"readme-inline-code\"\u003e## \u003cworker title\u003e\u003c/code\u003e heading + the worker\u0026#39;s first overview paragraph + a \u003ccode class=\"readme-inline-code\"\u003eRead iii://\u003cns\u003e/index\u003c/code\u003e pointer the agent can follow with \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::get\u003c/code\u003e. Token-light by design; use \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::list\u003c/code\u003e for per-skill rows.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch3 id=\"directoryprompts-filesystem-reader\" class=\"scroll-mt-20\"\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::*\u003c/code\u003e (filesystem reader)\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFunction ID\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eMetadata-only listing of every fs-backed prompt.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::get\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eFetch one prompt\u0026#39;s body + \u003ccode class=\"readme-inline-code\"\u003e{name, description, modified_at}\u003c/code\u003e. Plain shape, no envelope.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch3 id=\"engine-introspection-native\" class=\"scroll-mt-20\"\u003eEngine introspection (native)\u003c/h3\u003e\n\u003cp\u003eEngine introspection is no longer wrapped here. Call the engine\u0026#39;s\nnative ids directly — every one takes the same filters\n(\u003ccode class=\"readme-inline-code\"\u003eprefix\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003esearch\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003eworker\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003einclude_internal\u003c/code\u003e where applicable):\u003c/p\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFunction ID\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::functions::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eList functions registered with the engine.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::functions::info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eSingle-function detail: schemas, owning worker.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::triggers::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eList trigger TYPES (the providers, e.g. \u003ccode class=\"readme-inline-code\"\u003ehttp\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003ecron\u003c/code\u003e).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::triggers::info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eSingle trigger-type detail: configuration schema, return schema.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::registered-triggers::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eList trigger INSTANCES (subscriber rows).\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::registered-triggers::info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eSingle registered-trigger detail.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::workers::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eList workers with an open engine WS connection. Daemon-managed providers (\u003ccode class=\"readme-inline-code\"\u003eiii-http\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003eiii-cron\u003c/code\u003e, \u003ccode class=\"readme-inline-code\"\u003eiii-state\u003c/code\u003e) won\u0026#39;t appear — call \u003ccode class=\"readme-inline-code\"\u003eworker::list\u003c/code\u003e from the supervisor to see those.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003eengine::workers::info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eOne worker\u0026#39;s detail by \u003ccode class=\"readme-inline-code\"\u003ename\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003ch3 id=\"directoryregistry-workers-registry-http-proxy\" class=\"scroll-mt-20\"\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::registry::*\u003c/code\u003e (workers registry HTTP proxy)\u003c/h3\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eFunction ID\u003c/th\u003e\n\u003cth\u003eDescription\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::registry::workers::list\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eBrowse / search published workers in \u003ccode class=\"readme-inline-code\"\u003eapi.workers.iii.dev\u003c/code\u003e. Optional free-text \u003ccode class=\"readme-inline-code\"\u003esearch\u003c/code\u003e (matched fuzzy by \u003ccode class=\"readme-inline-code\"\u003epg_trgm\u003c/code\u003e) and opaque \u003ccode class=\"readme-inline-code\"\u003ecursor\u003c/code\u003e for pagination; page size is server-authored. Response is \u003ccode class=\"readme-inline-code\"\u003e{ workers: [...], pagination: { next_cursor, has_more, page_size } }\u003c/code\u003e. Shares the core \u003ccode class=\"readme-inline-code\"\u003ename\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003edescription\u003c/code\u003e / \u003ccode class=\"readme-inline-code\"\u003eversion\u003c/code\u003e fields with the engine\u0026#39;s \u003ccode class=\"readme-inline-code\"\u003eengine::workers::list\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::registry::workers::info\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eFull registry detail for one worker. Fans out two parallel registry calls — \u003ccode class=\"readme-inline-code\"\u003eGET /w/{slug}\u003c/code\u003e for the worker envelope (publication metadata + readme + functions + triggers) and \u003ccode class=\"readme-inline-code\"\u003eGET /w/{slug}/skills\u003c/code\u003e for the skills/prompts tree — and merges them into \u003ccode class=\"readme-inline-code\"\u003e{ worker, readme, api_reference, skills_tree }\u003c/code\u003e. The user-facing input still accepts \u003ccode class=\"readme-inline-code\"\u003eversion:\u003c/code\u003e (semver) or \u003ccode class=\"readme-inline-code\"\u003etag:\u003c/code\u003e (e.g. \u003ccode class=\"readme-inline-code\"\u003elatest\u003c/code\u003e); both go on the wire as \u003ccode class=\"readme-inline-code\"\u003e?version=…\u003c/code\u003e.\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eBoth \u003ccode class=\"readme-inline-code\"\u003edirectory::registry::*\u003c/code\u003e responses are cached in-process for\n\u003ccode class=\"readme-inline-code\"\u003eregistry_cache_ttl_ms\u003c/code\u003e (default 60s).\u003c/p\u003e\n\u003cp\u003eThere is \u003cstrong\u003eno\u003c/strong\u003e \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::register\u003c/code\u003e /\n\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::register\u003c/code\u003e — see\n\u003ca href=\"#migration-from-skills-v02x\"\u003eMigration\u003c/a\u003e below.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"custom-trigger-types\" class=\"scroll-mt-20\"\u003eCustom trigger types\u003c/h2\u003e\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth\u003eTrigger type\u003c/th\u003e\n\u003cth\u003eFires when\u003c/th\u003e\n\u003cth\u003ePayload to subscribers\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::skills::on-change\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAfter a \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::download\u003c/code\u003e that wrote at least one skill markdown file\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003e{ \"op\": \"download\", \"namespace\": \"\u003cns\u003e\", \"source\": \"repo\" | \"registry\" }\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003edirectory::prompts::on-change\u003c/code\u003e\u003c/td\u003e\n\u003ctd\u003eAfter a \u003ccode class=\"readme-inline-code\"\u003edirectory::skills::download\u003c/code\u003e that wrote at least one prompt markdown file\u003c/td\u003e\n\u003ctd\u003e\u003ccode class=\"readme-inline-code\"\u003e{ \"op\": \"download\", \"namespace\": \"\u003cns\u003e\", \"source\": \"repo\" | \"registry\" }\u003c/code\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\u003c/table\u003e\n\u003cp\u003eDispatches are fire-and-forget (Void), so the download path doesn\u0026#39;t\nblock on downstream latency.\u003c/p\u003e\n\u003chr\u003e\n\u003ch2 id=\"local-development-testing\" class=\"scroll-mt-20\"\u003eLocal development \u0026amp; testing\u003c/h2\u003e\n\u003ch3 id=\"run-from-source\" class=\"scroll-mt-20\"\u003eRun from source\u003c/h3\u003e\n\u003cpre class=\"shiki shiki-themes min-light vesper\" style=\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003ecargo\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e run\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --release\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --url\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e ws://127.0.0.1:49134\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --config\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e ./config.yaml\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003ch3 id=\"tests\" class=\"scroll-mt-20\"\u003eTests\u003c/h3\u003e\n\u003cpre class=\"shiki shiki-themes min-light vesper\" style=\"--shiki-light:#24292eff;--shiki-dark:#FFF;--shiki-light-bg:#ffffff;--shiki-dark-bg:#101010\" tabindex=\"0\"\u003e\u003ccode\u003e\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Fast, offline — exercises the pure helpers (markdown / id validators\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# / fs source) without needing an iii engine.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003ecargo\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e test\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --lib\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# Full BDD suite — requires an iii engine on ws://127.0.0.1:49134\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# (or III_ENGINE_WS_URL). The git-backed download scenarios spin up\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# a local fixture repo via `git init`; the registry-backed scenarios\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# point a wiremock server at the worker's `registry_url` config.\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003ecargo\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e test\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# One feature group at a time. Available tags:\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#C2C3C5;--shiki-dark:#8B8B8B94\"\u003e# @engine @read @prompts @download @download_repo @download_registry\u003c/span\u003e\u003c/span\u003e\n\u003cspan class=\"line\"\u003e\u003cspan style=\"--shiki-light:#6F42C1;--shiki-dark:#FFC799\"\u003ecargo\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e test\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --test\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e bdd\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e --tags\u003c/span\u003e\u003cspan style=\"--shiki-light:#2B5581;--shiki-dark:#99FFE4\"\u003e @download\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThe BDD harness lives under \u003ca href=\"tests/\"\u003etests/\u003c/a\u003e. Feature files mirror the\nmodules in \u003ca href=\"src/functions/\"\u003esrc/functions/\u003c/a\u003e. Step definitions under\n\u003ca href=\"tests/steps/\"\u003etests/steps/\u003c/a\u003e drive each feature through the same\n\u003ccode class=\"readme-inline-code\"\u003eiii.trigger\u003c/code\u003e path the production binary uses.\u003c/p\u003e\n"])</script><script>self.__next_f.push([1,"31:[\"$\",\"div\",null,{\"className\":\"overflow-hidden rounded-xl border border-line bg-background\",\"children\":[[\"$\",\"div\",null,{\"className\":\"bg-panel flex min-h-11 items-center justify-between gap-x-3 border-b border-line px-5 sm:px-6\",\"children\":[[\"$\",\"span\",null,{\"className\":\"truncate font-mono text-[10px] uppercase tracking-[0.08em] text-muted-foreground\",\"children\":\"README.md\"}],[\"$\",\"div\",null,{\"className\":\"shrink-0\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://api.workers.iii.dev/w/iii-directory/readme?version=0.8.1\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"inline-flex items-center gap-x-1.5 text-[12px] font-medium text-muted-foreground transition-colors duration-150 hover:text-foreground\",\"children\":[[\"$\",\"span\",null,{\"children\":\"Open as markdown\"}],[\"$\",\"$L17\",null,{\"ref\":\"$undefined\",\"iconNode\":\"$19:props:children:1:props:children:0:props:children:props:children:2:props:iconNode\",\"className\":\"lucide-arrow-up-right size-3.5\",\"aria-hidden\":true}]]}]}]]}],[\"$\",\"div\",null,{\"className\":\"readme-prose px-5 py-6 sm:px-8 sm:py-7\",\"dangerouslySetInnerHTML\":{\"__html\":\"$47\"}}]]}]\n"])</script></body></html>