@easysociable/cli 0.1.18 → 0.1.20
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/easysociable.js +10818 -8951
- package/dist/easysociable.js.map +1 -1
- package/package.json +3 -4
- package/skills/ONBOARDING.md +2 -3
- package/skills/easysociable-slideshow/SKILL.md +90 -31
- package/skills/easysociable-slideshow/references/CONTENT_PACK.md +3 -4
- package/skills/easysociable-slideshow/references/REFERENCES.md +104 -0
- package/skills/easysociable-slideshow/workflows/CREATE_RUN.md +1 -1
- package/skills/easysociable-template/SKILL.md +14 -14
- package/skills/easysociable-template/references/GATEWAY.md +1 -3
- package/skills/easysociable-template/references/PLATFORM_SPECS.md +7 -9
- package/skills/easysociable-template/workflows/AUTHORING_FROM_BRIEF.md +4 -4
- package/skills/easysociable-template/workflows/AUTHORING_FROM_IMAGE.md +1 -1
- package/skills/easysociable-template/workflows/AUTHORING_STUDIO.md +4 -4
- package/skills/easysociable-template/workflows/BIND_FORMULA_LOOK.md +39 -0
- package/skills/easysociable-template/workflows/DESIGN_BRIEF.md +2 -3
- package/skills/easysociable-slideshow/references/DECK_STYLES.md +0 -132
- package/skills/easysociable-template/workflows/MULTI_PLATFORM_FAMILY.md +0 -81
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# Deck Styles
|
|
2
|
-
|
|
3
|
-
A Deck Style is a set of catalog Layout Families that share one visual language
|
|
4
|
-
(type scale, margins, chrome, palette). Every page of a Run is **adapted from one
|
|
5
|
-
family of a single Deck Style** — never drawn from scratch, never mixed across styles.
|
|
6
|
-
|
|
7
|
-
Read a family's Studio source for the Run's platform:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
easysociable templates source --family <familyId> --platform <platform> --json
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
Pick the style from the Brand's default style. No Brand style yet → pick by content:
|
|
14
|
-
|
|
15
|
-
| Style | Use for | Needs images | Brand palette (canvas / text / textMuted / accent) |
|
|
16
|
-
|---|---|---|---|
|
|
17
|
-
| `cream-editorial` | explainers, opinions, news breakdowns, prompts — text-first | no | `#F4EEE7` / `#121A2B` / `#4A4F5C` / `#D4450F` |
|
|
18
|
-
| `quiet-ledger` | frameworks, tips, how-tos, lessons — calm, structured | no | `#FFFFFF` / `#15191E` / `#384352` / `#445164` |
|
|
19
|
-
| `dark-news` | breaking AI/tech news with a strong photo or product shot | yes (hero photo) | `#06080C` / `#FFFFFF` / `#C7CBD3` / `#4C9BFF` |
|
|
20
|
-
| `phone-showcase` | app tips, tool demos, "how I use X" — real screenshots | yes (screenshots) | `#F9F9F9` / `#0A0A0A` / `#555555` / `#0066DD` |
|
|
21
|
-
|
|
22
|
-
No images available and none can be generated → only `cream-editorial` or `quiet-ledger`.
|
|
23
|
-
|
|
24
|
-
## cream-editorial
|
|
25
|
-
|
|
26
|
-
Big 112px headline with an accent-coloured second half, mono page number, pill tag, rule, SWIPE footer.
|
|
27
|
-
|
|
28
|
-
| Family | Page purpose |
|
|
29
|
-
|---|---|
|
|
30
|
-
| `fam_0488u93z` Cream Editorial Headline Poster | hook / cover: headline + one-line aside |
|
|
31
|
-
| `fam_w3p02voe` Cream Five-Line Headline Poster | hook / cover: headline only, up to 5 lines |
|
|
32
|
-
| `fam_vt5zt1xg` Accent Rail Paragraph Chart | context / evidence: one paragraph on an accent rail + 3 numbers |
|
|
33
|
-
| `fam_vw68bzh1` Cream Mono Prompt Card | value / steps: a mono "card" (prompt, quote, example input) |
|
|
34
|
-
| `fam_x6gdbad3` Accent Rail Paragraph Logo Row | proof: paragraph + logo row (needs logos) |
|
|
35
|
-
| `fam_9hlr90o1` Cream Big Button Follow Close | cta / follow: big question + accent button |
|
|
36
|
-
|
|
37
|
-
Point / list / metric pages are not in the catalog for this style: adapt the
|
|
38
|
-
headline poster (title on top, 2–3 rows or one huge number below), keeping its chrome.
|
|
39
|
-
|
|
40
|
-
## quiet-ledger
|
|
41
|
-
|
|
42
|
-
White, small caps labels, soft green gradient blob, one idea per card.
|
|
43
|
-
|
|
44
|
-
| Family | Page purpose |
|
|
45
|
-
|---|---|
|
|
46
|
-
| `fam_49c6pout` Title + Subtitle Cover | cover |
|
|
47
|
-
| `fam_qery74q3` Bold Claim Hook with Swipe Arrow | hook |
|
|
48
|
-
| `fam_e8d1qpn2` Problem Setup Card | setup / problem |
|
|
49
|
-
| `fam_k9wge9gc` Single Takeaway Card | value / key idea |
|
|
50
|
-
| `fam_ue542bvy` Numbered Point Card | point (one per page, big number) |
|
|
51
|
-
| `fam_78vpdf64` Five-Step How-To List | steps |
|
|
52
|
-
| `fam_3tw3wbxx` Big Metric Proof Card | proof / metric |
|
|
53
|
-
| `fam_eh8wkyql` Closing Recap Summary | recap |
|
|
54
|
-
|
|
55
|
-
CTA: adapt `fam_rahs52cl` Bookmark Save Close into this palette.
|
|
56
|
-
|
|
57
|
-
## dark-news
|
|
58
|
-
|
|
59
|
-
Near-black, full-bleed photo with headline over a fade.
|
|
60
|
-
|
|
61
|
-
| Family | Page purpose |
|
|
62
|
-
|---|---|
|
|
63
|
-
| `fam_321v25e7` Dark News Hero Poster | cover / hook over a hero photo |
|
|
64
|
-
| `fam_rms4v81m` Dark News Story Stack | point / evidence: image + short story |
|
|
65
|
-
| `fam_9lkrmau1` Monument Metric | metric / proof: one huge number |
|
|
66
|
-
|
|
67
|
-
CTA: adapt `fam_9hlr90o1` (button close) into the dark palette.
|
|
68
|
-
|
|
69
|
-
## phone-showcase
|
|
70
|
-
|
|
71
|
-
Light grey, a phone mockup holding a real screenshot, short caption.
|
|
72
|
-
|
|
73
|
-
| Family | Page purpose |
|
|
74
|
-
|---|---|
|
|
75
|
-
| `fam_itnu5iiq` Title Over Fading Phone Poster | cover |
|
|
76
|
-
| `fam_wb2l75gl` Phone Left Title Right Poster | cover / screenshot |
|
|
77
|
-
| `fam_nk61xu51` One-Phone Prompt Tip | point: one phone + tip text |
|
|
78
|
-
| `fam_t2x277j8` Two-Phone Tip | point: before / after |
|
|
79
|
-
| `fam_99xxcxs0` Centered App Spotlight Stack | point: app icon + name + one line |
|
|
80
|
-
| `fam_ct0pajcy` Caption Over Big Phone | steps: one step per page |
|
|
81
|
-
| `fam_4ct2w5n5` Phone Left Step Note | steps |
|
|
82
|
-
| `fam_v4yktlzk` Phone Bottom Edge Caption | steps |
|
|
83
|
-
| `fam_sgif0njo` Twin Phones Follow Close | follow |
|
|
84
|
-
| `fam_6lxgv3nd` Follow Me Avatar Close | cta with the Brand avatar |
|
|
85
|
-
| `fam_rahs52cl` Bookmark Save Close | cta: save for later |
|
|
86
|
-
|
|
87
|
-
## Adapting a family (the rules that make it look designed)
|
|
88
|
-
|
|
89
|
-
1. Copy the family source. Keep its chrome (header, pill, page number, rule,
|
|
90
|
-
footer), margins (`left` of the first column), type scale and fonts.
|
|
91
|
-
2. Change text, then fix each text box: explicit `<br />` line breaks, and
|
|
92
|
-
`height` = lines × lineHeight + ~12% of fontSize for descenders.
|
|
93
|
-
3. Remove what you do not need; add only elements copied from a sibling family
|
|
94
|
-
of the same style (e.g. the rule rows or stat row).
|
|
95
|
-
4. Brand chrome: the header label is the Brand name (or the topic when there is
|
|
96
|
-
no Brand); the CTA names the Brand handle. Never leave a template's original
|
|
97
|
-
name or handle (e.g. "Will.AI.m") on a page.
|
|
98
|
-
5. Accent colour only on large text (≥ 36px, or ≥ 28px bold) and blocks. Small
|
|
99
|
-
labels use the text or muted colour.
|
|
100
|
-
6. Semantic `data-type` values (`title`, `subtitle`, `kicker`, `metric`,
|
|
101
|
-
`caption`) get Brand colours forced by Studio. Text on an accent or image
|
|
102
|
-
block uses `label`, `body` or `statement` with an explicit colour.
|
|
103
|
-
7. One family per page, no family twice in a Run unless the page purpose
|
|
104
|
-
repeats (e.g. several numbered points), and no two adjacent pages with the
|
|
105
|
-
same composition.
|
|
106
|
-
|
|
107
|
-
## Image placeholder
|
|
108
|
-
|
|
109
|
-
A replaceable image slot for a real screenshot or photo the user will add.
|
|
110
|
-
Studio shows an upload button when it is selected.
|
|
111
|
-
|
|
112
|
-
```jsx
|
|
113
|
-
<img data-type="image" data-variable="image_0" data-image-mode="slot_default"
|
|
114
|
-
alt="Add: <what goes here>" src="data:image/svg+xml;base64,<SVG>"
|
|
115
|
-
style={{ position: 'absolute', left: 88, top: 760, width: 904, height: 388, objectFit: 'cover', borderRadius: 24 }} />
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
`<SVG>` is base64 of a grey box with an image icon and the label, sized to the slot:
|
|
119
|
-
|
|
120
|
-
```xml
|
|
121
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='904' height='388' viewBox='0 0 904 388'>
|
|
122
|
-
<rect width='904' height='388' fill='#DDD6CC'/>
|
|
123
|
-
<g transform='translate(416,124)' fill='none' stroke='#8C8781' stroke-width='5' stroke-linejoin='round'>
|
|
124
|
-
<rect width='72' height='56' rx='8'/><path d='M6 50 L26 28 L40 42 L50 34 L66 50'/><circle cx='52' cy='16' r='6'/>
|
|
125
|
-
</g>
|
|
126
|
-
<text x='50%' y='230' text-anchor='middle' font-family='Inter, Arial, sans-serif' font-size='32' font-weight='600' fill='#6F6A64'>Add: Grok Bot app screenshot</text>
|
|
127
|
-
</svg>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
Put the same data URL in the page's `slots` under `image_N`. Number slots
|
|
131
|
-
`image_0`, `image_1`, … per page. Use the style's own colours for the box
|
|
132
|
-
(canvas-adjacent grey on light styles, `#1A1F27` on dark ones).
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Multi-platform Layout Family (default create path)
|
|
2
|
-
|
|
3
|
-
**SoT for creating templates that ship on several platforms at once.**
|
|
4
|
-
One user-facing **Layout Family**; one **master** canvas page; additional **variant** pages per aspect preset. Studio switches variants with platform chips — it does not resize one AST (ADR-0033).
|
|
5
|
-
|
|
6
|
-
Single-page ≠ single-platform. Still never create slideshow/carousel packs (`OUT_OF_SCOPE.md`).
|
|
7
|
-
|
|
8
|
-
## Default when the user asks to create a template
|
|
9
|
-
|
|
10
|
-
Unless they explicitly want **one platform only**:
|
|
11
|
-
|
|
12
|
-
1. Lock a **master** platform + recommended canvas (`PLATFORM_SPECS.md`).
|
|
13
|
-
2. Create the master draft (Family is created with it).
|
|
14
|
-
3. **Derive** missing vertical presets for the family.
|
|
15
|
-
4. **Hand-tune** each variant’s absolute layout (do not ship raw derive output for dense pages).
|
|
16
|
-
5. Visual-QA master + each variant, then hand off Studio with chip switching.
|
|
17
|
-
|
|
18
|
-
### Default vertical bucket (most social covers)
|
|
19
|
-
|
|
20
|
-
| Role | Preset | Pixels | Platforms on that variant |
|
|
21
|
-
|---|---|---|---|
|
|
22
|
-
| Master (typical) | `3:4` | 1080×1440 | `xiaohongshu` |
|
|
23
|
-
| Variant | `4:5` | 1080×1350 | `instagram` + `threads` (shared tree) |
|
|
24
|
-
| Variant | `9:16` | 1080×1920 | `tiktok` |
|
|
25
|
-
| Variant | `1:1` | 1080×1080 | `linkedin` |
|
|
26
|
-
|
|
27
|
-
If the user’s primary platform is already `4:5` / `9:16` / `1:1`, that page is master; derive the other presets in the bucket (see Gateway `defaultDerivePolicyForPreset`).
|
|
28
|
-
|
|
29
|
-
Skip or trim targets only when the user names a subset (“只要 IG 和 LinkedIn”).
|
|
30
|
-
|
|
31
|
-
## CLI
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
# After create-draft, read familyId from the draft view (or families list)
|
|
35
|
-
easysociable templates families get --id <familyId> --json
|
|
36
|
-
|
|
37
|
-
# Create missing presets (idempotent; use --presets to limit)
|
|
38
|
-
easysociable templates families derive --id <familyId> --presets 4:5,9:16,1:1 --json
|
|
39
|
-
|
|
40
|
-
# Hand-tuned layout per variant pageId
|
|
41
|
-
easysociable templates update-draft --id <variantPageId> --file ./variant-4x5.patch.json --json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Gateway equivalents: `GET/POST /v1/template-families/:id`, `POST /v1/template-families/:id/derive`.
|
|
45
|
-
|
|
46
|
-
If CLI `--json` fails Zod on new family fields (`familyId`, `variants`, …) but HTTP succeeded, re-fetch with `families get` / `list-drafts` or raw Gateway — do not assume create/derive failed.
|
|
47
|
-
|
|
48
|
-
## Hand-tune rules (required after derive)
|
|
49
|
-
|
|
50
|
-
`derive` applies pin `v1_vertical` (scale + bottom/center corrections). That is a **starting point**, not shippable layout for dense covers.
|
|
51
|
-
|
|
52
|
-
For **each** variant page:
|
|
53
|
-
|
|
54
|
-
1. Keep the **same slots / copy / icons** as master (same `data-variable` keys).
|
|
55
|
-
2. Rebuild absolute geometry for the target `canvas` (`width`/`height` + root Graphic size must match preset pixels).
|
|
56
|
-
3. Distribute vertical rhythm across the full board: even section gaps; **no** packed header + empty foot.
|
|
57
|
-
4. TikTok `9:16`: keep critical UI out of bottom ~120–160px chrome.
|
|
58
|
-
5. JSX styles must be `style={{ ... }}` (double braces). Python f-strings turn `{{` into `{` — validate with Babel/`validate-authoring-source.mjs` before update.
|
|
59
|
-
6. Per-variant `selectionMetadata.platforms` / `canvasPreset` / `canvas` must match that page only (IG+Threads both listed on the `4:5` page).
|
|
60
|
-
7. Theme/preview tokens stay on the **Family** (`preview_tokens` via `theme.create` on draft) — not a TemplateTheme row (`THEME_TOKENS.md`, ADR-0033).
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
node scripts/validate-authoring-source.mjs ./variant-4x5.authoring.json
|
|
64
|
-
easysociable templates update-draft --id <variantPageId> --file ./variant-4x5.patch.json --json
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Visual QA
|
|
68
|
-
|
|
69
|
-
Run `VISUAL_QA.md` on the **master** and **each derived preset** (screenshot Studio at that draft URL / platform chip). Fail if any variant has clipped content, overlapping bands, or large empty voids with cramped clusters.
|
|
70
|
-
|
|
71
|
-
## Handoff
|
|
72
|
-
|
|
73
|
-
After QA, open the **master** Studio URL and tell the user they can switch platforms with the top-bar chips (each chip is a real canvas variant). Save still applies to the active variant; Agent publish remains post-Save (`PUBLISH_FROM_DRAFT.md`). Include every variant `pageId` + preset in the handoff notes.
|
|
74
|
-
|
|
75
|
-
## Do not
|
|
76
|
-
|
|
77
|
-
- Author one AST and claim it fits 3:4 + 9:16 + 1:1
|
|
78
|
-
- Leave dense pages on raw derive output
|
|
79
|
-
- Put Instagram and Threads on different presets when both are 4:5
|
|
80
|
-
- Create a second Family for the same template identity
|
|
81
|
-
- Treat multi-platform variants as a slideshow / carousel pack
|