Skip to content

Commit 33bd26a

Browse files
committed
feat(saman-skills): lock the pastel palette, add style and topic banks
Adds the supporting colour system, calibrates the craft gate against shipped work, and gives the factory two idea banks it was missing. PALETTE — her three locked colours are untouched. On top: - one BRIGHT (#F2506A coral, #B0243C deep) that does all the pointing, in exactly three places: node rings, chip text, the closing figure - five SOFT FILLS for card backgrounds (peach, cream, rose, orchid, and Material Blue 50 — which belongs because her #90CAF8 is Material Blue 200, one digit from #90CAF9, so the pale sky is literally her own colour's family) - roles are not swappable: bright never fills, a pastel never carries text, blue never leaves the spine. That separation is what keeps ten named values reading as five colours. Every fill clears 6:1 for body text and every chip pairing clears 4.5:1. The bright blues from the source palettes (#30AFFF at 2.20, #2196F3 at 2.85 on her ground) are documented as fill-only rather than quietly used as text. Geometry softened throughout: card radius 14 to 20, panel 18 to 24. CRAFT GATE recalibrated against a study of 32 shipped designs — 1-2 movers with the chrome still, 180-320 words, 5-7 colour families, sub-8s loop, and a frame one that is never blank. Her system already lands in those bands; the new reference exists to catch drift, not to change the laws. NEW BANKS: - style-kit.md: 4 headers, 5 cards, 3 nodes, 3 chips, 4 closers, with a mixing table. Ten frames times these variants is why forty sheets can share one system without looking like one sheet forty times. - topic-ideas.md: eight content lanes, ~40 seeded topics, and the method (number + verb + outcome, then the Monday, cost and swap tests) for when the bank runs dry. Both templates repainted and re-verified: 10/10 grey gate, autofix clean, 2160x2700 static, GIF and MP4. Clean-room extract of the rebuilt zip runs the whole chain with no other skill present. The avatar is still the SA monogram placeholder, now ringed in the new bright. It needs her real photo as a file to replace it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0187zcyEaMFy8EeQnT1MPYpY
1 parent 1278517 commit 33bd26a

22 files changed

Lines changed: 548 additions & 44 deletions

‎saman-skills/INSTALL.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ python -m playwright install chromium
3737
pip install imageio-ffmpeg # optional: adds the MP4. GIF works without it.
3838
```
3939

40-
## 3. Her avatar
40+
## 3. Her avatar ← needs her photo
4141

4242
The bundle ships an "SA" monogram placeholder. To use her real photo, replace this file:
4343

@@ -106,10 +106,10 @@ python3 ~/.claude/skills/saman-design/scripts/build.py sheet.html motion # G
106106
## What is in the box
107107

108108
```
109-
saman-brand/ SKILL.md · brand-kit.md · spine-frames.md · design-note-format.md
110-
assets/ (Inter x5, avatar)
109+
saman-brand/ SKILL.md · brand-kit.md · spine-frames.md · style-kit.md
110+
design-note-format.md · assets/ (Inter x5, avatar)
111111
saman-design/ SKILL.md · build.py · greygate.py · 2 templates + specs for 8 more
112-
voice.md · post-formats.md · shipped-log.md · assets/
113-
saman-craft/ SKILL.md · autofix.py · win-matrix.md · design-laws.md · fix-recipes.md
114-
assets/
112+
topic-ideas.md · voice.md · post-formats.md · shipped-log.md · assets/
113+
saman-craft/ SKILL.md · autofix.py · win-matrix.md · design-laws.md
114+
fix-recipes.md · craft-benchmarks.md · assets/
115115
```
846 Bytes
Binary file not shown.
-278 Bytes
Binary file not shown.
128 Bytes
Binary file not shown.

‎saman-skills/saman-brand.zip‎

875 Bytes
Binary file not shown.

‎saman-skills/saman-brand/SKILL.md‎

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,49 @@ is wrong, not the law.
1515

1616
---
1717

18-
## 1. The four tokens
18+
## 1. The palette
1919

20-
Everything on every sheet is made of these four things. There is no fifth colour and no
21-
second typeface.
20+
Three locked colours, one bright, five soft fills. Every colour has exactly one job, and the
21+
jobs are not swappable — that separation is what keeps ten named values reading as a simple
22+
sheet instead of a busy one.
2223

23-
| Token | Hex | What it is for |
24+
**LOCKED — these never change.**
25+
26+
| Token | Hex | Job |
2427
|---|---|---|
2528
| **Sky** | `#EBF6FF` | the ground. The canvas, the page, the air between things. |
26-
| **Blue** | `#90CAF8` | **structure only.** The spine, rules, borders, node rings, arrows. |
27-
| **Ink** | `#051D2F` | type, and the one dark element per sheet. |
28-
| **Paper** | `#FFFFFF` | panel fills that sit on Sky. Not a brand colour — a surface. |
29+
| **Blue** | `#90CAF8` | **the spine, and nothing else.** Structure, never meaning. |
30+
| **Ink** | `#051D2F` | type, the pill, the closer. |
31+
| **Paper** | `#FFFFFF` | a neutral surface when content needs to stay plain. Not a brand colour. |
32+
33+
**BRIGHT — the one saturated colour on the sheet. It points.**
34+
35+
| Token | Hex | Job |
36+
|---|---|---|
37+
| **Bright** | `#F2506A` | node rings, the closing figure. The only thing that grabs. |
38+
| **Bright-deep** | `#B0243C` | chip text and small emphasis, where `Bright` would be too light to read. |
39+
40+
**SOFT FILLS — the pastel family. Card backgrounds only.**
41+
42+
| Token | Hex | |
43+
|---|---|---|
44+
| `--p1` | `#FFE4DE` | peach |
45+
| `--p2` | `#FFF2D6` | cream |
46+
| `--p3` | `#FFE9F3` | rose |
47+
| `--p4` | `#F4EBFF` | orchid |
48+
| `--p5` | `#E3F2FD` | pale sky — Material Blue 50, her own blue's family |
49+
50+
Cards rotate through the fills down a sheet. They are pale on purpose: at this value they
51+
read as **one family**, so the sheet counts as five colours, not ten. Saturate one and the
52+
count breaks.
53+
54+
**The three rules that hold it together:**
55+
1. Bright never fills a card.
56+
2. A pastel never carries text and never touches the spine.
57+
3. Blue never leaves the spine.
58+
59+
*(Her blue `#90CAF8` is Material Blue 200 — one digit from `#90CAF9`. That is why the Blue-50
60+
pale sky belongs in the fill set: it is literally her own colour's family.)*
2961

3062
Derived tints. Use these named values, never eyeball a new one:
3163

@@ -104,6 +136,9 @@ The 7 Systems That Save Founders [ 10 HOURS ] A Week
104136
Pill spec: `--ink` background, `--sky` text, radius 999px, padding `.08em .42em`, same font
105137
size and weight as the headline around it, letter-spacing `-0.01em`.
106138

139+
**The pill is Ink, never Bright.** Two things competing to be the loudest thing on a sheet
140+
means neither wins. The pill owns the headline; Bright owns the body.
141+
107142
**The pill is not a highlighter.** It does not appear in body text, in card titles, or twice.
108143
If a second phrase needs emphasis, it gets `--ink` weight 700 and no pill.
109144

@@ -115,10 +150,11 @@ Measured by area of the finished canvas:
115150

116151
- **60% Sky** — the ground. Air is the brand. A cramped Saman sheet is off-brand even if every
117152
colour is right.
118-
- **30% Paper** — the panels the content actually lives in.
119-
- **10% Ink** — type, the pill, the footer, numbered nodes.
120-
- **Blue is not in the ratio.** It is structure: strokes, rings, hairlines. If Blue is filling
121-
a large area, you have used it as a colour instead of as a line. Fix it.
153+
- **30% fills** — the pastel cards (or Paper, when the content wants to stay neutral).
154+
- **10% Ink** — type, the pill, the footer, the closer.
155+
- **Blue and Bright are not in the ratio.** Blue is structure: strokes, rings, hairlines.
156+
Bright is a pointer: three small things and no more. If either is filling a large area, it
157+
has stopped doing its job. Fix it.
122158

123159
Practical floor: at least 90px of clear Sky across the top of the content area, and at least
124160
40px of Sky gutter on the left and right of every card.
@@ -167,7 +203,7 @@ second family, letter-spacing on body text, all-caps on anything longer than fou
167203

168204
```
169205
Spacing scale (px): 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64 (nothing in between)
170-
Radius: card 14 · panel 18 · node 999 · pill 999
206+
Radius: card 20 · panel 24 · node 999 · pill 999 (soft — no hard corners)
171207
Stroke: hairline 1 (--blue-pale) · spine 4 (--blue) · node ring 3 (--blue)
172208
Canvas margins: 56 left/right · 48 top · footer pinned at y=1306
173209
```
@@ -251,7 +287,10 @@ The full format and worked examples: **`references/design-note-format.md`**.
251287
These exist because each one is a specific way a sheet stops being hers.
252288

253289
**Brand**
254-
1. No colour outside the four tokens and their named tints. No red, no green, no gradient.
290+
1. No colour outside the named set — three locked, one bright, five fills, and their tints.
291+
No gradient, ever.
292+
1a. No swapped roles. Bright never fills a card, a pastel never carries text, Blue never
293+
leaves the spine.
255294
2. No second typeface. Inter does all of it.
256295
3. Blue never carries text, and never fills a large area.
257296
4. Never two Ink Pills. Never zero.
@@ -286,5 +325,6 @@ These exist because each one is a specific way a sheet stops being hers.
286325
- Building a sheet → `/saman-design` (it reads this file first, then the frame bank)
287326
- Scoring or fixing a sheet → `/saman-craft` (it enforces sections 2, 4, 6, 7, 11)
288327
- Picking a layout → `references/spine-frames.md`
328+
- Picking how the parts look → `references/style-kit.md`
289329
- Writing the note she approves → `references/design-note-format.md`
290330
- Every token, in copy-paste CSS → `references/brand-kit.md`
-2.77 KB
Loading

‎saman-skills/saman-brand/references/brand-kit.md‎

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,26 @@ needs a colour that is not here, the sheet is wrong.
2727
--ink-70: #40566A;
2828
--ink-45: #7D8D9C;
2929

30+
/* ---- BRIGHT: the one saturated colour. It points, nothing else does ---- */
31+
--bright: #F2506A; /* node rings, the closing figure */
32+
--bright-deep: #B0243C; /* chip text, small emphasis (4.5:1 on --p1) */
33+
34+
/* ---- SOFT FILLS: the pastel family. Card backgrounds only ---- */
35+
--p1: #FFE4DE; /* peach */
36+
--p2: #FFF2D6; /* cream */
37+
--p3: #FFE9F3; /* rose */
38+
--p4: #F4EBFF; /* orchid */
39+
--p5: #E3F2FD; /* pale sky (Material Blue 50 — her blue's own family) */
40+
3041
/* ---- the only shadow ---- */
3142
--shadow: 0 2px 10px rgba(5,29,47,.07);
3243

3344
/* ---- space scale ---- */
3445
--s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px;
3546
--s5: 24px; --s6: 32px; --s7: 48px; --s8: 64px;
3647

37-
/* ---- radius ---- */
38-
--r-card: 14px; --r-panel: 18px; --r-round: 999px;
48+
/* ---- radius: soft. Nothing on her sheets has a hard corner ---- */
49+
--r-card: 20px; --r-panel: 24px; --r-round: 999px;
3950

4051
/* ---- stroke ---- */
4152
--w-hair: 1px; --w-ring: 3px; --w-spine: 4px;
@@ -82,6 +93,27 @@ loads and ship a sheet set in the fallback.
8293
Headline drops to 52px only when the line would otherwise wrap to three lines. Below 52px,
8394
cut words instead.
8495

96+
## The palette in one picture
97+
98+
```
99+
LOCKED Sky #EBF6FF Blue #90CAF8 Ink #051D2F
100+
the ground the spine the type
101+
102+
BRIGHT #F2506A #B0243C
103+
points rings, figure chip text
104+
105+
SOFT FILLS #FFE4DE #FFF2D6 #FFE9F3 #F4EBFF #E3F2FD
106+
card backgrounds only, never text, never the spine
107+
```
108+
109+
**Counting colours.** The craft benchmark for this kind of sheet is 5–7 colours. Hers reads as
110+
five: ground, type, spine, bright, and the pastel family — because the five fills sit at the
111+
same value and register as one family, not five decisions. That only holds while they stay
112+
pale. A saturated fill breaks the count and the sheet starts to look busy.
113+
114+
**Roles are not swappable.** Bright never fills a card. A pastel never carries text. Blue never
115+
leaves the spine. That separation is what keeps ten named colours reading as five.
116+
85117
## The Ink Pill
86118

87119
```css
@@ -120,10 +152,25 @@ All nodes on one sheet are the same size. Always.
120152

121153
## Cards and panels
122154

155+
Cards rotate through the pastel fills down a sheet. Use `--paper` when the content needs to
156+
stay neutral (dense tables, a matrix) and the pastels when the sheet wants warmth.
157+
123158
```css
124-
.card{background:var(--paper); border-radius:var(--r-card);
125-
border:var(--w-hair) solid var(--blue-pale);
159+
.card{background:var(--p1); border-radius:var(--r-card);
160+
border:var(--w-hair) solid rgba(5,29,47,.07);
126161
box-shadow:var(--shadow); padding:var(--s5)}
162+
.rail > .card:nth-of-type(1){background:var(--p1)}
163+
.rail > .card:nth-of-type(2){background:var(--p2)}
164+
.rail > .card:nth-of-type(3){background:var(--p3)}
165+
.rail > .card:nth-of-type(4){background:var(--p4)}
166+
.rail > .card:nth-of-type(5){background:var(--p5)}
167+
168+
/* BRIGHT does the pointing, and only these three things */
169+
.node{border-color:var(--bright)}
170+
.chip{background:var(--p1); color:var(--bright-deep)}
171+
.verdict .vnum{color:var(--bright)}
172+
173+
.card--neutral{background:var(--paper); border-color:var(--blue-pale)}
127174
.panel{background:var(--paper); border-radius:var(--r-panel);
128175
border:var(--w-hair) solid var(--blue-pale); padding:var(--s6)}
129176
.well{background:var(--sky-deep); border-radius:var(--r-card); padding:var(--s4)}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# STYLE KIT — component variants
2+
3+
The Spine Bank decides the *shape* of a sheet. This file decides how the parts inside it look.
4+
5+
Ten frames × these variants is why forty sheets can share one system without forty sheets
6+
looking identical. **Every variant here already obeys the laws** — the palette, the type scale,
7+
the soft radii. Mixing them cannot take a sheet off-brand.
8+
9+
Pick one variant per component per sheet. Do not mix two card styles on one sheet.
10+
11+
---
12+
13+
## Headers — 4 variants
14+
15+
**H1 · Stacked** *(default)*
16+
Headline, then deck under it. Full width. Nothing else.
17+
→ Use when the headline is the whole hook.
18+
19+
**H2 · Headline + counter**
20+
Headline left, a large Ink figure right (`72px/800`, tabular). The number the sheet is about.
21+
→ Use when there is one dominant figure: "10 hrs", "£4,200", "40×".
22+
23+
**H3 · Headline + two column labels**
24+
Headline, deck, then a label row that names the two sides.
25+
→ The Two-State Board's header. Also works on Fork.
26+
27+
**H4 · Eyebrow + headline**
28+
A `.seclab` eyebrow above the headline ("THE FRIDAY PROBLEM"), then headline, then deck.
29+
→ Use when the topic needs one line of framing before the claim lands.
30+
31+
---
32+
33+
## Cards — 5 variants
34+
35+
**C1 · Warm fill** *(default)*
36+
Pastel background rotating through `--p1`…`--p5`, hairline at 7% Ink, soft shadow.
37+
→ The workhorse. Warm, readable, unmistakably hers.
38+
39+
**C2 · Neutral**
40+
`--paper` fill, `--blue-pale` hairline.
41+
→ Dense content, tables, matrices — anywhere the pastels would add noise to data.
42+
43+
**C3 · Quiet well**
44+
`--sky-deep` fill, no border, no shadow.
45+
→ The losing side of a comparison. Flat on purpose.
46+
47+
**C4 · Ink**
48+
`--ink` fill, `--sky` text. One per sheet, at the end of the spine.
49+
→ The closer. Never more than one.
50+
51+
**C5 · Split card**
52+
Warm fill, with a `--sky-deep` strip down the right third holding a figure or a before-value.
53+
→ Use when every card carries a number worth isolating.
54+
55+
---
56+
57+
## Node styles — 3 variants
58+
59+
**N1 · Numbered** *(default)*
60+
`--ink` fill, `--sky` numeral, `--bright` ring. 28px.
61+
→ Anything ordered.
62+
63+
**N2 · Open**
64+
`--paper` fill, `--bright` ring, empty. 28px.
65+
→ Unordered stops, or the terminal node at the end of a spine.
66+
67+
**N3 · Icon**
68+
`--paper` fill, `--bright` ring, one 14px Ink glyph.
69+
→ Only when the icon adds information the title does not. If it restates the title, use N1.
70+
71+
All nodes on one sheet are the same size and the same variant. Always.
72+
73+
---
74+
75+
## Chips — 3 variants
76+
77+
**P1 · Stat chip** *(default)*
78+
`--paper` fill, `--bright-deep` text, uppercase 13px/600, pill radius. "SAVES 2.5 HRS".
79+
80+
**P2 · Tag**
81+
`--sky-deep` fill, `--ink-70` text, same shape. Category or tool name, no emphasis.
82+
83+
**P3 · Bare figure**
84+
No chip. Just the number in `--bright-deep`, 20px/700, tabular.
85+
→ When every card has a figure and five chips would be five blobs.
86+
87+
---
88+
89+
## Closers — 4 variants
90+
91+
**X1 · Verdict strip** *(default)*
92+
Ink block, sentence left, big `--bright` figure right.
93+
94+
**X2 · Total bar**
95+
Ink block, a row of the sheet's figures adding to one total.
96+
→ When the sheet's whole argument is that the parts sum.
97+
98+
**X3 · One line**
99+
Ink block, one sentence centred, no figure.
100+
→ When the payoff is a statement, not a number.
101+
102+
**X4 · Next step**
103+
Ink block, one instruction and a time box: "Start with #2. Twenty minutes."
104+
→ The most useful closer for the setup lane, and underused.
105+
106+
---
107+
108+
## Dividers and rules
109+
110+
- Section break: 1px `--blue-pale`, full content width, `--s5` above and below.
111+
- Never a heavy rule. Never a dotted or dashed one — the only dash on her sheets is the spine
112+
drawing itself in the animation.
113+
114+
---
115+
116+
## Mixing guide — combinations that work
117+
118+
| Sheet type | Header | Card | Node | Chip | Closer |
119+
|---|---|---|---|---|---|
120+
| Numbered systems list | H1 | C1 | N1 | P1 | X1 |
121+
| Big-number sheet | H2 | C1 | N1 | P3 | X2 |
122+
| Manual vs system | H3 | C3 + C1 | N2 | P2 | X1 |
123+
| Step-by-step setup | H4 | C1 | N1 | P1 | X4 |
124+
| Dense reference | H1 | C2 | N1 | P2 | X3 |
125+
| Hard truth (Ink canvas) | H4 | C1 | N2 | P3 | X3 |
126+
127+
---
128+
129+
## The one rule
130+
131+
**One variant per component per sheet.** Two card styles on one sheet reads as indecision, not
132+
range. The variation belongs *between* sheets — that is what makes a feed look deep instead of
133+
repetitive.

‎saman-skills/saman-craft.zip‎

-248 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)