mermaid
npx skills add https://github.com/natsuboy/agent-skills --skill mermaid
Agent 安装分布
Skill 文档
Mermaid å¾è¡¨ä¸å®¶
å建æ£ç¡®ãç¾è§çMermaidå¾è¡¨ãæ¯æv11+ææç¹æ§ã
ç®å½
- Agentå使¨¡å¼
- æ ¸å¿åå
- å¼ºå¶æ§è¡è§å
- æ§è¡æµç¨
- è§è§è´¨éæ å
- å¾è¡¨ç±»å鿥
- è¯è¨éæ©çç¥
- è¿åæ ¼å¼è§è
- å¸¸ç¨æ¨¡æ¿å¿«éå¯å¨
- åèèµæºç´¢å¼
Agentå使¨¡å¼
â ï¸ ä½¿ç¨æ¨¡å¼è¯´æï¼å¿ 读ï¼
æ¤skillå¿ é¡»å¨ç¬ç«åagentä¸è¿è¡ï¼é¿å å¨ä¸»å¯¹è¯ä¸å建大émermaid代ç é ætoken浪费ã
主Agentèè´£
â éè¯¯åæ³ï¼
- å¨ä¸»å¯¹è¯ä¸ç¼å大段mermaid代ç
- å¨ä¸»å¯¹è¯ä¸åå¤è°è¯ä¿®æ¹å¾è¡¨
â æ£ç¡®åæ³ï¼
- 使ç¨
delegate_taskå§æç»åagent - æä¾æ¸ æ°çä»»å¡æè¿°
- å¿ è¦æ¶å¹¶è¡å建å¤ä¸ªå¾è¡¨
å§æç¤ºä¾
å个å¾è¡¨ï¼
delegate_task(
category="quick",
load_skills=["mermaid"],
prompt="""
å建çµåç³»ç»æ¶æå¾ï¼Flowchartï¼ï¼
- æ£æ¥ç¨æ·ç¼è¾å¨ç¯å¢ï¼dark/lightï¼ï¼è¥ä¸ç¡®å®å询é®ã
- æ ¹æ®ç¯å¢éæ©ä¸»é¢ï¼dark模å¼ç¨dark主é¢ï¼light模å¼ç¨default主é¢ã
- å
å«ï¼å端ãAPIç½å
³ãå¾®æå¡ãæ°æ®åº
- 使ç¨subgraphåå±
- 代ç å¿
é¡»å
è£¹å¨ ```mermaid ... ``` ä¸
- ä¿åå° docs/architecture.md
- å¿
é¡»è¿è¡éªè¯èæ¬å¹¶è¿åéªè¯éè¿çæè¦
""",
run_in_background=False
)
å¤ä¸ªå¾è¡¨ï¼å¹¶è¡ï¼ï¼
# Step 1: 主Agentç»ä¸æ¶éç¯å¢ä¿¡æ¯ï¼åªè¯¢é®ä¸æ¬¡ï¼
editor_mode = ask_user("å¨ä»ä¹ç¯å¢ä¸æ¥çå¾è¡¨ï¼(dark/light/é»è®¤)")
# Step 2: åæ¶å¯å¨å¤ä¸ªTaskï¼æ ä¾èµå
³ç³»
timestamp=$(date +%Y%m%d-%H%M%S)
delegate_task(
category="quick",
load_skills=["mermaid"],
prompt=f"""
åå»ºç³»ç»æ¶æFlowchartï¼ä¿åå° /tmp/architecture-{timestamp}.mdï¼
- ç¼è¾å¨ç¯å¢ï¼{editor_mode}ï¼æ ¹æ®æ¤éæ©åéç主é¢ï¼
- darkæ¨¡å¼æ¨è使ç¨dark主é¢ï¼light模å¼ä½¿ç¨default主é¢
- å
å«ï¼å端ãAPIç½å
³ãå¾®æå¡ãæ°æ®åº
- 使ç¨subgraphåå±
- 代ç å¿
é¡»å
è£¹å¨ ```mermaid ... ``` ä¸
- ä½¿ç¨ --move-to åæ°
- è¿åç®æ´æè¦ï¼ä¸è¦å®æ´ä»£ç ï¼
""",
run_in_background=True # åå°æ§è¡
)
delegate_task(
category="quick",
load_skills=["mermaid"],
prompt=f"""
åå»ºç¨æ·ç»å½Sequence Diagramï¼ä¿åå° /tmp/login-sequence-{timestamp}.mdï¼
- ç¼è¾å¨ç¯å¢ï¼{editor_mode}
- ä½¿ç¨ --move-to åæ°
- è¿åç®æ´æè¦
""",
run_in_background=True
)
delegate_task(
category="quick",
load_skills=["mermaid"],
prompt=f"""
å建项ç®è®¡åGanttå¾ï¼ä¿åå° /tmp/project-plan-{timestamp}.mdï¼
- ç¼è¾å¨ç¯å¢ï¼{editor_mode}
- ä½¿ç¨ --move-to åæ°
- è¿åç®æ´æè¦
""",
run_in_background=True
)
å¹¶è¡å§æè§å
â éåå¹¶è¡çåºæ¯ï¼
- å¤ä¸ªç¬ç«å¾è¡¨ï¼æ ä¿¡æ¯ä¾èµï¼
- ä¸åç±»åçå¾è¡¨
- ç³»ç»ææ¡£å¥ä»¶
â ä¸éåå¹¶è¡çåºæ¯ï¼
- å¾è¡¨Béè¦å¾è¡¨Açå ·ä½å 容
- æé¡ºåºä¾èµå ³ç³»
- åç»å¾è¡¨éè¦ååºå¾è¡¨çå³çç»æ
å¹¶è¡æ¡ä»¶æ£æ¥æ¸ åï¼
- å¾è¡¨ä¹é´æ 顺åºä¾èµ
- å¾è¡¨ä¹é´æ ä¿¡æ¯ä¾èµ
- æ¯ä¸ªå¾è¡¨å¯ç¬ç«å®æ
ç¯å¢ä¿¡æ¯ä¼ éçç¥
æ ¸å¿åå
é¿å éå¤è¯¢é®ç¨æ·ï¼å¤ä¸ªåAgentå¹¶è¡æ§è¡æ¶ï¼ä¸»Agentåºç»ä¸æ¶éç¯å¢ä¿¡æ¯ï¼åªè¯¢é®ä¸æ¬¡ã
ç¯å¢éé å³çæ
çç¥1ï¼å·²ç¥ç¯å¢ï¼ä¸»Agentç»ä¸æ¶éï¼
# 主Agent询é®ç¨æ·ä¸æ¬¡
editor_mode = ask_user("å¨ä»ä¹ç¯å¢ä¸æ¥çå¾è¡¨ï¼(dark/light/é»è®¤)")
# å¹¶è¡å§ææ¶ä¼ éç¯å¢ä¿¡æ¯
delegate_task(
category="quick",
load_skills=["mermaid"],
prompt=f"åå»ºæ¶æå¾ï¼ç¯å¢ï¼{editor_mode}ï¼æ ¹æ®æ¤éæ©ä¸»é¢ï¼"
)
å³çé»è¾ï¼
ç¨æ·æç¡®åç¥ç¯å¢ï¼
ââ Light 模å¼
â ââ æ¨è主é¢ï¼default / forest / neutral
â ââ ä½¿ç¨æ¨¡æ¿ï¼*-templates.md
ââ Dark 模å¼
ââ æ¨è主é¢ï¼darkï¼é¦éï¼/ forestï¼å¤éï¼
ââ ä½¿ç¨æ¨¡æ¿ï¼*-templates-dark.md
çç¥2ï¼æªç¥ç¯å¢ï¼é»è®¤çç¥ï¼ä¸è¯¢é®ï¼
ä¸è¯¢é®ç¨æ·ï¼ä½¿ç¨æºè½é»è®¤å¼ï¼
# åAgentæ ¹æ®ææ¡£ç±»åéæ©é»è®¤ä¸»é¢
ææ¡£ç±»åï¼
ââ ææ¯ææ¡£/å客 â default
ââ æ¼ç¤ºæç¨¿ â dark
ââ ä¸ç¡®å® â default
å¨è¿åç»æä¸æä¾åæ¢æåï¼
â
å¾è¡¨å·²å建
- 主é¢ï¼defaultï¼éç¨äºæµ
è²èæ¯ï¼
ð¨ 主é¢åæ¢æåï¼
- 妿å¨dark模å¼ç¼è¾å¨ä¸æ¥çï¼å»ºè®®å°ä¸»é¢æ¹ä¸º `dark`
- ä¿®æ¹æ¹å¼ï¼å°é¦è¡æ¹ä¸º `%%{init: {'theme':'dark'}}%%`
å¹¶è¡æ§è¡æä½³å®è·µ
â ï¸ å¹¶è¡æ§è¡é£é©ï¼å¿ 读ï¼
å½å¤ä¸ª sub-agent å¹¶è¡å建å¾è¡¨æ¶åå¨ä»¥ä¸é£é©ï¼
| é£é© | åæ | 䏥鿧 |
|---|---|---|
| æä»¶å²çª | å¤ä¸ª agent åå ¥ç¸åè·¯å¾ï¼å¯¼è´è¦ç | ð´ 严é |
| éªè¯æ··ä¹± | éªè¯èæ¬å¯è½è¯»åå°ä¸å®æ´çå 容 | ð ä¸ç |
| ç»æä¸¢å¤± | åæ§è¡çç»æè¦çå æ§è¡ç | ð´ 严é |
| ç»æä¸å¯ä¿¡ | æ æ³ç¡®å®åªä¸ª agent çæçå¾è¡¨è¢«éªè¯ | ð´ 严é |
â æ¨èåæ³ï¼ååæä½ï¼
å Agent æ§è¡ï¼æ¨èï¼ï¼
Step 3: å建代ç â ä¿åæä»¶
Step 4: è¿è¡éªè¯ï¼ç´æ¥éªè¯è¯¥æä»¶
å¹¶è¡æ§è¡ï¼éè°¨æ ï¼ï¼
Step 3: å建代ç â ä¿åä¸´æ¶æä»¶
æ ¼å¼ï¼/tmp/{name}-{uuid}.md
示ä¾ï¼/tmp/architecture-8F2A3D9B.md
Step 4: éªè¯ä¸´æ¶æä»¶ï¼ä½¿ç¨ --move-to åæ°ï¼
python3 scripts/validate_mermaid.py /tmp/{name}-{uuid}.md --move-to docs/{name}.md
Step 5: éªè¯éè¿ â èªå¨ç§»å¨å°æç»è·¯å¾ï¼ååæä½ï¼
éªè¯èæ¬èªå¨å¤çæä»¶ç§»å¨ï¼æ éæå¨ mv å½ä»¤
Step 6: éªè¯å¤±è´¥ â å é¤ä¸´æ¶æä»¶ï¼éæ°çæ
ð¯ æä»¶å½åçç¥
| åºæ¯ | æä»¶åæ ¼å¼ | ç¤ºä¾ |
|---|---|---|
| å Agent | ç®åå½å | docs/architecture.md |
| å¹¶è¡æ¨è | UUID åç¼ï¼æå¯é ï¼ | docs/architecture-8F2A3D9B.md |
| å¹¶è¡æ¨è | æ¶é´æ³åç¼ | docs/architecture-20250208-143521.md |
| å¹¶è¡æ¨è | Agent ID åç¼ | docs/architecture-agent1.md |
æ ¸å¿åå
ð§ å¤æåº¦é¢å¤æ¡æ¶ï¼Step 0ï¼
å¨ç¼åä»»ä½ Mermaid 代ç ä¹åï¼å¿ é¡»å è¿è¡é¢å¤ã
ç¬¬ä¸æ¥ï¼å¿«éè¯ä¼°æºå 容
1. æºå 容类åè¯å«
| å 容类å | å ¸åç¹å¾ | é¢ä¼°èç¹æ° | æ¨èçç¥ |
|---|---|---|---|
| ä»£ç æµç¨ | 彿°è°ç¨ãæ¡ä»¶åæ¯ãå¾ªç¯ | 15-40 | æ¦æ¬æ¨¡å¼ |
| æ¶æè®¾è®¡ | ç³»ç»åå±ã模åå ³ç³» | 10-30 | è¯¦ç»æ¨¡å¼ |
| ä¸å¡æµç¨ | æ¥éª¤åºåãå³çç¹ | 8-25 | è¯¦ç»æ¨¡å¼ |
| æ°æ®æ¨¡å | å®ä½å ³ç³»ãåæ®µ | 12-50 | æ¦æ¬æ¨¡å¼ |
| æ¶åºäº¤äº | æå¡é´è°ç¨ãæ¶æ¯ä¼ é | 6-20 | è¯¦ç»æ¨¡å¼ |
2. èç¹æ°éå¿«éä¼°ç®
é»è¾æ¥éª¤æ° â æºææ¬æ®µè½æ° / 2
代ç è¡æ° â èç¹æ°ï¼æ¯ 5-10 è¡ â 1 个èç¹
åä¸è
æ°é â åè¯å®ä½æ° / 3
ç¬¬äºæ¥ï¼çç¥éæ©å³çæ
é¢ä¼°èç¹æ°ï¼
ââ < 20 èç¹
â ââ è¯¦ç»æ¨¡å¼ï¼1:1 æ å°ï¼ä¿çææå
³é®ä¿¡æ¯ï¼
â ââ ä¼ç¹ï¼ä¿¡æ¯å®æ´ï¼éåææ¡£
â ââ 缺ç¹ï¼å¯è½ç¥æ¾å¤æ
â
ââ 20-50 èç¹
â ââ æ¦æ¬æ¨¡å¼ï¼åå¹¶çç¢æ¥éª¤ï¼ä»
ä¿çå
³é®é»è¾ï¼
â ââ åå¹¶è§åï¼
â â ⢠è¿ç»çç®åæ¥éª¤ â å并为1个èç¹
â â ⢠ç¸ä¼¼åè½ â æ½è±¡ä¸º"XXå¤ç"
â â ⢠é误å¤ç忝 â ä»
ä¿çå
³é®è·¯å¾
â ââ 示ä¾ï¼
â â "åæ°è§£æ â åæ°æ ¡éª â æ ¼å¼è½¬æ¢"
â â
"åæ°å¤ç"
â
ââ > 50 èç¹
ââ æåæ¨¡å¼ï¼å建å¤ä¸ªç¸å
³å¾è¡¨ï¼
ââ æ¹æ¡Aï¼æå±æ¬¡æå
â ⢠æ»ä½æ¶æå¾ï¼é¡¶å±ï¼< 20èç¹ï¼
â ⢠åå±è¯¦ç»å¾ï¼æ¯å±< 20èç¹ï¼
ââ æ¹æ¡Bï¼ææ¨¡åæå
â â¢ ç¨æ·æ¨¡åå¾
â â¢ è®¢åæ¨¡åå¾
â ⢠æ¯ä»æ¨¡åå¾
ââ æ¹æ¡Cï¼ææ¶åºæå
⢠请æ±å¤çé¶æ®µå¾
⢠ä¸å¡é»è¾é¶æ®µå¾
ç¬¬ä¸æ¥ï¼ç¯å¢éé å³ç
ç¼è¾å¨ç¯å¢æ£æµ
ç¨æ·ç¯å¢ï¼
ââ Dark 模å¼ç¼è¾å¨
â ââ æ¨è主é¢ï¼darkï¼é¦éï¼/ forestï¼å¤éï¼
â ââ ä½¿ç¨æ¨¡æ¿ï¼*-templates-dark.md
ââ Light 模å¼ç¼è¾å¨
ââ æ¨è主é¢ï¼default / forest / neutral
ââ ä½¿ç¨æ¨¡æ¿ï¼*-templates.md
ç¯å¢éé æä½³å®è·µ
- â 主Agentç»ä¸æ¶éç¯å¢ä¿¡æ¯ï¼åªè¯¢é®ä¸æ¬¡ï¼
- â éè¿promptä¼ éç¯å¢ä¿¡æ¯ç»åAgent
- â é¿å æ¯ä¸ªåAgenté½è¯¢é®ç¨æ·
ç¬¬åæ¥ï¼è´¨éç®æ 设å®
æ ¹æ®ç¨é设å®è´¨éç®æ ï¼
| ç¨é | èç¹æ°ç®æ | è¯åç®æ | 说æ |
|---|---|---|---|
| ææ¯ææ¡£ | < 20 | ⥠85å | 追æ±é«è´¨éï¼è¯¦ç»åç¡® |
| æ¼ç¤ºæç¨¿ | < 15 | ⥠90å | ç®æ´ç¾è§ï¼çªåºéç¹ |
| å¿«éåå | < 30 | ⥠70å | å¯ç¨å³å¯ï¼å¿«éè¿ä»£ |
| æ£å¼ææ¡£ | < 20 | ⥠90å | å®ç¾åç°ï¼æ æå¯å» |
é¢å¤ç¤ºä¾
示ä¾1ï¼ç¨æ·ç»å½æµç¨ï¼ä»£ç æµç¨ï¼
æºå
容ï¼ç»å½å½æ°å
å«50è¡ä»£ç ï¼å
æ¬åæ°è§£æãéªè¯ãæ°æ®åºæ¥è¯¢ãé误å¤ç
ââ é¢ä¼°èç¹ï¼50 / 5 â 10个èç¹
ââ çç¥ï¼è¯¦ç»æ¨¡å¼ï¼èç¹æ° < 20ï¼
ââ å¾è¡¨ç±»åï¼Sequence Diagramï¼å±ç¤ºæ¶åºäº¤äºï¼
ââ è´¨éç®æ ï¼â¥ 85å
示ä¾2ï¼å¾®æå¡æ¶æï¼æ¶æè®¾è®¡ï¼
æºå
容ï¼å
å«10个微æå¡ï¼æ°æ®åºãç¼åãæ¶æ¯éå
ââ é¢ä¼°èç¹ï¼çº¦15-20个èç¹
ââ çç¥ï¼è¯¦ç»æ¨¡å¼ï¼èç¹æ°å¨è¾¹çï¼
ââ å¾è¡¨ç±»åï¼Flowchart + subgraph åå±
ââ è´¨éç®æ ï¼â¥ 90åï¼æ£å¼ææ¡£ï¼
示ä¾3ï¼çµåç³»ç»ï¼å¤§åç³»ç»ï¼
æºå
容ï¼ç¨æ·ãååã订åãæ¯ä»ãç©æµãåºåçæ¨¡åï¼å
±80+åè½ç¹
ââ é¢ä¼°èç¹ï¼> 50个èç¹
ââ çç¥ï¼æå模å¼
â ⢠æ»ä½æ¶æå¾ï¼15èç¹ï¼
â â¢ è®¢åæµç¨å¾ï¼20èç¹ï¼
â ⢠æ¯ä»æµç¨å¾ï¼15èç¹ï¼
ââ è´¨éç®æ ï¼æ¯ä¸ªå¾è¡¨ ⥠85å
代ç å¯è§åç¹å«è§å
â 严ç¦çåæ³
- éè¡ç¿»è¯ä»£ç ï¼
if (x > 0) { return true; }â åç¬èç¹ - å±ç¤ºææé误å¤ç忝
- å 嫿¥å¿è®°å½çéä¸å¡é»è¾
â æ£ç¡®çåæ³
- é»è¾æ½è±¡ï¼
åæ°è§£æ + æ ¡éª + æ¥éâåæ°å¤çèç¹ - ä» ä¿ç主æµç¨ï¼çç¥å¼å¸¸å¤çç»è
- ä½¿ç¨æ³¨éè¡¥å ç»è
åå¤§è´¨éæ å
| ä¼å 级 | æ å | éªè¯æ¹å¼ |
|---|---|---|
| 1 | è¯æ³æ£ç¡®æ§ | â ï¸ ä¸¥æ ¼èªå¨åï¼validate_mermaid.py |
| 2 | è§è§ç¾è§æ§ | â åèªå¨ï¼è§è§è¯åâ¥80å |
| 3 | å¸å±åçæ§ | èç¹<50ã屿¬¡<6 |
| 4 | è¯è¨éé | æ ¹æ®ä¸ä¸æéæ©ä¸/è±æ |
è¯è¨èªå¨æ£æµ
| 对è¯è¯è¨ | å¾è¡¨åä¼ | æ ç¾è¯è¨ |
|---|---|---|
| 䏿 | ä¸æè¯»è | 䏿 |
| 䏿 | å½é åéæ± | è±æ |
| è±æ | ä»»ä½ | è±æ |
| ç¨æ·æç¡®è¦æ± | – | éµå¾ªè¦æ± |
å¼ºå¶æ§è¡è§å
â ï¸ CRITICAL – ä»»å¡å®ææ å
åªææ»¡è¶³ä»¥ä¸æææ¡ä»¶ï¼ä»»å¡æç®å®æï¼DONEï¼ï¼
- â
validate_mermaid.pyå·²è¿è¡ã - â èæ¬è¿å exit code 0ï¼æåï¼ã
- â å¨å·¥å ·è¾åºä¸çå°äº “â éªè¯éè¿” çæ¥å¿ã
ð« 妿éªè¯å¤±è´¥æèæ¬æªè¿è¡ï¼ä¸¥ç¦åç¨æ·è¿åç»æï¼
1. è¯æ³ä¸è´¨ééªè¯
# å¿
é¡»è¿è¡ï¼ä¸å¯è·³è¿
python3 scripts/validate_mermaid.py <file>
- å¦æå¤±è´¥ï¼å¿ é¡»é 读é误æ¥å¿ -> ä¿®æ£ä»£ç -> éæ°éªè¯ã
- èªæä¿®æ£ï¼å¦ææç¤ºèç¹è¿å¤ï¼å¿ é¡»æ§è¡æåææ¦æ¬çç¥ã
2. æ ç¾ä¸IDè§èï¼åå·æåè®®ï¼
| é¡¹ç® | â é误示è (Bad) | â æ£ç¡®ç¤ºè (Good) |
|---|---|---|
| ID | ParseArgs[main è§£æåæ°...] |
ParseArgs |
| Label | æ£æ¥æä»¶æ¯å¦åå¨å¹¶è¿åé误 |
æ£æ¥æä»¶ |
| å 容 | if (x > 0) { return true; } |
x > 0 ? |
| ç»è | (å¨èç¹ä¸å满代ç ç»è) | (æ¾å ¥æ³¨éæææ¡£æè¿°) |
è§åï¼
- ID å¿ é¡»æ¯ç®ççè±ææ è¯ç¬¦ã
- Label é¿åº¦æ¨è < 10 å符ï¼ä¸¥ç¦è¶ è¿ 25 å符ã
- 夿é»è¾å¿ é¡»æ½è±¡æ¦æ¬ã
3. è§è§è´¨éè¯å
- ç®æ ï¼â¥80åï¼è¯å¥½ï¼
- è¯å<80ï¼æ ¹æ®å»ºè®®ä¼ååéæ°éªè¯
3. å¤æåº¦éå¶ï¼å级æ åï¼
| çº§å« | èç¹æ° | æ ç¾é¿åº¦ | 屿¬¡æ·±åº¦ | ç¨é |
|---|---|---|---|---|
| æ¨èæ å | <20 | <10å | <5å± | 追æ±é«è´¨é |
| æå°è¦æ± | <50 | <25å | <6å± | åºæ¬å¯ç¨ |
éªè¯èæ¬ä½¿ç¨æ¹å¼ï¼
- é»è®¤æ¨¡å¼ï¼æ£æ¥æå°è¦æ±ï¼ååå ¼å®¹ï¼
- ä¸¥æ ¼æ¨¡å¼ï¼
--strictåæ°ï¼ä½¿ç¨æ¨èæ å
# é»è®¤æ¨¡å¼
python3 scripts/validate_mermaid.py diagram.md
# ä¸¥æ ¼æ¨¡å¼
python3 scripts/validate_mermaid.py diagram.md --strict
4. è¿åæ ¼å¼
- â ï¸ ä¸¥ç¦è¿å宿´ä»£ç ï¼å ç¾è¡ï¼
- â ä» è¿åï¼ç±»å + ææ + æä»¶ä½ç½®
â ç¦æ¢è¡ä¸º
| è¡ä¸º | 为ä»ä¹ç¦æ¢ |
|---|---|
| è·³è¿éªè¯ç´æ¥è¿å | æ æ³ä¿è¯è¯æ³æ£ç¡® |
| è¿å宿´mermaid代ç | 浪费主对è¯token |
| 笼ç»ç¡®è®¤”å·²å®ææ£æ¥” | æ æ³éªè¯æ¯å¦çæ£æ§è¡ |
| ä¸é ç½®ä¸»é¢ | è§è§ææå·® |
| èç¹>20䏿å | å¾è¡¨è¿äºå¤æ |
æ§è¡æµç¨
æ å5æ¥æµç¨ï¼ä¸å¯è·³æ¥ï¼
Step 0: ð§ é¢å¤ (æç»´é¾)
- ä¼°ç®èç¹æ° â å³å®çç¥ï¼è¯¦ç» / æ¦æ¬ / æå
- 确认ç¯å¢(Dark/Light) â å³å®ä¸»é¢ï¼dark / default
â
Step 1: éæ©å¾è¡¨ç±»å â
å¿
é¡»æç¡®å£°æ
â
Step 2: åºç¨æ¨¡æ¿ â ä» assets/templates/ éæ©
â
Step 3: å建代ç â ï¸ éµå¾ªé¢å¤çç¥
â
1. **代ç å¿
é¡»å
å«ä¸»é¢é
ç½®**
2. **ID/Label å¿
é¡»ç®ç**
3. **å¡«å
å
容** + **ä¼åè§è§**
â
Step 4: éªè¯å¹¶è¿å â ï¸ CRITICAL
Step 4 è¯¦ç»æµç¨
å Agent æ§è¡æ¨¡å¼ï¼é»è®¤ï¼ï¼
4.1 ä¿åæä»¶å°æå®è·¯å¾
â
4.2 è¿è¡éªè¯ï¼python3 scripts/validate_mermaid.py <diagram.md>
â
4.3 æ£æ¥ç»æï¼
ââ è¯æ³éè¿ + è§è§â¥60 â ç»§ç»4.4
ââ è¯æ³å¤±è´¥ â ä¿®å¤ â éæ°4.2ï¼æå¤3次ï¼
ââ è§è§<60 â æ ¹æ®å»ºè®®ä¼å â éæ°4.2
â
4.4 å¡«åæ£æ¥æ¸
å
â
4.5 ææ åæ ¼å¼è¿åç»æ
å¹¶è¡æ§è¡æ¨¡å¼ï¼éè°¨æ ï¼ï¼
4.1 ä¿åä¸´æ¶æä»¶
- 使ç¨å¯ä¸æä»¶åï¼/tmp/{name}-{uuid}.md
- 示ä¾ï¼/tmp/architecture-8F2A3D9B.md
â
4.2 éªè¯ä¸´æ¶æä»¶ï¼ä½¿ç¨ --move-to åæ°ï¼
- python3 scripts/validate_mermaid.py /tmp/{name}-{uuid}.md --move-to docs/{name}.md
â
4.3 æ£æ¥ç»æï¼
ââ éªè¯éè¿ â èªå¨ç§»å¨å°æç»è·¯å¾ï¼--move-toåæ°çæï¼
ââ éªè¯å¤±è´¥ â èªå¨å é¤ä¸´æ¶æä»¶ï¼éæ°çæ
ââ è§è§<60 â ä¼ååéæ°4.2
â
4.4 å¡«åæ£æ¥æ¸
å
â
4.5 ææ åæ ¼å¼è¿åç»æ
å¼ºå¶æ£æ¥æ¸ å
å建å¾è¡¨åï¼å¿ é¡»å¨è¿åç»æä¸å å«ï¼
ð è´¨éæ£æ¥ï¼
- [x] éªè¯èæ¬ï¼å·²è¿è¡ï¼ç»æPASS
- [x] è§è§è¯åï¼XXåï¼â¥80ï¼
- [x] èç¹æ°éï¼XX个ï¼<20ï¼
- [x] 主é¢é
ç½®ï¼default/dark/forest/neutral
- [x] æä»¶ä¿åï¼<è·¯å¾>
è§è§è´¨éæ å
â è§è§è¯åç®æ ï¼â¥80å
â å¿ é¡»åå°ï¼åºç¡è§è§ï¼
1. 主é¢é ç½®ï¼å¼ºå¶ï¼
%%{init: {'theme':'default'}}%%
flowchart TD
...
- å¿ éï¼default / dark / forest / neutral
- ææ¯ææ¡£ç¨ defaultï¼æ¼ç¤ºç¨ dark 2. å¸å±æ¹åï¼å¼ºå¶ï¼
- Flowchartå¿ é¡»æç¡®ï¼TD / LR / RL / BT
- æ¶é´æµç¨ â LRï¼å±æ¬¡ç»æ â TD 3. èç¹åç»ï¼èç¹>10æ¶å¼ºå¶ï¼
flowchart TB
subgraph frontend[å端å±]
A[Webåºç¨]
B[ç§»å¨åºç¨]
end
subgraph backend[å端å±]
C[APIæå¡]
end
ð åºè¯¥åå°ï¼é«çº§è§è§ï¼
4. èç¹å½¢ç¶åºå
flowchart LR
A[æ®éæµç¨] --> B(å³çç¹)
B --> C[(æ°æ®åº)]
C --> D([API端ç¹])
5. æ ·å¼çªåºéç¹
flowchart TD
A[å¼å§]
B[éè¦æ¥éª¤]
style B fill:#ff6b6b,stroke:#c92a2a,stroke-width:3px,color:#fff
6. åè°é è²
é»è®¤(Light)ï¼
- æåï¼#51cf66ï¼ç»¿ï¼ | é误ï¼#ff6b6bï¼çº¢ï¼
- è¦åï¼#ffd93dï¼é»ï¼ | ä¿¡æ¯ï¼#4dabf7ï¼èï¼
æ·±è²(Dark)ï¼
- èè²ï¼#4dabf7ï¼ç½åï¼| 绿è²ï¼#69db7cï¼é»åï¼
- é»è²ï¼#ffd43bï¼é»åï¼| 红è²ï¼#ff8787ï¼ç½åï¼
è§è§è´¨éæ£æ¥æ¸ å
- â å·²é 置主é¢
- â å·²æç¡®å¸å±æ¹å
- â èç¹æ ç¾ç®æ´ï¼<10åï¼
- â 夿å¾è¡¨ä½¿ç¨subgraphåç»
- ð éè¦èç¹ææ ·å¼çªåº
- ð 使ç¨ä¸åèç¹å½¢ç¶åºåç±»å
- ð é¢è²ä½¿ç¨åè°ç»ä¸
详ç»è§è§æåï¼references/visual-design-guide.md
å¾è¡¨ç±»å鿥
| ç±»å | ç¨é | æ¨¡æ¿ |
|---|---|---|
| Flowchart | æµç¨å¾ãç³»ç»æ¶æãå³çæ | assets/templates/flowchart-templates.md (Light)assets/templates/flowchart-templates-dark.md (Dark) |
| Sequence Diagram | æ¶åºå¾ãAPI交äºã对象éä¿¡ | assets/templates/sequence-templates.md (Light)assets/templates/sequence-templates-dark.md (Dark) |
| Class Diagram | ç±»å¾ã对象模åãæ°æ®ç»æ | assets/templates/class-diagram-templates.md (Light)assets/templates/class-diagram-templates-dark.md (Dark) |
| State Diagram | ç¶ææºãçå½å¨æã工使µ | assets/templates/state-diagram-templates.md (Light)assets/templates/state-diagram-templates-dark.md (Dark) |
| Gantt | 项ç®è®¡åãæ¶é´çº¿ãéç¨ç¢ | assets/templates/gantt-templates.md (Light)assets/templates/gantt-templates-dark.md (Dark) |
| ER Diagram | æ°æ®åºè®¾è®¡ãå®ä½å ³ç³» | assets/templates/er-diagram-templates.md (Light)assets/templates/er-diagram-templates-dark.md (Dark) |
| Architecture ð¥ | ç³»ç»æ¶æãæå¡ææï¼v11+ï¼ | assets/templates/architecture-templates.md (Light)assets/templates/architecture-templates-dark.md (Dark) |
宿´ç±»å详解ï¼references/diagram-types-guide.md
v11+æ°ç¹æ§ï¼references/v11-new-features.md
è¯è¨éæ©çç¥
èªå¨æ£æµè§å
对è¯ä¸»è¦æ¯ä¸æ AND æªæç¡®è¦æ±è±æï¼
ââ æ¯ â æ ç¾(Label)使ç¨ä¸æ
ââ å¦ â æ ç¾(Label)使ç¨è±æ
â ï¸ æ è¯ç¬¦(ID)è§åï¼
- æ 论æ ç¾è¯è¨å¦ä½ï¼IDå¿
é¡»å§ç»ä½¿ç¨ç®çè±æï¼å¦
user_nodeèéç¨æ·èç¹ï¼ã - Classåå¿ é¡»ä½¿ç¨è±æã
示ä¾
ä¸æå¯¹è¯ + 䏿åä¼ï¼
flowchart TD
A[ç¨æ·è¯·æ±] --> B{éªè¯èº«ä»½}
B -->|æå| C[å¤ç请æ±]
B -->|失败| D[è¿åé误]
è±æå¯¹è¯ æ å½é åéæ±ï¼
flowchart TD
A[User Request] --> B{Authenticate}
B -->|Success| C[Process Request]
B -->|Failure| D[Return Error]
è¿åæ ¼å¼è§è
â æ åæ ¼å¼ï¼å¼ºå¶ä½¿ç¨ï¼
â
[å¾è¡¨åç§°]å·²å建
ð å¾è¡¨ä¿¡æ¯ï¼
- ç±»åï¼[Flowchart/Sequence/Ganttç] [æ¹å]
- è§æ¨¡ï¼[èç¹æ°/åä¸è
æ°]个
- 主é¢ï¼[default/dark/forest/neutral]ï¼éç¨äº[æµ
è²/æ·±è²]èæ¯ï¼
- æä»¶ï¼[宿´è·¯å¾]
ð è´¨éæ£æ¥ï¼
- [x] è¯æ³éªè¯ï¼PASS
- [x] è§è§è¯åï¼XXå
- [x] å¤æåº¦ï¼åç
ð¨ 主é¢åæ¢æåï¼
- 妿å¨dark模å¼ç¼è¾å¨ä¸æ¥çï¼å»ºè®®å°ä¸»é¢æ¹ä¸º `dark`
- ä¿®æ¹æ¹å¼ï¼å°é¦è¡æ¹ä¸º `%%{init: {'theme':'dark'}}%%`
- å
¶ä»å¯é主é¢ï¼forestãneutral
ð¡ å¯å¨ Mermaid Live Editor ææ¯æmermaidçç¼è¾å¨ä¸æ¥çã
å¦éè°æ´ï¼è¯·è¯´æå
·ä½éæ±ã
â éè¯¯æ ¼å¼ï¼ä¸¥ç¦ï¼
æå建äºä¸ä¸ªç³»ç»æ¶æå¾ï¼ä»£ç å¦ä¸ï¼
flowchart TB
[æ¤å¤å ç¾è¡ä»£ç ...] â 严ç¦è¿å宿´ä»£ç ï¼
å¸¸ç¨æ¨¡æ¿å¿«éå¯å¨
Flowchart – ç³»ç»æ¶æå¾
%%{init: {'theme':'default'}}%%
flowchart TB
subgraph frontend[å端å±]
A([Webåºç¨])
B([ç§»å¨åºç¨])
end
subgraph backend[å端å±]
C[APIç½å
³]
D[ä¸å¡æå¡]
end
subgraph data[æ°æ®å±]
E[(æ°æ®åº)]
F[(ç¼å)]
end
A --> C
B --> C
C --> D
D --> E
D --> F
style frontend fill:#e3f2fd,stroke:#1565c0
style backend fill:#fff3e0,stroke:#ef6c00
style data fill:#f1f8e9,stroke:#558b2f
Flowchart – ç³»ç»æ¶æå¾ (Darkéé )
%%{init: {'theme':'dark'}}%%
flowchart TB
subgraph clients[ð 客æ·ç«¯]
A([Webåºç¨])
end
subgraph services[âï¸ æå¡å±]
B[APIæå¡]
end
A --> B
style clients fill:#4dabf7,stroke:#1864ab,color:#fff
style services fill:#69db7c,stroke:#2b8a3e,color:#212529
Sequence Diagram – API交äº
%%{init: {'theme':'default'}}%%
sequenceDiagram
participant Client as 客æ·ç«¯
participant API as APIæå¡
participant DB as æ°æ®åº
Client->>API: è¯·æ±æ°æ®
activate API
API->>DB: æ¥è¯¢
activate DB
DB-->>API: è¿åç»æ
deactivate DB
API-->>Client: ååºæ°æ®
deactivate API
Gantt – 项ç®è®¡å
%%{init: {'theme':'default'}}%%
gantt
title 项ç®å¼å计å
dateFormat YYYY-MM-DD
section è®¾è®¡é¶æ®µ
éæ±åæ :done, des1, 2026-01-01, 2026-01-15
UI设计 :active, des2, 2026-01-10, 2026-01-25
section å¼åé¶æ®µ
å端å¼å :dev1, 2026-01-20, 30d
å端å¼å :dev2, after des2, 25d
section æµè¯é¶æ®µ
éææµè¯ :test1, after dev1, 10d
æ´å¤æ¨¡æ¿ï¼assets/templates/
常è§é®é¢ä¸è§£å³
é®é¢1ï¼å ³é®åå²çª
é误ï¼ä½¿ç¨ endãclass çå
³é®åä½ä¸ºèç¹ID
è§£å³ï¼ä½¿ç¨åå¼å·(`)å 裹
flowchart TD
start["å¼å§"]
`end`["ç»æ"]
start --> `end`
é®é¢2ï¼ç¹æ®å符æ¾ç¤ºå¼å¸¸
éè¯¯ï¼æ ç¾å
å« ()ã{} çç¹æ®å符
è§£å³ï¼ä½¿ç¨å¼å·å 裹
flowchart LR
A["ç¨æ·(User)"] --> B["ç³»ç»{System}"]
é®é¢3ï¼å¾è¡¨è¿äºå¤æï¼éªè¯èæ¬æ¥éï¼
é误ï¼èç¹æ°è¿å¤(55个)ï¼å»ºè®®<50
è§£å³çç¥ï¼
- æ¦æ¬æ¨¡å¼ï¼å°è¿ç»çç®åæ¥éª¤åå¹¶ã
- â
è§£æA->è§£æB->è§£æC - â
è§£æåæ°
- â
- æå模å¼ï¼
- å建
主æµç¨å¾ï¼ä» å å«é«å±æ¨¡åï¼ - å建
åæµç¨å¾ï¼è¯¦ç»å±ç¤ºæä¸ªæ¨¡åï¼
- å建
- ç§»é¤ç»èï¼
- ç§»é¤é误å¤ç忝ï¼é¤éæ¯ä¸é¨çé误æµç¨å¾ï¼
- ç§»é¤æ¥å¿è®°å½çéä¸å¡èç¹
æ´å¤é®é¢ï¼references/best-practices.md
åèèµæºç´¢å¼
| æä»¶ | å 容 | 使¶æ¥ç |
|---|---|---|
| references/visual-design-guide.md | é è²æ¹æ¡ãå½¢ç¶è¯ä¹ãå¸å±åå | ä¼åè§è§æææ¶ |
| references/diagram-types-guide.md | ææå¾è¡¨ç±»å详ç»è¯´æ | éæ©å¾è¡¨ç±»åæ¶ |
| references/syntax-reference.md | è¯æ³éæ¥æå | å¿è®°å ·ä½è¯æ³æ¶ |
| references/styling-themes.md | 主é¢é 置详解 | å®å¶æ ·å¼æ¶ |
| references/best-practices.md | æä½³å®è·µã常è§é·é± | ä¼åå¾è¡¨è´¨éæ¶ |
| references/v11-new-features.md | v11+æ°ç¹æ§è¯´æ | ä½¿ç¨ææ°ç¹æ§æ¶ |
éªè¯å·¥å ·ä½¿ç¨
è¿è¡éªè¯
# éªè¯å个æä»¶
python3 scripts/validate_mermaid.py diagram.md
# è¯¦ç»æ¨¡å¼
python3 scripts/validate_mermaid.py diagram.md --verbose
# ä¸¥æ ¼æ¨¡å¼ï¼ä½¿ç¨æ¨èæ åï¼èç¹<20, 深度<5, æ ç¾<10åï¼
python3 scripts/validate_mermaid.py diagram.md --strict
èªå¨ä¿®å¤åè½ï¼v2.0 æ°å¢ï¼
å½éªè¯å¤±è´¥æè¯åä¸çæ³æ¶ï¼ä½¿ç¨èªå¨ä¿®å¤åè½å¿«éæåè´¨éã
1. èªå¨ä¿®å¤ææé®é¢
# ä¸é®ä¿®å¤ææå¸¸è§é®é¢
python3 scripts/validate_mermaid.py diagram.md --fix
# ä¿®å¤å
容ï¼
# â
æ·»å 缺失ç主é¢é
ç½®
# â
æ¿æ¢åºå¼ç graph 为 flowchart
# â
缩çè¿é¿çæ ç¾ï¼>25åï¼
# â
为æµ
è²èæ¯èç¹æ·»å æ·±è²æå
2. éæ©æ§ä¿®å¤
# ä»
ä¿®å¤ä¸»é¢é
ç½®
python3 scripts/validate_mermaid.py diagram.md --fix theme
# ä»
ä¿®å¤é¢è²å¯¹æ¯åº¦
python3 scripts/validate_mermaid.py diagram.md --fix contrast
# ä»
ä¿®å¤åºå¼è¯æ³
python3 scripts/validate_mermaid.py diagram.md --fix syntax
# ä»
ä¿®å¤æ ç¾è¿é¿
python3 scripts/validate_mermaid.py diagram.md --fix labels
3. é¢è§ä¿®å¤ï¼ä¸å®é ä¿®æ¹ï¼
# é¢è§ä¿®å¤ææï¼Dry Runï¼
python3 scripts/validate_mermaid.py diagram.md --fix --fix-dry-run
# è¾åºé¢è§ï¼
# ð é¢è§ä¿®å¤...
#
# â
已修å¤ä»¥ä¸é®é¢ï¼
# ⢠添å 主é¢é
ç½®ï¼default
# â¢ å° 'graph' æ¿æ¢ä¸º 'flowchart'
# â¢ ç¼©çæ ç¾ï¼'ç¨æ·è®¤è¯åæææµç¨...' â 'ç¨æ·è®¤è¯åææ...'
#
# ð¡ ä½¿ç¨ --fix-dry-run é¢è§ï¼ç¡®è®¤æ 误åå»æè¯¥åæ°æ§è¡å®é
ä¿®å¤
4. èªå¨ä¿®å¤å·¥ä½æµ
# Step 1: éªè¯å¾è¡¨
python3 scripts/validate_mermaid.py diagram.md
# Step 2: 妿éªè¯å¤±è´¥æè¯åä¸çæ³ï¼é¢è§ä¿®å¤
python3 scripts/validate_mermaid.py diagram.md --fix --fix-dry-run
# Step 3: 确认修å¤è®¡ååï¼æ§è¡å®é
ä¿®å¤ï¼èªå¨å建.backupå¤ä»½ï¼
python3 scripts/validate_mermaid.py diagram.md --fix
# Step 4: éæ°éªè¯
python3 scripts/validate_mermaid.py diagram.md
# å¤ä»½æä»¶ä½ç½®ï¼diagram.md.backup
5. 常è§é®é¢çæå¨ä¿®å¤
é®é¢1ï¼ä¸»é¢ç¼ºå¤±ï¼-15åï¼
# â ä¿®å¤å
flowchart TD
A[å¼å§]
# â
ä¿®å¤å
%%{init: {'theme':'default'}}%%
flowchart TD
A[å¼å§]
é®é¢2ï¼ä½¿ç¨åºå¼è¯æ³ï¼æ£5åï¼
# â ä¿®å¤å
graph TD
A --> B
# â
ä¿®å¤å
flowchart TD
A --> B
é®é¢3ï¼æ ç¾è¿é¿ï¼-8åï¼
# â ä¿®å¤å
A[ç¨æ·æäº¤è®¢å请æ±å°ç³»ç»è¿è¡å¤ç]
# â
ä¿®å¤å
A["ç¨æ·æäº¤è®¢å..."]
é®é¢4ï¼é¢è²å¯¹æ¯åº¦ä¸è¶³ï¼-10åï¼
# â ä¿®å¤å
style A fill:#fff3e0,stroke:#ef6c00
# â
ä¿®å¤åï¼æ·»å æ·±è²æåï¼
style A fill:#fff3e0,stroke:#ef6c00,color:#333
6. ä¿®å¤ä¼å 级ï¼P0/P1/P2ï¼
| ä¼å 级 | é®é¢ç±»å | å½±å | èªå¨ä¿®å¤ |
|---|---|---|---|
| P0 | è¯æ³é误 | æ æ³æ¸²æ | â éæå¨ä¿®å¤ |
| P0 | 主é¢ç¼ºå¤± | -15å | â èªå¨æ·»å |
| P1 | åºå¼è¯æ³ | -5å | â èªå¨æ¿æ¢ |
| P1 | æ ç¾è¿é¿ | -8å | â èªå¨ç¼©ç |
| P1 | 对æ¯åº¦ä¸è¶³ | -10å | â èªå¨è°æ´ |
| P2 | 缺å°åç» | -20å | â éæå¨è®¾è®¡ |
| P2 | å½¢ç¶åä¸ | 建议 | â éæå¨ä¼å |
éªè¯è¾åºç¤ºä¾
============================================================
ð Mermaidå¾è¡¨éªè¯æ¥å
============================================================
â
è¯æ³éªè¯ï¼éè¿
ð å¤æåº¦åæï¼
èç¹æ°ï¼15 â
屿¬¡æ·±åº¦ï¼3 â
è¿æ¥çº¿ï¼18
ð¨ è§è§è´¨éè¯åï¼85å - è¯å¥½ ââââ
ð¡ ä¼å建议ï¼
- 建议使ç¨styleçªåºéè¦èç¹
============================================================
馿¬¡è¿è¡ä¼èªå¨æ£æµå¹¶æç¤ºå®è£ @mermaid-js/mermaid-cli
æ»ç»
ä¸ä¸ªå ³é®è¦ç´
- æ£ç¡®æ§ – å§ç»éªè¯è¯æ³ï¼èªå¨åï¼
- ç¾è§æ§ – è§è§è¯åâ¥80ï¼åèªå¨ï¼
- æ¸ æ°æ§ – ç®æ´æ ç¾ãåçå¸å±
å¿«é工使µ
仿¨¡æ¿å¼å§ â å¡«å
å
容 â ä¼åè§è§ â éªè¯è¯æ³ â è¿åæè¦
æ ¸å¿çº¦æ
- â ï¸ å¿ é¡»å¨åagentä¸è¿è¡
- â ï¸ å¿ é¡»è¿è¡éªè¯èæ¬
- â ï¸ ä¸¥ç¦è¿å宿´ä»£ç
- â è§è§è¯åç®æ â¥80å