Help us improve
Share bugs, ideas, or general feedback.
From sr-obsidian
Obsidian .canvas 파일 생성 및 편집 스킬. 노드(텍스트·파일·링크·그룹)와 엣지로 구성된 JSON Canvas 형식을 사용한다. ISS 타임라인, 서비스 의존관계 맵, 아키텍처 다이어그램, 마인드맵 요청 시 사용. Do NOT use for HTML diagrams (use sr-obsidian:visualize instead). Do NOT use for Mermaid diagrams (embed in standard .md notes). Keywords: canvas, json-canvas, 캔버스, 마인드맵, 의존관계, 다이어그램, 아키텍처 맵
npx claudepluginhub seokrae/sr-obsidian --plugin sr-obsidianHow this skill is triggered — by the user, by Claude, or both
Slash command
/sr-obsidian:canvasThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Obsidian `.canvas` 파일은 JSON Canvas Spec 1.0 형식이다.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Applies a firm's KYC/AML rules grid to parsed onboarding records: assigns risk rating, checks required documents, outputs rule outcomes with citations, and routes for escalation.
Designs test strategies and plans with testing pyramid. Covers APIs, frontend, data pipelines, infrastructure; outputs plans including coverage targets, examples, and gaps.
Share bugs, ideas, or general feedback.
Obsidian .canvas 파일은 JSON Canvas Spec 1.0 형식이다.
최상위 구조: {"nodes": [...], "edges": [...]} — 다른 키는 없음.
20-areas/{서비스}/diagrams/{이름}.canvas10-projects/{ISS-번호}/{이름}.canvas| 필드 | 타입 | 설명 |
|---|---|---|
id | string | 16자리 소문자 16진수 (고유) |
type | string | "text" | "file" | "link" | "group" |
x | number | 좌상단 x 좌표 |
y | number | 좌상단 y 좌표 |
width | number | 노드 너비 |
height | number | 노드 높이 |
color | string | (선택) 색상 |
{
"id": "a1b2c3d4e5f6a7b8",
"type": "text",
"text": "결제 요청\n금액 검증",
"x": 0,
"y": 0,
"width": 250,
"height": 100
}
주의: 줄바꿈은
\n사용.\\n은\와n문자로 렌더링된다.
{
"id": "b2c3d4e5f6a7b8c9",
"type": "file",
"file": "20-areas/payment/psp/psp 프로젝트 현황.md",
"x": 300,
"y": 0,
"width": 400,
"height": 300
}
subpath로 특정 헤딩 지정: "subpath": "#아키텍처"
{
"id": "c3d4e5f6a7b8c9d0",
"type": "link",
"url": "https://stripe.com/docs",
"x": 700,
"y": 0,
"width": 400,
"height": 200
}
{
"id": "d4e5f6a7b8c9d0e1",
"type": "group",
"label": "결제 레이어",
"x": -50,
"y": -50,
"width": 600,
"height": 400,
"background": "20-areas/payment/diagrams/bg.png",
"backgroundStyle": "cover"
}
{
"id": "e5f6a7b8c9d0e1f2",
"fromNode": "a1b2c3d4e5f6a7b8",
"fromSide": "right",
"toNode": "b2c3d4e5f6a7b8c9",
"toSide": "left",
"label": "승인 요청",
"color": "4"
}
| 필드 | 설명 |
|---|---|
fromSide / toSide | "top" | "right" | "bottom" | "left" |
label | (선택) 엣지 레이블 |
color | (선택) 색상 |
fromEnd / toEnd | (선택) "none" | "arrow" |
canvasColor 타입: 프리셋 "1"~"6" 또는 hex "#FF0000".
| 값 | 색상 |
|---|---|
"1" | 빨간색 |
"2" | 주황색 |
"3" | 노란색 |
"4" | 초록색 |
"5" | 파란색 |
"6" | 보라색 |
16자리 소문자 16진수. Bash로 생성:
openssl rand -hex 8
| 요소 | 권장 크기 |
|---|---|
| 텍스트 노드 | 250×100 (최소) |
| 파일 노드 | 400×300 |
| 링크 노드 | 400×200 |
| 그룹 노드 | 내부 노드보다 100px 여유 |
| 노드 간 간격 | 최소 50px |
좌표 원점(0,0)에서 오른쪽·아래로 배치. 그룹은 내부 노드보다 먼저 JSON에 배치 (렌더링 순서).
저장 전 반드시 확인:
id가 16자리 소문자 16진수id 중복 없음 (노드 + 엣지 전체)fromNode / toNode가 실존하는 노드 id를 참조\n (이스케이프) — 리터럴 줄바꿈 없음file 노드의 경로가 vault 루트 기준 상대경로{"nodes": [...], "edges": [...]} 만.canvasISS 타임라인과 서비스 의존관계 맵 → EXAMPLES.md