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 -y 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@latest 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@latest 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 Studio.

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 -y, 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 -y