@mstar-harness/opencode 0.6.19 → 0.6.21

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.
@@ -1,3 +1,300 @@
1
+ ---
2
+ version: 0.1.0
3
+ name: "[Design System Name]"
4
+ description: "[Design System Name] is a [adjective — e.g., minimal, high-contrast, playful] design system for [project/product name]. This is the Light theme."
5
+
6
+ colors:
7
+ # ── Background surfaces ──
8
+ # Level 1 — primary page/card surface (REQUIRED)
9
+ background-100: "[#ffffff]"
10
+
11
+ # LEVEL2_PLACEHOLDER: secondary surface, active surface — uncomment and fill when upgrading to Level 2
12
+ # background-200: "[#f5f5f5]"
13
+ # background-300: "[#e5e5e5]"
14
+
15
+ # ── Gray (solid — text and opaque fills) ──
16
+ # Level 1 — primary and secondary text (REQUIRED)
17
+ gray-1000: "[#111111]"
18
+ gray-900: "[#666666]"
19
+
20
+ # LEVEL2_PLACEHOLDER: full 10-step gray scale — uncomment and fill values for steps 100–800
21
+ # gray-100: "[#f2f2f2]"
22
+ # gray-200: "[#ebebeb]"
23
+ # gray-300: "[#e6e6e6]"
24
+ # gray-400: "[#eaeaea]"
25
+ # gray-500: "[#c9c9c9]"
26
+ # gray-600: "[#a8a8a8]"
27
+ # gray-700: "[#8f8f8f]"
28
+ # gray-800: "[#7d7d7d]"
29
+
30
+ # LEVEL2_PLACEHOLDER: gray alpha (translucent) scale — uncomment and fill
31
+ # gray-alpha-100: "#0000000d"
32
+ # gray-alpha-200: "#00000015"
33
+ # gray-alpha-300: "#0000001a"
34
+ # gray-alpha-400: "#00000014"
35
+ # gray-alpha-500: "#00000036"
36
+ # gray-alpha-600: "#0000003d"
37
+ # gray-alpha-700: "#00000070"
38
+ # gray-alpha-800: "#00000082"
39
+ # gray-alpha-900: "#000000b3"
40
+ # gray-alpha-1000: "#000000e8"
41
+
42
+ # ── Accent — Blue (links, focus, primary actions) ──
43
+ # Level 1 — at minimum blue-700 for interactive elements (REQUIRED)
44
+ blue-700: "[#0066ff]"
45
+
46
+ # LEVEL2_PLACEHOLDER: full blue scale — uncomment and fill
47
+ # blue-100: "[#f0f7ff]"
48
+ # blue-200: "[#e9f4ff]"
49
+ # blue-300: "[#dfefff]"
50
+ # blue-400: "[#cae7ff]"
51
+ # blue-500: "[#94ccff]"
52
+ # blue-600: "[#48aeff]"
53
+ # blue-700: "[#006bff]"
54
+ # blue-800: "[#0059ec]"
55
+ # blue-900: "[#005ff2]"
56
+ # blue-1000: "[#002359]"
57
+
58
+ # ── Accent — Red (errors, destructive actions) ──
59
+ # Level 1 — at minimum red-700 for errors (REQUIRED)
60
+ red-700: "[#e60000]"
61
+
62
+ # LEVEL2_PLACEHOLDER: full red scale — uncomment and fill
63
+ # red-100: "[#ffeeef]"
64
+ # red-200: "[#ffe8ea]"
65
+ # red-300: "[#ffe3e4]"
66
+ # red-400: "[#ffd7d6]"
67
+ # red-500: "[#ffb1b3]"
68
+ # red-600: "[#ff676d]"
69
+ # red-700: "[#fc0035]"
70
+ # red-800: "[#ea001d]"
71
+ # red-900: "[#d8001b]"
72
+ # red-1000: "[#47000c]"
73
+
74
+ # ── Accent — Amber (warnings) ──
75
+ # Level 1 — at minimum amber-700 for warnings (REQUIRED)
76
+ amber-700: "[#ffaa00]"
77
+
78
+ # LEVEL2_PLACEHOLDER: full amber scale — uncomment and fill
79
+ # amber-100: "[#fff6de]"
80
+ # amber-200: "[#fff4cf]"
81
+ # amber-300: "[#fff1c1]"
82
+ # amber-400: "[#ffdc73]"
83
+ # amber-500: "[#ffc543]"
84
+ # amber-600: "[#ffa600]"
85
+ # amber-700: "[#ffae00]"
86
+ # amber-800: "[#ff9300]"
87
+ # amber-900: "[#aa4d00]"
88
+ # amber-1000: "[#561900]"
89
+
90
+ # LEVEL2_PLACEHOLDER: additional accent scales — uncomment and fill
91
+ # green-100: "[#ecfdec]"
92
+ # green-200: "[#e5fce7]"
93
+ # green-300: "[#d3fad1]"
94
+ # green-400: "[#b9f5bc]"
95
+ # green-500: "[#82eb8d]"
96
+ # green-600: "[#4ce15e]"
97
+ # green-700: "[#28a948]"
98
+ # green-800: "[#279141]"
99
+ # green-900: "[#107d32]"
100
+ # green-1000: "[#003a00]"
101
+
102
+ # teal-100: "[#defffb]"
103
+ # teal-200: "[#ddfef6]"
104
+ # teal-300: "[#ccf9f1]"
105
+ # teal-400: "[#b1f7ec]"
106
+ # teal-500: "[#52f0db]"
107
+ # teal-600: "[#00e3c4]"
108
+ # teal-700: "[#00ac96]"
109
+ # teal-800: "[#00927f]"
110
+ # teal-900: "[#007f70]"
111
+ # teal-1000: "[#003f34]"
112
+
113
+ # purple-100: "[#faf0ff]"
114
+ # purple-200: "[#f9f0ff]"
115
+ # purple-300: "[#f6e8ff]"
116
+ # purple-400: "[#f2d9ff]"
117
+ # purple-500: "[#dfa7ff]"
118
+ # purple-600: "[#c979ff]"
119
+ # purple-700: "[#a000f8]"
120
+ # purple-800: "[#8500d1]"
121
+ # purple-900: "[#7d00cc]"
122
+ # purple-1000: "[#2f004e]"
123
+
124
+ # pink-100: "[#ffe8f6]"
125
+ # pink-200: "[#ffe8f3]"
126
+ # pink-300: "[#ffdfeb]"
127
+ # pink-400: "[#ffd3e1]"
128
+ # pink-500: "[#fdb3cc]"
129
+ # pink-600: "[#f97ea7]"
130
+ # pink-700: "[#f22782]"
131
+ # pink-800: "[#e4106e]"
132
+ # pink-900: "[#c41562]"
133
+ # pink-1000: "[#460523]"
134
+
135
+ # LEVEL3_PLACEHOLDER: wide-gamut P3 equivalents — uncomment and fill for Display P3 screens
136
+ # blue-100-p3: "oklch(…)"
137
+ # blue-200-p3: "oklch(…)"
138
+ # …
139
+
140
+ typography:
141
+ # ── Body text (multi-line, taller line-height) ──
142
+ # Level 1 — at minimum one body token (REQUIRED)
143
+ copy-16:
144
+ fontFamily: "[font-family]"
145
+ fontSize: 16px
146
+ fontWeight: 400
147
+ lineHeight: 1.6
148
+ letterSpacing: 0
149
+
150
+ # LEVEL2_PLACEHOLDER: additional body sizes — uncomment and fill
151
+ # copy-24:
152
+ # fontFamily: "[font-family]"
153
+ # fontSize: 24px
154
+ # fontWeight: 400
155
+ # lineHeight: 36px
156
+ # copy-20:
157
+ # fontFamily: "[font-family]"
158
+ # fontSize: 20px
159
+ # fontWeight: 400
160
+ # lineHeight: 36px
161
+ # copy-14:
162
+ # fontFamily: "[font-family]"
163
+ # fontSize: 14px
164
+ # fontWeight: 400
165
+ # lineHeight: 20px
166
+
167
+ # ── Headings ──
168
+ # Level 1 — at minimum one heading token (REQUIRED)
169
+ heading-32:
170
+ fontFamily: "[font-family]"
171
+ fontSize: 32px
172
+ fontWeight: 600
173
+ lineHeight: 1.2
174
+ letterSpacing: -0.02em
175
+
176
+ # LEVEL2_PLACEHOLDER: full heading scale — uncomment and fill
177
+ # heading-72:
178
+ # fontFamily: "[font-family]"
179
+ # fontSize: 72px
180
+ # fontWeight: 600
181
+ # lineHeight: 72px
182
+ # letterSpacing: -0.04em
183
+ # heading-48:
184
+ # fontFamily: "[font-family]"
185
+ # fontSize: 48px
186
+ # fontWeight: 600
187
+ # lineHeight: 56px
188
+ # letterSpacing: -0.03em
189
+ # heading-24:
190
+ # fontFamily: "[font-family]"
191
+ # fontSize: 24px
192
+ # fontWeight: 600
193
+ # lineHeight: 32px
194
+ # letterSpacing: -0.01em
195
+ # heading-20:
196
+ # fontFamily: "[font-family]"
197
+ # fontSize: 20px
198
+ # fontWeight: 600
199
+ # lineHeight: 26px
200
+ # letterSpacing: -0.005em
201
+
202
+ # LEVEL2_PLACEHOLDER: label typography (single-line, scannable) — uncomment and fill
203
+ # label-14:
204
+ # fontFamily: "[font-family]"
205
+ # fontSize: 14px
206
+ # fontWeight: 400
207
+ # lineHeight: 20px
208
+
209
+ # LEVEL2_PLACEHOLDER: button typography — uncomment and fill
210
+ # button-14:
211
+ # fontFamily: "[font-family]"
212
+ # fontSize: 14px
213
+ # fontWeight: 500
214
+ # lineHeight: 20px
215
+
216
+ spacing:
217
+ base: 4px
218
+ # Level 1 — at minimum 5 scale steps (REQUIRED)
219
+ 1: 4px
220
+ 2: 8px
221
+ 3: 12px
222
+ 4: 16px
223
+ 6: 24px
224
+
225
+ # LEVEL2_PLACEHOLDER: full 9-step scale — uncomment and fill
226
+ # 8: 32px
227
+ # 10: 40px
228
+ # 16: 64px
229
+ # 24: 96px
230
+
231
+ rounded:
232
+ # Level 1 — at minimum one radius for everyday controls (REQUIRED)
233
+ sm: 6px
234
+
235
+ # LEVEL2_PLACEHOLDER: additional radius tokens — uncomment and fill
236
+ # md: 12px
237
+ # lg: 16px
238
+ # full: 9999px
239
+
240
+ # LEVEL2_PLACEHOLDER: component tokens — uncomment full section when upgrading to Level 2
241
+ # components:
242
+ # button-primary:
243
+ # backgroundColor: "{colors.gray-1000}"
244
+ # textColor: "{colors.background-100}"
245
+ # typography: "{typography.button-14}"
246
+ # rounded: "{rounded.sm}"
247
+ # padding: "0 10px"
248
+ # height: 40px
249
+ # button-secondary:
250
+ # backgroundColor: "{colors.background-100}"
251
+ # textColor: "{colors.gray-1000}"
252
+ # typography: "{typography.button-14}"
253
+ # rounded: "{rounded.sm}"
254
+ # padding: "0 10px"
255
+ # height: 40px
256
+ # button-tertiary:
257
+ # textColor: "{colors.gray-1000}"
258
+ # typography: "{typography.button-14}"
259
+ # rounded: "{rounded.sm}"
260
+ # padding: "0 10px"
261
+ # height: 40px
262
+ # button-error:
263
+ # backgroundColor: "{colors.red-800}"
264
+ # textColor: "#ffffff"
265
+ # typography: "{typography.button-14}"
266
+ # rounded: "{rounded.sm}"
267
+ # padding: "0 10px"
268
+ # height: 40px
269
+ # button-small:
270
+ # typography: "{typography.button-14}"
271
+ # rounded: "{rounded.sm}"
272
+ # padding: "0 6px"
273
+ # height: 32px
274
+ # button-large:
275
+ # typography: "{typography.button-16}"
276
+ # rounded: "{rounded.sm}"
277
+ # padding: "0 14px"
278
+ # height: 48px
279
+ # input:
280
+ # backgroundColor: "{colors.background-100}"
281
+ # textColor: "{colors.gray-1000}"
282
+ # typography: "{typography.label-14}"
283
+ # rounded: "{rounded.sm}"
284
+ # padding: "0 12px"
285
+ # height: 40px
286
+ # input-small:
287
+ # typography: "{typography.label-14}"
288
+ # rounded: "{rounded.sm}"
289
+ # padding: "0 12px"
290
+ # height: 32px
291
+ # input-large:
292
+ # typography: "{typography.label-16}"
293
+ # rounded: "{rounded.sm}"
294
+ # padding: "0 12px"
295
+ # height: 48px
296
+ ---
297
+
1
298
  <!-- COMPLETENESS_LEVEL: 1 — last audited [DATE] -->
2
299
 
3
300
  # [Design System Name]
@@ -7,146 +304,59 @@
7
304
  [Design System Name] is a [adjective, e.g., minimal, playful, bold] design system for [project/product name].
8
305
  [Aesthetic principles — one sentence describing the visual identity: e.g., "Prioritize readability and clarity with plenty of whitespace and restrained color."]
9
306
 
307
+ All concrete token values live in the YAML frontmatter above (colors, typography, spacing, rounded, components). The sections below explain usage rules, design intent, and agent guidance.
308
+
10
309
  This is the Light theme.
11
310
  <!-- LEVEL2_PLACEHOLDER: When ready for dark theme, create DESIGN.dark.md with same token names and different values. See references/completeness-checklist.md § Level 3. -->
12
311
  <!-- Uncomment when dark theme exists: The Dark theme uses the same token names with different values and lives at /DESIGN.dark.md. -->
13
312
 
14
313
  ## Colors
15
314
 
16
- ### Background
17
-
18
- <!-- Level 1 — Fill in at least background-100. Level 2 adds background-200 and background-300. -->
19
-
20
- | Token | Value |
21
- |-------|-------|
22
- | background-100 | #[primary page/card surface] |
23
-
24
- <!-- LEVEL2_PLACEHOLDER: Add background-200 and background-300 for subtle surface separation. See references/completeness-checklist.md § Level 2/Colors. -->
25
- <!--
26
- | background-200 | #[secondary surface] |
27
- | background-300 | #[active surface] |
28
- -->
29
-
30
- ### Gray (text and fills)
315
+ Token values are defined in the frontmatter `colors:` map. Each non-background scale runs 10 steps (`100`–`1000`), and the step encodes intent, not just lightness:
31
316
 
32
- <!-- Level 1 — Fill in at least gray-1000 (primary text) and gray-900 (secondary text). -->
317
+ - `100` default background
318
+ - `200` hover background
319
+ - `300` active background
320
+ - `400` default border
321
+ - `500` hover border
322
+ - `600` active border
323
+ - `700` solid fill, high contrast
324
+ - `800` solid fill, hover
325
+ - `900` secondary text and icons
326
+ - `1000` primary text and icons
33
327
 
34
- | Token | Value |
35
- |-------|-------|
36
- | gray-1000 | #[primary text] |
37
- | gray-900 | #[secondary text] |
38
-
39
- <!-- LEVEL2_PLACEHOLDER: Complete the full 10-step scale (gray-100 through gray-1000). See references/design-md-spec.md § Colors. -->
40
- <!--
41
- | gray-100 | #[lightest fill] |
42
- | gray-200 | #[hover fill] |
43
- | gray-300 | #[active fill] |
44
- | gray-400 | #[border] |
45
- | gray-500 | #[hover border] |
46
- | gray-600 | #[active border] |
47
- | gray-700 | #[solid fill / disabled text] |
48
- | gray-800 | #[solid hover] |
49
- | gray-900 | #[secondary text] |
50
- | gray-1000 | #[primary text] |
51
- -->
328
+ `background-100` is the primary page and card surface. The `gray-alpha-*` tokens are translucent, so they layer over any background; use them for borders, dividers, overlays, and hover states. Solid `gray-*` holds its contrast on any surface, so use it for text and opaque fills. Accent scales carry meaning: `blue` for links and focus; `red` for errors; `amber` for warnings; plus `green`, `teal`, `purple`, and `pink`.
52
329
 
330
+ <!-- LEVEL2_PLACEHOLDER: Complete the full 10-step gray scale and add all accent scales to the frontmatter. See references/completeness-checklist.md § Level 2/Colors. -->
53
331
  <!-- LEVEL2_PLACEHOLDER: Add gray-alpha scale for translucent borders, overlays, and hover states. See references/design-md-spec.md § Colors. -->
54
- <!--
55
- ### Gray Alpha (translucent overlays)
56
-
57
- | Token | Value |
58
- |-------|-------|
59
- | gray-alpha-100 | rgba(0, 0, 0, 0.04) |
60
- | gray-alpha-200 | rgba(0, 0, 0, 0.06) |
61
- | gray-alpha-300 | rgba(0, 0, 0, 0.08) |
62
- | gray-alpha-400 | rgba(0, 0, 0, 0.12) |
63
- | gray-alpha-500 | rgba(0, 0, 0, 0.16) |
64
- | gray-alpha-600 | rgba(0, 0, 0, 0.24) |
65
- -->
66
-
67
- ### Accent
68
-
69
- <!-- Level 1 — Fill in at least one accent (blue or brand color) for links/actions, plus red for errors and amber for warnings. -->
70
-
71
- | Token | Value | Usage |
72
- |-------|-------|-------|
73
- | blue-700 | #[links, focus, primary actions] | Interactive elements |
74
- | red-700 | #[errors, destructive actions] | Errors, delete buttons |
75
- | amber-700 | #[warnings, alerts] | Warning states |
76
-
77
- <!-- LEVEL2_PLACEHOLDER: Complete all accent scales (blue, red, amber, green, teal, purple, pink). Add at minimum 700/800/900/1000 steps per scale. See references/completeness-checklist.md § Level 2/Colors. -->
78
- <!--
79
- | green | Success states |
80
- | teal | Info, secondary brand |
81
- | purple | Special emphasis |
82
- | pink | Highlights, badges |
83
- -->
332
+ <!-- LEVEL3_PLACEHOLDER: Add wide-gamut P3 equivalents (`*-p3`) in oklch() to the frontmatter. -->
84
333
 
85
334
  ## Typography
86
335
 
87
- <!-- Level 1 Fill in at least one body token (copy-*) and one heading token (heading-*). -->
88
- <!-- Token naming: {role}-{size}. Roles: heading, label, copy, button. Size: approximate font size in px. -->
89
-
90
- ### Body text
336
+ Token values are defined in the frontmatter `typography:` map. Token naming: `{role}-{size}` where role is `heading`, `label`, `copy`, or `button` and size is approximate font size in px.
91
337
 
92
- | Token | Font Family | Size | Weight | Line Height | Letter Spacing |
93
- |-------|------------|------|--------|-------------|----------------|
94
- | copy-16 | [font-family] | 16px | 400 | 1.6 | 0 |
338
+ - **Headings** (`heading-72` through `heading-14`): title pages and sections; `letterSpacing` tightens as the size grows.
339
+ - **Labels** (`label-20` through `label-12`): single-line, scannable text — navigation, form labels, table headers, metadata.
340
+ - **Copy** (`copy-24` through `copy-13`): multi-line body text with a taller `lineHeight`.
341
+ - **Buttons** (`button-16` through `button-12`): medium-weight labels for buttons and compact controls.
342
+ - **Mono tokens** (`-mono` suffix): same metrics with a monospace font for code and data; prefer tabular figures when numbers need to align.
95
343
 
96
- ### Headings
97
-
98
- | Token | Font Family | Size | Weight | Line Height | Letter Spacing |
99
- |-------|------------|------|--------|-------------|----------------|
100
- | heading-32 | [font-family] | 32px | 600 | 1.2 | -0.02em |
101
-
102
- <!-- LEVEL2_PLACEHOLDER: Complete the typography scale. Add at least 3 heading levels, 1 label token, and 1 button typography token. See references/completeness-checklist.md § Level 2/Typography. -->
103
- <!--
104
- ### Labels (single-line, scannable)
105
-
106
- | Token | Font Family | Size | Weight | Line Height | Letter Spacing |
107
- |-------|------------|------|--------|-------------|----------------|
108
- | label-14 | [font-family] | 14px | 500 | 1.3 | 0 |
109
-
110
- ### Buttons
111
-
112
- | Token | Font Family | Size | Weight | Line Height | Letter Spacing |
113
- |-------|------------|------|--------|-------------|----------------|
114
- | button-14 | [font-family] | 14px | 500 | 1.3 | 0 |
115
-
116
- ### Additional headings
117
- | heading-24 | [font-family] | 24px | 600 | 1.3 | -0.01em |
118
- | heading-20 | [font-family] | 20px | 600 | 1.3 | 0 |
119
- -->
344
+ <!-- LEVEL2_PLACEHOLDER: Complete the typography scale in the frontmatter. Add at least 3 heading levels, 1 label token, and 1 button typography token. See references/completeness-checklist.md § Level 2/Typography. -->
120
345
 
121
346
  ## Spacing & Layout
122
347
 
123
- ### Spacing scale
124
-
125
- <!-- Level 1 — Declare base unit and at least 5 scale steps. Base unit is typically 4px or 8px. -->
348
+ Token values are defined in the frontmatter `spacing:` and `rounded:` maps.
126
349
 
127
- Base unit: [4px or 8px]
350
+ ### Spacing scale
128
351
 
129
- | Step | Value |
130
- |------|-------|
131
- | 1x | [base × 1] |
132
- | 2x | [base × 2] |
133
- | 3x | [base × 3] |
134
- | 4x | [base × 4] |
135
- | 6x | [base × 6] |
352
+ Keep a three-step rhythm:
353
+ - [small, e.g., 8px] inside a group (label + input, icon + text)
354
+ - [medium, e.g., 16px] between related groups
355
+ - [large, e.g., 32-40px] between sections
136
356
 
137
- <!-- LEVEL2_PLACEHOLDER: Complete the full 9-step scale and add three-step rhythm rules. See references/design-md-spec.md § Spacing & Layout. -->
138
- <!--
139
- | 8x | [base × 8] |
140
- | 10x | [base × 10] |
141
- | 16x | [base × 16] |
142
- | 24x | [base × 24] |
357
+ Cards use 24px padding, 16px when compact and 32px for hero areas. Center content in a responsive column with side padding that grows at wider breakpoints.
143
358
 
144
- ### Rhythm
145
-
146
- - [small]: inside a group (label + input, icon + text)
147
- - [medium]: between related groups
148
- - [large]: between sections
149
- -->
359
+ <!-- LEVEL2_PLACEHOLDER: Complete the full 9-step spacing scale in the frontmatter. See references/completeness-checklist.md § Level 2/Spacing. -->
150
360
 
151
361
  ### Breakpoints
152
362
 
@@ -164,38 +374,30 @@ Base unit: [4px or 8px]
164
374
  | 2xl | 1400px | Ultra-wide |
165
375
  -->
166
376
 
167
- <!-- LEVEL2_PLACEHOLDER: Add Components section — at minimum Button (primary, secondary) and Input tokens with size variants and all states. See references/design-md-spec.md § Components. -->
377
+ <!-- LEVEL2_PLACEHOLDER: Add Components section — at minimum Button (primary, secondary, tertiary, error) and Input tokens in the frontmatter `components:` map with size variants and all states. See references/design-md-spec.md § Components. -->
168
378
  <!--
169
379
  ## Components
170
380
 
381
+ Component tokens are defined in the frontmatter `components:` map. They reference other frontmatter keys via `{colors.*}` and `{typography.*}` syntax.
382
+
171
383
  ### Button
172
384
 
173
- | Variant | Background | Text | Border | Radius | Height |
174
- |---------|-----------|------|--------|--------|--------|
175
- | primary | gray-1000 | background-100 | — | 6px | 40px |
176
- | secondary | background-100 | gray-1000 | gray-alpha-400 | 6px | 40px |
385
+ **Variants** are defined in frontmatter as `button-primary`, `button-secondary`, `button-tertiary`, `button-error`.
177
386
 
178
- **Size variants:**
179
- | Size | Height | Typography |
180
- |------|--------|------------|
181
- | small | 32px | button-12 |
182
- | default | 40px | button-14 |
183
- | large | 48px | button-16 |
387
+ **Size variants** (`button-small`, `button-large`) inherit variant properties and override only typography, padding, and height.
184
388
 
185
- **States:** Fill steps up: 100→200 (hover), 100→300 (active). Border steps up: 400→500→600. Disabled: gray-100 fill, gray-700 text, not-allowed cursor. Focus: 0 0 0 2px background-100, 0 0 0 4px blue-700.
389
+ **States:** Fill steps up: 100→200 (hover), 100→300 (active). Border steps up: 400→500→600. Disabled: 100 fill, 700 text, not-allowed cursor. Focus: `0 0 0 2px {colors.background-100}, 0 0 0 4px {colors.blue-700}`.
186
390
 
187
391
  ### Input
188
392
 
189
- | Variant | Background | Text | Border | Radius | Height |
190
- |---------|-----------|------|--------|--------|--------|
191
- | default | background-100 | gray-1000 | gray-alpha-400 | 6px | 40px |
393
+ **Variants** are defined in frontmatter as `input`.
192
394
 
193
- **Size variants:** Same as Button (32px/40px/48px).
395
+ **Size variants** (`input-small`, `input-large`) same pattern as Button.
194
396
 
195
- **States:** Same state progression as Button. Error: border red-700, add error message below.
397
+ **States:** Same state progression as Button. Error: border `red-700`, add error message below.
196
398
  -->
197
399
 
198
- <!-- LEVEL3_PLACEHOLDER: Add Elevation & Depth, Motion, Shapes, Voice & Content, and full Component library. See references/completeness-checklist.md § Level 3. -->
400
+ <!-- LEVEL3_PLACEHOLDER: Add Elevation & Depth, Motion, Shapes, Voice & Content, and extended Component library. See references/completeness-checklist.md § Level 3. -->
199
401
  <!--
200
402
  ## Elevation & Depth
201
403
 
@@ -209,7 +411,7 @@ Hierarchy comes from tonal surfaces and borders first; shadows stay subtle.
209
411
  | Popover | 0 1px 1px rgba(0, 0, 0, 0.02), 0 4px 8px -4px rgba(0, 0, 0, 0.04), 0 16px 24px -8px rgba(0, 0, 0, 0.06) |
210
412
  | Modal | 0 1px 1px rgba(0, 0, 0, 0.02), 0 8px 16px -4px rgba(0, 0, 0, 0.04), 0 24px 32px -8px rgba(0, 0, 0, 0.06) |
211
413
 
212
- Pair each elevation with the matching radius below.
414
+ Pair each elevation with the matching radius from `rounded:` frontmatter.
213
415
 
214
416
  ## Motion
215
417
 
@@ -231,23 +433,16 @@ Honor prefers-reduced-motion: drop nonessential motion.
231
433
 
232
434
  ## Shapes
233
435
 
234
- ### Border Radius
235
-
236
- | Context | Value |
237
- |---------|-------|
238
- | Surface, Input, Button | 6px |
239
- | Menu, Modal, Popover | 12px |
240
- | Fullscreen | 16px |
241
- | Pill, Avatar | 9999px |
242
-
243
- Keep one radius family per view; never mix rounded and sharp corners.
436
+ Border radius values are defined in the frontmatter `rounded:` map. Keep one radius family per view; never mix rounded and sharp corners.
244
437
 
245
438
  ## Components — Extended
246
439
 
247
- Add Card, Modal, Tooltip, Menu/Dropdown, Badge tokens following the same pattern as Button/Input.
440
+ Add Card, Modal, Tooltip, Menu/Dropdown, Badge tokens to the frontmatter `components:` map following the same structure as Button/Input.
248
441
 
249
442
  ## Voice & Content
250
443
 
444
+ Copy is part of the design; keep it precise and free of filler.
445
+
251
446
  - Use Title Case for labels, buttons, titles, and tabs
252
447
  - Sentence case for body, helper text, and toasts
253
448
  - Name actions with a verb and a noun: [Create Project], [Delete Item]
@@ -263,11 +458,12 @@ Add Card, Modal, Tooltip, Menu/Dropdown, Badge tokens following the same pattern
263
458
 
264
459
  <!-- Fill in with rules specific to this design system. Examples to customize: -->
265
460
 
266
- - Use [gray-1000] for primary text, [gray-900] for secondary.
461
+ - Use `gray-1000` for primary text, `gray-900` for secondary.
267
462
  - Keep accent color for state and the single most important action on a view.
268
463
  - Hold WCAG AA contrast (4.5:1 for body text).
269
- - Show focus ring on every interactive element at :focus-visible.
270
- - Apply typography tokens instead of setting font properties by hand.
464
+ - Show focus ring on every interactive element at `:focus-visible`.
465
+ - Use token values from the frontmatter — never set font size, line height, or color by hand.
271
466
  - Don't signal state with color alone; pair it with an icon or text label.
272
467
  - Don't use more than two font weights in one view.
273
468
  - Don't mix rounded and sharp corners in one view.
469
+ - Don't swap `gray-*` for `background-*`; they are separate scales.
@@ -85,7 +85,7 @@ PM 在 Assignment 写 **`Task category`**(主类 + 可选 `secondary`):
85
85
  | `mstar-plan-artifacts` | 主 plan、reports、`status.json`、residual、knowledge、Done 归档 |
86
86
  | `mstar-design-md` | DESIGN.md 设计系统规范 —— 创建/审计/维护 design tokens,三级检查清单,light/dark 双主题 |
87
87
  | `mstar-review-qc` | QC 工作流、模板、verdict、residual 留档 |
88
- | `mstar-coding-behavior` | Think / Simplicity / Surgical / Goal-Driven |
88
+ | `mstar-coding-behavior` | Think / Simplicity / Surgical / Debugging / Goal-Driven / Communication |
89
89
  | `mstar-superpowers-align` | Superpowers × harness 优先级与短语 |
90
90
  | `mstar-roles` | 角色正文 hub |
91
91
  | `mstar-host` | 宿主适配(自动识别;`references/opencode.md` / `cursor.md` / `codex.md` / `parallel-dispatch.md`) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "0.6.19",
3
+ "version": "0.6.21",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {