No second-class extension API.
Built-ins and community skills share one node contract — typed in, a body, typed out. A skill you write isn't bolted on; it is a node.
Every node is a skill. Publish one and it becomes a node anyone can drop on the canvas — so the palette grows every time the community ships.
Every built-in — Investigate, Plan, Create, Review, Deploy — is just a skill: a named unit of work with typed inputs, a prompt-or-tool body, and typed outputs.
Write your own, publish it, and it lands in the palette as a first-class node — indistinguishable from the built-ins. Drag it onto the canvas, wire it in, press Run. When someone else publishes one, it shows up in your palette too.
1name: "Sentiment Scan" 2author: "@mira" 3kind: node # drops on the canvas 4inputs: 5 - text: string # typed, wired upstream 6model: "per-node · hotswappable" 7body: "Classify tone → -1..1 + label" 8outputs: 9 - score: number 10 - label: string # flows downstream
Same contract as a built-in node: typed in, typed out. The runtime treats Sentiment Scan exactly like Investigate or Review.
Publish a skill from the registry (left) → it enters your palette (middle) → drop it into the chain (right). Every published skill is a node you can wire in.
Click to publish → adds to your palette.
Empty.
Publish a skill from the registry and it appears here as a draggable node.
Tip: publish a skill, then drag — or tap — its palette node onto the canvas. Keyboard: focus a node, press Enter.
A skill is a small, version-controlled artifact. The runtime resolves it into a node type at load time — so publishing is just shipping a file.
Declare a name, typed inputs, a prompt-or-tool body, and typed outputs. The body can call models, tools, or shell out — same primitives the built-ins use.
Push the skill to the shared registry — or just drop the file in your project. No build step, no plugin API. It is immediately resolvable.
The skill appears in the palette as a first-class node, indistinguishable from Plan or Create. Per-node model hotswap applies.
Drag it onto the graph, wire its typed ports into a chain, and press Run. Its output — and control — flows downstream like any other node.
No second-class extension API.
Built-ins and community skills share one node contract — typed in, a body, typed out. A skill you write isn't bolted on; it is a node.
Every publish grows what everyone can build.
When someone ships PDF Extract or SQL Query, it lands in your palette too — the canvas compounds with the ecosystem, not the roadmap.
Wire it like any node.
Typed ports mean a community skill snaps into Parallel, Merge, and Review just like the built-ins.
Per-node, even for skills.
A published skill inherits the same per-node provider + model control — run it on GPT, Claude, or a local model.
Yours to fork.
Skills are just files in your repo. Self-host the registry, audit every body, keep it air-gapped — nothing leaves your network.