@21stware/rpui 0.2.1 → 0.3.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/README.md +47 -87
- package/dist/core/style.d.ts +1 -1
- package/dist/gallery.d.ts +5 -0
- package/dist/gallery.js +2654 -0
- package/dist/gallery.js.map +1 -0
- package/dist/rpml-loader.d.ts +2 -0
- package/dist/rpml-loader.js +27 -0
- package/dist/rpml-loader.js.map +1 -0
- package/dist/rpui.d.ts +2 -1
- package/dist/rpui.js +607 -423
- package/dist/rpui.js.map +1 -1
- package/dist/serve/cli.d.ts +1 -0
- package/dist/serve.js +143 -0
- package/package.json +14 -22
- package/LICENSE +0 -20
- package/SKILL.md +0 -279
- package/llms.txt +0 -298
package/llms.txt
DELETED
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
# RPUI Web Components Reference for LLMs
|
|
2
|
-
|
|
3
|
-
RPUI means Rapid Prototype UI. It is a static prototype specification and rendering runtime implemented with native Web Components.
|
|
4
|
-
|
|
5
|
-
A generated prototype imports one file only:
|
|
6
|
-
|
|
7
|
-
```html
|
|
8
|
-
<script type="module" src="./dist/rpui.js"></script>
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
`dist/rpui.js` registers all custom elements and injects runtime CSS plus Lucide-style inline SVG icons. Do not import external CSS, image CDNs, icon CDNs, or UI frameworks.
|
|
12
|
-
|
|
13
|
-
ARIA note: component states (checked / expanded / selected / disabled / current / pressed) follow the structure that the W3C ARIA Authoring Practices expect, so annotations can describe accessibility intent precisely. RPUI is static and does not emit runtime `role` / `aria-*` attributes — treat ARIA as a reference for which states to expose and document, not as runtime behavior.
|
|
14
|
-
|
|
15
|
-
## Core model
|
|
16
|
-
|
|
17
|
-
RPUI has two layers:
|
|
18
|
-
|
|
19
|
-
1. Canvas layer: page shell, main snapshot view, numbered pins, annotations, nested annotations, and state enums.
|
|
20
|
-
2. Snapshot Primitive layer: static UI building blocks for product UI snapshots and annotation slices.
|
|
21
|
-
|
|
22
|
-
Use `rp-*` tags for new work. Compatibility aliases are available:
|
|
23
|
-
|
|
24
|
-
- `proto-*` aliases exist for canvas tags.
|
|
25
|
-
- `snap-*` aliases exist for snapshot primitive tags.
|
|
26
|
-
|
|
27
|
-
## Canvas tags
|
|
28
|
-
|
|
29
|
-
```html
|
|
30
|
-
<rp-page title="页面标题" route="/route" description="页面说明">
|
|
31
|
-
<rp-main-view device="web" scale="0.65">
|
|
32
|
-
<rp-viewport device="web">
|
|
33
|
-
<!-- fixed-width, auto-height main snapshot built with rp-* primitives -->
|
|
34
|
-
</rp-viewport>
|
|
35
|
-
</rp-main-view>
|
|
36
|
-
|
|
37
|
-
<rp-annotation id="1" label="区域说明">...</rp-annotation>
|
|
38
|
-
</rp-page>
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
Tags:
|
|
42
|
-
|
|
43
|
-
- `<rp-page title="..." route="..." description="...">` — root document canvas. It keeps the title/main snapshot on the left and moves top-level annotations to the right-side scroll pane.
|
|
44
|
-
- `<rp-main-view device="web|ipad|mobile" width="..." height="auto|900" scale="0.65">` — scaled main snapshot frame. Device presets are fixed width with auto height unless a numeric `height` is provided.
|
|
45
|
-
- `<rp-viewport device="web|ipad|mobile" width="..." height="auto|900">` — snapshot viewport. Use the same `device` as the main view for clarity.
|
|
46
|
-
- `<rp-annotation id="1" label="...">` — top-level annotation linked to `data-pin="1"`; rendered in the right annotation pane.
|
|
47
|
-
- `<rp-annotation label="...">` — nested annotation; no `id` required.
|
|
48
|
-
- `<rp-enum>` — horizontal state/variant container.
|
|
49
|
-
- `<rp-enum-item label="..." description="...">` — one explicit state/variant card with optional short description.
|
|
50
|
-
|
|
51
|
-
## Pin rule
|
|
52
|
-
|
|
53
|
-
Inside `<rp-main-view>`, add `data-pin="N"` to meaningful regions. Number pins from 1 without gaps.
|
|
54
|
-
|
|
55
|
-
Every `data-pin="N"` must have a matching top-level annotation:
|
|
56
|
-
|
|
57
|
-
```html
|
|
58
|
-
<rp-navbar data-pin="1">...</rp-navbar>
|
|
59
|
-
<rp-annotation id="1" label="顶部导航">...</rp-annotation>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
RPUI renders water-drop pins automatically. Never write pin DOM manually.
|
|
63
|
-
|
|
64
|
-
## Section addressing, deep links, and enum numbering
|
|
65
|
-
|
|
66
|
-
The runtime makes the canvas navigable. Authors do not write any of these attributes — they are generated:
|
|
67
|
-
|
|
68
|
-
- Every annotation gets a `data-rp-section` path. Top-level annotations use their `id` (e.g. `3`); nested annotations use the parent path plus their 1-based position among annotation siblings (e.g. `3-2`, `3-2-1`). This supports up to 3–5 levels of nesting.
|
|
69
|
-
- Every annotation renders a marker showing its **local index** (the last path segment): top-level = blue water-drop with the id; nested depth 1 = purple circle; nested depth ≥2 = green triangle. A nested annotation at `3-2` is marked `2`, at `3-2-1` is marked `1` — local to its parent, not the full path.
|
|
70
|
-
- To explain a UI slice that is rendered inside an annotation, nest another `<rp-annotation>` around/after it. The nested annotation gets its own numbered circle/triangle marker and its body indents one level: `main view → ⬤ annotation 3 → UI slice → ① nested annotation → detail`.
|
|
71
|
-
- Clicking a pin in the main snapshot, or clicking an annotation title, updates the URL to `?section=<path>` and scrolls/focuses the matching annotation with a dashed-outline highlight.
|
|
72
|
-
- Loading a URL with `?section=3-2-1` focuses that nested annotation on load (reverse deep link).
|
|
73
|
-
- Each `<rp-enum-item>` is auto-numbered with a black square index badge (1, 2, 3…), so annotation prose can reference "state 2" unambiguously.
|
|
74
|
-
|
|
75
|
-
Keep annotation and enum-item sibling order intentional and stable: the generated addresses depend on DOM order.
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
## Layout and state rules
|
|
79
|
-
|
|
80
|
-
- RPUI is static. Do not create interactions.
|
|
81
|
-
- Do not use `onclick`, hover behavior, runtime focus, timers, API calls, or framework state.
|
|
82
|
-
- Do not use external images; use `<rp-image-placeholder>`.
|
|
83
|
-
- Do not use `position:absolute` or `position:fixed` in snapshot content. RPUI owns pin positioning.
|
|
84
|
-
- Do not use raw `div`, `button`, `input`, or `table` to represent product UI. Use `rp-*` primitives.
|
|
85
|
-
- Basic text and simple inline HTML are allowed inside annotations.
|
|
86
|
-
- Top-level annotations render automatically in the right-side annotation pane. Do not manually create annotation pane wrappers.
|
|
87
|
-
- The title/route/description and main snapshot stay visible on the left while the annotation pane scrolls independently on both axes.
|
|
88
|
-
- Keep annotations compact and document-flow oriented. Do not stretch annotation content to full width.
|
|
89
|
-
- Choose a device preset for new prototypes: `web` (1440px), `ipad` (834px), or `mobile` (390px). Presets use fixed width and auto height unless a numeric height is provided.
|
|
90
|
-
- In the main snapshot, keep selects collapsed; show their expanded list in an annotation enum.
|
|
91
|
-
- Overlays and transient feedback — `rp-modal`, `rp-drawer`, `rp-dropdown`, `rp-popover`, `rp-tooltip`, `rp-toast` — are interaction results, not page regions. Do not place them in the main snapshot. Instead: pin the trigger element (button/row/field), state the trigger condition in the annotation, and render the overlay inside that annotation (usually in an `<rp-enum>`). Never stack mutually exclusive overlays/states side by side in the snapshot. A permanently docked side panel may stay open in the snapshot, but document its open/close trigger anyway.
|
|
92
|
-
- Use `<rp-enum>` for state families, permission variants, hidden interaction results, and validation branches. Use `rp-enum-item description="..."` for a short clarification of a state.
|
|
93
|
-
|
|
94
|
-
## Snapshot primitives
|
|
95
|
-
|
|
96
|
-
### Containers
|
|
97
|
-
|
|
98
|
-
- `<rp-viewport device="web|ipad|mobile" width="1440" height="auto|900">` — fixed-width snapshot viewport; presets default to auto height.
|
|
99
|
-
- `<rp-layout columns="260px 1fr" rows="auto" gap="16">` — CSS grid container.
|
|
100
|
-
- `<rp-panel padding="24" elevation="1|2">` — white panel/card shell.
|
|
101
|
-
- `<rp-card title="..." subtitle="..." has-image has-footer>` — content card.
|
|
102
|
-
- `<rp-modal width="480" title="..." has-footer>` — static opened modal.
|
|
103
|
-
- `<rp-drawer side="left|right" width="360" title="...">` — static opened drawer.
|
|
104
|
-
- `<rp-dropdown width="300" title="...">` — static opened dropdown.
|
|
105
|
-
- `<rp-popover width="300" title="...">` — static opened popover.
|
|
106
|
-
- `<rp-tooltip text="..." position="top|bottom|left|right">` — visible tooltip bubble.
|
|
107
|
-
|
|
108
|
-
### Navigation
|
|
109
|
-
|
|
110
|
-
- `<rp-navbar height="64">` — top navigation container.
|
|
111
|
-
- `<rp-sidebar width="260" collapsed>` — side navigation container.
|
|
112
|
-
- `<rp-logo size="82" label="LOGO">` — logo placeholder.
|
|
113
|
-
- `<rp-list items="4" state="first-selected">` — generated list when no children are provided.
|
|
114
|
-
- `<rp-list-item label="..." icon="inbox" badge="12" state="default|selected|disabled">`.
|
|
115
|
-
- `<rp-tabs active="0">` with `<rp-tab label="全部" badge="12">`; `active` can be index or label.
|
|
116
|
-
- `<rp-breadcrumb items="首页,设置,用户管理">`.
|
|
117
|
-
- `<rp-pagination total="128" current="2" page-size="20">`.
|
|
118
|
-
- `<rp-steps steps="填写信息,确认,完成" active="1">`.
|
|
119
|
-
|
|
120
|
-
### Data and content display
|
|
121
|
-
|
|
122
|
-
- `<rp-table rows="6" columns="发件人,消息预览,时间,状态" has-checkbox has-action>` — generated static table. Cell text is sampled by the runtime from the column names, so you cannot specify exact cell values; describe precise data in the annotation instead.
|
|
123
|
-
- `<rp-table-row state="default|selected|unread|highlighted|disabled">` — standalone row slice.
|
|
124
|
-
- `<rp-bulk-action-bar count="3" actions="标为已读,归档,删除">`.
|
|
125
|
-
- `<rp-empty label="暂无数据" description="..." has-action>`.
|
|
126
|
-
- `<rp-loading rows="4" kind="skeleton|spinner">` (`style="spinner"` also works for compatibility).
|
|
127
|
-
- `<rp-image-placeholder width="160" height="100" label="Image">`.
|
|
128
|
-
- `<rp-avatar size="32" initials="OC">`.
|
|
129
|
-
- `<rp-badge count="120" max="99">`.
|
|
130
|
-
- `<rp-tag label="已启用" color="green|orange|red" closable>`.
|
|
131
|
-
- `<rp-stat-card label="活跃用户" value="12,480" trend="up|down|flat" change="+12%">`.
|
|
132
|
-
|
|
133
|
-
### Forms and controls
|
|
134
|
-
|
|
135
|
-
All form states are explicit through attributes; there is no runtime focus or input behavior.
|
|
136
|
-
|
|
137
|
-
- `<rp-search state="default|focus|filled|error|disabled" placeholder="..." value="..." has-clear-button>`.
|
|
138
|
-
- `<rp-input state="default|focus|filled|error|disabled" label="..." placeholder="..." value="..." has-clear-button error-message="...">`.
|
|
139
|
-
- `<rp-textarea state="default|focus|filled|error|disabled" rows="3" placeholder="..." value="...">`.
|
|
140
|
-
- `<rp-select state="collapsed|expanded|disabled" label="..." value="..." options="A,B,C">`.
|
|
141
|
-
- `<rp-date-picker state="default|focus|filled|error|disabled" value="2026-06-07">`.
|
|
142
|
-
- `<rp-checkbox state="unchecked|checked|indeterminate|disabled" label="...">`.
|
|
143
|
-
- `<rp-radio state="unchecked|checked|disabled" label="...">`.
|
|
144
|
-
- `<rp-toggle state="on|off|disabled" label="...">`.
|
|
145
|
-
- `<rp-button label="..." variant="primary|secondary|ghost|danger|link" state="default|disabled|loading" icon="plus" size="sm|md|lg">`.
|
|
146
|
-
- `<rp-button-group>...</rp-button-group>`.
|
|
147
|
-
- `<rp-form layout="vertical|horizontal">`.
|
|
148
|
-
- `<rp-form-item label="..." required error="...">...</rp-form-item>`.
|
|
149
|
-
- `<rp-upload state="empty|has-file|uploading" file="document.pdf" progress="60">`.
|
|
150
|
-
|
|
151
|
-
### Feedback
|
|
152
|
-
|
|
153
|
-
- `<rp-alert type="info|success|warning|error" title="..." message="..." closable>`.
|
|
154
|
-
- `<rp-toast type="info|success|warning|error" title="..." message="..." closable>`.
|
|
155
|
-
- `<rp-banner type="info|success|warning|error" title="..." message="..." has-action closable>` — full-width page banner.
|
|
156
|
-
- `<rp-progress value="40" kind="bar|circle" status="success|error">`.
|
|
157
|
-
- `<rp-skeleton shape="line|block|card|list|avatar">` — loading placeholder.
|
|
158
|
-
- `<rp-countdown value="02:45:18">` — time-remaining chip.
|
|
159
|
-
- `<rp-result status="success|error|empty" title="..." description="..." has-action>` — full-page result.
|
|
160
|
-
|
|
161
|
-
### Data input (additional)
|
|
162
|
-
|
|
163
|
-
- `<rp-slider value="60" min="0" max="100" label="..." show-value>`.
|
|
164
|
-
- `<rp-range low="20" high="70" min="0" max="100">` — dual-thumb range.
|
|
165
|
-
- `<rp-number-input value="42">` — input with +/- steppers.
|
|
166
|
-
- `<rp-rating value="3" max="5">` — star rating.
|
|
167
|
-
- `<rp-pin-input length="4" value="12">` — OTP/PIN cells.
|
|
168
|
-
- `<rp-color-swatch value="#2563eb" label="...">`.
|
|
169
|
-
- `<rp-autocomplete value="..." placeholder="..." options="A,B,C" open>`.
|
|
170
|
-
|
|
171
|
-
### Data display (additional)
|
|
172
|
-
|
|
173
|
-
- `<rp-tree>` + `<rp-tree-item label="..." icon="..." level="0" expanded|collapsed state="selected">`.
|
|
174
|
-
- `<rp-timeline>` + `<rp-timeline-item label="..." time="..." state="default|active|done|error">`.
|
|
175
|
-
- `<rp-calendar month="2026 年 6 月" selected="15">` — month grid.
|
|
176
|
-
- `<rp-kanban>` + `<rp-kanban-column title="..." count="3">` + `<rp-kanban-card label="..." tag="...">`.
|
|
177
|
-
- `<rp-code-block lang="ts" lines="5">` — code placeholder with line numbers.
|
|
178
|
-
- `<rp-diff rows="4">` — added/removed/context lines.
|
|
179
|
-
- `<rp-image-grid count="6" columns="3">`.
|
|
180
|
-
- `<rp-key-value>` + `<rp-kv-row label="..." value="...">` — description list.
|
|
181
|
-
- `<rp-accordion>` + `<rp-accordion-item label="..." expanded>`.
|
|
182
|
-
- `<rp-chip label="..." icon="..." closable>` — compact token.
|
|
183
|
-
|
|
184
|
-
### Navigation & layout (additional)
|
|
185
|
-
|
|
186
|
-
- `<rp-segmented options="日,周,月" active="1">`.
|
|
187
|
-
- `<rp-menu>` + `<rp-menu-item label="..." icon="..." shortcut="⌘O" state="disabled">`.
|
|
188
|
-
- `<rp-context-menu items="复制,重命名,删除">`.
|
|
189
|
-
- `<rp-command-palette query="..." results="A,B,C">`.
|
|
190
|
-
- `<rp-toc items="概述,安装,用法">` — table of contents.
|
|
191
|
-
- `<rp-kbd keys="⌘,K">` — keyboard shortcut chips.
|
|
192
|
-
- `<rp-split-pane columns="1fr 1fr">`, `<rp-divider vertical>`, `<rp-spacer size="16">`.
|
|
193
|
-
|
|
194
|
-
### Enterprise / SaaS
|
|
195
|
-
|
|
196
|
-
- `<rp-permission-gate reason="需管理员权限">…locked slot…</rp-permission-gate>`.
|
|
197
|
-
- `<rp-quota-bar label="API 调用" used="920" limit="1000">` — turns red at ≥90%.
|
|
198
|
-
- `<rp-api-key value="sk_live_••••3f9a">` — masked key with copy affordance.
|
|
199
|
-
- `<rp-audit-row actor="..." action="..." time="...">`.
|
|
200
|
-
- `<rp-workflow-node label="..." state="default|active|done|error">`.
|
|
201
|
-
|
|
202
|
-
### iOS platform (`rp-ios-*`, use with device="mobile")
|
|
203
|
-
|
|
204
|
-
- `<rp-ios-navbar title="..." large back="返回" trailing="编辑">`.
|
|
205
|
-
- `<rp-ios-tabbar items="A,B,C" icons="home,search,user" active="0">`.
|
|
206
|
-
- `<rp-ios-list header="...">` + `<rp-ios-list-item label="..." detail="..." icon="..." chevron>`.
|
|
207
|
-
- `<rp-ios-action-sheet title="..." actions="A,B,C" destructive="删除">`.
|
|
208
|
-
- `<rp-ios-alert title="..." message="..." actions="取消,确定">`.
|
|
209
|
-
- `<rp-ios-switch label="...">`, `<rp-ios-segmented options="A,B" active="0">`.
|
|
210
|
-
- `<rp-ios-button label="..." variant="filled|tinted|plain">`, `<rp-ios-search>`, `<rp-ios-stepper>`.
|
|
211
|
-
|
|
212
|
-
### macOS platform (`rp-macos-*`, use with device="web")
|
|
213
|
-
|
|
214
|
-
- `<rp-macos-window title="...">` — window chrome with traffic lights.
|
|
215
|
-
- `<rp-macos-menubar items="文件,编辑,显示">`, `<rp-macos-toolbar>`.
|
|
216
|
-
- `<rp-macos-sidebar>` + `<rp-macos-source-item label="..." icon="..." group state="selected">`.
|
|
217
|
-
- `<rp-macos-segmented options="A,B,C" active="0">`.
|
|
218
|
-
- `<rp-macos-popover title="...">`, `<rp-macos-sheet title="...">`.
|
|
219
|
-
- `<rp-macos-stepper>`, `<rp-macos-disclosure label="..." expanded>`.
|
|
220
|
-
- `<rp-macos-table columns="名称,大小" rows="5">` — sortable-header table look.
|
|
221
|
-
|
|
222
|
-
### Agent / conversational UI
|
|
223
|
-
|
|
224
|
-
For chat, copilot, and agent prototypes:
|
|
225
|
-
|
|
226
|
-
- `<rp-chat>` — conversation container; wraps the message stream.
|
|
227
|
-
- `<rp-user-message text="..." initials="我">` — right-aligned user bubble (text attr or rich children).
|
|
228
|
-
- `<rp-assistant-message name="助手" text="...">` — left-aligned assistant message; children render as rich content (can contain tool-call/output/citation).
|
|
229
|
-
- `<rp-system-message text="...">` — centered system/context note.
|
|
230
|
-
- `<rp-tool-call name="search" state="running|done|error" args="...">` — tool/function call card with status.
|
|
231
|
-
- `<rp-agent-output kind="text|code|terminal" label="..." text="...">` — command/code/tool output block.
|
|
232
|
-
- `<rp-reasoning expanded>…</rp-reasoning>` — collapsible thinking/reasoning block.
|
|
233
|
-
- `<rp-message-actions actions="copy,retry,up,down,edit,share">` — per-message action buttons.
|
|
234
|
-
- `<rp-suggestions items="A,B,C">` — suggested reply / prompt chips.
|
|
235
|
-
- `<rp-typing>` — streaming typing indicator.
|
|
236
|
-
- `<rp-composer value="..." placeholder="..." state="idle|streaming">` — prompt input bar (send button becomes stop while streaming).
|
|
237
|
-
- `<rp-citation index="1" title="...">` — source reference chip.
|
|
238
|
-
- `<rp-token-usage used="1840" limit="8000">` — token/context usage meter.
|
|
239
|
-
|
|
240
|
-
## Icon rule
|
|
241
|
-
|
|
242
|
-
Use Lucide icon names through the `icon` attribute when available:
|
|
243
|
-
|
|
244
|
-
```html
|
|
245
|
-
<rp-button label="新建" icon="plus" variant="primary"></rp-button>
|
|
246
|
-
<rp-list-item label="已归档" icon="archive"></rp-list-item>
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
The runtime renders inline SVG. Do not import lucide or any icon CDN.
|
|
250
|
-
|
|
251
|
-
## State coverage checklist
|
|
252
|
-
|
|
253
|
-
For each page, consider whether these states apply:
|
|
254
|
-
|
|
255
|
-
- loaded with normal data
|
|
256
|
-
- empty data
|
|
257
|
-
- loading/skeleton/spinner
|
|
258
|
-
- error/retry
|
|
259
|
-
- search default/focus/filled/no-result
|
|
260
|
-
- filter collapsed/expanded
|
|
261
|
-
- row default/selected/unread/highlighted/disabled
|
|
262
|
-
- bulk selection off/on
|
|
263
|
-
- pagination first/middle/last/no more pages
|
|
264
|
-
- permission variants: readonly/admin/owner/external collaborator
|
|
265
|
-
- destructive confirmation
|
|
266
|
-
- validation default/filled/error/disabled
|
|
267
|
-
|
|
268
|
-
## Recommended complete HTML shape
|
|
269
|
-
|
|
270
|
-
```html
|
|
271
|
-
<!doctype html>
|
|
272
|
-
<html lang="zh-CN">
|
|
273
|
-
<head>
|
|
274
|
-
<meta charset="UTF-8" />
|
|
275
|
-
<script type="module" src="./dist/rpui.js"></script>
|
|
276
|
-
</head>
|
|
277
|
-
<body>
|
|
278
|
-
<rp-page title="页面标题" route="/route" description="页面说明">
|
|
279
|
-
<rp-main-view device="web" scale="0.65">
|
|
280
|
-
<rp-viewport device="web">
|
|
281
|
-
<!-- main snapshot built only with rp-* primitives -->
|
|
282
|
-
</rp-viewport>
|
|
283
|
-
</rp-main-view>
|
|
284
|
-
|
|
285
|
-
<rp-annotation id="1" label="区域说明">
|
|
286
|
-
简短说明此区域的职责。
|
|
287
|
-
<rp-enum>
|
|
288
|
-
<rp-enum-item label="默认" description="正常可用的数据态。"><rp-empty label="示例"></rp-empty></rp-enum-item>
|
|
289
|
-
<rp-enum-item label="加载" description="首次进入或刷新时展示。"><rp-loading rows="3"></rp-loading></rp-enum-item>
|
|
290
|
-
</rp-enum>
|
|
291
|
-
</rp-annotation>
|
|
292
|
-
</rp-page>
|
|
293
|
-
</body>
|
|
294
|
-
</html>
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
For a realistic high-complexity reference (9 top-level annotations, 3–5 levels of nesting, implementation-level annotation bodies, permission matrix, state machines, SLA boundaries), see `demo/golden.html`. Refer to `SKILL.md` for the recursive decomposition method, coverage-matrix technique, and complexity expectations.
|
|
298
|
-
|