Generated banner for Markdown Mermaid Writing
Generated logo for Markdown Mermaid Writing

Markdown Mermaid Writing

K-DenseCommunityCreated by Clayton Young / Superior Byte Works, LLC (@borealBytes)Distributed by K-Dense

  • Skill
  • Tool integration
  • Documents and content
  • Apache-2.0
  • Low risk

From the author

Writes scientific Markdown documentation and Mermaid diagrams for workflows, relationships, timelines, and schemas. Provides syntax references, document templates, accessibility guidance, and version-aware rendering checks. Use when a user requests Markdown, Mermaid, or a text-based structural diagram; quantitative scientific figures require suitable plotting tools.
— the description by Clayton Young / Superior Byte Works, LLC (@borealBytes)

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides a structured approach to creating technical and scientific documentation using Markdown and Mermaid. It emphasizes the use of text-based diagrams for structural clarity, ensuring that workflows, architectures, and data models remain editable, version-controlled, and accessible. The skill includes templates for various document types and comprehensive guides for 23 different Mermaid diagram types, ensuring consistent formatting and adherence to accessibility standards.

What it does

  • Writes scientific Markdown reports, READMEs, and research documentation.
  • Creates structural Mermaid diagrams for workflows, timelines, schemas, and architectures.
  • Provides templates for common technical documents like ADRs, pull requests, and status reports.
  • Offers style guides for consistent Markdown formatting and Mermaid diagram design.
  • Includes accessibility guidance for diagrams using titles and descriptions.
  • Supports version-aware rendering checks for Mermaid diagrams.

When to use it

  • When you need to document complex workflows, system architectures, or data relationships.
  • When you want to maintain diagrams as editable text within a Git repository.
  • When creating technical reports that require a consistent, professional house style.
  • When you need to ensure your diagrams are accessible and renderable across different platforms.

Advantages

  • Diagrams are stored as plain text, making them easily diffable and version-controlled.
  • Reduces token usage compared to long-form text descriptions of relationships.
  • Promotes a consistent documentation style across projects.
  • Supports accessibility through standardized metadata.
  • Facilitates easy updates to diagrams without needing specialized image editing software.

Usage examples

“Create a Mermaid flowchart for a data processing pipeline.”
Generates a Markdown-formatted document containing a Mermaid flowchart block that maps the data pipeline steps, following the established style guide.
“Draft an Architecture Decision Record (ADR) for a new database choice.”
Produces a structured Markdown document using the ADR template, including placeholders for context, decision, and consequences.
“How do I create a sequence diagram for an API interaction?”
Provides the specific Mermaid sequence diagram syntax, a copy-paste template, and tips on how to style it according to the project's guidelines.
“Check if my Mermaid diagram is accessible.”
Reviews the diagram code for required accessibility metadata (accTitle/accDescr) and suggests improvements based on the Mermaid style guide.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/k-dense-ai/markdown-mermaid-writing/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip markdown-mermaid-writing.zip -d .agents/skills

Documentation by Clayton Young / Superior Byte Works, LLC (@borealBytes)

Markdown and Mermaid Writing

Overview

This skill provides an optional house style for Markdown documentation with Mermaid structural diagrams. Follow the requested output format, existing repository conventions, and journal requirements first. This skill does not replace scientific analysis or plotting.

A relationship expressed as Mermaid inside a .md file is editable text that diffs cleanly in git. A compatible host renders it without a separate user build step. It renders where the host has Mermaid support; plain Markdown viewers may show only code, and platforms/extensions ship different Mermaid versions. It uses a compact source representation, though token use depends on the diagram. Exporting SVG/PNG requires a renderer; retain the diagram source alongside exported figures.

"The more you get your reports and files in .md in just regular text, which mermaid is as well as being a simple 'script language'. This just helps with any downstream rendering and especially AI generated images (using mermaid instead of just long form text to describe relationships < tokens). Additionally mermaid can render along with markdown for easy use almost anywhere by humans or AI."

— Clayton Young (@borealBytes), K-Dense Discord, 2026-02-19

When to Use This Skill

Use this skill when:

  • Writing a requested Markdown report, README, methods overview, or research note

  • Diagramming a workflow, data pipeline, schema, state machine, or conceptual relationship

  • Maintaining editable Mermaid sources and their rendered SVG/PNG exports

Use scientific plotting tools directly for measured data, uncertainty, statistical graphics, exact geometry, or publication figures that Mermaid cannot faithfully represent. Mermaid is not a required precursor to a quantitative chart or an existing SVG/code-native asset.

🎨 The Source Format Philosophy

Why text-based diagrams win
What mattersMermaid in MarkdownPython / AI Image
Git diff readable✅ text sourcePlotting code/SVG can also be text
Editable source✅Plotting scripts and vector sources are editable
Compact relationship notationOftenDepends on representation
Native previewHost/version dependentViewer/format dependent
Parseable by AI without vision✅❌
Works in destinationCheck Mermaid support and versionCheck image format support
Accessible (screen readers)Check SVG metadata and text alternativeProvide alt text/data table
Convertible to image later✅ anytime— already image
The three-phase workflow
flowchart LR
    accTitle: Three-Phase Documentation Workflow
    accDescr: Markdown holds the structural diagram source. Quantitative charts come from data and plotting code; optional illustrations require a separate factual review.

    p1["📄 Phase 1<br/>Mermaid in Markdown<br/>(structural source)"]
    p2["🐍 Phase 2<br/>Python Generated<br/>(optional — data charts)"]
    p3["🎨 Phase 3<br/>AI Generated Visuals<br/>(optional — polish)"]
    out["📊 Final Deliverable"]

    p1 --> out
    data["Data and plotting code"] --> p2
    p1 -.->|"when needed"| p3
    p2 --> out
    p3 --> out

    classDef required fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e3a5f
    classDef optional fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,color:#713f12
    classDef output fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d

    class p1 required
    class p2,p3 optional
    class out output

Retain Mermaid for structural diagrams and data/code for quantitative charts. An AI illustration is not a quantitative conversion; verify every label and relationship against its sources.

What Mermaid can express

This skill includes 23 diagram-type guides plus a composition guide. Mermaid supports additional types; these references are a curated subset, not an exhaustive version catalogue:

Use caseDiagram typeFile
Experimental workflow / decision logicFlowchartreferences/diagrams/flowchart.md
Service interactions / API calls / messagingSequencereferences/diagrams/sequence.md
Data model / schemaER diagramreferences/diagrams/er.md
State machine / lifecycleStatereferences/diagrams/state.md
Project timeline / roadmapGanttreferences/diagrams/gantt.md
Proportions / compositionPiereferences/diagrams/pie.md
System architecture (zoom levels)C4references/diagrams/c4.md
Concept hierarchy / brainstormMindmapreferences/diagrams/mindmap.md
Chronological events / historyTimelinereferences/diagrams/timeline.md
Class hierarchy / type relationshipsClassreferences/diagrams/class.md
User journey / satisfaction mapUser Journeyreferences/diagrams/user_journey.md
Two-axis comparison / prioritizationQuadrantreferences/diagrams/quadrant.md
Requirements traceabilityRequirementreferences/diagrams/requirement.md
Flow magnitude / resource distributionSankeyreferences/diagrams/sankey.md
Numeric trends / bar + line chartsXY Chartreferences/diagrams/xy_chart.md
Component layout / spatial arrangementBlockreferences/diagrams/block.md
Work item status / task columnsKanbanreferences/diagrams/kanban.md
Cloud infrastructure / service topologyArchitecturereferences/diagrams/architecture.md
Multi-dimensional comparison / skills radarRadarreferences/diagrams/radar.md
Hierarchical proportions / budgetTreemapreferences/diagrams/treemap.md
Binary protocol / data formatPacketreferences/diagrams/packet.md
Git branching / merge strategyGit Graphreferences/diagrams/git_graph.md
Code-style sequence (programming syntax)ZenUMLreferences/diagrams/zenuml.md
Multi-diagram composition patternsComplex Examplesreferences/diagrams/complex_examples.md

💡 Pick the right type, not the easy one. Don't default to flowcharts for everything. A timeline beats a flowchart for chronological events. A sequence beats a flowchart for service interactions. Scan the table and match.


🔧 Core workflow

Step 1: Identify the document type

Check if a template exists before writing from scratch:

Document typeTemplate
Pull request recordtemplates/pull_request.md
Issue / bug / feature requesttemplates/issue.md
Sprint / project boardtemplates/kanban.md
Architecture decision (ADR)templates/decision_record.md
Presentation / briefingtemplates/presentation.md
Research paper / analysistemplates/research_paper.md
Project documentationtemplates/project_documentation.md
How-to / tutorialtemplates/how_to_guide.md
Status reporttemplates/status_report.md
Step 2: Read the style guide

For this Markdown workflow, read references/markdown_style_guide.md. Treat emoji, heading counts, and horizontal rules as house style rather than Markdown syntax requirements.

Key rules to internalize:

  • One H1 per document — the title. Never more.

  • Emoji on H2 headings only — one emoji per H2, none in H3/H4

  • Support factual claims — use verified sources and the requested citation format

  • Bold sparingly — max 2-3 bold terms per paragraph, never full sentences

  • Optional horizontal rules after </details> when they improve separation

  • Tables over prose for comparisons, configurations, structured data

  • Diagrams over walls of text — if it describes flow, structure, or relationships, add Mermaid

Step 3: Pick the diagram type and read its guide

Before creating any Mermaid diagram: read references/mermaid_style_guide.md.

Then open the specific type file (e.g., references/diagrams/flowchart.md) for the exemplar, tips, and copy-paste template.

Add accessibility metadata for types that emit it in the chosen renderer:

accTitle: Short Name 3-8 Words
accDescr: One or two sentences explaining what this diagram shows.
  • Prefer host themes; %%{init} directives are deprecated in favor of YAML configuration

  • Prefer reusable classDef where supported; style syntax is diagram-specific

  • One emoji per node max — at the start of the label

  • Use descriptive IDs with the type's syntax: snake_case works for flowcharts; ER/class/state conventions differ

Step 4: Write the document

Start from the template. Apply the markdown style guide. Place diagrams inline with related text — not in a separate "Figures" section.

Render in the actual destination before delivery. Check its Mermaid version and plugin requirements before choosing newer diagram types; GitHub documents an info diagram for this check. A successful latest-version local preview does not establish GitHub or another host will render it. Where Mermaid is unsupported, supply a rendered SVG/PNG with a text description alongside the retained .md source.

Step 5: Retain source and verification

Keep the .md source, rendered deliverable, and tested renderer version together. Follow the project's version-control workflow; this skill does not itself authorize a commit or publication. For CLI export, embedding, and the tested accessibility matrix, read Current rendering and validation.


⚠️ Common pitfalls

Radar chart syntax (radar-beta)

WRONG (shown as text so it does not break the document renderer):

radar
title Example
x-axis ["A", "B", "C"]
"Series" : [1, 2, 3]

CORRECT:

radar-beta
accTitle: Example Radar Scores
accDescr: Illustrative values of one, two, and three on a shared zero-to-three scale.
title Example
axis a["A"], b["B"], c["C"]
curve series["Series"]{1, 2, 3}
max 3
  • Use radar-beta not radar (the bare keyword doesn't exist)

  • Use axis to define dimensions, not x-axis

  • Use curve to define data series, not quoted labels with colon

  • Mermaid 12.0.0 radar emits accTitle/accDescr; check older hosts and retain a visible description

XY Chart vs Radar confusion
DiagramKeywordAxis syntaxData syntax
XY Chart (bars/lines)xychart-betax-axis ["Label1", "Label2"]bar [10, 20] or line [10, 20]
Radar (spider/web)radar-betaaxis id["Label"]curve id["Label"]{10, 20}
Forgetting accTitle/accDescr on supported types

Only some diagram types support accTitle/accDescr. For those that don't, always place a descriptive italic paragraph directly above the code block:

Radar chart comparing three methods on a stated, common score scale. See the data table for exact values.

radar-beta
...

🔗 Integration with other skills

With scientific-schematics

scientific-schematics generates AI-powered publication-quality images (PNG). Use the Mermaid diagram as the brief for the schematic:

Workflow:
1. Create the concept as Mermaid in .md (this skill — Phase 1)
2. Describe the same concept to scientific-schematics for a polished PNG (Phase 3)
3. Commit both — the .md as source, the PNG as a supplementary figure
With scientific-writing

For a manuscript that uses Mermaid structural figures, this skill handles diagram syntax. Follow the manuscript's required figure formats and scientific visualization conventions.

Workflow:
1. Use scientific-writing to draft the manuscript
2. For every figure that shows a workflow, architecture, or relationship:
   - Replace placeholder with a Mermaid diagram following this skill's guide
3. Use plotting or schematic tools where appropriate to the scientific content
With literature-review

Literature review produces summaries with lots of relationship data. Use this skill to:

  • Create concept maps (Mindmap) of the literature landscape

  • Show publication timelines (Timeline or Gantt)

  • Compare methodologies (Quadrant or Radar)

  • Diagram data flows described in papers (Sequence or Flowchart)

With any skill that produces output documents

Before finalizing a document using this skill, check:

  • [ ] Does the document use a template? If so, did I start from the right one?

  • [ ] Is each diagram in an appropriate format, with working accessibility metadata or a text alternative?

  • [ ] Is configuration supported by the destination and tested in light/dark themes?

  • [ ] Do citations support external claims, and are synthetic values labeled?

  • [ ] One H1, emoji on H2 only?

  • [ ] Does the final Markdown/HTML structure render correctly?


📚 Reference index

Style guides
GuidePathLinesWhat it covers
Markdown Style Guidereferences/markdown_style_guide.mdsee fileHeadings, formatting, citations, tables, Mermaid integration, templates, quality checklist
Mermaid Style Guidereferences/mermaid_style_guide.mdsee fileAccessibility, emoji set, color classes, theme neutrality, type selection, complexity tiers
Current Renderingreferences/current-rendering.mdsee fileMermaid 12 changes, CLI export, browser APIs, tested accessibility matrix, scientific checks
Diagram guides (23 types plus composition)

Each file contains: production-quality exemplar, tips specific to that type, and a copy-paste template.

references/diagrams/ — architecture, block, c4, class, complex_examples, er, flowchart, gantt, git_graph, kanban, mindmap, packet, pie, quadrant, radar, requirement, sankey, sequence, state, timeline, treemap, user_journey, xy_chart, zenuml

Document templates (9 types)

templates/ — decision_record, how_to_guide, issue, kanban, presentation, project_documentation, pull_request, research_paper, status_report

Examples

assets/examples/example-research-report.md — a synthetic quality-control report with explicitly invented data, an auditable count table, a structural flowchart, a bar chart, and a chronology. It makes no experimental or software API claims.


📝 Attribution

All style guides, diagram type guides, and document templates in this skill are ported from the SuperiorByteWorks-LLC/agent-project repository under the Apache-2.0 License.

This skill (as part of scientific-agent-skills) is distributed under the MIT License. The included Apache-2.0 content is compatible for downstream use with attribution retained, as preserved in the file headers throughout this skill.


[^1]: GitHub Blog. (2022). "Include diagrams in your Markdown files with Mermaid." https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/

[^2]: Mermaid. "Mermaid Diagramming and Charting Tool." https://mermaid.js.org/

Files

references/mermaid_style_guide.md

<!-- Source: https://github.com/SuperiorByteWorks-LLC/agent-project | License: Apache-2.0 | Author: Clayton Young / Superior Byte Works, LLC (Boreal Bytes) -->

Mermaid Diagram Style Guide

For AI agents: Read this file for all core styling rules. Then use the diagram selection table to pick the right type and follow its link — each type has its own file with a production-quality exemplar, tips, and a copy-paste template.

For humans: This guide + the linked diagram files provide a starting point for readable diagrams; validate rendering and accessibility in the actual destination. Reference it from your AGENTS.md or contributing guide.

Target platform: Mermaid-capable Markdown; check the particular host and version. Verified renderer: Mermaid 12.0.0. See Current rendering and validation for CLI export, browser APIs, and accessibility results. These are house-style preferences, not Mermaid grammar or universal GitHub guarantees. All business workflows, endpoints, scores, and dates in examples are illustrative. Design goal: Minimal professional styling that renders beautifully in both GitHub light and dark modes, is accessible to screen readers, and communicates clearly with zero visual noise.


Quick Start for Agents

  1. Pick the diagram type → Selection table

  2. Open that type's file → Copy the template, fill in your content

  3. Apply styling from this file → Emoji from approved set, colors from approved palette

  4. Add accessibility → accTitle + accDescr (or italic Markdown paragraph for unsupported types)

  5. Verify → Renders in light mode, dark mode, and screen reader


Core Principles

#PrincipleRule
1Clarity at every scaleSimple diagrams stay flat. Complex ones use subgraphs. Very complex ones split into overview + detail.
2Accessibility alwaysUse supported SVG metadata plus a visible description; verify the exported result.
3Theme neutralPrefer host themes and documented per-type styling; verify contrast.
4Semantic claritysnake_case node IDs that match labels. Active voice. Sentence case.
5Consistent stylingSame emoji = same meaning everywhere. Same shapes = same semantics.
6Minimal professional flairA touch of emoji + strategic bold + optional classDef — never more.

Accessibility Requirements

Use both annotations where the renderer supports them:

accTitle: Short Name 3-8 Words
accDescr: One or two sentences explaining what this diagram shows and what insight the reader gains from it
  • accTitle — 3–8 words, plain text, names the diagram

  • accDescr — 1–2 sentences; single-line form is convenient. Mermaid also supports accDescr { ... } across multiple lines

Mermaid 12.0.0 emits these annotations for flowchart, sequence, class, state, ER, gantt, pie, git graph, journey, requirement, quadrant, XY, architecture, packet, radar, and treemap. Block, kanban, mindmap, and Sankey need a visible text alternative. Timeline accepts annotations but the tested SVG omitted both; C4 omitted the SVG title. ZenUML is a separate plugin. See the tested matrix in Current rendering and validation. A paragraph does not automatically become an SVG accessible name; include meaningful image alt text when exporting, and a data table or detailed equivalent for complex figures.

ZenUML note: ZenUML requires an external plugin and may not render on GitHub. Prefer standard sequenceDiagram syntax.


Theme Configuration

✅ Do: No theme directive (GitHub auto-detects)
flowchart LR
    accTitle: Secure API Request Flow
    accDescr: Three-step API request from authentication through processing to response

    auth[🔐 Authenticate] --> process[⚙️ Process request] --> respond[📤 Return response]
Prefer host defaults unless custom styling is required
%% Custom colors may reduce contrast; inspect both themes
style A fill:#e8f5e9
%%{init: {'theme':'base'}}%%

Approved Emoji Set

One emoji per node, at the start of the label. Same emoji = same meaning across all diagrams in a project.

Systems & Infrastructure
EmojiMeaningExample
☁️Cloud / platform / hosted service[☁️ AWS Lambda]
🌐Network / web / connectivity[🌐 API gateway]
🖥️Server / compute / machine[🖥️ Application server]
💾Storage / database / persistence[💾 PostgreSQL]
🔌Integration / plugin / connector[🔌 Webhook handler]
Processes & Actions
EmojiMeaningExample
⚙️Process / configuration / engine[⚙️ Build pipeline]
🔄Cycle / sync / recurring process[🔄 Retry loop]
🚀Deploy / launch / release[🚀 Ship to production]
⚡Fast action / trigger / event[⚡ Webhook fired]
📦Package / artifact / bundle[📦 Docker image]
🔧Tool / utility / maintenance[🔧 Migration script]
⏰Scheduled / cron / time-based[⏰ Nightly job]
People & Roles
EmojiMeaningExample
👤User / person / actor[👤 End user]
👥Team / group / organization[👥 Platform team]
🤖Bot / agent / automation[🤖 CI bot]
🧠Intelligence / decision / AI[🧠 ML classifier]
Status & Outcomes
EmojiMeaningExample
✅Success / approved / complete[✅ Tests passed]
❌Failure / blocked / rejected[❌ Build failed]
⚠️Warning / caution / risk[⚠️ Rate limited]
🔒Locked / restricted / protected[🔒 Requires admin]
🔐Security / encryption / auth[🔐 OAuth handshake]
Information & Data
EmojiMeaningExample
📊Analytics / metrics / dashboard[📊 Usage metrics]
📋Checklist / form / inventory[📋 Requirements]
📝Document / log / record[📝 Audit trail]
📥Input / receive / ingest[📥 Event stream]
📤Output / send / emit[📤 Notification]
🔍Search / review / inspect[🔍 Code review]
🏷️Label / tag / version[🏷️ v2.1.0]
Domain-Specific
EmojiMeaningExample
💰Finance / cost / billing[💰 Invoice]
🧪Testing / experiment / QA[🧪 A/B test]
📚Documentation / knowledge base[📚 API docs]
🎯Goal / target / objective[🎯 OKR tracking]
🗂️Category / organize / archive[🗂️ Backlog]
🔗Link / reference / dependency[🔗 External API]
🛡️Protection / guardrail / policy[🛡️ Rate limiter]
🏁Start / finish / milestone[🏁 Sprint complete]
✏️Edit / revise / update[✏️ Address feedback]
🎨Design / creative / UI[🎨 Design review]
💡Idea / insight / inspiration[💡 Feature idea]
Emoji Rules
  1. Place at start: [🔐 Authenticate] not [Authenticate 🔐]

  2. Max one per node — never stack

  3. Consistency is mandatory — same emoji = same concept across all diagrams

  4. Not every node needs one — use on key nodes that benefit from visual distinction

  5. No decorative emoji: 🎉 💯 🔥 🎊 💥 ✨ — they add noise, not meaning


Suggested Color Classes

Use only when you genuinely need color-coding (multi-actor diagrams, severity levels). Prefer shapes + emoji first.

Suggested palette (verify in your target light and dark themes):

Semantic UseclassDef DefinitionVisual
Primary / actionfill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e3a5fLight blue fill, blue border, dark navy text
Success / positivefill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532dLight green fill, green border, dark forest text
Warning / cautionfill:#fef9c3,stroke:#ca8a04,stroke-width:2px,color:#713f12Light yellow fill, amber border, dark brown text
Danger / criticalfill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#7f1d1dLight red fill, red border, dark crimson text
Neutral / infofill:#f3f4f6,stroke:#6b7280,stroke-width:2px,color:#1f2937Light gray fill, gray border, near-black text
Accent / highlightfill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#3b0764Light violet fill, purple border, dark purple text
Warm / commercialfill:#ffedd5,stroke:#ea580c,stroke-width:2px,color:#7c2d12Light peach fill, orange border, dark rust text

Live preview — all 7 classes rendered:

flowchart LR
    accTitle: Color Palette Preview
    accDescr: Visual reference showing all seven approved classDef color classes side by side

    primary[🔵 Primary] ~~~ success[✅ Success] ~~~ warning[⚠️ Warning] ~~~ danger[❌ Danger]
    neutral[ℹ️ Neutral] ~~~ accent[🟣 Accent] ~~~ warm[🟠 Warm]

    classDef primary fill:#dbeafe,stroke:#2563eb,stroke-width:2px,color:#1e3a5f
    classDef success fill:#dcfce7,stroke:#16a34a,stroke-width:2px,color:#14532d
    classDef warning fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,color:#713f12
    classDef danger fill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#7f1d1d
    classDef neutral fill:#f3f4f6,stroke:#6b7280,stroke-width:2px,color:#1f2937
    classDef accent fill:#ede9fe,stroke:#7c3aed,stroke-width:2px,color:#3b0764
    classDef warm fill:#ffedd5,stroke:#ea580c,stroke-width:2px,color:#7c2d12

    class primary primary
    class success success
    class warning warning
    class danger danger
    class neutral neutral
    class accent accent
    class warm warm

Rules:

  1. Always include color: (text color) — dark-mode backgrounds can hide default text

  2. Use classDef + class where the diagram supports them. style is valid Mermaid syntax; C4 and sequence use different styling mechanisms

  3. Max 3–4 color classes per diagram

  4. Never rely on color alone — always pair with emoji, shape, or label text


Node Naming & Labels

Rule✅ Good❌ Bad
snake_case IDsrun_tests, deploy_prodA, B, node1
IDs match labelsopen_pr → "Open PR"x → "Open PR"
Specific namescheck_unit_testscheck
Verbs for actionsrun_lint, deploy_applinter, deployment
Nouns for statesreview_state, errorreviewing, erroring
3–6 word labels[📥 Fetch raw data][Raw data is fetched from source]
Active voice[🧪 Run tests][Tests are run]
Sentence case[Start pipeline][Start Pipeline]
Edge labels 1–4 wordsA short phrase such as YesLong sentence labels

Node Shapes

Use shapes consistently to convey node type without color:

ShapeSyntaxMeaning
Rounded rectangle([text])Start / end / terminal
Rectangle[text]Process / action / step
Diamond{text}Decision / condition
Subroutine[[text]]Subprocess / grouped action
Cylinder[(text)]Database / data store
Asymmetric>text]Event / trigger / external
Hexagon{{text}}Preparation / initialization

Bold Text

Flowchart Markdown strings need double quotes around a backtick-delimited label:

flowchart LR
    accTitle: Markdown Label Example
    accDescr: Two pipeline stages, with the first label using Markdown emphasis.
    start["`Run **quality control**`"] --> finish["Review results"]

Plain labels such as node[**text**] do not reliably interpret emphasis. Other diagram types have their own formatting support; prefer plain labels unless tested.


Subgraphs

Subgraphs are the primary tool for organizing complex diagrams. They create visual groupings that help readers parse structure at a glance.

subgraph name ["📋 Descriptive Title"]
    node1 --> node2
end

Subgraph rules:

  • Quoted titles with emoji: ["🔍 Code Quality"]

  • Group by stage, domain, team, or layer — whatever creates the clearest mental model

  • 2–6 nodes per subgraph is ideal; up to 8 if tightly related

  • Subgraphs can connect to each other via edges between their internal nodes

  • One level of nesting is acceptable when it genuinely clarifies hierarchy (e.g., a "Backend" subgraph containing "API" and "Workers" subgraphs). Avoid deeper nesting.

  • Give every subgraph a meaningful ID and title — subgraph deploy ["🚀 Deployment"] not subgraph sg3

Connecting subgraphs — choose the right level of detail:

Use subgraph-to-subgraph edges when the audience needs the high-level flow and internal details would be noise:

subgraph build ["📦 Build"]
    compile --> package
end
subgraph deploy ["🚀 Deploy"]
    stage --> prod
end
build --> deploy

Use internal-node-to-internal-node edges when the audience needs to see exactly which step hands off to which:

subgraph build ["📦 Build"]
    compile --> package
end
subgraph deploy ["🚀 Deploy"]
    stage --> prod
end
package --> stage

Pick based on your audience:

AudienceConnect viaWhy
Leadership / overviewSubgraph → subgraphThey need phases, not steps
Engineers / operatorsInternal node → internal nodeThey need the exact handoff points
Mixed / documentationBoth in separate diagramsOverview diagram + detail diagram

Managing Complexity

Not every diagram is simple, and that's fine. The goal is clarity at every scale — a 5-node flowchart and a 30-node system diagram should both be immediately understandable. Use the right strategy for the complexity level.

Complexity tiers
TierNode countStrategy
Simple1–10 nodesFlat diagram, no subgraphs needed
Moderate10–20 nodesUse subgraphs to group related nodes into 2–4 logical clusters
Complex20–30 nodesSubgraphs are mandatory. 3–6 subgraphs, each with a clear title and purpose. Consider whether an overview + detail approach would be clearer.
Very complex30+ nodesSplit into multiple diagrams. Create an overview diagram showing subgraph-level relationships, then a detail diagram per subgraph. Link them in prose.
When to use subgraphs vs. split into multiple diagrams

Use subgraphs when:

  • The connections between groups are essential to understanding (splitting would lose that)

  • A reader needs to see the full picture in one place (e.g., deployment pipeline, request lifecycle)

  • Each group has 2–6 nodes and there are 3–5 groups total

Split into multiple diagrams when:

  • Groups are mostly independent (few cross-group connections)

  • The single diagram would exceed ~30 nodes even with subgraphs

  • Different audiences need different views (overview for leadership, detail for engineers)

  • The diagram is too wide/tall to read without scrolling

Use overview + detail pattern when:

  • You need both the big picture AND the details

  • The overview shows subgraph-level blocks with key connections

  • Each detail diagram zooms into one subgraph with full internal structure

  • Link them: "See Managing complexity for the full scaling guidance."

Best practices at any scale
  • One primary flow direction per diagram — TB for hierarchies/processes, LR for pipelines/timelines. Mixed directions confuse readers.

  • Decision points — keep to ≤3 per subgraph. If a single subgraph has 4+ decisions, it deserves its own focused diagram.

  • Edge crossings — minimize by grouping tightly-connected nodes together. If edges are crossing multiple subgraphs chaotically, reorganize the groupings.

  • Labels stay concise regardless of diagram size — 3–6 words per node, 1–4 words per edge. Complexity comes from structure, not verbose labels.

  • Color-code subgraph purpose — in complex diagrams, use classDef classes to visually distinguish layers (e.g., all "data" nodes in one color, all "API" nodes in another). Max 3–4 classes even in large diagrams.

Composing multiple diagrams

When a single diagram isn't enough — multiple audiences, overview + detail needs, or before/after migration docs — see Composing Complex Diagram Sets for patterns and production-quality examples showing how to combine flowcharts, sequences, ER diagrams, and more into cohesive documentation.


Choosing the Right Diagram

Read the "best for" column, then follow the link to the type file for the exemplar diagram, tips, and template.

You want to show...TypeFile
Steps in a process / decisionsFlowchartflowchart.md
Who talks to whom, whenSequencesequence.md
Class hierarchy / type relationshipsClassclass.md
Status transitions / lifecycleStatestate.md
Database schema / data modelERer.md
Project timeline / roadmapGanttgantt.md
Parts of a whole (proportions)Piepie.md
Git branching / merge strategyGit Graphgit_graph.md
Concept hierarchy / brainstormMindmapmindmap.md
Events over time (chronological)Timelinetimeline.md
User experience / satisfaction mapUser Journeyuser_journey.md
Two-axis prioritization / comparisonQuadrantquadrant.md
Requirements traceabilityRequirementrequirement.md
System architecture (zoom levels)C4c4.md
Flow magnitude / resource distributionSankeysankey.md
Numeric trends (bar + line charts)XY Chartxy_chart.md
Component layout / spatial arrangementBlockblock.md
Work item status boardKanbankanban.md
Binary protocol / data formatPacketpacket.md
Infrastructure topologyArchitecturearchitecture.md
Multi-dimensional comparison / skillsRadarradar.md
Hierarchical proportions / budgetTreemaptreemap.md
Code-style sequence (programming syntax)ZenUMLzenuml.md

Pick the most specific type. Don't default to flowcharts — match your content to the diagram type that was designed for it. A sequence diagram communicates service interactions better than a flowchart ever will.


Known Parser Gotchas

These will save you debugging time:

Diagram TypeGotchaFix
ArchitectureLabel support varies in older hostsMermaid 12 accepts Unicode; preview on the destination
ArchitectureOlder hosts may reject punctuationMermaid 12 accepts [US-East Region]; verify older versions
Architecture--> arrow syntax is strict about spacingUse lb:R --> L:api format exactly
RequirementUnquoted punctuation in fields can failQuote strings: id: "REQ-001", docref: "component-ref"
RequirementRisk and verification use enumerated valuesCopy documented values such as risk: high, verifymethod: test
C4Long descriptions cause label overlapsKeep descriptions under 4 words; use UpdateRelStyle() for offsets
C4Emoji in labels render but look oddSkip emoji in C4 — renderer has its own icons
FlowchartThe word end breaks parsingWrap in quotes: ["End"] or use end_node as ID
SankeyEmoji labels failed in the tested parserPrefer plain text; quote fields containing commas or double quotes
ZenUMLRequires external pluginMay not render on GitHub — prefer sequenceDiagram
TreemapExperimental syntax and host versions varyVerify the destination renderer before using
RadarRequires v11.6.0+Verify GitHub supports it before using

Quality Checklist

Every Diagram
  • [ ] accTitle + accDescr present (or italic Markdown paragraph for unsupported types)

  • [ ] Complexity managed: ≤10 nodes flat, 10–30 with subgraphs, 30+ split into multiple diagrams

  • [ ] Subgraphs used if >10 nodes (grouped by stage, domain, team, or layer)

  • [ ] ≤3 decision points per subgraph

  • [ ] Semantic snake_case IDs

  • [ ] Labels: 3–6 words, active voice, sentence case

  • [ ] Edge labels: 1–4 words

  • [ ] Consistent shapes for consistent meanings

  • [ ] Single primary flow direction (TB or LR)

  • [ ] Per-type style syntax and readable contrast verified

  • [ ] Minimal edge crossings (reorganize groupings if chaotic)

If Using Color/Emoji/Bold
  • [ ] Colors from approved palette using classDef + class

  • [ ] Text color: included in every classDef

  • [ ] ≤4 color classes

  • [ ] Emoji from approved set, max 1 per node

  • [ ] Bold on max 1–2 words per node

  • [ ] Meaning never conveyed by color alone

Before Merge
  • [ ] Renders in GitHub light mode

  • [ ] Renders in GitHub dark mode

  • [ ] Emoji meanings consistent across all diagrams in the document


Testing

  1. Destination: Preview in the actual host and toggle its light/dark appearance. Do not publish solely to run a rendering test.

  2. Local: Run the pinned CLI examples in Current rendering and validation. Editor preview extensions may bundle another Mermaid version.

  3. Live editor: mermaid.live — paste and toggle themes

  4. Screen reader: Verify accTitle/accDescr announced (VoiceOver, NVDA, JAWS)


Resources

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Declares allowed tools, Needs Node.js

The author says: Markdown authoring needs no runtime. Local rendering targets Mermaid and Mermaid CLI 12.0.0, Node.js 22.13+ and a supported Chromium browser. Package or CDN installation needs network access; no credentials required.

Security

What our scanner noticed· Low risk

  • Instructions that use the network

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
Clayton Young / Superior Byte Works, LLC (@borealBytes)
Publisher
K-Dense (Community)
Distributed by
K-Dense
Source
K-Dense-AI/scientific-agent-skills · skills/markdown-mermaid-writing · commit a25cf9e
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (written by AutoGineer)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Clayton Young / Superior Byte Works, LLC (@borealBytes) or K-Dense.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download markdown-mermaid-writing.zip