cd /news/ai-agents/show-hn-visual-composer-for-claude-cโ€ฆ ยท home โ€บ topics โ€บ ai-agents โ€บ article
[ARTICLE ยท art-14638] src=github.com pub= topic=ai-agents verified=true sentiment=โ†‘ positive

Show HN: Visual composer for Claude Code multi-agent workflows

A new visual desktop app called Claude Workflow Composer (CWC) allows Claude Code users to build multi-agent workflows by dragging agents onto a canvas, connecting them with handoff arrows, and exporting working agent files directly into their Claude installation โ€” eliminating the need for manual YAML editing in .md files. The tool, which runs locally via npx and opens in a browser at localhost:3579, generates orchestrator skills and agent configuration files for the approximately 115,000 Claude Code users who currently hand-wire agent pipelines without visual representation or sharing capabilities.

read6 min publishedMay 26, 2026

n8n for coding agent workflows. A visual desktop app for composing multi-agent Claude Code workflows โ€” drag agents onto a canvas, wire handoffs, attach skills, and export a working workflow directly into your Claude installation. No YAML editing required.

Built for the ~115k Claude Code users who are hand-wiring agent pipelines in

.md

files and wondering why there's no better way.

Building multi-agent workflows in Claude Code today means:

  • Hand-writing agent .md

files with YAML frontmatter - Manually authoring orchestrator skills with disable-model-invocation: true

and sequenced handoff prose - No visual representation of the pipeline before running it

  • No way to share a complete, working workflow with someone else
  • No way to discover what good pipelines look like

The authoring experience is entirely text-based. You can't see what you're building until you run it.

npx claude-cwc

Opens a browser at http://localhost:3579

. No code signing, no Gatekeeper friction โ€” paste it in a terminal and you're in.

npx claude-cwc stop    # Stop the server

Or from source:

npm run build && npm start
Drag agents onto a canvas
  โ†’ Connect them with handoff arrows (author trigger conditions)
  โ†’ Edit each agent's system prompt, tools, skills, and completion criteria
  โ†’ Preview every file that will be written before exporting
  โ†’ Export โ†’ writes agent .md files + orchestrator SKILL.md to ~/.claude/
  โ†’ Invoke the workflow by name in Claude Code

The exporter writes directly to ~/.claude/

(user-scoped) or .claude/

inside any project directory (project-scoped, version-controllable). Conflict detection ensures it never touches files it doesn't own.

Drag an existing agent from the sidebar (~/.claude/agents/

) onto the canvas to create a reference node โ€” it points to that agent file by slug rather than duplicating it. Drag from "New / Blank Agent" to create a bespoke node โ€” the exporter generates a new agent file for it.

Connect nodes by dragging between handles. Each connection becomes a handoff with a trigger description and optional context artifacts (files, text, JSON) passed between agents. Mark any node as a terminal (Complete

, Escalated

, or Aborted

) to define workflow end states.

Edit any node's completion criteria, tool access, skills, and system prompt in the Node Panel. The first node can also have a start trigger describing what initiates the workflow.

Real-time validation surfaces duplicate slugs, empty names, disconnected nodes, and missing completion criteria immediately in the top bar โ€” before you export.

Click Export in the top bar. Choose a target directory (~/.claude/

or any project's .claude/

). Review a preview of every file that will be written. Confirm to write.

The exporter:

Bespoke nodesโ†’ writes an agent.md

file with frontmatter (name, description, color, model, tools), system prompt, completion criteria, skill references, and an ownership comment.Reference nodesโ†’ writes nothing โ€” theexportedSlug

is set to the existing agent's slug so the orchestrator routes to it directly.Workflow skillโ†’ generates an orchestrator skill at.claude/skills/<workflow-slug>/SKILL.md

withdisable-model-invocation: true

. The orchestrator body is produced by BFS-traversing the node/edge graph into natural-language steps.Rename handlingโ†’ if a node was renamed, the old owned file is deleted and the new one is written.** Conflict detection**โ†’ every file carries an ownership HTML comment. Before overwriting or deleting, the exporter verifies ownership โ€” it never touches files created by other workflows or by hand.

From any Claude Code session, invoke the workflow by its skill name:

/workflow-name

The orchestrator skill delegates every implementation step to sub-agents via the Agent tool. Each step references an agent by name; Claude Code resolves it to the agent's .md

file and loads its system prompt, tools, and completion criteria.

POST /api/export/delete

scans every exported file, checks its ownership comment, and only removes files owned by the current workflow. Reference nodes have nothing to delete โ€” they didn't write any files.

Visual canvasโ€” React Flow with background grid, minimap, zoom controls, and drag-to-connect** Left sidebar**โ€” My Agents (searchable, draggable from~/.claude/agents/

) and Skills (searchable, draggable onto selected nodes)Right panelsโ€” Node Editor (name, description, criteria, tools, skills, system prompt, terminal type) and Edge Editor (trigger, label, context artifacts)Export modalโ€” target selection, full file preview, warning display before writing anything** Auto-save**โ€” 500ms debounced save to~/.cwc/workflows/

, no manual saving neededRecent filesโ€” home screen shows last 10 workflows, persisted to~/.cwc/recents.json

Markdown previewโ€” click any agent or skill card to view its source file** Open in editor**โ€” view any agent or skill file in your system editor** Claude Code detection**โ€” warns on startup if~/.claude/

is missing

Client (React + React Flow)       Server (Express :3579)
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ TemplatePicker           โ”‚ โ”€โ”€โ–บ  โ”‚ /api/workflows      โ”‚
โ”‚ TopBar                   โ”‚ โ—„โ”€โ”€  โ”‚ /api/recents        โ”‚
โ”‚ Sidebar (Agents/Skills)  โ”‚ โ”€โ”€โ–บ  โ”‚ /api/agents         โ”‚
โ”‚ Canvas (React Flow)      โ”‚ โ”€โ”€โ–บ  โ”‚ /api/skills         โ”‚
โ”‚ NodePanel / EdgePanel    โ”‚ โ”€โ”€โ–บ  โ”‚ /api/export         โ”‚
โ”‚ ExportFlow (modal)       โ”‚ โ”€โ”€โ–บ  โ”‚ /api/export/preview โ”‚
โ”‚ useWorkflow (reducer)    โ”‚      โ”‚ /api/export/delete  โ”‚
โ”‚ useAutoSave (debounced)  โ”‚      โ”‚ /api/health         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                          โ”‚
                                          โ–ผ
Core Library                     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                                  โ”‚ bfs.ts               โ”‚
                                  โ”‚ conflict-detector.ts โ”‚
                                  โ”‚ exporter.ts          โ”‚
                                  โ”‚ file-writer.ts       โ”‚
                                  โ”‚ prose-generator.ts   โ”‚
                                  โ”‚ skill-resolver.ts    โ”‚
                                  โ”‚ slugify.ts           โ”‚
                                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Storage:
  ~/.cwc/
    recents.json          Recent file paths (max 10)
    workflows/            Saved .cwc workflow files
    server.pid            PID of running server
  ~/.claude/
    agents/*.md           Agent definitions (read + written)
    skills/*/SKILL.md     User skills (read by sidebar)
    plugins/cache/...     Plugin skills (read by sidebar)
Concept Description
CwcFile
JSON file format (.cwc ) representing a full workflow: metadata, nodes, edges
Bespoke node
A node whose agent definition is authored in the UI โ€” exporter writes a new .md file
Reference node
A node with an agentRef slug pointing to an existing agent on disk โ€” exporter writes nothing
Handoff
A directed edge with a trigger description and optional context artifacts
Terminal edge
An edge with no target node โ€” marks a workflow end state (complete/escalated/aborted)
Ownership comment
HTML comment appended to every exported file: <!-- cwc:node:<id>:workflow:<id> -->
Orchestrator skill
The workflow skill generated on export โ€” a Claude Code skill that delegates via Agent tool
Conflict detection
Reads the ownership comment from a file on disk to determine if this workflow can safely overwrite/delete it

This tool has filesystem access to ~/.claude/

. Open source is the trust model โ€” no data leaves your machine, no cloud dependency. The local Node.js server is the entire backend. You can read every line of code that touches your files.

npm run dev:server          # Watch-mode server compilation
npm run dev:client          # Vite dev server with HMR (port 5173, proxies /api to :3579)
npm test                    # Run all tests (Vitest)
npm run typecheck           # Type-check server + client
npm run build               # Production build (server + client)

89 tests across 16 files covering:

BFS traversal: linear chains, back-edges, fan-out, multi-root, terminal edges** Prose generation**: start triggers, bold wrapping, context artifacts, Oxford comma, back-edge ordering** File writer**: frontmatter, skills block, ownership comments, workflow skill generation** Exporter**: full integration with real temp filesystem, rename cleanup, skill resolution, re-export, conflict warnings** Validation**: empty workflows, missing names, duplicate slugs, disconnected nodes** Graph layout**: horizontal spacing, fan-out vertical spacing, back-edge stability** HTTP endpoints**: all 12 API routes tested with real server instances** Slugify**: special chars, truncation, hyphen collapse, empty input** Conflict detection**: owned, foreign, absent, malformed states** Skill resolution**: namespaced (plugin) and non-namespaced (user) skill lookup

PRs welcome. The codebase is TypeScript end-to-end (client + server + core library). Run npm test

and npm run typecheck

before submitting.

If you build a workflow you're proud of, share the .cwc

file โ€” that's how the community library grows.

MIT

โ”€โ”€ more in #ai-agents 4 stories ยท sorted by recency
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain โ€” perfect for shipping the agent you just read about.

$git push zahid main
โ†’ Live at https://your-agent.zahid.host โœ“
Get free account โ†’ Pricing
from โ‚ฌ0/mo ยท no card required
LIVE [news/show-hn-visual-compoโ€ฆ] indexed:0 read:6min 2026-05-26 ยท โ€”