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
```How to generate one
- 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.
- 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.
- 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.
- 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.