Handoff
🎨 The open-source Claude Design alternative. 🖥️ Local-first desktop app. 🖼️ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video — real files, HTML/PDF/PPTX/MP4 export. 🤖 Claude Code / Codex / Cursor / Gemini / OpenCode / Qwen & 20+ CLIs via BYOK.
npx -y skills add nexu-io/open-design --skill handoffAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Push the run's accepted artifact to a downstream collaboration surface (cli, other code agents, cloud, desktop) and stamp the artifact manifest with the export target.
SKILL.md
2.1 KB, as published. Nobody here has run it
Handoff
Spec §11.5.1 / §21.5: an OD run isn't done when the artifact
exists — it's done when the artifact reaches the surface the user
will keep iterating on. This atom is the "push it somewhere"
stage. It's the natural counterpart to diff-review.
Inputs
- The accepted artifact set (after
diff-reviewresolved withdecision: 'accept' | 'partial'). - The export target (one of the
surfaceenum values fromArtifactManifest.exportTargets[].surface).
Surfaces
| surface | typical follow-on |
|---|---|
cli | the user runs od files read against the project; no extra push |
desktop | open the project in the OD desktop app |
web | publish to the public marketplace via spec §13's od:// deep link |
docker | wrap the artifact into a self-contained container (calls the §15.4 image) |
github | open a PR via od plugin publish --to <catalog> |
figma | round-trip back into the figma-migration source file |
code-agent | hand off to Cursor / Claude Code / Codex sitting on top of the project cwd |
Output
Updates ArtifactManifest.exportTargets[] with a row per push,
appending — never replacing — so the artifact's distribution
history stays append-only.
Convergence
The atom completes when at least one exportTargets[] entry
matches the user's intent or the user explicitly skipped via the
confirmation GenUI surface.
Anti-patterns the prompt fragment forbids
- Pushing the artifact to a surface that wasn't on the user's intent list.
- Mutating
sourcePluginSnapshotId(it's immutable; the export trail is additive). - Treating
figmaas a no-op when the user's source was a Figma file — round-trip is the whole point of the figma-migration scenario.
Status
Implemented by the daemon runner in
apps/daemon/src/plugins/atoms/handoff.ts. It records provenance,
handoffKind, and export targets, then persists the updated artifact
manifest.