workflow-authoring — for Claude Code workflow-authoring, vroomly, community, for Claude Code, ide skills, WorkflowDefinition, pipeline-input, pipeline-output, closecode_list_workflow_node_types, closecode_suggest_compatible_nodes

v1.0.0

À propos de ce Skill

Scenario recommande : Ideal for AI agents that need workflow authoring skill. Resume localise : # Workflow Authoring Skill This skill teaches agents how to author CloseCode ADE workflows — visual flow-based automations built from typed nodes connected by compatible sockets. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

Fonctionnalités

Workflow Authoring Skill
Nodes — Processing units with typed input/output sockets
Edges — Connections between an output socket on one node and an input socket on another
Triggers — Binding nodes to external events (manual, cron, webhook, schedule)
Pipeline Interface — Contract nodes (pipeline-input / pipeline-output) that define a

# Core Topics

ez404-36 ez404-36
[0]
[0]
Updated: 4/30/2026

Killer-Skills Review

Decision support comes first. Repository text comes second.

Reference-Only Page Review Score: 10/11

This page remains useful for teams, but Killer-Skills treats it as reference material instead of a primary organic landing page.

Original recommendation layer Concrete use-case guidance Explicit limitations and caution Quality floor passed for review
Review Score
10/11
Quality Score
55
Canonical Locale
en
Detected Body Locale
en

Scenario recommande : Ideal for AI agents that need workflow authoring skill. Resume localise : # Workflow Authoring Skill This skill teaches agents how to author CloseCode ADE workflows — visual flow-based automations built from typed nodes connected by compatible sockets. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

Pourquoi utiliser cette compétence

Recommandation : workflow-authoring helps agents workflow authoring skill. Workflow Authoring Skill This skill teaches agents how to author CloseCode ADE workflows — visual flow-based automations built from typed nodes

Meilleur pour

Scenario recommande : Ideal for AI agents that need workflow authoring skill.

Cas d'utilisation exploitables for workflow-authoring

Cas d'usage : Applying Workflow Authoring Skill
Cas d'usage : Applying Nodes — Processing units with typed input/output sockets
Cas d'usage : Applying Edges — Connections between an output socket on one node and an input socket on another

! Sécurité et Limitations

  • Limitation : Requires repository-specific context from the skill documentation
  • Limitation : Works best when the underlying tools and dependencies are already configured

Why this page is reference-only

  • - Current locale does not satisfy the locale-governance contract.

Source Boundary

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

After The Review

Decide The Next Action Before You Keep Reading Repository Material

Killer-Skills should not stop at opening repository instructions. It should help you decide whether to install this skill, when to cross-check against trusted collections, and when to move into workflow rollout.

Labs Demo

Browser Sandbox Environment

⚡️ Ready to unleash?

Experience this Agent in a zero-setup browser environment powered by WebContainers. No installation required.

Boot Container Sandbox

FAQ & Installation Steps

These questions and steps mirror the structured data on this page for better search understanding.

? Frequently Asked Questions

What is workflow-authoring?

Scenario recommande : Ideal for AI agents that need workflow authoring skill. Resume localise : # Workflow Authoring Skill This skill teaches agents how to author CloseCode ADE workflows — visual flow-based automations built from typed nodes connected by compatible sockets. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

How do I install workflow-authoring?

Run the command: npx killer-skills add ez404-36/vroomly/workflow-authoring. It works with Cursor, Windsurf, VS Code, Claude Code, and 19+ other IDEs.

What are the use cases for workflow-authoring?

Key use cases include: Cas d'usage : Applying Workflow Authoring Skill, Cas d'usage : Applying Nodes — Processing units with typed input/output sockets, Cas d'usage : Applying Edges — Connections between an output socket on one node and an input socket on another.

Which IDEs are compatible with workflow-authoring?

This skill is compatible with Cursor, Windsurf, VS Code, Trae, Claude Code, OpenClaw, Aider, Codex, OpenCode, Goose, Cline, Roo Code, Kiro, Augment Code, Continue, GitHub Copilot, Sourcegraph Cody, and Amazon Q Developer. Use the Killer-Skills CLI for universal one-command installation.

Are there any limitations for workflow-authoring?

Limitation : Requires repository-specific context from the skill documentation. Limitation : Works best when the underlying tools and dependencies are already configured.

How To Install

  1. 1. Open your terminal

    Open the terminal or command line in your project directory.

  2. 2. Run the install command

    Run: npx killer-skills add ez404-36/vroomly/workflow-authoring. The CLI will automatically detect your IDE or AI agent and configure the skill.

  3. 3. Start using the skill

    The skill is now active. Your AI agent can use workflow-authoring immediately in the current project.

! Reference-Only Mode

This page remains useful for installation and reference, but Killer-Skills no longer treats it as a primary indexable landing page. Read the review above before relying on the upstream repository instructions.

Upstream Repository Material

The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.

Upstream Source

workflow-authoring

Install workflow-authoring, an AI agent skill for AI agent workflows and automation. Review the use cases, limitations, and setup path before rollout.

SKILL.md
Readonly
Upstream Repository Material
The section below is imported from the upstream repository and should be treated as secondary evidence. Use the Killer-Skills review above as the primary layer for fit, risk, and installation decisions.
Supporting Evidence

Workflow Authoring Skill

This skill teaches agents how to author CloseCode ADE workflows — visual flow-based automations built from typed nodes connected by compatible sockets.

1. Overview

A workflow is a directed graph of typed nodes connected by edges. Workflows are persisted as WorkflowDefinition objects with nodes, edges, triggers, and settings.

Key concepts:

  • Nodes — Processing units with typed input/output sockets
  • Edges — Connections between an output socket on one node and an input socket on another
  • Triggers — Binding nodes to external events (manual, cron, webhook, schedule)
  • Pipeline Interface — Contract nodes (pipeline-input / pipeline-output) that define a sub-workflow's external API

2. MCP Tools Reference

Use these closecode MCP tools (activate closecode tools first):

ToolPurpose
closecode_list_workflow_node_typesDiscover all available node kinds with their I/O sockets
closecode_suggest_compatible_nodesFind nodes compatible with a given socket
closecode_create_workflowCreate a new workflow with nodes and edges
closecode_update_workflowUpdate existing workflow (partial)
closecode_validate_workflowValidate structure (socket compatibility, cycles, required inputs)
closecode_run_workflowTrigger a workflow run (returns runId)
closecode_get_workflow_runCheck run status and per-node results
closecode_list_workflowsList all workflows for a project
closecode_get_workflowGet full workflow definition
closecode_delete_workflowDelete a workflow
closecode_cancel_workflow_runCancel an in-flight run
closecode_get_workflow_runsPaginated run history

3. Node Kind Catalog

All built-in nodes use the kind format builtin.<category>.<name>.

Triggers (category: trigger)

KindLabelInputsOutputs
builtin.trigger.manualManual Triggerfire (trigger)
builtin.trigger.cronCron Triggerfire (trigger)
builtin.trigger.webhookWebhook Triggerfire (trigger), body (json), headers (json), method (string)
builtin.trigger.eventEvent TriggereventPattern (string)fire (trigger), payload (json)
builtin.trigger.scheduleSchedule Triggerfire (trigger), scheduleId (string), scheduleName (string), projectId (string), triggeredAt (string)
builtin.trigger.dialog-messageDialog Message Triggerfire (trigger), + dialog/message fields
builtin.trigger.task-completedTask Completed Triggerfire (trigger), taskName (string), dialogId (string), status (string), result (task-result)
builtin.trigger.task-failedTask Failed Triggerfire (trigger), + task error fields
builtin.trigger.calendar-upcomingCalendar Upcoming Triggerfire (trigger), + event fields
builtin.trigger.file-changedFile Changed Triggerfire (trigger), + file fields

Agent (category: agent)

KindLabelInputsOutputs
builtin.agent.invokeInvoke Agentfire (trigger), prompt (string, required)message (message), text (string), done (trigger)
builtin.task.runRun Taskfire (trigger)result (task-result), message (string), done (trigger)

Control (category: control)

KindLabelInputsOutputs
builtin.control.conditionConditionin (any, required), test (boolean)true (any), false (any)
builtin.control.switchSwitchin (any, required)case1..case4 (any), default (any)
builtin.control.mergeMergein1..in3 (any)out (any), done (trigger)
builtin.control.waitWaitfire (trigger), in (any)done (trigger), out (any)
builtin.control.sub-workflowSub-workflowstart (trigger, required)done (trigger) + dynamic from pipeline
builtin.control.sub-workflow-fire-and-forgetSub-workflow (fire & forget)start (trigger, required)done (trigger)

Data (category: data)

KindLabelInputsOutputs
builtin.data.setSet Valuefire (trigger)value (json), done (trigger)
builtin.data.transformTransformin (any, required)out (any), done (trigger)
builtin.data.json-parseJSON Parsein (string, required)out (json), done (trigger)
builtin.data.json-stringifyJSON Stringifyin (json, required)out (string), done (trigger)
builtin.data.templateTemplatedata (json, required)out (string), done (trigger)
builtin.data.http-requestHTTP Requestfire (trigger)body (json), status (number), done (trigger)
builtin.data.project-searchProject Searchfire (trigger)results (json), count (number), done (trigger)
builtin.data.project-analyzeProject Analyzefire (trigger)analysis (json), done (trigger)

I/O (category: io)

KindLabelInputsOutputs
builtin.io.read-fileRead Filefire (trigger)content (string), done (trigger)
builtin.io.write-fileWrite Filefire (trigger), content (string, required)done (trigger)
builtin.io.cli-executeCLI Executefire (trigger)stdout (string), exitCode (number), done (trigger)
builtin.io.service-callService Callbody (json)response (json), ok (boolean), done (trigger)

Interaction (category: io / interaction)

KindLabelInputsOutputs
builtin.interaction.human-inputHuman Inputtrigger (trigger, required), message (string)response (string), selectedAction (string), done (trigger)

Notify (category: notify)

KindLabelInputsOutputs
builtin.notify.logLog Notifyfire (trigger), text (string)done (trigger)

Chat (category: chat)

KindLabelInputsOutputs
builtin.chat.postPost Chat Messagefire (trigger), text (string, required), attachments (json)message (json), id (string), channelId (string), done (trigger)
builtin.chat.pushSend Push Notificationtitle (string, required), body (string, required), data (json)sent (boolean), done (trigger)

Git (category: git)

KindLabelInputsOutputs
builtin.git.checkoutGit Checkoutfire (trigger)done (trigger)
builtin.git.stageGit Stagefire (trigger)done (trigger)
builtin.git.commitGit Commitfire (trigger)done (trigger)
builtin.git.pushGit Pushfire (trigger)done (trigger)
builtin.git.create-branchCreate Branchfire (trigger)done (trigger)

Docs (category: docs)

KindLabelInputsOutputs
builtin.docs.createCreate Documentfire (trigger)doc (json), id (string), done (trigger)
builtin.docs.updateUpdate Documentfire (trigger)doc (json), done (trigger)
builtin.docs.todo-createCreate Todofire (trigger)todo (json), id (string), done (trigger)

Ops (category: ops)

KindLabelInputsOutputs
builtin.ops.container-execContainer Execfire (trigger)stdout (string), done (trigger)
builtin.ops.container-restartContainer Restartfire (trigger)done (trigger)
builtin.ops.env-health-checkEnv Health Checkfire (trigger)status (string), healthy (boolean), checks (json), done (trigger)

Calendar (category: io / calendar)

KindLabelInputsOutputs
builtin.calendar.query-eventsQuery Calendar Eventsfire (trigger)events (json), count (number), done (trigger)

Pipeline (category: pipeline)

KindLabelInputsOutputs
builtin.pipeline.inputPipeline InputDynamic (from pipeline interface)
builtin.pipeline.outputPipeline OutputDynamic (from pipeline interface)

Entity (category: entity)

KindLabelInputsOutputs
builtin.entity.userUserref (entity-ref)
builtin.entity.roleRoleref (entity-ref)

4. Socket Types & Compatibility

Socket Types

TypeDescriptionShape
triggerSignal-only, no payload. Fires when upstream completesDiamond
anyUntyped passthrough, connects to anythingCircle
stringPlain textCircle
numberNumeric (int or float)Circle
jsonStructured data (object, array, primitive)Circle
messageLLM/dialog messageHexagon
task-resultTask run outputHexagon
binaryRaw file/blob contentCircle
booleanTrue/falseSquare
file-pathPath relative to project rootSquare
entity-refReference to a project entity (user, role)Diamond

Compatibility Rules

isCompatible(from, to) determines if output type from can connect to input type to:

  1. Same type → always allowed
  2. any on either side → allowed
  3. Scalar widening to jsonstring, number, boolean, entity-ref all widen to json
  4. Everything else → rejected (use a Transform node for explicit conversion)
// Quick reference:
string    → json ✓    json → string    ✗ (use transform)
number    → json ✓    json → number    ✗ (use transform)
boolean   → json ✓    json → boolean   ✗ (use transform)
entity-ref → json ✓
trigger   → trigger ✓ (flow control only)
any       → anything ✓
anything  → any ✓

5. Workflow Creation Pattern

Step-by-step

  1. Discover available nodes:

    closecode_list_workflow_node_types()
    

    Returns all kinds with their input/output socket definitions.

  2. Plan the flow: Start with a trigger → add processing nodes → add output nodes.

  3. Find compatible nodes for a specific socket:

    closecode_suggest_compatible_nodes(
      sourceNodeKind: "builtin.trigger.manual",
      sourceHandleId: "fire",
      direction: "downstream"
    )
    
  4. Create the workflow with nodes and edges:

    json
    1{ 2 "title": "My Workflow", 3 "nodes": [ 4 { "id": "t1", "kind": "builtin.trigger.manual", "position": { "x": 0, "y": 0 }, "config": {} }, 5 { "id": "n1", "kind": "builtin.io.read-file", "position": { "x": 300, "y": 0 }, "config": { "path": "input.txt" } }, 6 { "id": "n2", "kind": "builtin.notify.log", "position": { "x": 600, "y": 0 }, "config": {} } 7 ], 8 "edges": [ 9 { "id": "e1", "source": "t1", "sourceHandle": "fire", "target": "n1", "targetHandle": "fire" }, 10 { "id": "e2", "source": "n1", "sourceHandle": "content", "target": "n2", "targetHandle": "text" }, 11 { "id": "e3", "source": "n1", "sourceHandle": "done", "target": "n2", "targetHandle": "fire" } 12 ] 13}
  5. Validate:

    closecode_validate_workflow(workflowId: "my-workflow")
    
  6. Run:

    closecode_run_workflow(workflowId: "my-workflow")
    
  7. Check results:

    closecode_get_workflow_run(runId: "...")
    

Edge Format

Each edge connects one output to one input:

json
1{ 2 "id": "unique-edge-id", 3 "source": "source-node-id", 4 "sourceHandle": "output-socket-id", 5 "target": "target-node-id", 6 "targetHandle": "input-socket-id" 7}

6. Common Patterns

Approval Workflow (Human-in-the-Loop)

json
1{ 2 "title": "Approval Workflow", 3 "nodes": [ 4 { "id": "trigger", "kind": "builtin.trigger.webhook", "position": { "x": 0, "y": 0 }, "config": {} }, 5 { "id": "ask", "kind": "builtin.interaction.human-input", "position": { "x": 300, "y": 0 }, "config": { 6 "message": "Approve this request?", 7 "nextActions": [ 8 { "label": "Approve", "value": "approved" }, 9 { "label": "Reject", "value": "rejected" } 10 ] 11 }}, 12 { "id": "branch", "kind": "builtin.control.condition", "position": { "x": 600, "y": 0 }, "config": { 13 "expression": "inputs.selectedAction === 'approved'" 14 }}, 15 { "id": "approved", "kind": "builtin.notify.log", "position": { "x": 900, "y": -100 }, "config": {} }, 16 { "id": "rejected", "kind": "builtin.notify.log", "position": { "x": 900, "y": 100 }, "config": {} } 17 ], 18 "edges": [ 19 { "id": "e1", "source": "trigger", "sourceHandle": "fire", "target": "ask", "targetHandle": "trigger" }, 20 { "id": "e2", "source": "ask", "sourceHandle": "done", "target": "branch", "targetHandle": "in" }, 21 { "id": "e3", "source": "ask", "sourceHandle": "selectedAction", "target": "branch", "targetHandle": "test" }, 22 { "id": "e4", "source": "branch", "sourceHandle": "true", "target": "approved", "targetHandle": "fire" }, 23 { "id": "e5", "source": "branch", "sourceHandle": "false", "target": "rejected", "targetHandle": "fire" } 24 ] 25}

Agent Pipeline

Trigger → Agent A → Agent B → Output:

json
1{ 2 "title": "Agent Pipeline", 3 "nodes": [ 4 { "id": "t", "kind": "builtin.trigger.manual", "position": { "x": 0, "y": 0 }, "config": {} }, 5 { "id": "a1", "kind": "builtin.agent.invoke", "position": { "x": 300, "y": 0 }, "config": { "agent": "planner", "prompt": "Analyze: {{inputs.prompt}}" } }, 6 { "id": "a2", "kind": "builtin.agent.invoke", "position": { "x": 600, "y": 0 }, "config": { "agent": "coder", "prompt": "Implement based on: " } }, 7 { "id": "log", "kind": "builtin.notify.log", "position": { "x": 900, "y": 0 }, "config": {} } 8 ], 9 "edges": [ 10 { "id": "e1", "source": "t", "sourceHandle": "fire", "target": "a1", "targetHandle": "fire" }, 11 { "id": "e2", "source": "a1", "sourceHandle": "done", "target": "a2", "targetHandle": "fire" }, 12 { "id": "e3", "source": "a1", "sourceHandle": "text", "target": "a2", "targetHandle": "prompt" }, 13 { "id": "e4", "source": "a2", "sourceHandle": "done", "target": "log", "targetHandle": "fire" }, 14 { "id": "e5", "source": "a2", "sourceHandle": "text", "target": "log", "targetHandle": "text" } 15 ] 16}

Sub-workflow Delegation

Use builtin.control.sub-workflow to call another workflow. The target workflow should have pipeline-input and pipeline-output nodes to define its contract.

Entity-based Routing

Connect entity.user or entity.role outputs to nodes that accept entity-ref or json inputs to route messages or tasks to specific people/roles.

7. Tips & Best Practices

  • Always include a trigger node — A workflow without a trigger cannot run
  • Separate data and trigger edges — Most nodes need both a trigger edge (for execution order) and data edges (for values)
  • Use human-input for human-in-the-loop — Pauses execution until a human responds
  • Use sub-workflow for reusable flows — Encapsulate common patterns; pipeline interfaces define contracts
  • Use validate before run — Catches socket mismatches, missing required inputs, and cycles
  • Position nodes for readability — Space nodes ~300px apart horizontally
  • Use descriptive node labels — Set label on nodes for clarity in the editor

8. Error Prevention

Socket Mismatches

Use closecode_suggest_compatible_nodes before creating edges. Common mistake: connecting a json output to a string input (rejected — use json-stringify first).

Missing Required Inputs

Required input sockets (required: true) must be connected. Validation catches this.

Cycle Detection

Workflows must be a DAG (directed acyclic graph). Validation detects and reports cycles.

Node Config

Each node has a config object specific to its kind. Check closecode_list_workflow_node_types for configSchema. Missing required config fields cause runtime errors.

Compétences associées

Looking for an alternative to workflow-authoring or another community skill for your workflow? Explore these related open-source skills.

Voir tout

openclaw-release-maintainer

Logo of openclaw
openclaw

Resume localise : 🦞 # OpenClaw Release Maintainer Use this skill for release and publish-time workflow. It covers ai, assistant, crustacean workflows. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

widget-generator

Logo of f
f

Resume localise : Generate customizable widget plugins for the prompts.chat feed system # Widget Generator Skill This skill guides creation of widget plugins for prompts.chat . It covers ai, artificial-intelligence, awesome-list workflows. This AI agent skill supports Claude Code, Cursor, and

flags

Logo of vercel
vercel

Resume localise : The React Framework # Feature Flags Use this skill when adding or changing framework feature flags in Next.js internals. It covers blog, browser, compiler workflows. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

138.4k
0
Navigateur

pr-review

Logo of pytorch
pytorch

Resume localise : Usage Modes No Argument If the user invokes /pr-review with no arguments, do not perform a review . It covers autograd, deep-learning, gpu workflows. This AI agent skill supports Claude Code, Cursor, and Windsurf workflows.

98.6k
0
Développeur