Skip to content
chiltepin

Diagram tool

Swimlane diagrams from text, who does what

A swimlane diagram answers the question a flowchart leaves open: who does this step, and where does the hand-off happen? Chiltepin generates one from text — yours or your agent's — as a typed block that chiltepin check validates and the renderer lays out.

The block and its render

This is the swimlane starter template. A step names its lane by label (lane: Sales) or with the terse form id: Label · Lane · kind; columns come from the links, so nothing is placed by hand. phases band the columns as milestones.

```swimlane
title: Cross-functional flow
lanes: [Customer, Sales, Ops]
phases:
  - { label: Intake, from: 1, to: 2 }
  - { label: Delivery, from: 3 }
steps:
  - req: Submit request · Customer · start
  - { id: qual, lane: Sales, kind: decision, label: Qualify }
  - { id: fulfill, lane: Ops, label: Fulfill, note: SLA 2 days, accent: true }
  - done: Receive · Customer · end
links:
  - req -> qual
  - qual -> fulfill: approved
  - fulfill --> done: notify
```
SECTION 01 · Process

Cross-functional flow

LANES
SwimlaneCustomerSalesOpsINTAKEDELIVERYSubmit requestDECISIONQualifyFulfillSLA 2 daysReceiveapprovednotify
LegendstartstepDECISIONdecisionendfocal stepnextmessage
One lane per role, one column per hop. The dashed link is asynchronous; the accented step is the one the reader must see. Layout by the renderer, at build time.

How to generate one

  1. Install the skill. Run npx skills add jdiejim/chiltepin -g once. It installs the Chiltepin authoring skill into Claude Code, Cursor, Codex, Copilot and 70+ other agents.
  2. Ask for the swimlane. Tell your agent who does what: "map the refund process across Support, Finance and the customer as a swimlane in docs/refunds.md". The agent runs chiltepin block swimlane for the contract and writes the block.
  3. Check it. The agent runs npx chiltepin check. Every unknown lane, dangling link or unknown field comes back with a stable code and a fix; the agent repairs it before handing off.
  4. Render it. npx chiltepin html docs/refunds.md -p renders the page; chiltepin slides makes a deck; chiltepin build publishes the site. The renderer places every lane and arrow — never the model.

Lanes by name, not by index

Earlier diagram DSLs asked for a lane number; a renamed lane silently moved every step. Here a step says lane: Ops, case-insensitive, and an unknown lane is E_SWIMLANE_LANE with the list of lanes that exist. That is the whole argument for typed blocks: the check knows what a lane is, so it can say when one is wrong.

Part of the document

A swimlane usually sits inside a runbook, a process spec or an onboarding doc, next to a sequence diagram of the system calls and a roadmap of when it changes. Chiltepin renders the whole document — a growing set of typed blocks, one grammar — to a static site, slides or PDF. See the swimlane in the catalog, the flows reference, or paste one into the playground.

Frequently asked questions

What is a swimlane diagram?
A swimlane diagram is a flowchart split into horizontal lanes, one per role, team or system, so every step sits in the lane of whoever does it. It answers the question a plain flowchart cannot: who is responsible for each step, and where the hand-offs are. Cross-functional flowcharts and BPMN pools are the same idea.
How does the swimlane diagram generator work?
A swimlane in Chiltepin is a typed YAML block inside Markdown: a list of lanes, a list of steps that each name their lane by label, and links between steps. Columns are derived from the links, so you never place a step; the renderer draws the lanes, the phases and the arrows. chiltepin check validates every lane name and every link target.
Can an AI agent generate the swimlane from a description?
Yes — that is the intended workflow. After npx skills add jdiejim/chiltepin -g, your agent knows the block grammar, looks the swimlane contract up with chiltepin block swimlane, and writes it from a sentence like "map the refund process across Support, Finance and the customer". The result is a diff you review, validated before you see it.
How is this different from drawing a swimlane in a diagram tool?
A drawn swimlane is pixels: nothing checks that a step names a real lane or that an arrow points at a real step, and the drawing goes stale the week the process changes. As a typed block, the swimlane lives in the same repository as the process it describes, changes in a pull request, and fails CI when it references a lane that does not exist.
Does it support phases, decisions and error paths?
Yes. phases band the columns as a header row, the way BPMN marks milestones. A step takes kind: start, decision, or end, an optional note, and accent: true for the one step the reader must see. Links take kind: dashed for async or optional hops and kind: error for the failure path, with the terse forms a --> b and a -x-> b.
Open Studio — no signupSet up your agentnpx skills add jdiejim/chiltepin -g