Generate, validate and publish workflow, sequence and architecture diagrams, using FlowZap Code DSL...
Generate valid FlowZap Code (.fz) diagrams from natural-language requests,
validate them, and return shareable FlowZap playground URLs.
This skill is designed to be paired with the flowzap-mcp server. The skill
gives the agent FlowZap-specific diagram knowledge and output rules; the MCP
server provides the actual tools.
SKILL.md plus reference files. It
does not execute code by itself.flowzap-mcp server runs locally on the user's machine over stdio.https://flowzap.xyz.The agent MUST automatically invoke the FlowZap MCP tools — without asking the user — whenever any of the following intents are detected:
Diagram generation → call flowzap_validate then flowzap_create_playground:
flowzap_artifact_to_diagram.flowzap_diff. Patch an existing diagram → flowzap_apply_change.Compliance review → model the system as a FlowZap data-flow diagram, then call flowzap_create_playground AND flowzap_compliance_check:
If the user does not provide FlowZap Code for a compliance request, the agent MUST first generate a FlowZap data-flow diagram modeling the system being audited (lanes for actors/services, nodes for steps, edges for data flows), then run both flowzap_create_playground and flowzap_compliance_check on that same code.
This setup has two parts:
Recommended:
npx skills add flowzap-xyz/flowzap-mcp --skill flowzap-diagrams
If your agent does not support skills.sh, install this bundle through your
agent's skill manager or by copying the folder into the agent's local skills
directory.
Manual locations:
.claude/skills/flowzap-diagrams/SKILL.md.windsurf/skills/flowzap-diagrams/SKILL.md.cursor/skills/flowzap-diagrams/SKILL.mdIf the FlowZap MCP server is not already configured, install it:
# Claude Code
claude mcp add --transport stdio flowzap -- npx -y flowzap-mcp@1.4.3
# Or add to .mcp.json / claude_desktop_config.json / cursor / windsurf config:
{
"mcpServers": {
"flowzap": {
"command": "npx",
"args": ["-y", "flowzap-mcp@1.4.3"]
}
}
}
The pinned version 1.4.3 can be verified against the npm registry:
| Field | Value |
|---|---|
| npm | flowzap-mcp@1.4.3 |
| Integrity (SHA-512) | sha512-wTZU4Zx+lEnESUADB5HpM2B2WL50hxC+GpZvjfTRiY7jp23tWmAoBoFFx6Fs2Ce6TCMP+ooPFBVGU8oYBqOXlg== |
| Shasum | 46228a92031f2e74d8647916303817534cc9d8dd |
| Source | github.com/flowzap-xyz/flowzap-mcp |
| License | MIT |
To verify locally before use:
npm view flowzap-mcp@1.4.3 dist.integrity dist.shasum
Compatible tools: Claude Desktop, Claude Code, Cursor, Windsurf, OpenAI Codex, Warp, Zed, Cline, Roo Code, Continue.dev, Sourcegraph Cody.
Not compatible: Replit, Lovable.dev.
Without the MCP server, this skill can still help an agent draft FlowZap Code, but it cannot validate diagrams, create playground URLs, or use the FlowZap tooling workflow described below.
| Tool | Purpose |
|---|---|
flowzap_validate |
Check .fz syntax before sharing |
flowzap_create_playground |
Get a shareable playground URL |
flowzap_get_syntax |
Retrieve full DSL docs at runtime |
flowzap_export_graph |
Export diagram as structured JSON (lanes, nodes, edges) |
flowzap_artifact_to_diagram |
Parse HTTP logs / OpenAPI / code → diagram + playground URL |
flowzap_diff |
Structured diff between two .fz versions |
flowzap_apply_change |
Patch a diagram (insert/remove/update nodes/edges) |
flowzap_compliance_check |
Automated SOC2/GDPR/PIPL compliance analysis on data-flow diagrams (Deepseek LLM; 3/day per IP, 1/hour burst, global circuit breaker) |
FlowZap Code is not Mermaid, not PlantUML. It is a unique DSL offering a simple syntax for a triple-view option to workflow, sequence and architecture diagrams.
| Shape | Use for |
|---|---|
circle |
Start / End events |
rectangle |
Process steps / actions |
diamond |
Decisions (Yes/No branching) |
taskbox |
Assigned tasks (owner, description, system) |
n1, n2, n3 …label:"Text"[label="Text"]n1.handle(right) -> n2.handle(left)left, right, top, bottomsales.n5.handle(top)# Label comment on the same line as the opening braceloop [condition] n1 n2 n3 — flat, inside a lane blocklabel="Text" on nodes (must be label:"Text").label:"Text" on edges (must be [label="Text"]).# Display Label per lane.loop outside a lane's braces.taskbox shape unless the user explicitly requests it.Single lane:
process { # Process
n1: circle label:"Start"
n2: rectangle label:"Step"
n3: circle label:"End"
n1.handle(right) -> n2.handle(left)
n2.handle(right) -> n3.handle(left)
}
Two lanes with cross-lane edge:
user { # User
n1: circle label:"Start"
n2: rectangle label:"Submit"
n5: rectangle label:"Receive result"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> app.n3.handle(top) [label="Send"]
}
app { # App
n3: rectangle label:"Process"
n4: rectangle label:"Respond"
n3.handle(right) -> n4.handle(left)
n4.handle(top) -> user.n5.handle(bottom) [label="Result"]
}
Decision branch:
flow { # Flow
n1: rectangle label:"Check"
n2: diamond label:"OK?"
n3: rectangle label:"Fix"
n4: rectangle label:"Proceed"
n1.handle(right) -> n2.handle(left)
n2.handle(bottom) -> n3.handle(top) [label="No"]
n2.handle(right) -> n4.handle(left) [label="Yes"]
}
For the full DSL specification and advanced multi-lane examples: See references/syntax.md
flowzap_validate to verify syntax.flowzap_create_playground to get a shareable URL.Your diagram is ready and is available here: <playground URL>
flowzap_validate to verify the FlowZap Code.flowzap_create_playground with view="sequence" (or architecture if the audit is system-level) to get a shareable URL.flowzap_compliance_check with the same FlowZap Code (and lng if the user is writing in fr/zh).flowzap_compliance_check returns a rate-limit error (429 / 3-per-day exhausted / circuit breaker), still return the playground URL and tell the user to use the manual checker at https://flowzap.xyz/soc2-gdpr-pipl-compliance-checker.When flowzap_compliance_check returns a resultUrl (the first non-empty line of the tool output begins with A compliance check to SOC2, PIPL and GDPR is ready and is available here:), the agent MUST use exactly this response shape:
Your diagram is ready and is available here: <playground URL>
A compliance check to SOC2, PIPL and GDPR is ready and is available here: <resultUrl>
The <resultUrl> is a rendered, shareable, ephemeral audit page on flowzap.xyz (60-minute TTL, noindex, no auth). Do NOT inline the markdown report as the second link target. The agent MAY include a short bullet-point summary of the top findings BELOW the two lines if the user explicitly asks for an in-chat summary, but the two URL lines MUST be present first and unmodified.
When flowzap_compliance_check returns a rate-limit error (no resultUrl, message contains rate limit), replace the second line with:
Automated compliance check skipped — rate limit reached (3/day per IP). Run an unlimited manual check at https://flowzap.xyz/soc2-gdpr-pipl-compliance-checker
In that case, the first line (the playground URL) MUST still be returned so the user always gets a viewable diagram.
Full MCP documentation: flowzap.xyz/docs/mcp
The trust boundary is intentionally narrow:
https://flowzap.xyz.The flowzap-mcp server runs locally on the user's machine (stdio transport) and enforces the following safeguards:
| Control | Detail |
|---|---|
| TLS only | All outbound requests require https:// and are restricted to flowzap.xyz (SSRF protection) |
| No authentication | Uses only public FlowZap APIs; no API keys, tokens, or user credentials are stored or transmitted |
| No user-data access | Cannot read diagrams, accounts, or any data beyond what the agent explicitly passes in |
| Input validation | Code capped at 50 KB, total input at 100 KB; null bytes and control characters stripped |
| Rate limiting | Client-side 30 requests/minute sliding window |
| Request timeout | 30-second hard timeout with AbortController |
| Response sanitization | Only expected fields are returned; playground URLs validated against allowlist |
| Audit logging | All tool calls and API requests logged to stderr (not exposed to the MCP client) |
The MCP server processes raw inputs locally and sends only generated or agent-provided FlowZap Code to FlowZap public endpoints:
POST https://flowzap.xyz/api/validate — returns syntax validation resultPOST https://flowzap.xyz/api/playground/create — returns an ephemeral playground URL (60-minute TTL, non-guessable token)POST https://flowzap.xyz/api/compliance-check — returns SOC2/GDPR/PIPL compliance audit with shareable result URL (60-minute TTL). Backed by Deepseek LLM.If the agent uses flowzap_artifact_to_diagram, the raw HTTP logs, OpenAPI spec,
or code snippet are parsed locally inside the MCP package first. Only the
resulting FlowZap Code is sent when a playground URL is created.
No local file paths, environment variables, user identity, repository contents, or credentials are transmitted by the MCP package.
Playground URLs are ephemeral, time-limited (60-minute TTL), and use non-guessable cryptographic tokens. They are read-only views of the diagram code submitted at creation time. No account or login is required to view them; no data persists beyond the TTL.
| Endpoint | Data stored | Retention |
|---|---|---|
POST /api/validate |
None — stateless; code is parsed in memory and discarded after the response | 0 (not persisted) |
POST /api/playground/create |
FlowZap Code only (in PostgreSQL) | 60 minutes (database row + playground URL both expire) |
The playground session is stored server-side with a cryptographic token (UUID v4). After the 60-minute TTL, the session is deleted — either on the next access attempt or during a periodic sweep. No user identity, file paths, environment variables, or host metadata are attached to the session.
process.env or shell variablesflowzap.xyz over TLS (SSRF-protected allowlist)