sheleg-design-skill 1.3.4 → 1.6.0
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/CHANGELOG.md +257 -0
- package/README.md +6 -3
- package/bin/cli.js +6 -4
- package/cursor/rules/sheleg-design.mdc +7 -2
- package/package.json +12 -6
- package/plugins/sheleg-design/.claude-plugin/plugin.json +3 -2
- package/plugins/sheleg-design/skills/sheleg-design/AI_PRODUCT_PATTERNS.md +38 -0
- package/plugins/sheleg-design/skills/sheleg-design/MOTION_DOCTRINE.md +262 -0
- package/plugins/sheleg-design/skills/sheleg-design/SKILL.md +151 -4
- package/plugins/sheleg-design/skills/sheleg-design/styles/STYLE_PACK_TEMPLATE.md +59 -3
- package/plugins/sheleg-design/skills/sheleg-design/styles/atrium.md +285 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/briefing-room.md +6 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/editorial-luxury.md +6 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/field-notes.md +397 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/instrument-console.md +6 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/orchard.md +246 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/tokens/atrium.css +177 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/tokens/field-notes.css +291 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/tokens/orchard.css +122 -0
- package/plugins/sheleg-design/skills/sheleg-design/styles/workbench.md +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,263 @@ All notable changes to this project are documented in this file. The format
|
|
|
4
4
|
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); versions
|
|
5
5
|
follow [SemVer](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [1.6.0] - 2026-08-05
|
|
8
|
+
|
|
9
|
+
The harvest of a 41-skill audit of the design skills installed on this machine.
|
|
10
|
+
The finding was narrow and repeated everywhere: the skill specified *what a
|
|
11
|
+
thing looks like* with real rigour and left *how much, how fast, and whether at
|
|
12
|
+
all* to whoever happened to be typing. Three of those four are now numeric, and
|
|
13
|
+
two of them are checked by a script.
|
|
14
|
+
|
|
15
|
+
Landed on top of 1.5.0, which shipped the `field-notes` pack from a concurrent
|
|
16
|
+
run in the same working copy. That pack was already written against the widened
|
|
17
|
+
contract below, so the two runs converged rather than collided — it is the first
|
|
18
|
+
and so far only pack on the thirteen-heading contract.
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **`MOTION_DOCTRINE.md`** — the missing half of the motion story.
|
|
23
|
+
`SHELEG_DESIGN.md` says how motion is built; this says whether to build it.
|
|
24
|
+
Frequency decides first, and it overrules taste: anything a user meets a
|
|
25
|
+
hundred times a day does not animate, ever. Then the easing tree with
|
|
26
|
+
`ease-in` banned in UI and the reason stated, three named curves, a duration
|
|
27
|
+
table with a 300 ms ceiling, springs in Apple's notation, and interruptibility
|
|
28
|
+
as the actual argument for reaching for one. Then the forms that are defects
|
|
29
|
+
rather than preferences — scroll listeners, continuous input held in component
|
|
30
|
+
state, blur and grain on scrolling containers, easing under `scrub`,
|
|
31
|
+
`useEffect` where `useGSAP` belongs, and layout transforms silently erased by
|
|
32
|
+
animated ones. Closes on anti-drift: the tokens are right and the built page is
|
|
33
|
+
generic anyway, which happens at application time and so is named there.
|
|
34
|
+
|
|
35
|
+
- **Three calibration dials** — `DESIGN_VARIANCE`, `MOTION_INTENSITY`,
|
|
36
|
+
`VISUAL_DENSITY`, baseline `7 / 5 / 4`, read off the brief from a table. A
|
|
37
|
+
pack answers *which register*; it never answered *how far*, which is how a
|
|
38
|
+
regulated insurer and a design studio came out of one pack looking alike. The
|
|
39
|
+
dials are deliberately weak where the pack is strong: no dial invents a
|
|
40
|
+
colour, a face or a radius, and `MOTION_INTENSITY` sits **under** the
|
|
41
|
+
frequency table rather than over it.
|
|
42
|
+
|
|
43
|
+
- **A widened pack contract — nine headings to thirteen.** `Components`,
|
|
44
|
+
`Hero`, `Responsive` and `Signature element`. The packs were precise about
|
|
45
|
+
colour and motion and then went quiet exactly where implementations drift:
|
|
46
|
+
per-component states, the opening viewport, collapse behaviour, and the one
|
|
47
|
+
element a page is remembered by. The skeleton also now teaches concentric
|
|
48
|
+
radius arithmetic, a `Not for` line in `Register`, and that an origin nobody
|
|
49
|
+
can re-read is decorative.
|
|
50
|
+
|
|
51
|
+
- **`test/validate_palette.py`** — the colour part is computable, so it is
|
|
52
|
+
computed. Claimed contrast ratios are re-derived from the hex and compared,
|
|
53
|
+
WCAG floors are enforced, and semantic colours are checked for separation in
|
|
54
|
+
OKLab under protanopia, deuteranopia and tritanopia. A pack may sit under the
|
|
55
|
+
floor only if it states out loud that colour is never the only carrier.
|
|
56
|
+
|
|
57
|
+
- **`test/sloplint.py`** — the skill is held to its own bans. The token layers
|
|
58
|
+
and every fenced example are read for `100vh`, scroll listeners, bare
|
|
59
|
+
`ease-in`, transitions on layout properties and pure black fields; and the
|
|
60
|
+
tables the docs promise are asserted by string, so a rule cannot be deleted
|
|
61
|
+
without failing the build. Both scripts ship a `--self-test` that watches every
|
|
62
|
+
check fail against a planted defect — a green from a check nobody has seen say
|
|
63
|
+
no is not evidence.
|
|
64
|
+
|
|
65
|
+
- **A six-layer scene depth model**, a **parameter handoff to the built-in
|
|
66
|
+
`dataviz` skill** instead of duplicating it, and a **`?variant=` procedure**
|
|
67
|
+
for choosing between packs by mounting them on a populated page rather than
|
|
68
|
+
arguing about them.
|
|
69
|
+
|
|
70
|
+
- **The three generated looks that are defaults rather than decisions** —
|
|
71
|
+
recorded so a page that lands on one has to say whether that was a measurement
|
|
72
|
+
or the default talking.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- **The pack section gate is all-or-nothing.** The nine original headings stay
|
|
77
|
+
required; adopt one of the widened four and all four are owed. The six packs
|
|
78
|
+
that shipped before the widening stay valid on nine — backfilling them
|
|
79
|
+
honestly needs re-reading each live reference, and three record a product name
|
|
80
|
+
where an address belongs, so they cannot be re-read at all. Filling those
|
|
81
|
+
sections from the token layer instead would be inventing values with a
|
|
82
|
+
citation attached, which is the failure the pack layer exists to prevent. The
|
|
83
|
+
rule closes the gap either way: no pack can be half-widened, so a new pack
|
|
84
|
+
cannot copy the thirteen-heading skeleton, keep the cheap nine and pass.
|
|
85
|
+
- `npm test` now runs three gates, not one. `npm run selftest` runs the planted
|
|
86
|
+
defects.
|
|
87
|
+
- `package.json` described "three locked style packs" while six shipped.
|
|
88
|
+
|
|
89
|
+
### Not shipped, deliberately
|
|
90
|
+
|
|
91
|
+
- **An eighth `industrial-brutalist` pack.** The register is real and the set
|
|
92
|
+
lacks it, but the only description available carries a synthesised palette,
|
|
93
|
+
not one measured off a production site. Held rather than authored.
|
|
94
|
+
- **A backfill of the six existing packs onto the widened contract.** Same
|
|
95
|
+
reason, from the other direction: three of them cannot be re-read.
|
|
96
|
+
|
|
97
|
+
## [1.5.0] - 2026-08-04
|
|
98
|
+
|
|
99
|
+
The register the skill was missing for its own audience: a developer tool that
|
|
100
|
+
does not live on a dark console. Six packs could dress a landing page, a
|
|
101
|
+
dashboard, a deck and two kinds of consumer health, and none of them had an
|
|
102
|
+
answer for open-source software sold on *being checkable* — which is most of
|
|
103
|
+
the software the people using this skill actually build.
|
|
104
|
+
|
|
105
|
+
### Added
|
|
106
|
+
|
|
107
|
+
- **Seventh style pack: `field-notes`** — extracted from **graphify.com**
|
|
108
|
+
(2026) by reading its live computed styles: 92 declared custom properties,
|
|
109
|
+
the served `@font-face` set, every authored rule pulled out of the CSSOM, and
|
|
110
|
+
a contrast pass over all 38 colour pairs in the system. Warm off-white paper
|
|
111
|
+
with a green cast (`#F8F7F0`), near-black green-cast ink (`#16211B`, 15.4:1),
|
|
112
|
+
one rust accent (`#9A3F28`), and a complete dark twin.
|
|
113
|
+
|
|
114
|
+
Its defining composition is what separates it from every warm pack already
|
|
115
|
+
here: **the page is one continuous sheet ruled by a `1px` hairline.** Ten of
|
|
116
|
+
the reference's sixteen sections are divided by nothing but that line; three
|
|
117
|
+
add a 40% wash. Where `orchard` stacks discrete slabs and `atrium` runs a
|
|
118
|
+
continuous field that changes layout, this one draws a rule and keeps going.
|
|
119
|
+
|
|
120
|
+
The hero is the other half of the idea: not a dark band but a **dawn** —
|
|
121
|
+
eight stops from `#062A22` to the exact paper colour, so the dark has no
|
|
122
|
+
edge. Over it, an inline `feTurbulence` grain at `baseFrequency 0.82`, a
|
|
123
|
+
radial vignette, and an ambient layer that is **notation rather than
|
|
124
|
+
particles**: mathematical glyphs at 14% opacity, one at a time flipping to
|
|
125
|
+
the verified hue.
|
|
126
|
+
|
|
127
|
+
It also carries the two devices most worth stealing. **The numbered eyebrow**
|
|
128
|
+
— `〉 HOW IT WORKS [03/09]`, built from `::before`/`::after` on a `data-n`
|
|
129
|
+
attribute — makes a marketing page into a document with a table of contents.
|
|
130
|
+
And **printer's crop marks** at the four corners: eight 1px gradient arms,
|
|
131
|
+
`inset: 14px`, ink at 30%, desktop only. Both cost nothing and both state the
|
|
132
|
+
thesis that the page is a printed record.
|
|
133
|
+
|
|
134
|
+
Elevation is a **ring** (`0 0 0 1px var(--line)`), not a shadow; radii are a
|
|
135
|
+
proportional ramp off one `--radius`, so a hardcoded `12px` is banned; and
|
|
136
|
+
motion is two eases doing two jobs — `.15s` `cubic-bezier(.4,0,.2,1)` for
|
|
137
|
+
control state, `.5s` `cubic-bezier(.22,1,.36,1)` for scroll entry — with one
|
|
138
|
+
rule on top: **only the verified hue ever animates colour.** The rust never
|
|
139
|
+
moves, because a brand that animates stops reading as an identity and starts
|
|
140
|
+
reading as a status.
|
|
141
|
+
|
|
142
|
+
Four corrections to the reference ship with it, each measured. Its hero
|
|
143
|
+
accent phrase — the single most prominent piece of text on the site — runs
|
|
144
|
+
the light brand over the gradient at **2.29:1** at the top and **1.41:1** in
|
|
145
|
+
the middle; the pack adds `--brand-on-dark` `#CF7A52` (**4.82:1**) and bans
|
|
146
|
+
the other. Its `--verify` green is 3.2:1 on paper and its own
|
|
147
|
+
`--verify-foreground: #fff` is 3.4:1 on the green, so both are fills and the
|
|
148
|
+
labels take `-ink`. It sets `color-scheme` nowhere despite a complete dark
|
|
149
|
+
theme — the same trap that bit `workbench`. And it paints three unrelated
|
|
150
|
+
dark palettes (warm-brown theme, forest bands, navy terminal) plus an app
|
|
151
|
+
layer whose neutrals drift browner than its page layer and whose ring is a
|
|
152
|
+
violet used nowhere else; the pack reconciles all of it to the forest family
|
|
153
|
+
and the page's own neutrals.
|
|
154
|
+
|
|
155
|
+
The pack ships that app layer deliberately, with a routing rule rather than a
|
|
156
|
+
turf war: `workbench` stays the default for neutral product UI, which should
|
|
157
|
+
disappear; `field-notes` is for a product whose console must read as the same
|
|
158
|
+
paper as its site.
|
|
159
|
+
|
|
160
|
+
- **`AI_PRODUCT_PATTERNS.md` gains the provenance pattern** (§4), promoted out
|
|
161
|
+
of the pack because it is the reference's one genuinely transferable
|
|
162
|
+
invention and a direct extension of the file's existing *honest state* rule:
|
|
163
|
+
**label the part, not the whole.** A single confidence number on a mixed
|
|
164
|
+
answer hides exactly the clause the reader needed to check, so the pattern
|
|
165
|
+
attaches a small set of named states — `[EXTRACTED]` · `[INFERRED]` ·
|
|
166
|
+
`[AMBIGUOUS]` — inline to the span each one qualifies, with three tests for
|
|
167
|
+
whether it is honest: every state must be reachable, every label must derive
|
|
168
|
+
from something real, and if you cannot say which words a state covers you do
|
|
169
|
+
not know it well enough to show it. Any pack can implement it on three hues.
|
|
170
|
+
|
|
171
|
+
- **Test scenario T13** — the developer register **and** the fork against
|
|
172
|
+
`instrument-console`, run as two prompts in separate contexts. The pack is
|
|
173
|
+
only worth its row if an agent can tell "this product has a source" from
|
|
174
|
+
"this product has a dial", so a pass requires both branches: one that must
|
|
175
|
+
select `field-notes`, one that must stay on the dark console.
|
|
176
|
+
|
|
177
|
+
### Changed
|
|
178
|
+
|
|
179
|
+
- `SKILL.md`, `README.md`, `bin/cli.js`, `install.sh` and the Cursor rule all
|
|
180
|
+
learn the seventh pack; the CLI's help and the README's file table stop
|
|
181
|
+
saying "six".
|
|
182
|
+
|
|
183
|
+
## [1.4.0] - 2026-08-03
|
|
184
|
+
|
|
185
|
+
Two packs for the warm consumer register, extracted from two production sites
|
|
186
|
+
that solve the same brief in opposite ways — one premium and editorial, one
|
|
187
|
+
friendly and modular. Between them they replace the reflex a generated wellness
|
|
188
|
+
page falls into (a gradient, three cards, a stock photo of someone stretching).
|
|
189
|
+
|
|
190
|
+
### Added
|
|
191
|
+
|
|
192
|
+
- **Fifth style pack: `atrium`** — the warm consumer register, extracted from
|
|
193
|
+
**functionhealth.com** (2026) by reading its live token layer and computed
|
|
194
|
+
styles. The skill could already do dark-technical, editorial, product UI and
|
|
195
|
+
decks; it had no answer for *premium consumer health* — the page that has to
|
|
196
|
+
land a serious clinical claim without a sterile surface anywhere on it.
|
|
197
|
+
|
|
198
|
+
What it encodes: **one continuous cream field with no dark bands** (sections
|
|
199
|
+
are separated by a 48→99px rhythm and a change of layout, never by flipping
|
|
200
|
+
the background — the reflex that makes generated pages read as a stack of
|
|
201
|
+
slabs); a single terracotta accent `#B05A36`; a serif that ships **one
|
|
202
|
+
weight, 300**, set at `line-height: 0.9`, whose entire emphasis vocabulary is
|
|
203
|
+
*one italic accent phrase* per heading; a sans with only 300 and 600 in it;
|
|
204
|
+
mono reserved for exactly one component; a fully fluid `clamp()` scale keyed
|
|
205
|
+
to a single 23.5rem→90rem band, so the page resizes as one object; hairline
|
|
206
|
+
and cream-on-cream steps instead of shadows, with three shadows that each
|
|
207
|
+
have one job; and `999px` on everything clickable.
|
|
208
|
+
|
|
209
|
+
Its signature motif is the **fluted-glass hero**: a WebGL shader refracting
|
|
210
|
+
photography through reeded-glass ribs, shipped with the real numbers (82.8
|
|
211
|
+
ribs at `0.36rad`, amplitude `0.0255`, feather `0.63`, a 7.2s reveal cycle,
|
|
212
|
+
the ink scrim at 70%) over a still-image fallback. Its lifecycle is the pack's
|
|
213
|
+
most useful lesson: context-lost, tab-hidden, reduced-motion and no-WebGL are
|
|
214
|
+
four branches that ship in the same commit as the effect.
|
|
215
|
+
|
|
216
|
+
It also promotes something the reference does that most sites do not: **every
|
|
217
|
+
autonomous motion carries a visible `PAUSE MOTION` control**, and the pack
|
|
218
|
+
bans shipping one without it — `prefers-reduced-motion` alone does not
|
|
219
|
+
discharge the obligation.
|
|
220
|
+
|
|
221
|
+
Three measured contrast traps are carried as Gotchas rather than left for an
|
|
222
|
+
audit: the accent is AA on the field (4.6:1) but **fails on the cream surface**
|
|
223
|
+
(4.2:1); `--good`/`--info` are fills at 2.1:1 and 3.4:1 and may never be text;
|
|
224
|
+
and the hairline is 1.6:1 — decorative strength, not affordance strength, so
|
|
225
|
+
controls need `--line-strong`, `--line-ink` or `--accent` instead.
|
|
226
|
+
- **Sixth style pack: `orchard`** — the same buyer, the opposite voice,
|
|
227
|
+
extracted from **gutgutgoose.com** (2026). Where `atrium` is one continuous
|
|
228
|
+
field, `orchard` is **a stack of rounded slabs**: every section is a card with
|
|
229
|
+
its own fill (oat, sage, cacao), no two adjacent slabs repeat, and the field
|
|
230
|
+
shows around all of them. Its whole layout rhythm is four numbers — `64px 24px`
|
|
231
|
+
slab padding, `44px` between blocks, `55px` between slabs, `36px` card padding.
|
|
232
|
+
|
|
233
|
+
Three colours with fixed jobs — oat is the paper, sage is the brand, candy
|
|
234
|
+
orange is the verb — and the pack's most useful rule is that **two of them are
|
|
235
|
+
not text colours**. A rounded geometric display at Medium carries all
|
|
236
|
+
hierarchy, so body weight never goes above 500; the price is deliberately set
|
|
237
|
+
in the body face, because a rounded display numeral reads as branding and a
|
|
238
|
+
price has to read as a fact.
|
|
239
|
+
|
|
240
|
+
Its signature material is **light, not shadow**: the "candy pill" is a flat
|
|
241
|
+
fill wearing two inset white hairlines (`.8` top, `.35` bottom) plus an
|
|
242
|
+
ambient glow **in the button's own hue** — the only real drop shadow in the
|
|
243
|
+
system. Its one cinematic move is a **word-by-word scrubbed headline** (opacity
|
|
244
|
+
only, ~12% of hero scroll per word) beside a sticky visual column, and that is
|
|
245
|
+
the entire motion budget.
|
|
246
|
+
|
|
247
|
+
The reference is strong on composition and weak on contrast, so the pack
|
|
248
|
+
carries the three measured failures with fixes from inside its own palette:
|
|
249
|
+
the CTA label is **2.8:1** (white on orange) and must use the cacao ink for
|
|
250
|
+
**5.6:1**; body copy on the sage slab is **3.4:1** — and oat on sage is
|
|
251
|
+
**2.96:1**, under even the large-text floor — so small text moves to
|
|
252
|
+
`--primary-deep` at **4.9:1**; and the 60% ink is **4.1:1** on oat, a caption
|
|
253
|
+
colour only. It also ships the `prefers-reduced-motion` branch the reference
|
|
254
|
+
has nowhere on the site.
|
|
255
|
+
- `scenarios.md` gains T11 and T12 for the two consumer registers.
|
|
256
|
+
|
|
257
|
+
### Changed
|
|
258
|
+
|
|
259
|
+
- README, `SKILL.md`, `bin/cli.js`, `install.sh` and the standalone Cursor rule
|
|
260
|
+
route and ship both new packs; the stale "three style packs" counts in the
|
|
261
|
+
README are corrected to six, and the Cursor rule — which had listed only three
|
|
262
|
+
packs and never gained `briefing-room` — now names all six.
|
|
263
|
+
|
|
7
264
|
## [1.3.4] - 2026-07-30
|
|
8
265
|
|
|
9
266
|
### Added
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ nothing. Ask it for a dashboard and you get a different flavor of the same
|
|
|
10
10
|
problem — invented colors, six accent hues, dark mode retrofitted later.
|
|
11
11
|
|
|
12
12
|
This skill is the taste layer. It gives a coding agent **one motion
|
|
13
|
-
methodology** for cinematic, scroll-driven pages and **
|
|
13
|
+
methodology** for cinematic, scroll-driven pages and **six locked style
|
|
14
14
|
packs** with ready-made design tokens, so what it builds reads as one system
|
|
15
15
|
instead of a pile of effects.
|
|
16
16
|
|
|
@@ -46,6 +46,9 @@ voice is the timeline and slides therefore never animate).
|
|
|
46
46
|
| `editorial-luxury` | warm cream + espresso ink, sage accent, Fraunces/Newsreader, dossier motifs | editorial / research / premium B2B |
|
|
47
47
|
| `workbench` | neutral grays, borders as elevation, one blue accent, mono data, light + dark twins | dashboards, admin, internal & dev tools |
|
|
48
48
|
| `briefing-room` | dark 16:9 deck: one blue hue top to bottom (OKLCH), mono slide furniture, 1-bit dithered art, claims as titles | investor & board decks, technical briefings, talks published as a page |
|
|
49
|
+
| `atrium` | warm cream daylight field with no dark bands, one terracotta accent, light serif with italic asides, fluted-glass hero over photography | consumer health, longevity & diagnostics, wellness, premium care, high-trust DTC |
|
|
50
|
+
| `orchard` | warm oat field of rounded slabs, sage brand + one candy-orange action, rounded geometric display, soft-3D pills built from inset light | friendly consumer biotech, DTC wellness, testing kits & supplements |
|
|
51
|
+
| `field-notes` | warm green-cast paper ruled by hairlines, one rust accent, a hero that dissolves into the page instead of ending, numbered mono eyebrows, crop marks, colour that encodes how a claim is known | open-source & developer tools sold on auditability — code intelligence, provenance, evals, agent memory |
|
|
49
52
|
|
|
50
53
|
Each pack locks palette, type, texture, motion tokens, signature motifs and
|
|
51
54
|
bans — and ships a `tokens/<pack>.css` to copy verbatim, so the agent never
|
|
@@ -114,7 +117,7 @@ skills.
|
|
|
114
117
|
| `SHELEG_DESIGN.md` | The full reference: architecture, layer-by-layer mechanics with code, the exact morph math, the DOM↔WebGL projection bridge, a build-from-scratch recipe, and why each piece works |
|
|
115
118
|
| `FIGMA_BRIDGE.md` | The design↔code contract: how a pack's tokens map onto Figma variable collections and modes, how to implement a design without importing raw values, and what cannot cross the border |
|
|
116
119
|
| `AI_PRODUCT_PATTERNS.md` | The surfaces a model drives: the five states of a call, streaming instead of spinners, latency, provenance and uncertainty, agent confirmations, and the bans that keep it honest |
|
|
117
|
-
| `styles/*.md` | The
|
|
120
|
+
| `styles/*.md` | The seven style packs — palette, type, texture, motion tokens, motifs, bans, and the traps each one carries |
|
|
118
121
|
| `styles/tokens/*.css` | The ready-made token layer per pack, copied verbatim instead of transcribed (workbench ships a light `:root` plus a `data-theme="dark"` twin) |
|
|
119
122
|
| `styles/STYLE_PACK_TEMPLATE.md` | The pack contract as a skeleton, so a new style is authored against the same headings rather than improvised |
|
|
120
123
|
|
|
@@ -211,7 +214,7 @@ and the [Code of Conduct](./CODE_OF_CONDUCT.md). To report a vulnerability, see
|
|
|
211
214
|
|
|
212
215
|
Built by ssheleg — [sshlg.me](https://sshlg.me)
|
|
213
216
|
|
|
214
|
-
- X / Twitter — [@
|
|
217
|
+
- X / Twitter — [@sshlg93](https://x.com/sshlg93)
|
|
215
218
|
- Telegram — [@sshlg](https://t.me/sshlg)
|
|
216
219
|
|
|
217
220
|
Part of the [ssheleg skill family](https://github.com/ssheleg/sshlg-skills):
|
package/bin/cli.js
CHANGED
|
@@ -115,10 +115,12 @@ ${c("bold", "What it installs")}
|
|
|
115
115
|
SHELEG_DESIGN.md the full reference (architecture, recipes, why it works)
|
|
116
116
|
FIGMA_BRIDGE.md the design↔code contract (tokens ⇄ Figma variables)
|
|
117
117
|
AI_PRODUCT_PATTERNS.md chat / agent / streaming surfaces (honest state)
|
|
118
|
-
styles/
|
|
118
|
+
styles/ seven style packs — instrument-console (dark console),
|
|
119
119
|
editorial-luxury (warm editorial), workbench (light/dark
|
|
120
|
-
product UI), briefing-room (dark 16:9 presentation deck)
|
|
121
|
-
|
|
120
|
+
product UI), briefing-room (dark 16:9 presentation deck),
|
|
121
|
+
atrium (warm cream consumer health), orchard (friendly
|
|
122
|
+
consumer biotech), field-notes (warm paper dev tools) —
|
|
123
|
+
plus a ready-made token CSS per pack and
|
|
122
124
|
STYLE_PACK_TEMPLATE.md for authoring more
|
|
123
125
|
`);
|
|
124
126
|
}
|
|
@@ -192,7 +194,7 @@ function main() {
|
|
|
192
194
|
`\n${c("green", "✓")} ${c("bold", "SHELEG Design")} installed to ${c("blue", rel + "/")}\n` +
|
|
193
195
|
` ${c("dim", "SKILL.md")} the agent skill\n` +
|
|
194
196
|
` ${c("dim", "SHELEG_DESIGN.md")} the full reference\n` +
|
|
195
|
-
` ${c("dim", "styles/")} style packs + token CSS (instrument-console / editorial-luxury / workbench / briefing-room)\n\n` +
|
|
197
|
+
` ${c("dim", "styles/")} style packs + token CSS (instrument-console / editorial-luxury / workbench / briefing-room / atrium / orchard / field-notes)\n\n` +
|
|
196
198
|
`Your Cursor / Claude agent can now discover the skill and build\n` +
|
|
197
199
|
`cinematic, scroll-driven pages — or style product UI (dashboards,\n` +
|
|
198
200
|
`admin, internal tools) from the workbench pack — on its principles.\n\n` +
|
|
@@ -12,8 +12,13 @@ not from many animations. If the project has the full skill installed
|
|
|
12
12
|
and the chosen style pack in `styles/` first (instrument-console — dark
|
|
13
13
|
console; editorial-luxury — warm editorial; workbench — quiet light/dark
|
|
14
14
|
product UI for dashboards and tools, used standalone without the cinematic
|
|
15
|
-
motion layer
|
|
16
|
-
|
|
15
|
+
motion layer; briefing-room — dark 16:9 presentation deck, standalone, slides
|
|
16
|
+
never animate; atrium — warm cream consumer-health field, one terracotta
|
|
17
|
+
accent, fluted-glass hero; orchard — friendly consumer biotech, oat slabs,
|
|
18
|
+
sage brand and one candy-orange action; field-notes — open-source developer
|
|
19
|
+
tools on warm green-cast paper ruled by hairlines, one rust accent, a hero
|
|
20
|
+
that dissolves into the page, and colour that encodes how a claim is known);
|
|
21
|
+
otherwise follow the contract below (self-contained on purpose).
|
|
17
22
|
|
|
18
23
|
## Five principles, in order
|
|
19
24
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sheleg-design-skill",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Design taste as an installable agent skill. Cinematic scroll-driven landing pages built on one scroll clock and layered degrade-to-calm motion,
|
|
3
|
+
"version": "1.6.0",
|
|
4
|
+
"description": "Design taste as an installable agent skill. Cinematic scroll-driven landing pages built on one scroll clock and layered degrade-to-calm motion, a motion doctrine that decides whether to animate before it decides how, three calibration dials, and seven locked style packs with ready-made design tokens — instrument-console, editorial-luxury, workbench, briefing-room, atrium, orchard and field-notes. Colour and slop gates run as scripts, not opinions. Works with Cursor, Claude Code and any agent that reads a SKILL.md.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"sheleg-design-skill": "bin/cli.js"
|
|
7
7
|
},
|
|
@@ -18,9 +18,12 @@
|
|
|
18
18
|
"node": ">=16"
|
|
19
19
|
},
|
|
20
20
|
"scripts": {
|
|
21
|
-
"test": "python3 test/validate.py && node --check bin/cli.js",
|
|
22
|
-
"validate": "python3 test/validate.py",
|
|
23
|
-
"smoke": "node bin/cli.js --help"
|
|
21
|
+
"test": "python3 test/validate.py && python3 test/validate_palette.py && python3 test/sloplint.py && node --check bin/cli.js",
|
|
22
|
+
"validate": "python3 test/validate.py && python3 test/validate_palette.py && python3 test/sloplint.py",
|
|
23
|
+
"smoke": "node bin/cli.js --help",
|
|
24
|
+
"palette": "python3 test/validate_palette.py",
|
|
25
|
+
"sloplint": "python3 test/sloplint.py",
|
|
26
|
+
"selftest": "python3 test/validate_palette.py --self-test && python3 test/sloplint.py --self-test"
|
|
24
27
|
},
|
|
25
28
|
"keywords": [
|
|
26
29
|
"skill",
|
|
@@ -39,7 +42,10 @@
|
|
|
39
42
|
"landing-page",
|
|
40
43
|
"sheleg"
|
|
41
44
|
],
|
|
42
|
-
"author":
|
|
45
|
+
"author": {
|
|
46
|
+
"name": "ssheleg",
|
|
47
|
+
"url": "https://x.com/sshlg93"
|
|
48
|
+
},
|
|
43
49
|
"license": "MIT",
|
|
44
50
|
"repository": {
|
|
45
51
|
"type": "git",
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
"name": "sheleg-design",
|
|
3
3
|
"displayName": "SHELEG Design",
|
|
4
4
|
"description": "SHELEG Design methodology: cinematic scroll-driven landing pages (single scroll clock, layered degrade-to-calm motion, WebGL particle formations) plus pluggable visual style packs — instrument-console (dark console), editorial-luxury (warm editorial), workbench (light/dark product UI for dashboards and tools). Ships the sheleg-design skill, the architecture reference, style packs with ready-made token CSS, and the /sheleg-design command.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.6.0",
|
|
6
6
|
"author": {
|
|
7
|
-
"name": "ssheleg"
|
|
7
|
+
"name": "ssheleg",
|
|
8
|
+
"url": "https://x.com/sshlg93"
|
|
8
9
|
},
|
|
9
10
|
"homepage": "https://github.com/ssheleg/sheleg-design-skill",
|
|
10
11
|
"repository": "https://github.com/ssheleg/sheleg-design-skill",
|
|
@@ -78,6 +78,44 @@ indeterminate indicator plus elapsed time beats an invented estimate.
|
|
|
78
78
|
drafted reply, a synthesized summary of someone's words, a generated image of
|
|
79
79
|
a real place. Not everywhere: labeling every pixel is noise.
|
|
80
80
|
|
|
81
|
+
### The provenance tag — label the part, not the whole
|
|
82
|
+
|
|
83
|
+
A single confidence number on a whole answer is the wrong unit. Answers are
|
|
84
|
+
usually mixed: one clause was read straight out of a source, the next was
|
|
85
|
+
derived, a third is the model's guess. Scoring the assembly hides exactly the
|
|
86
|
+
part the reader needed to check.
|
|
87
|
+
|
|
88
|
+
The working pattern is a **small set of named states, attached inline to the
|
|
89
|
+
span each one qualifies**. Three is enough, and the names are verbs about
|
|
90
|
+
knowing rather than adjectives about certainty:
|
|
91
|
+
|
|
92
|
+
| State | Means | Colour role |
|
|
93
|
+
|---|---|---|
|
|
94
|
+
| `[EXTRACTED]` | lifted verbatim from a source the user can open | the *verified* hue |
|
|
95
|
+
| `[INFERRED]` | derived by a step the system can name | the *brand* hue — the system's own voice |
|
|
96
|
+
| `[AMBIGUOUS]` | the evidence supports more than one reading | the *unverified* hue |
|
|
97
|
+
|
|
98
|
+
Shape, so it annotates instead of shouting: monospace at ~10px, positive
|
|
99
|
+
tracking, a bracketed label, a transparent fill and a 1px border of the state's
|
|
100
|
+
own colour at ~25% alpha, on a small radius. It sits **beside the claim**, never
|
|
101
|
+
collected into a legend at the bottom — a legend makes the reader hold a mapping
|
|
102
|
+
in their head, which is the cost the tag exists to remove.
|
|
103
|
+
|
|
104
|
+
Three rules that decide whether it is honest:
|
|
105
|
+
|
|
106
|
+
- **Every state must be reachable.** If nothing is ever `[AMBIGUOUS]`, the
|
|
107
|
+
vocabulary is decoration and the reader learns to ignore all of it.
|
|
108
|
+
- **The label must be derivable from something real** — a retrieval hit, a
|
|
109
|
+
traversal path, a rule that fired. A tag assigned by a second model call
|
|
110
|
+
guessing at the first one is confidence theater with better typography.
|
|
111
|
+
- **Tag the span, not the message.** If you cannot say which words a state
|
|
112
|
+
applies to, you do not yet know it well enough to display it.
|
|
113
|
+
|
|
114
|
+
Any pack can implement this: it needs three hues, each with a text-safe ink and
|
|
115
|
+
a wash. `field-notes` ships that set (`--verify` / `--witness` / `--brand`, each
|
|
116
|
+
with `-ink` and `-soft`) because it was extracted from a product whose entire
|
|
117
|
+
argument is provenance; `workbench` can carry it on its own semantic colours.
|
|
118
|
+
|
|
81
119
|
## 5. Agent actions: the confirm is the design
|
|
82
120
|
|
|
83
121
|
The moment a model stops answering and starts *acting*, the interface's job
|