File path
| File | Purpose |
|---|---|
docs/erd/erd.mmd |
Mermaid ERD source |
docs/erd/erd.png |
PNG rendering (for git commit) |
docs/erd/erd.svg |
SVG rendering (for git commit) |
Workflow
Step 1: Check environment
Check whether the mermaid MCP server is registered.
claude mcp list 2>/dev/null | grep mermaid
If not registered, auto-install:
npm install -g claude-mermaid
claude mcp add --scope user mermaid claude-mermaid
After installation, inform the user: "The claude-mermaid MCP has been installed. You must restart Claude Code for the MCP to be activated."
Step 2: Check erd.mmd
docs/erd/erd.mmd Check whether the file exists.
If the file does not exist → Create folder + create erd.mmd with the default template:
erDiagram
example["example (예시)"] {
serial4 example_seq PK "일련번호"
varchar name "이름"
}
If the file exists → Read it to understand the current content.
Step 3: Modify
If the user requests modifications, modify erd.mmd. If only preview/save is requested without modifications, skip this step.
Step 4: Execute
First determine whether erd.mmd has been modified.
git diff --name-only | grep "erd.mmd"
- Output present → Modified
- No output → Unchanged
If erd.mmd has been modified — run preview + file save in parallel
Task A — Browser preview (mermaid MCP):
mcp__mermaid__mermaid_preview:
preview_id: "erd-main"
diagram: {erd.mmd 전체 내용}
width: 1400
height: 1200
scale: 2
Task B — Save PNG/SVG files (Bash, from the project root):
npx @mermaid-js/mermaid-cli@latest \
-i docs/erd/erd.mmd \
-o docs/erd/erd.png \
-s 2 && \
npx @mermaid-js/mermaid-cli@latest \
-i docs/erd/erd.mmd \
-o docs/erd/erd.svg
If Task A fails (MCP not connected):
- Run only Task B (CLI) to guarantee PNG/SVG saving.
- Inform the user: "To use browser preview, restart Claude Code or
claude mcp add --scope user mermaid claude-mermaidregister the MCP with ."
If erd.mmd has not been modified — run preview only
No need to regenerate PNG/SVG. Run only Task A.
mcp__mermaid__mermaid_preview:
preview_id: "erd-main"
diagram: {erd.mmd 전체 내용}
width: 1400
height: 1200
scale: 2
Step 5: Report results
- Browser preview URL (on success)
- Saved PNG/SVG file paths
- If further modification iterations are needed, return to Step 3
Step 6: Git follow-up handling
After preview completion, check git status and determine automatically.
git diff --name-only
Criteria:
| Situation | Judgment | Action |
|---|---|---|
erd.mmdhas changed |
PNG/SVG are also commit targets | Stage all 3 files → commit |
erd.mmd unchanged (preview only) |
Ignore PNG/SVG changes | No commit needed |
Automatic handling procedure:
git diff --name-onlyCheck the list of changed files witherd.mmdDetermine whether it includes- Brief the user:
📊 ERD Git 처리 브리핑
변경된 파일:
- docs/erd/erd.mmd ← 수정됨 (또는 미변경)
- docs/erd/erd.png ← 재렌더링
- docs/erd/erd.svg ← 재렌더링
판단: [erd.mmd 수정됨 → 3개 파일 커밋 권장] 또는 [erd.mmd 미변경 → 커밋 불필요]
커밋 메시지 (안): "docs: ERD 업데이트 - {변경 내용 한 줄 요약}"
진행하시겠습니까?
A) 커밋 진행
B) 스테이징만 (커밋 보류)
C) 처리 안 함
- Handle according to the user's choice:
- Choose A:
git add docs/erd/erd.mmd docs/erd/erd.png docs/erd/erd.svg && git commit -m "..." - Choose B:
git add docs/erd/erd.mmd docs/erd/erd.png docs/erd/erd.svg - Choose C: exit without processing
- Choose A:
ERD writing rules
Entity name
["영문명 (한글명)"] Write in the format. Use only the entity name on relationship lines (including both causes rendering errors).
employee["employee (직원)"] { ... } ✅
employee ||--o{ employee_hist : "이력" ✅
employee["employee (직원)"] ||--o{ ... ❌ 렌더링 오류
Index marker
Write it in square brackets at the end of the column comment.
| Marker | Meaning | Example |
|---|---|---|
[IDX] |
Regular index | int4 branch_seq FK "branch 참조 [IDX]" |
[PIDX] |
Partial Index (WHERE is_delete='N') | varchar status "상태 코드 [PIDX]" |
[UIDX] |
Unique Index | varchar cert_no "증명서 번호 [UIDX]" |
[PIDX:a+b] |
Composite Partial Index | varchar status "... [PIDX:status+region_seq]" |
Audit fields
- Master table:
is_delete,insert_seq,insert_date,update_seq,update_date - History table:
insert_seq,insert_date(만)