Skip to content

Build with Your AI Coding Agent

Time: about 2 minutes to install.

Conductor Skills teaches your AI coding agent to create, run, monitor, and manage Conductor workflows and agents. Describe what you want in natural language and your agent builds it for you.

Works with Claude Code, Cursor, GitHub Copilot, Gemini CLI, Codex, Windsurf, Cline, Amazon Q, Aider, Roo Code, Amp, and OpenCode.

You can also point any AI assistant directly at these docs: Conductor for AI assistants is the canonical guidance page, /llms.txt is a machine-readable index, and /llms-full.txt is the complete documentation in a single file.

Prerequisite: a Conductor server

Your agent needs a server to talk to. If you don't have one, start a local server first:

npm install -g @conductor-oss/conductor-cli
conductor server start

You can also use the free hosted Developer Edition. See Connect to Conductor.

Install

One command detects the AI coding agents installed on your machine and installs Conductor Skills for each of them:

curl -sSL https://conductor-oss.github.io/conductor-skills/install.sh | bash -s -- --all
irm https://conductor-oss.github.io/conductor-skills/install.ps1 -OutFile install.ps1; .\install.ps1 -All

To install for a single agent, pass its flag with --agent — for example, Claude Code:

curl -sSL https://conductor-oss.github.io/conductor-skills/install.sh | bash -s -- --agent claude

Connect to your server

After installing, tell your agent where your Conductor server is:

Connect to my Conductor server at <YOUR-CLUSTER-URL>/api

Or set the environment variable directly:

export CONDUCTOR_SERVER_URL=<YOUR-CLUSTER-URL>/api

What your agent can do

The following are examples you can prompt your coding agent.

Capability Prompt Result
Create workflows "Create a workflow that calls the GitHub API and sends a Slack notification" Agent generates the full workflow definition with HTTP tasks, input expressions, and output parameters
Run workflows "Run my-workflow with input userId 123" Agent starts the execution and returns the execution ID
Monitor executions "Show me all failed workflows from the last hour" Agent searches executions by status, time, or correlation ID
Debug failures "What went wrong with execution abc-123?" Agent retrieves the execution, identifies the failed task, and shows the error
Retry and recover "Retry all failed executions of order-processing" Agent batch-retries failed executions
Manage lifecycle "Pause execution xyz-456" Agent pauses, resumes, terminates, or restarts workflows
Signal tasks "Approve the payment wait task in execution abc-123" Agent signals WAIT or HUMAN tasks to advance the workflow
Write workers "Write a Python worker that validates email addresses" Agent generates worker code using the appropriate SDK
Visualize "Show me a diagram of the order-processing workflow" Agent renders a Mermaid diagram of the workflow

Example walkthrough: Build an order processing system

This example shows how to build a Conductor application using natural language prompts to your coding agent.

Step 1: Create the workflow

Prompt:

Create an order processing workflow with these steps: validate the order, check inventory, charge payment, and fulfill the order. If payment fails, compensate by releasing the inventory hold. Add a HUMAN task before payment so a human can review high-value orders.

Your agent creates the workflow definition:

{
  "name": "order_processing",
  "description": "Process customer orders with inventory check, payment, and fulfillment",
  "version": 1,
  "schemaVersion": 2,
  "inputParameters": ["orderId", "customerId", "items", "totalAmount"],
  "tasks": [
    {
      "name": "validate_order",
      "taskReferenceName": "validate",
      "type": "HTTP",
      "inputParameters": {
        "http_request": {
          "uri": "https://api.example.com/orders/${workflow.input.orderId}/validate",
          "method": "POST",
          "body": { "items": "${workflow.input.items}" }
        }
      }
    },
    {
      "name": "check_inventory",
      "taskReferenceName": "inventory",
      "type": "HTTP",
      "inputParameters": {
        "http_request": {
          "uri": "https://api.example.com/inventory/hold",
          "method": "POST",
          "body": { "items": "${workflow.input.items}" }
        }
      }
    },
    {
      "name": "review_gate",
      "taskReferenceName": "review_gate",
      "type": "SWITCH",
      "evaluatorType": "graaljs",
      "expression": "$.totalAmount > 500 ? 'needs_review' : 'auto_approve'",
      "inputParameters": {
        "totalAmount": "${workflow.input.totalAmount}"
      },
      "decisionCases": {
        "needs_review": [
          {
            "name": "human_review",
            "taskReferenceName": "review",
            "type": "HUMAN",
            "inputParameters": {
              "orderId": "${workflow.input.orderId}",
              "amount": "${workflow.input.totalAmount}"
            }
          }
        ]
      },
      "defaultCase": []
    },
    {
      "name": "charge_payment",
      "taskReferenceName": "payment",
      "type": "HTTP",
      "inputParameters": {
        "http_request": {
          "uri": "https://api.example.com/payments/charge",
          "method": "POST",
          "body": {
            "customerId": "${workflow.input.customerId}",
            "amount": "${workflow.input.totalAmount}",
            "holdId": "${inventory.output.response.body.holdId}"
          }
        }
      }
    },
    {
      "name": "fulfill_order",
      "taskReferenceName": "fulfillment",
      "type": "HTTP",
      "inputParameters": {
        "http_request": {
          "uri": "https://api.example.com/fulfillment/ship",
          "method": "POST",
          "body": {
            "orderId": "${workflow.input.orderId}",
            "items": "${workflow.input.items}",
            "paymentId": "${payment.output.response.body.paymentId}"
          }
        }
      }
    }
  ],
  "failureWorkflow": "order_processing_compensation",
  "outputParameters": {
    "orderId": "${workflow.input.orderId}",
    "paymentId": "${payment.output.response.body.paymentId}",
    "trackingNumber": "${fulfillment.output.response.body.trackingNumber}"
  }
}

The agent should also register the workflow automatically.

Step 2: Create the compensation workflow

Prompt:

Create the compensation workflow for order_processing. It should release the inventory hold and refund the payment if it was charged.

Your agent creates order_processing_compensation with the reverse operations.

Step 3: Write a custom worker

Prompt:

Write a Python worker that validates orders by checking that all items exist and quantities are positive

Your agent generates the worker code using the Conductor Python SDK:

from conductor.client.worker.worker_task import worker_task

@worker_task(task_definition_name="validate_order")
def validate_order(task):
    items = task.input_data.get("items", [])

    for item in items:
        if not item.get("productId"):
            return {"valid": False, "reason": f"Missing productId"}
        if item.get("quantity", 0) <= 0:
            return {"valid": False, "reason": f"Invalid quantity for {item['productId']}"}

    return {"valid": True, "itemCount": len(items)}

Step 4: Run the workflow

Prompt:

Run order_processing with orderId ORD-001, customerId CUST-42, items [{productId: SKU-100, quantity: 2}], totalAmount 750

Output:

Workflow started.
- Execution ID: f8a2b3c4-d5e6-7890-abcd-ef1234567890
- Status: RUNNING
- The order total ($750) exceeds $500, so it's waiting for human review.

Step 5: Approve the review

Prompt:

Approve the review task in execution f8a2b3c4

Output:

Task signaled: review → COMPLETED
Workflow is now executing charge_payment.

Step 6: Monitor and debug

Prompt:

Show me all failed order_processing executions from today

Output:

Found 2 failed executions:
1. exec-abc — Failed at charge_payment (HTTP 402: Insufficient funds)
2. exec-def — Failed at check_inventory (HTTP 409: Item SKU-200 out of stock)

Prompt:

Retry exec-abc

Output:

Execution exec-abc retried. Status: RUNNING.

Step 7: Visualize

Prompt:

Show me a diagram of order_processing

Your agent renders:

%%{init: {'look': 'handDrawn', 'theme': 'base', 'themeVariables': {'primaryColor': '#eef2ff', 'primaryBorderColor': '#1e40af', 'primaryTextColor': '#1e293b', 'lineColor': '#1e3a8a', 'edgeLabelBackground': '#ffffff', 'clusterBkg': '#fbfcff', 'clusterBorder': '#2563eb', 'fontFamily': '-apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif', 'fontSize': '15px'}, 'flowchart': {'nodeSpacing': 50, 'rankSpacing': 58, 'padding': 14, 'htmlLabels': true, 'curve': 'basis'}}}%%
graph LR
    A[validate_order] --> B[check_inventory]
    B --> C{totalAmount > 500?}
    C -->|Yes| D[human_review WAIT]
    C -->|No| E[charge_payment]
    D --> E
    E --> F[fulfill_order]

Supported agents

Agent Install flag Global install Project install
Claude Code claude Native skill
Codex CLI codex ~/.codex/AGENTS.md AGENTS.md
Gemini CLI gemini ~/.gemini/GEMINI.md GEMINI.md
Cursor cursor ~/.cursor/skills/ .cursor/rules/
Windsurf windsurf ~/.codeium/windsurf/ .windsurfrules
GitHub Copilot copilot .github/copilot-instructions.md
Cline cline .clinerules
Amazon Q amazonq .amazonq/rules/
Aider aider ~/.conductor-skills/ .conductor-skills/
Roo Code roo ~/.roo/rules/ .roo/rules/
Amp amp ~/.config/AGENTS.md .amp/instructions.md
OpenCode opencode ~/.config/opencode/skills/ AGENTS.md

Upgrade

curl -sSL https://conductor-oss.github.io/conductor-skills/install.sh | bash -s -- --all --upgrade

Next steps

Next: build one yourself with Your First Workflow & Worker, or jump ahead to Your First Agent.