AgentSkillsCN

markdown-mermaid

在Markdown中绘制Mermaid图表,用于流程图、ER图、序列图、状态机、甘特图,以及思维导图。此技能提供经过验证的语法模板、布局优化,以及适用于GitHub、GitLab、VS Code、Obsidian等平台的跨平台渲染功能。当您需要在Markdown文件中创建图表、调试“图表未渲染”的错误、为文档选择合适的图表类型,或可视化数据库架构、API流程,又或修复Mermaid语法问题时,可使用此技能。

SKILL.md
--- frontmatter
name: markdown-mermaid
description: |
  Craft Mermaid diagrams within Markdown for flowcharts, ERDs, sequence diagrams, state machines,
  Gantt charts, and mindmaps. Includes validated syntax templates, layout optimization, and
  cross-platform rendering for GitHub, GitLab, VS Code, and Obsidian. Use when: creating diagrams
  in markdown files, debugging "diagram not rendering" errors, selecting diagram types for docs,
  visualizing database schemas or API flows, or fixing Mermaid syntax issues.

Mermaid in Markdown

Create diagrams using fenced code blocks:

markdown
```mermaid
flowchart TB
    A[Start] --> B[End]
```

Reference Files (Load Only What You Need)

Core Diagrams

Diagram TypeLoad this file
Flowchart - processes, workflowsflowchart.md
Sequence - API interactionssequence.md
Class - OOP structuresclass.md
State - lifecycles, FSMstate.md
ERD - database schemaserd.md
Gantt - project timelinesgantt.md

Charts & Data Visualization

Diagram TypeLoad this file
Pie - proportional datapie.md
Quadrant - priority matrixquadrant.md
Radar - multi-dimensionalradar.md
XY Chart - line/bar graphsxychart.md
Sankey - flow quantitiessankey.md
Treemap - hierarchical datatreemap.md

Specialized Diagrams

Diagram TypeLoad this file
C4 - architecture (Context/Container/Component)c4.md
Architecture - cloud/infraarchitecture.md
Block - manual layoutsblock.md
Mindmap - brainstormingmindmap.md
Timeline - chronological eventstimeline.md
Journey - user workflowsjourney.md
GitGraph - branchinggitgraph.md
Kanban - task boardskanban.md
ZenUML - code-like sequencezenuml.md
Requirement - SysMLrequirement.md
Packet - network protocolspacket.md

Reference & Guides

When you need...Load this file
Which diagram to use?selection-guide.md
Layout/width problemslayout.md
Styling and themesstyling.md
Platform compatibilityplatforms.md
Core syntax rulessyntax.md
Copy-paste templatestemplates.md

Quick Diagram Selection

ScenarioDiagramKeyword
Database tablesERDerDiagram
API callsSequencesequenceDiagram
Process stepsFlowchartflowchart TB
Status lifecycleStatestateDiagram-v2
Project scheduleGanttgantt
BrainstormMindmapmindmap
ArchitectureFlowchart+subgraphsflowchart TB
Git workflowGitGraphgitGraph
Task boardKanbankanban

Essential Patterns (Copy-Paste Ready)

Flowchart with Decision

mermaid
flowchart TB
    Start[Start] --> Check{Valid?}
    Check -->|Yes| Process[Process]
    Check -->|No| Error[Error]
    Process --> Done[Done]
    Error --> Done

Flowchart with Subgraphs (Architecture)

mermaid
flowchart TB
    subgraph Frontend
        UI[Web App]
    end
    subgraph Backend
        API[API Server]
        DB[(Database)]
    end
    UI --> API --> DB

ERD with Attributes

mermaid
erDiagram
    CUSTOMER ||--o{ ORDER : places
    ORDER ||--|{ LINE_ITEM : contains
    CUSTOMER {
        int id PK
        string name
        string email UK
    }
    ORDER {
        int id PK
        int customer_id FK
        date created_at
    }

Sequence with Activation

mermaid
sequenceDiagram
    participant C as Client
    participant A as API
    participant D as Database
    C->>+A: POST /users
    A->>+D: INSERT user
    D-->>-A: user_id
    A-->>-C: 201 Created

State Machine

mermaid
stateDiagram-v2
    [*] --> Draft
    Draft --> Pending: Submit
    Pending --> Approved: Approve
    Pending --> Rejected: Reject
    Approved --> [*]
    Rejected --> Draft: Revise

Mindmap

mermaid
mindmap
    root((Project))
        Backend
            API
            Database
        Frontend
            React
            CSS
        DevOps
            CI/CD
            Monitoring

Critical Rules

  1. Use TB direction - LR causes width overflow on letter-size PDF and narrow viewports
  2. Wrap "end" - Use [end], (end), or "end" (reserved word)
  3. Quote special chars - Text with []{}() needs double quotes: A["text [with] brackets"]
  4. Avoid node IDs starting with o/x - A---oB parsed as circle edge; use A--- oB or A---OB
  5. Alphanumeric node IDs only - Use A1, userAuth, not user-auth or step.1 (hyphens/dots break parsing)
  6. Split large diagrams - Keep under 20 nodes per diagram
  7. Test first - Use mermaid.live before committing
  8. ASCII labels only - Avoid emoji/Unicode because not all renderers support them
  9. Dark theme preferred - Use %%{init: {'theme': 'dark'}}%% for all diagrams; provides color differentiation and consistent appearance
  10. No inline styling - Avoid style NodeID fill:#hex lines because themes provide consistent colors across diagrams

Initialization Directives

Control rendering with %%{init: ...}%% at the start of the diagram:

ELK Layout (Complex Diagrams)

For diagrams with many edge crossings or complex layouts:

mermaid
%%{init: {'flowchart': {'defaultRenderer': 'elk'}}}%%
flowchart TB
    A --> B & C & D
    B & C --> E
    D --> E

Theme + Layout Combined

mermaid
%%{init: {'theme': 'neutral', 'flowchart': {'defaultRenderer': 'elk', 'htmlLabels': false}}}%%
flowchart TB
    A[Start] --> B[Process]

Common Init Options

OptionValuesUse Case
themeneutral, default, dark, forestPrint: neutral. Dark mode: dark
defaultRendererdagre (default), elkELK for complex layouts
htmlLabelstrue/falsefalse for markdown in labels
curvebasis, linear, cardinalEdge curve style

Common Fixes

ProblemSolution
Diagram not renderingCheck for lowercase "end" - capitalize or quote it
Diagram too wide / PDF overflowChange LR to TB for letter-size output
"Parse error" on nodeQuote text containing brackets: ["my [label]"]
Node ID parse errorUse alphanumeric only - no hyphens, dots, or special chars
Unexpected edge styleNode ID starts with o/x - add space or capitalize
Subgraph direction ignoredExternal connections override - restructure links
GitHub not renderingCheck for unsupported features (ELK, some beta charts)
Edge crossings messyAdd %%{init: {'flowchart': {'defaultRenderer': 'elk'}}}%%
Emoji/symbols missingReplace with ASCII text - not all renderers support Unicode
Poor contrast or inconsistent colorsUse %%{init: {'theme': 'dark'}}%% for all diagrams
Inline style declarationsRemove style X fill:#hex lines - use theme directive instead
Platform differencesSee platforms.md