flowchart-generator

Generate flowcharts from YAML/JSON definitions or Python DSL. Supports standard flowchart shapes, swimlanes, and PNG/SVG/PDF export.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "flowchart-generator" with this command: npx skills add dkyazzentwatwa/chatgpt-skills/dkyazzentwatwa-chatgpt-skills-flowchart-generator

Flowchart Generator

Create professional flowcharts from structured process definitions. Supports standard flowchart symbols (start/end, process, decision, I/O), swimlanes for multi-actor processes, and multiple export formats.

Quick Start

from scripts.flowchart_gen import FlowchartGenerator

# Using Python DSL
flow = FlowchartGenerator()
flow.start("Start")
flow.process("Step 1", id="s1")
flow.decision("Check?", id="d1")
flow.process("Yes Path", id="yes")
flow.process("No Path", id="no")
flow.end("End")

flow.connect("Start", "s1")
flow.connect("s1", "d1")
flow.connect("d1", "yes", label="Yes")
flow.connect("d1", "no", label="No")
flow.connect("yes", "End")
flow.connect("no", "End")

flow.generate().save("flowchart.png")

# From YAML file
flow = FlowchartGenerator()
flow.from_yaml("process.yaml")
flow.generate().save("process.png")

Features

  • Multiple Input Sources: Python DSL, YAML, or JSON
  • Standard Shapes: Start/End, Process, Decision, Input/Output, Connector
  • Swimlanes: Multi-actor/department process diagrams
  • Styling Presets: Business, technical, minimal themes
  • Layout Options: Top-bottom, left-right, and more
  • Export Formats: PNG, SVG, PDF, DOT

API Reference

Initialization

flow = FlowchartGenerator()

Node Creation (DSL)

# Start node (oval/ellipse)
flow.start("Start")
flow.start("Begin Process", id="start1")

# End node (oval/ellipse)
flow.end("End")
flow.end("Process Complete", id="end1")

# Process node (rectangle)
flow.process("Process Data")
flow.process("Calculate Total", id="calc")

# Decision node (diamond)
flow.decision("Valid?", id="check")
flow.decision("Amount > 100?", id="d1")

# Input/Output node (parallelogram)
flow.input_output("User Input", id="input1")
flow.input_output("Display Result", id="output1")

# Connector (circle) - for complex flows
flow.connector("A", id="conn_a")

Connections

# Basic connection
flow.connect("start", "process1")

# With label
flow.connect("decision1", "yes_path", label="Yes")
flow.connect("decision1", "no_path", label="No")

# Multiple connections from decision
flow.decision("Approved?", id="d1")
flow.connect("d1", "approve_path", label="Yes")
flow.connect("d1", "reject_path", label="No")

Loading from Files

# From YAML
flow.from_yaml("process.yaml")

# From JSON
flow.from_json("process.json")

Swimlanes

# Define swimlanes
flow.swimlanes([
    "Customer",
    "Sales Team",
    "Fulfillment"
])

# Add nodes to specific lanes
flow.process("Place Order", id="order", lane="Customer")
flow.process("Review Order", id="review", lane="Sales Team")
flow.process("Ship Order", id="ship", lane="Fulfillment")

Styling

# Style presets
flow.style("business")   # Professional blue theme
flow.style("technical")  # Gray technical theme
flow.style("minimal")    # Clean minimal theme
flow.style("colorful")   # Vibrant colors

# Layout direction
flow.layout("TB")  # Top to Bottom (default)
flow.layout("LR")  # Left to Right
flow.layout("BT")  # Bottom to Top
flow.layout("RL")  # Right to Left

# Custom colors
flow.node_colors({
    'start': '#2ecc71',
    'end': '#e74c3c',
    'process': '#3498db',
    'decision': '#f39c12',
    'io': '#9b59b6'
})

Generation and Export

# Generate
flow.generate()

# Save
flow.save("chart.png")
flow.save("chart.svg")
flow.save("chart.pdf")
flow.save("chart.dot")  # GraphViz source

# Get DOT source
dot_source = flow.to_dot()

# Show in viewer
flow.show()

Data Formats

YAML Format

# process.yaml
title: Order Processing
layout: TB
style: business

nodes:
  - id: start
    type: start
    label: Start

  - id: receive
    type: process
    label: Receive Order

  - id: check_stock
    type: decision
    label: In Stock?

  - id: fulfill
    type: process
    label: Fulfill Order

  - id: backorder
    type: process
    label: Create Backorder

  - id: notify
    type: io
    label: Notify Customer

  - id: end
    type: end
    label: End

connections:
  - from: start
    to: receive

  - from: receive
    to: check_stock

  - from: check_stock
    to: fulfill
    label: "Yes"

  - from: check_stock
    to: backorder
    label: "No"

  - from: fulfill
    to: notify

  - from: backorder
    to: notify

  - from: notify
    to: end

JSON Format

{
  "title": "Order Processing",
  "layout": "TB",
  "style": "business",
  "nodes": [
    {"id": "start", "type": "start", "label": "Start"},
    {"id": "process1", "type": "process", "label": "Process Data"},
    {"id": "decision1", "type": "decision", "label": "Valid?"},
    {"id": "end", "type": "end", "label": "End"}
  ],
  "connections": [
    {"from": "start", "to": "process1"},
    {"from": "process1", "to": "decision1"},
    {"from": "decision1", "to": "end", "label": "Yes"}
  ]
}

Swimlane YAML Format

title: Customer Service Process
layout: LR
swimlanes:
  - Customer
  - Support Agent
  - Technical Team

nodes:
  - id: submit
    type: start
    label: Submit Ticket
    lane: Customer

  - id: review
    type: process
    label: Review Ticket
    lane: Support Agent

  - id: technical
    type: decision
    label: Technical Issue?
    lane: Support Agent

  - id: escalate
    type: process
    label: Escalate
    lane: Technical Team

  - id: resolve
    type: process
    label: Resolve
    lane: Support Agent

  - id: close
    type: end
    label: Close Ticket
    lane: Customer

connections:
  - from: submit
    to: review
  - from: review
    to: technical
  - from: technical
    to: escalate
    label: "Yes"
  - from: technical
    to: resolve
    label: "No"
  - from: escalate
    to: resolve
  - from: resolve
    to: close

CLI Usage

# From YAML
python flowchart_gen.py --input process.yaml --output flowchart.png

# From JSON with custom layout
python flowchart_gen.py --input process.json --layout LR --output flow.png

# With style preset
python flowchart_gen.py --input workflow.yaml --style business --output workflow.svg

# High resolution
python flowchart_gen.py --input process.yaml --output chart.png --dpi 300

CLI Arguments

ArgumentDescriptionDefault
--inputInput YAML or JSON fileRequired
--outputOutput file pathflowchart.png
--layoutLayout direction (TB, LR, BT, RL)TB
--styleStyle presetbusiness
--dpiImage resolution96

Examples

Simple Linear Flow

flow = FlowchartGenerator()
flow.start("Start")
flow.process("Step 1", id="s1")
flow.process("Step 2", id="s2")
flow.process("Step 3", id="s3")
flow.end("End")

flow.connect("Start", "s1")
flow.connect("s1", "s2")
flow.connect("s2", "s3")
flow.connect("s3", "End")

flow.generate().save("linear.png")

Decision Flow

flow = FlowchartGenerator()

flow.start("Start")
flow.input_output("Get Input", id="input")
flow.decision("Valid?", id="check")
flow.process("Process", id="proc")
flow.input_output("Show Error", id="error")
flow.end("End")

flow.connect("Start", "input")
flow.connect("input", "check")
flow.connect("check", "proc", label="Yes")
flow.connect("check", "error", label="No")
flow.connect("proc", "End")
flow.connect("error", "input")  # Loop back

flow.style("business")
flow.generate().save("decision_flow.png")

Login Process

flow = FlowchartGenerator()

flow.start("Start")
flow.input_output("Enter Credentials", id="creds")
flow.process("Validate", id="validate")
flow.decision("Valid?", id="check")
flow.decision("Attempts < 3?", id="attempts")
flow.process("Login Success", id="success")
flow.input_output("Show Error", id="error")
flow.process("Lock Account", id="lock")
flow.end("End")

flow.connect("Start", "creds")
flow.connect("creds", "validate")
flow.connect("validate", "check")
flow.connect("check", "success", label="Yes")
flow.connect("check", "attempts", label="No")
flow.connect("attempts", "creds", label="Yes")
flow.connect("attempts", "lock", label="No")
flow.connect("success", "End")
flow.connect("lock", "End")

flow.layout("TB")
flow.style("technical")
flow.generate().save("login_flow.png")

Order Processing with Swimlanes

flow = FlowchartGenerator()

flow.swimlanes(["Customer", "System", "Warehouse"])

flow.start("Order Placed", id="start", lane="Customer")
flow.process("Validate Order", id="validate", lane="System")
flow.decision("In Stock?", id="stock", lane="System")
flow.process("Reserve Items", id="reserve", lane="Warehouse")
flow.process("Backorder", id="backorder", lane="Warehouse")
flow.process("Process Payment", id="payment", lane="System")
flow.process("Ship Order", id="ship", lane="Warehouse")
flow.end("Complete", id="end", lane="Customer")

flow.connect("start", "validate")
flow.connect("validate", "stock")
flow.connect("stock", "reserve", label="Yes")
flow.connect("stock", "backorder", label="No")
flow.connect("reserve", "payment")
flow.connect("backorder", "payment")
flow.connect("payment", "ship")
flow.connect("ship", "end")

flow.layout("TB")
flow.generate().save("order_swimlane.png")

Node Shapes

TypeShapeUsage
startOval/EllipseBeginning of flow
endOval/EllipseEnd of flow
processRectangleAction or step
decisionDiamondYes/No branch
ioParallelogramInput/Output
connectorCirclePage/flow connector

Style Presets

PresetDescription
businessProfessional blue tones
technicalGray/silver technical look
minimalBlack and white, clean
colorfulVibrant multi-color

Dependencies

graphviz>=0.20.0
PyYAML>=6.0

System Requirement: Graphviz must be installed on the system.

  • macOS: brew install graphviz
  • Ubuntu: apt-get install graphviz
  • Windows: Download from graphviz.org

Limitations

  • Complex nested decisions may require manual layout adjustments
  • Swimlane rendering depends on graphviz subgraph support
  • Very large flowcharts (50+ nodes) may be hard to read
  • Limited control over exact node positioning

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Web3

crypto-ta-analyzer

No summary provided by upstream source.

Repository SourceNeeds Review
General

ocr-document-processor

No summary provided by upstream source.

Repository SourceNeeds Review
General

text-summarizer

No summary provided by upstream source.

Repository SourceNeeds Review
General

document-converter-suite

No summary provided by upstream source.

Repository SourceNeeds Review