synthesisui 0.16.61 → 0.16.63
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/dist/skill-import.js +127 -9
- package/package.json +1 -1
package/dist/skill-import.js
CHANGED
|
@@ -67,6 +67,23 @@ So if the file says \`"registry": "http://localhost:3000"\`, every command in th
|
|
|
67
67
|
\`--registry http://localhost:3000\`. If it says production, pass nothing. The CLI now refuses a
|
|
68
68
|
mismatch instead of letting the server reject it, but the point is not to reach that.
|
|
69
69
|
|
|
70
|
+
**Do this silently.** Which host you are pointed at and which flags follow from it is plumbing,
|
|
71
|
+
and narrating it - *"registry is production, so no --registry flag needed"* - spends the
|
|
72
|
+
person's attention on a decision that was never theirs (dono, 01/08). Say something only when
|
|
73
|
+
there is nothing to say to: no token, or the wrong host.
|
|
74
|
+
|
|
75
|
+
## How to narrate
|
|
76
|
+
|
|
77
|
+
The person cares about **what you found in their code** and **what you are about to create**.
|
|
78
|
+
They do not care which flag you passed, which grep you ran, or what you checked and ruled out.
|
|
79
|
+
|
|
80
|
+
- Report findings, not mechanics. *"Their docs call Ocean the primary branding scale"* earns
|
|
81
|
+
its line. *"Let me check whether packages/ui exists"* does not.
|
|
82
|
+
- Every decision you make on their behalf belongs in **one** confirmation at the end, not
|
|
83
|
+
scattered through the work as fait accompli.
|
|
84
|
+
- Never end on a wall of prose that happens to contain a question. If you need an answer, the
|
|
85
|
+
last thing on screen is the question.
|
|
86
|
+
|
|
70
87
|
### 1. Measure
|
|
71
88
|
|
|
72
89
|
**Always run from the project root, and always twice in a monorepo.** The root is where the
|
|
@@ -149,21 +166,122 @@ about which one is the page. Read a screen and see.
|
|
|
149
166
|
**\`fonts\` and \`concept\`** - the voice, and one paragraph on what this product is. The concept
|
|
150
167
|
feeds every recommendation downstream, so a real one beats a generic one by a wide margin.
|
|
151
168
|
|
|
152
|
-
### 3.
|
|
169
|
+
### 3. Walk them through the decisions, one at a time
|
|
170
|
+
|
|
171
|
+
Four decisions are theirs. **Ask them as separate questions with selectable options** - use your
|
|
172
|
+
question tool, one call per decision, so they pick instead of reading a wall and composing a
|
|
173
|
+
reply. A single block containing everything is a report, and a report gets read, not answered.
|
|
174
|
+
|
|
175
|
+
Every question carries **your recommendation first, marked as such**, and the evidence for it in
|
|
176
|
+
one line. They are choosing, not auditing you.
|
|
177
|
+
|
|
178
|
+
**3a. Source** - the folder you measure the system out of.
|
|
179
|
+
|
|
180
|
+
Options are the candidates the CLI already ranked, each with what it would produce, plus the
|
|
181
|
+
whole repo, plus *somewhere else* for a path they type:
|
|
182
|
+
|
|
183
|
+
\`\`\`
|
|
184
|
+
Where should the system come from?
|
|
185
|
+
|
|
186
|
+
packages/ui (recommended) 114 files · 47% of its values already named ·
|
|
187
|
+
92 tokens of their own · every app imports it
|
|
188
|
+
the whole repo 2797 files · 36% · the average of one dark app
|
|
189
|
+
and two light ones, which is a diagnosis and
|
|
190
|
+
not a system
|
|
191
|
+
apps/web-dashboard the heaviest consumer, if you want one app's
|
|
192
|
+
vocabulary rather than the shared one
|
|
193
|
+
somewhere else a path you name
|
|
194
|
+
\`\`\`
|
|
195
|
+
|
|
196
|
+
If they name a path you cannot use, say which of the two it is and offer the list again:
|
|
197
|
+
|
|
198
|
+
- **it does not exist**, or holds no files you can read
|
|
199
|
+
- **it holds no design values** - no colours, no radii, no tokens. A folder of server code or
|
|
200
|
+
config is not a design system, and measuring it produces a system of nothing.
|
|
201
|
+
|
|
202
|
+
**3b. Name** - suggest theirs, and let Enter take it:
|
|
203
|
+
|
|
204
|
+
\`\`\`
|
|
205
|
+
What should it be called? (SignalUI)
|
|
206
|
+
\`\`\`
|
|
207
|
+
|
|
208
|
+
Say where the suggestion came from - \`Introduction.mdx\`, the package name, the folder. A name
|
|
209
|
+
they recognise is worth more than a clever one. The slug is derived once and never changes, so
|
|
210
|
+
this is the moment.
|
|
211
|
+
|
|
212
|
+
**3c. Primary** - and explain the role before offering the choice, because *primary* is our word
|
|
213
|
+
and not necessarily theirs:
|
|
214
|
+
|
|
215
|
+
\`\`\`
|
|
216
|
+
Primary is the colour that carries action - buttons, links, focus, the thing
|
|
217
|
+
you want pressed. Everything else in the system is measured for contrast
|
|
218
|
+
against it.
|
|
219
|
+
|
|
220
|
+
#059aed ocean-500 (recommended) your ColorPalette.mdx calls Ocean the
|
|
221
|
+
"Primary branding scale"
|
|
222
|
+
#1a4ed8 royal-blue-500 your docs label this one secondary
|
|
223
|
+
#ec4899 vivid-pink-500 half of your signature AI gradient
|
|
224
|
+
#4A90E2 blue-500 the most-painted blue in the folder,
|
|
225
|
+
but it sits after your own
|
|
226
|
+
/* End - Signal UI */ marker
|
|
227
|
+
\`\`\`
|
|
228
|
+
|
|
229
|
+
Always name the hex AND the token, and always give the reason a value is *not* recommended when
|
|
230
|
+
frequency would have picked it. That last row is the whole point of asking.
|
|
231
|
+
|
|
232
|
+
**3d. Default theme** - which face it opens in:
|
|
233
|
+
|
|
234
|
+
\`\`\`
|
|
235
|
+
dark (recommended) data-theme="dark" in the root layout, next-themes
|
|
236
|
+
defaultTheme="dark", enableSystem={false}
|
|
237
|
+
light the other one, also real here
|
|
238
|
+
\`\`\`
|
|
239
|
+
|
|
240
|
+
**Two is all there is** - a SynthesisUI system carries one palette and one alternate, and the
|
|
241
|
+
schema is \`"light" | "dark"\`. So this is not "which themes do you support", it is "which one do
|
|
242
|
+
docs and installs open in". If both are real, both get built from their own tokens; this picks
|
|
243
|
+
the face.
|
|
244
|
+
|
|
245
|
+
**3e. Canvas** - confirm, do not offer a list. The page is measured, not chosen:
|
|
246
|
+
|
|
247
|
+
\`\`\`
|
|
248
|
+
canvas #222326 darkgray-500 - what DashboardLayout paints on <main>
|
|
249
|
+
(your sidebar sits a step deeper at darkgray-700)
|
|
250
|
+
\`\`\`
|
|
251
|
+
|
|
252
|
+
Say it and let them object. Offering five near-blacks to pick between is asking someone to
|
|
253
|
+
re-decide something their code already decided.
|
|
254
|
+
|
|
255
|
+
**3f. Fonts** - do not ask at all. Report and move on:
|
|
256
|
+
|
|
257
|
+
\`\`\`
|
|
258
|
+
fonts Figtree for both display and body - the only family declared
|
|
259
|
+
(--font-sans, and next/font Figtree in all three root layouts)
|
|
260
|
+
\`\`\`
|
|
261
|
+
|
|
262
|
+
If a project genuinely declares two families, say which is which and why you paired them that
|
|
263
|
+
way. If it declares one, there is nothing to decide.
|
|
264
|
+
|
|
265
|
+
**A note on colour swatches.** You cannot paint a hex in this conversation, so the token name
|
|
266
|
+
carries the weight - \`ocean-500\` tells someone more than a square would. When they run
|
|
267
|
+
\`npx synthesisui import\` themselves in a terminal, the CLI paints them.
|
|
268
|
+
|
|
269
|
+
Then, and only after all four are answered:
|
|
153
270
|
|
|
154
271
|
\`\`\`
|
|
155
|
-
npx synthesisui import --census _synthesisui/census.json --name "<
|
|
272
|
+
npx synthesisui import --census _synthesisui/census.json --name "<the name>" [--registry <from step 0>]
|
|
156
273
|
\`\`\`
|
|
157
274
|
|
|
158
|
-
**
|
|
159
|
-
and what it will be called before you run it.
|
|
275
|
+
**This is the one real write.** Everything before it is on their disk and costs nothing to redo.
|
|
160
276
|
|
|
161
|
-
|
|
162
|
-
|
|
277
|
+
Pass every answer explicitly - \`--name\`, \`--scope\` if they changed it, and the reading rewritten
|
|
278
|
+
with their primary and their theme. The CLI cannot ask anything when you are the one running it:
|
|
279
|
+
it has no terminal, so its own prompts are skipped by design. **Whatever you did not ask, nobody
|
|
280
|
+
asked.** Skip 3a and the first time they learn where their system came from is when they open
|
|
281
|
+
it.
|
|
163
282
|
|
|
164
|
-
If it refuses, it
|
|
165
|
-
|
|
166
|
-
from the census already on disk; none of them need a re-measure.
|
|
283
|
+
If it refuses, it says which of the three it is: no session, an expired one, or a token issued
|
|
284
|
+
by a different host. All are recoverable from the census on disk; none need a re-measure.
|
|
167
285
|
|
|
168
286
|
### 4. Tell them exactly what they have, and what is theirs to decide
|
|
169
287
|
|
package/package.json
CHANGED