synthesisui 0.16.73 → 0.16.74

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.
@@ -134,6 +134,22 @@ Open the project and answer the questions below. Then add a \`reading\` object t
134
134
  "roles": { "canvas": "#050505", "foreground": "#f9fafb", "primary": "#4A90E2" },
135
135
  "fonts": { "display": "Inter", "body": "Inter" },
136
136
  "concept": "one paragraph on what this product is",
137
+ "rules": [
138
+ {
139
+ "text": "A RootWrapper is what makes the app-shell components position correctly - never render a Sidebar or Topbar outside one",
140
+ "applies": ["RootWrapper", "Sidebar"],
141
+ "kind": "implementation",
142
+ "files": 3,
143
+ "evidence": "all three app shells wrap them; none renders them loose"
144
+ },
145
+ {
146
+ "text": "MetricCard is only used inside a grid, never on its own",
147
+ "applies": ["MetricCard"],
148
+ "kind": "limit",
149
+ "files": 1,
150
+ "evidence": "one dashboard page; may just be how it happened"
151
+ }
152
+ ],
137
153
  "components": {
138
154
  "MetricCard": {
139
155
  "parts": [
@@ -175,6 +191,49 @@ about which one is the page. Read a screen and see.
175
191
  **\`fonts\` and \`concept\`** - the voice, and one paragraph on what this product is. The concept
176
192
  feeds every recommendation downstream, so a real one beats a generic one by a wide margin.
177
193
 
194
+ **\`rules\` - how this company BUILDS, which is half of what they actually made.**
195
+
196
+ A design system that arrives as tokens and recipes is only the vocabulary. The other half is the
197
+ grammar: that a wrapper exists so the thing inside it works, that state arrives through a
198
+ particular hook, that a card is never used loose. That is how the developer already thinks, and
199
+ writing it down is what makes it survive them.
200
+
201
+ Two dimensions, and they are independent:
202
+
203
+ \`\`\`
204
+ applies [] the whole system
205
+ [a] that component
206
+ [a, b] a RELATION - two components that only work together
207
+
208
+ kind limit a boundary, which the doctor can measure
209
+ implementation how it is built, which no linter checks and an agent
210
+ must be told
211
+ \`\`\`
212
+
213
+ The relation is the valuable one. \`[RootWrapper, Sidebar]\` says something neither name says
214
+ alone, and it is exactly what an agent needs in order not to assemble it wrongly.
215
+
216
+ **Report \`files\` honestly - it decides whether the rule governs.** Three or more files is a
217
+ habit and the rule arrives active; one file is a coincidence and it arrives as a candidate,
218
+ inactive, waiting for the person to promote it. You do not make that call; you report the
219
+ evidence and a threshold makes it. So a pattern you saw once should say \`"files": 1\` even when
220
+ you are confident - being wrong about a law is worse than being slow about one.
221
+
222
+ **Write \`evidence\` as what you actually saw.** "All three app shells wrap them; none renders
223
+ them loose" lets somebody disagree with a fact. "Best practice" lets them disagree only with
224
+ you.
225
+
226
+ Things worth looking for, none of them guessable from tokens:
227
+
228
+ - a wrapper or provider whose whole purpose is to make something else work
229
+ - an environment law - "this is Next, so the state comes through this hook" - which travels
230
+ with the system and only applies where that environment is
231
+ - a component that is never used alone, or never used outside something
232
+ - an axis that is always passed the same way in one place and never in another
233
+
234
+ If you cannot say where a rule came from, do not send it. An invented law is worse than a
235
+ missing one, because it will be obeyed.
236
+
178
237
  **\`components[Name].parts\` - what each component is MADE OF.** This is the field that decides
179
238
  whether a component previews as itself or as a grey box with a sentence in it, and only you can
180
239
  fill it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synthesisui",
3
- "version": "0.16.73",
3
+ "version": "0.16.74",
4
4
  "description": "Bring SynthesisUI design systems into any project - tokens, typed components, whole pages and an agent-ready CLAUDE.md manifest.",
5
5
  "type": "module",
6
6
  "bin": {