figdown 0.1.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/EXPRESSING.md +119 -0
- package/LAYOUT-GUIDE.md +367 -0
- package/LICENSE +21 -0
- package/README.md +201 -0
- package/README.zh-tw.md +185 -0
- package/SHOWCASE.md +421 -0
- package/dist/figdown.js +2239 -0
- package/dist/figdown.mjs +2231 -0
- package/examples/evpn-fabric.svg +54 -0
- package/examples/showcase/arp-resolution.svg +51 -0
- package/examples/showcase/ethernet-frame.svg +37 -0
- package/examples/showcase/l2-forwarding-logic.svg +42 -0
- package/examples/showcase/tcp-handshake.svg +56 -0
- package/examples/showcase/tcp-header.svg +47 -0
- package/examples/showcase/tcp-state-machine.svg +140 -0
- package/package.json +51 -0
- package/skill/figdown/build-svg.js +73 -0
- package/skill/figdown/figdown.html +3290 -0
package/README.md
ADDED
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# FigDown
|
|
2
|
+
|
|
3
|
+
> **Figures as text — one source, two readers.**
|
|
4
|
+
|
|
5
|
+
繁體中文版:[README.zh-tw.md](README.zh-tw.md)
|
|
6
|
+
|
|
7
|
+
FigDown is an (early, in-design) open standard for describing figures as
|
|
8
|
+
plain text inside Markdown — so that the *same* source is:
|
|
9
|
+
|
|
10
|
+
- **read as text by AI agents** — the knowledge in your diagrams stops
|
|
11
|
+
being locked inside bitmaps, and
|
|
12
|
+
- **rendered as figures for humans** — deterministically converted to SVG
|
|
13
|
+
that travels with the document, viewable in any Markdown viewer.
|
|
14
|
+
|
|
15
|
+
Think "the figure layer of Markdown": what Mermaid did for flowcharts,
|
|
16
|
+
extended to the diagram types Mermaid can't express (network topologies,
|
|
17
|
+
annotated block diagrams, lookup chains, packet walks…), with layout
|
|
18
|
+
treated as part of the knowledge.
|
|
19
|
+
|
|
20
|
+
**[Try it live — the editor runs in your browser, no install](https://figdown.github.io/figdown/)**
|
|
21
|
+
(edit text on the left, deterministic SVG on the right; open/save real
|
|
22
|
+
`.fd` files; every GUI action is a text edit).
|
|
23
|
+
|
|
24
|
+
## See it
|
|
25
|
+
|
|
26
|
+
This figure *is* FigDown — the text below is its complete source:
|
|
27
|
+
|
|
28
|
+
```figdown
|
|
29
|
+
figdown 0.1 topology
|
|
30
|
+
title "VXLAN/EVPN Leaf-Spine Fabric — topology with plane notes"
|
|
31
|
+
|
|
32
|
+
# ── Semantic classes ─────────────────────────────────────────────────
|
|
33
|
+
class underlay "Physical underlay link — eBGP/L3 transport between leaf and spine"
|
|
34
|
+
class overlay "Logical VXLAN overlay tunnel — rides on the physical underlay" style=dashed color=#dc2626
|
|
35
|
+
|
|
36
|
+
# ── Topology ────────────────────────────────────────────────────────
|
|
37
|
+
node sp1 "Spine-1" shape=rounded color=#e0e7ff
|
|
38
|
+
node sp2 "Spine-2" shape=rounded color=#e0e7ff
|
|
39
|
+
node lf1 "Leaf-1 (VTEP)" shape=rounded
|
|
40
|
+
node lf2 "Leaf-2 (VTEP)" shape=rounded
|
|
41
|
+
node lf3 "Leaf-3 (VTEP)" shape=rounded
|
|
42
|
+
node h1 "VM-A (VLAN 10)"
|
|
43
|
+
node h2 "VM-B (VLAN 10)"
|
|
44
|
+
node h3 "VM-C (VLAN 20)"
|
|
45
|
+
flow down
|
|
46
|
+
rank sp1 sp2
|
|
47
|
+
rank lf1 lf2 lf3
|
|
48
|
+
|
|
49
|
+
# underlay: every leaf peers with every spine
|
|
50
|
+
edge sp1 -[eBGP]- lf1 class=underlay
|
|
51
|
+
edge sp1 -- lf2 class=underlay
|
|
52
|
+
edge sp1 -- lf3 class=underlay
|
|
53
|
+
edge sp2 -- lf1 class=underlay
|
|
54
|
+
edge sp2 -- lf2 class=underlay
|
|
55
|
+
edge sp2 -- lf3 class=underlay
|
|
56
|
+
edge lf1 -- h1 class=underlay
|
|
57
|
+
edge lf2 -- h2 class=underlay
|
|
58
|
+
edge lf3 -- h3 class=underlay
|
|
59
|
+
|
|
60
|
+
# overlay: VXLAN tunnel between the two VTEPs sharing VNI 10010
|
|
61
|
+
layer overlay "VXLAN tunnels" z=2
|
|
62
|
+
edge lf1 <-[VXLAN VNI 10010]-> lf2 class=overlay layer=overlay
|
|
63
|
+
|
|
64
|
+
# ── Supplementary knowledge ─────────────────────────────────────────
|
|
65
|
+
table vni "VNI mapping"
|
|
66
|
+
| Leaf | VLAN | VNI | Type |
|
|
67
|
+
|--------|:----:|-------|------|
|
|
68
|
+
| Leaf-1 | 10 | 10010 | L2 |
|
|
69
|
+
| Leaf-2 | 10 | 10010 | L2 |
|
|
70
|
+
| Leaf-3 | 20 | 10020 | L2 |
|
|
71
|
+
cell 1,3 color=#fee2e2
|
|
72
|
+
cell 2,3 color=#fee2e2
|
|
73
|
+
|
|
74
|
+
table planes "Fabric planes"
|
|
75
|
+
| Plane | Protocol | Role |
|
|
76
|
+
|-----------------|-------------------|---------------------------|
|
|
77
|
+
| Underlay | eBGP | loopback reachability |
|
|
78
|
+
| Overlay control | MP-BGP EVPN | MAC/IP route distribution |
|
|
79
|
+
| Overlay data | VXLAN (UDP 4789) | L2-in-L3 encapsulation |
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
This single source does three things mainstream diagram tools cannot combine:
|
|
83
|
+
the red dashed VXLAN edge belongs to a declared `layer` (named overlay, z=2),
|
|
84
|
+
so it can be toggled or styled independently of the underlay topology;
|
|
85
|
+
the two GFM tables are pasted verbatim — they render as formatted tables in the
|
|
86
|
+
SVG and are read as structured data by AI agents without any conversion step;
|
|
87
|
+
and the rank declarations give the layout explicit semantic structure
|
|
88
|
+
(spines above leaves above hosts) that survives edits without a full re-layout.
|
|
89
|
+
The fenced block above is exactly what an AI agent reads as the figure's meaning.
|
|
90
|
+
|
|
91
|
+

|
|
92
|
+
|
|
93
|
+
<sub>source: [examples/evpn-fabric.fd](examples/evpn-fabric.fd)</sub>
|
|
94
|
+
|
|
95
|
+
## Why
|
|
96
|
+
|
|
97
|
+
Technical documents are full of figures whose *layout carries meaning* —
|
|
98
|
+
rank, zones, direction, adjacency. Today that knowledge is trapped in
|
|
99
|
+
images: AI agents can't reliably read it, and hand-maintained diagrams
|
|
100
|
+
drift from the text around them. Existing text-to-diagram tools cover only
|
|
101
|
+
part of the problem and none of them promise the property we consider
|
|
102
|
+
essential: **a small edit to the source must produce a small change in the
|
|
103
|
+
figure** — never a full re-layout that destroys the reader's mental map.
|
|
104
|
+
|
|
105
|
+
## Design axioms (settled so far)
|
|
106
|
+
|
|
107
|
+
1. **Text is the single source of truth.** Figures are build artifacts,
|
|
108
|
+
100% generated from text. No dual maintenance, ever.
|
|
109
|
+
2. **Deterministic, program-only rendering.** Same source → same SVG,
|
|
110
|
+
bit-level; no LLM in the rendering path.
|
|
111
|
+
3. **Layout stability.** Local edit → local change. Explicitly declared
|
|
112
|
+
attributes (position, size, color…) are rigid; everything undeclared
|
|
113
|
+
adapts automatically with minimal spillover.
|
|
114
|
+
4. **Two audiences, one artifact.** AI reads the fenced source block;
|
|
115
|
+
humans see the embedded SVG. The standard defines how the two stay
|
|
116
|
+
paired and in sync.
|
|
117
|
+
5. **Defaults = the common case.** Most figures should need no
|
|
118
|
+
supplementary declarations at all (convention over configuration).
|
|
119
|
+
6. **Small, closed, token-lean core.** Every line starts with a known
|
|
120
|
+
keyword; unknown lines are errors with line numbers (this powers the
|
|
121
|
+
AI write→validate→fix loop). Teaching the language to an AI agent must
|
|
122
|
+
fit in a lean prompt. Generic rules over special cases; survey existing
|
|
123
|
+
standards before inventing anything.
|
|
124
|
+
7. **An editor is mandatory, but every GUI action is a text edit** —
|
|
125
|
+
dragging a node writes a position declaration. The GUI never owns state
|
|
126
|
+
that the text can't express.
|
|
127
|
+
8. **Static first; dynamic later.** Dynamic = static + a discrete
|
|
128
|
+
page/step sequence (for algorithm/protocol walkthroughs), not a
|
|
129
|
+
timeline animation language.
|
|
130
|
+
|
|
131
|
+
## Recommended usage in Markdown documents (current stage)
|
|
132
|
+
|
|
133
|
+
Until `.fd` is natively rendered by Markdown viewers (as mermaid is),
|
|
134
|
+
embed figures like this:
|
|
135
|
+
|
|
136
|
+
```markdown
|
|
137
|
+

|
|
138
|
+
|
|
139
|
+
<sub>source: [figures/ingress.fd](figures/ingress.fd)</sub>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
The SVG is what humans see; the `source:` footer points at the `.fd`,
|
|
143
|
+
which is the figure's single source of truth — **AI agents read the
|
|
144
|
+
`.fd` for the meaning** and never paste its content into the `.md`.
|
|
145
|
+
Each generated SVG also embeds its own source + SHA-256, so the figure
|
|
146
|
+
file alone can always be reopened and edited. See
|
|
147
|
+
[AGENT-GUIDE.md](AGENT-GUIDE.md) for the full agent-facing workflow.
|
|
148
|
+
|
|
149
|
+
## Status
|
|
150
|
+
|
|
151
|
+
**Requirements & design phase.** Nothing to install yet. Current documents:
|
|
152
|
+
|
|
153
|
+
- [requirements-notes.md](design/requirements-notes.md) — the requirements log
|
|
154
|
+
(R0–R15) and decisions (D1–D3), also in
|
|
155
|
+
[繁體中文](design/requirements-notes.zh-tw.md)
|
|
156
|
+
- [syntax-draft.md](spec/syntax-draft.md) — syntax draft v0.0 (discussion
|
|
157
|
+
stage), also in [繁體中文](spec/syntax-draft.zh-tw.md)
|
|
158
|
+
- [AUTHORING.md](AUTHORING.md) — the authoring SOP: how to pick a
|
|
159
|
+
template, express meaning with existing constructs, and escalate a
|
|
160
|
+
gap into a syntax proposal, also in [繁體中文](AUTHORING.zh-tw.md)
|
|
161
|
+
- [AGENT-GUIDE.md](AGENT-GUIDE.md) — the self-contained guide for AI
|
|
162
|
+
agents maintaining figures with FigDown, also in
|
|
163
|
+
[繁體中文](AGENT-GUIDE.zh-tw.md)
|
|
164
|
+
- [MIGRATIONS.md](spec/MIGRATIONS.md) — schema-migration-style version log:
|
|
165
|
+
every syntax change ships a mechanical rewrite rule, also in
|
|
166
|
+
[繁體中文](spec/MIGRATIONS.zh-tw.md)
|
|
167
|
+
- [census.md](design/census.md) — figure-type census over a real 774-document
|
|
168
|
+
corpus; the empirical basis for v0.1 scope and priorities, also in
|
|
169
|
+
[繁體中文](design/census.zh-tw.md)
|
|
170
|
+
- [spec/genres/](spec/genres/bitfield.md) — per-genre normative documents
|
|
171
|
+
(R51): one self-contained file per genre (bitfield, table, wave) covering
|
|
172
|
+
defaults, closed keyword vocabulary, semantic model, errors, and an example
|
|
173
|
+
- [conformance/](conformance/README.md) — golden parser-conformance
|
|
174
|
+
fixtures (100 cases) a second implementation can be tested against;
|
|
175
|
+
engine-vs-spec deviations recorded in its DISCREPANCIES file
|
|
176
|
+
- [prior-art.md](design/prior-art.md) — informative survey of mainstream
|
|
177
|
+
diagram-language conventions (edge labels, ERD, D2 relationship),
|
|
178
|
+
weighted by adoption, also in [繁體中文](design/prior-art.zh-tw.md)
|
|
179
|
+
- [examples/index.md](examples/index.md) — the example gallery: real
|
|
180
|
+
figures as committed `.fd`+`.svg` pairs (protocol headers first)
|
|
181
|
+
- [editor/figdown.html](editor/figdown.html) — the editor
|
|
182
|
+
([live](https://figdown.github.io/figdown/)): open in any
|
|
183
|
+
browser, edit text on the left, get a deterministic SVG on the right
|
|
184
|
+
(core scene + bitfield + table + wave). Opens/saves `.fd` files
|
|
185
|
+
(Ctrl+S writes back to the same file), undo/redo, autosave,
|
|
186
|
+
draw.io-style direct manipulation where every GUI action is a text
|
|
187
|
+
edit. The exported SVG embeds its own source and SHA-256.
|
|
188
|
+
- [skill/README.md](skill/README.md) — installable agent skill: teach
|
|
189
|
+
a coding agent (e.g. Claude Code) to maintain figures with FigDown —
|
|
190
|
+
`cp -r skill/figdown ~/.claude/skills/` and ask for a figure.
|
|
191
|
+
|
|
192
|
+
## Contributing
|
|
193
|
+
|
|
194
|
+
Ideas, counter-examples, and prior-art pointers are very welcome — please
|
|
195
|
+
open an issue (the syntax-proposal template shows what evidence a
|
|
196
|
+
ruling needs; the change process itself is documented in
|
|
197
|
+
[spec/PROCESS.md](spec/PROCESS.md)). The most valuable contributions right now:
|
|
198
|
+
|
|
199
|
+
- diagram types we must cover (with real samples),
|
|
200
|
+
- existing standards/conventions we should borrow instead of invent,
|
|
201
|
+
- attacks on the axioms above (tell us where they break).
|
package/README.zh-tw.md
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# FigDown
|
|
2
|
+
|
|
3
|
+
> **Figures as text — one source, two readers.**(圖即文字——一份來源,兩種讀者。)
|
|
4
|
+
|
|
5
|
+
English version: [README.md](README.md)
|
|
6
|
+
|
|
7
|
+
FigDown 是一個(早期、設計中的)開放標準:把圖形以純文字描述、放在
|
|
8
|
+
Markdown 裡——讓**同一份來源**同時被:
|
|
9
|
+
|
|
10
|
+
- **AI agent 當作文字閱讀**——圖裡的知識不再被鎖在點陣圖中;
|
|
11
|
+
- **人類當作圖形閱讀**——確定性地轉換成 SVG、隨文件攜帶,任何
|
|
12
|
+
Markdown viewer 都能顯示。
|
|
13
|
+
|
|
14
|
+
可以理解為「Markdown 的圖形層」:Mermaid 為流程圖做到的事,延伸到
|
|
15
|
+
Mermaid 表達不了的圖型(網路拓撲、帶註記的方塊圖、查表鏈、封包走訪
|
|
16
|
+
……),並把 layout 視為知識的一部分。
|
|
17
|
+
|
|
18
|
+
**[線上試用——編輯器直接在瀏覽器跑,零安裝](https://figdown.github.io/figdown/)**
|
|
19
|
+
(左邊改文字、右邊即時確定性 SVG;可開啟/儲存真實 `.fd` 檔;
|
|
20
|
+
每個 GUI 動作都是文字編輯)。
|
|
21
|
+
|
|
22
|
+
## 眼見為憑
|
|
23
|
+
|
|
24
|
+
這張圖*就是* FigDown——下面的文字是它的完整來源:
|
|
25
|
+
|
|
26
|
+
```figdown
|
|
27
|
+
figdown 0.1 topology
|
|
28
|
+
title "VXLAN/EVPN Leaf-Spine Fabric — topology with plane notes"
|
|
29
|
+
|
|
30
|
+
# ── Semantic classes ─────────────────────────────────────────────────
|
|
31
|
+
class underlay "Physical underlay link — eBGP/L3 transport between leaf and spine"
|
|
32
|
+
class overlay "Logical VXLAN overlay tunnel — rides on the physical underlay" style=dashed color=#dc2626
|
|
33
|
+
|
|
34
|
+
# ── Topology ────────────────────────────────────────────────────────
|
|
35
|
+
node sp1 "Spine-1" shape=rounded color=#e0e7ff
|
|
36
|
+
node sp2 "Spine-2" shape=rounded color=#e0e7ff
|
|
37
|
+
node lf1 "Leaf-1 (VTEP)" shape=rounded
|
|
38
|
+
node lf2 "Leaf-2 (VTEP)" shape=rounded
|
|
39
|
+
node lf3 "Leaf-3 (VTEP)" shape=rounded
|
|
40
|
+
node h1 "VM-A (VLAN 10)"
|
|
41
|
+
node h2 "VM-B (VLAN 10)"
|
|
42
|
+
node h3 "VM-C (VLAN 20)"
|
|
43
|
+
flow down
|
|
44
|
+
rank sp1 sp2
|
|
45
|
+
rank lf1 lf2 lf3
|
|
46
|
+
|
|
47
|
+
# underlay: every leaf peers with every spine
|
|
48
|
+
edge sp1 -[eBGP]- lf1 class=underlay
|
|
49
|
+
edge sp1 -- lf2 class=underlay
|
|
50
|
+
edge sp1 -- lf3 class=underlay
|
|
51
|
+
edge sp2 -- lf1 class=underlay
|
|
52
|
+
edge sp2 -- lf2 class=underlay
|
|
53
|
+
edge sp2 -- lf3 class=underlay
|
|
54
|
+
edge lf1 -- h1 class=underlay
|
|
55
|
+
edge lf2 -- h2 class=underlay
|
|
56
|
+
edge lf3 -- h3 class=underlay
|
|
57
|
+
|
|
58
|
+
# overlay: VXLAN tunnel between the two VTEPs sharing VNI 10010
|
|
59
|
+
layer overlay "VXLAN tunnels" z=2
|
|
60
|
+
edge lf1 <-[VXLAN VNI 10010]-> lf2 class=overlay layer=overlay
|
|
61
|
+
|
|
62
|
+
# ── Supplementary knowledge ─────────────────────────────────────────
|
|
63
|
+
table vni "VNI mapping"
|
|
64
|
+
| Leaf | VLAN | VNI | Type |
|
|
65
|
+
|--------|:----:|-------|------|
|
|
66
|
+
| Leaf-1 | 10 | 10010 | L2 |
|
|
67
|
+
| Leaf-2 | 10 | 10010 | L2 |
|
|
68
|
+
| Leaf-3 | 20 | 10020 | L2 |
|
|
69
|
+
cell 1,3 color=#fee2e2
|
|
70
|
+
cell 2,3 color=#fee2e2
|
|
71
|
+
|
|
72
|
+
table planes "Fabric planes"
|
|
73
|
+
| Plane | Protocol | Role |
|
|
74
|
+
|-----------------|-------------------|---------------------------|
|
|
75
|
+
| Underlay | eBGP | loopback reachability |
|
|
76
|
+
| Overlay control | MP-BGP EVPN | MAC/IP route distribution |
|
|
77
|
+
| Overlay data | VXLAN (UDP 4789) | L2-in-L3 encapsulation |
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
這份來源做了三件主流圖形工具無法合而為一的事:
|
|
81
|
+
那條紅色虛線 VXLAN edge 屬於一個宣告的 `layer`(named overlay, z=2),
|
|
82
|
+
可以獨立切換或套用樣式、不干擾 underlay 拓撲;
|
|
83
|
+
兩張 GFM 表格原文貼入——在 SVG 中以格式化表格呈現,
|
|
84
|
+
AI agent 也能直接讀取結構化資料,不需要任何轉換;
|
|
85
|
+
而 rank 宣告賦予 layout 明確的語意結構(spine 在 leaf 上,leaf 在 host 上),
|
|
86
|
+
修改後局部重排而非全圖洗牌。
|
|
87
|
+
上方圍欄裡的文字,正是 AI agent 讀取這張圖「意義」的原文。
|
|
88
|
+
|
|
89
|
+

|
|
90
|
+
|
|
91
|
+
<sub>來源:[examples/evpn-fabric.fd](examples/evpn-fabric.fd)</sub>
|
|
92
|
+
|
|
93
|
+
## 為什麼
|
|
94
|
+
|
|
95
|
+
技術文件裡充滿「**排版本身承載語意**」的圖——位階、分區、方向、相鄰
|
|
96
|
+
關係。今天這些知識被困在圖片裡:AI 讀不可靠,手工維護的圖又跟周圍的
|
|
97
|
+
文字漸行漸遠。既有的 text-to-diagram 工具只覆蓋一部分問題,而且沒有
|
|
98
|
+
任何一個承諾我們視為關鍵的性質:**來源的小修改必須只造成圖的小變化**
|
|
99
|
+
——絕不能全圖重排、摧毀讀者已建立的心智地圖。
|
|
100
|
+
|
|
101
|
+
## 設計公理(目前已定)
|
|
102
|
+
|
|
103
|
+
1. **文字是唯一真相。** 圖是建置產物,100% 由文字生成。永不雙源維護。
|
|
104
|
+
2. **確定性、純程式渲染。** 同來源 → 同 SVG(位元級);渲染路徑上
|
|
105
|
+
沒有 LLM。
|
|
106
|
+
3. **排版穩定性。** 局部修改 → 局部變化。明確宣告的屬性(位置、尺寸、
|
|
107
|
+
顏色……)是剛性約束;未宣告的一切自動適應、外溢最小化。
|
|
108
|
+
4. **兩種受眾,一份產物。** AI 讀圍欄裡的來源文字;人類看嵌入的
|
|
109
|
+
SVG。標準定義兩者如何配對、如何保持同步。
|
|
110
|
+
5. **預設值 = 最大宗情況。** 多數圖應該完全不需要補充宣告
|
|
111
|
+
(慣例優於設定)。
|
|
112
|
+
6. **小而封閉、token 精簡的核心。** 每行以已知關鍵字開頭;未知行即
|
|
113
|
+
錯誤、附行號(這支撐 AI 寫→驗→修迴圈)。教會 AI 這個語言必須只
|
|
114
|
+
需要一段精簡的 prompt。通用規則優於特例;發明任何東西之前先盤點
|
|
115
|
+
既有標準。
|
|
116
|
+
7. **編輯器是必要條件,但每個 GUI 動作都是文字編輯**——拖動節點
|
|
117
|
+
= 寫入一行位置宣告。GUI 永不持有文字表達不了的狀態。
|
|
118
|
+
8. **靜態優先;動態後行。** 動態 = 靜態 + 離散的頁/步驟序列(用於
|
|
119
|
+
演算法/協議講解),不是時間軸動畫語言。
|
|
120
|
+
|
|
121
|
+
## Markdown 文件中的建議用法(現階段)
|
|
122
|
+
|
|
123
|
+
在 `.fd` 尚未被 MD viewer 原生渲染(如 mermaid)之前,圖片這樣嵌入:
|
|
124
|
+
|
|
125
|
+
```markdown
|
|
126
|
+

|
|
127
|
+
|
|
128
|
+
<sub>source: [figures/ingress.fd](figures/ingress.fd)</sub>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
SVG 給人看;`source:` 註腳指向 `.fd`——它是圖的唯一真相來源,
|
|
132
|
+
**AI agent 讀 `.fd` 取得意義**,且絕不把其內容貼進 `.md`。每個生成
|
|
133
|
+
的 SVG 也內嵌自身來源 + SHA-256,因此單憑圖檔永遠能重新開啟編輯。
|
|
134
|
+
完整的 agent 工作流見 [AGENT-GUIDE.zh-tw.md](AGENT-GUIDE.zh-tw.md)。
|
|
135
|
+
|
|
136
|
+
## 現狀
|
|
137
|
+
|
|
138
|
+
**需求與設計階段。** 目前還沒有可安裝的東西。現有文件:
|
|
139
|
+
|
|
140
|
+
- [requirements-notes.zh-tw.md](design/requirements-notes.zh-tw.md) —
|
|
141
|
+
需求記錄(R0–R15)與決議(D1–D3),英文版
|
|
142
|
+
[requirements-notes.md](design/requirements-notes.md)
|
|
143
|
+
- [syntax-draft.zh-tw.md](spec/syntax-draft.zh-tw.md) — 語法草案 v0.0
|
|
144
|
+
(討論階段),英文版 [syntax-draft.md](spec/syntax-draft.md)
|
|
145
|
+
- [AUTHORING.zh-tw.md](AUTHORING.zh-tw.md) — 撰寫 SOP:如何選
|
|
146
|
+
template、以既有構件表達語意、缺口如何升級為語法提案,英文版
|
|
147
|
+
[AUTHORING.md](AUTHORING.md)
|
|
148
|
+
- [AGENT-GUIDE.zh-tw.md](AGENT-GUIDE.zh-tw.md) — 給 AI agent 的
|
|
149
|
+
自足指南(以 FigDown 維護圖片),英文版 [AGENT-GUIDE.md](AGENT-GUIDE.md)
|
|
150
|
+
- [MIGRATIONS.zh-tw.md](spec/MIGRATIONS.zh-tw.md) — schema-migration 式
|
|
151
|
+
版本紀錄:每次語法變更附機械式改寫規則,英文版
|
|
152
|
+
[MIGRATIONS.md](spec/MIGRATIONS.md)
|
|
153
|
+
- [census.zh-tw.md](design/census.zh-tw.md) — 對 774 份真實文件語料的圖型
|
|
154
|
+
普查;v0.1 範圍與優先順序的數據依據,英文版 [census.md](design/census.md)
|
|
155
|
+
- [spec/genres/](spec/genres/bitfield.zh-tw.md) — 逐圖型規範文件
|
|
156
|
+
(R51):每個圖型一份自足的文件(bitfield、table、wave),涵蓋
|
|
157
|
+
預設值、封閉關鍵字詞彙、語意模型、錯誤情況與範例
|
|
158
|
+
- [conformance/](conformance/README.md) — parser 一致性 golden
|
|
159
|
+
fixtures(100 案例),供第二實作驗證;引擎-規格偏差記錄於其
|
|
160
|
+
DISCREPANCIES 檔
|
|
161
|
+
- [prior-art.zh-tw.md](design/prior-art.zh-tw.md) — 主流圖語言慣例的
|
|
162
|
+
資訊性調查(edge 標籤、ERD、與 D2 的關係),以採用度加權,
|
|
163
|
+
英文版 [prior-art.md](design/prior-art.md)
|
|
164
|
+
- [examples/index.zh-tw.md](examples/index.zh-tw.md) — 範例藝廊:
|
|
165
|
+
真實圖形以 `.fd`+`.svg` 成對入庫(協議標頭先行)
|
|
166
|
+
- [editor/figdown.html](editor/figdown.html) — 編輯器
|
|
167
|
+
([線上版](https://figdown.github.io/figdown/)):用任何瀏覽器開啟,
|
|
168
|
+
左邊改文字、右邊即時得到確定性的 SVG(核心場景 + bitfield +
|
|
169
|
+
table + wave)。可開啟/儲存 `.fd` 檔(Ctrl+S 存回同一檔案)、
|
|
170
|
+
undo/redo、自動儲存、draw.io 式直接操作——每個 GUI 動作都是
|
|
171
|
+
文字編輯。匯出的 SVG 內嵌自身來源與 SHA-256。
|
|
172
|
+
- [skill/README.md](skill/README.md) — 可安裝的 agent skill:讓
|
|
173
|
+
coding agent(如 Claude Code)用 FigDown 維護圖片——
|
|
174
|
+
`cp -r skill/figdown ~/.claude/skills/` 之後直接要求畫圖即可。
|
|
175
|
+
|
|
176
|
+
## 參與
|
|
177
|
+
|
|
178
|
+
非常歡迎想法、反例、以及既有標準的線索——請開 issue
|
|
179
|
+
(syntax-proposal 模板列出裁決所需的證據;變更流程本身見
|
|
180
|
+
[spec/PROCESS.zh-tw.md](spec/PROCESS.zh-tw.md))。現階段最有
|
|
181
|
+
價值的貢獻:
|
|
182
|
+
|
|
183
|
+
- 我們必須覆蓋的圖型(附真實樣本)、
|
|
184
|
+
- 應該借用而非自創的既有標準/慣例、
|
|
185
|
+
- 對上述公理的攻擊(告訴我們它們在哪裡會破)。
|