goosetools-worker 0.2.4 → 0.2.5

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "goosetools-worker",
3
- "version": "0.2.4",
3
+ "version": "0.2.5",
4
4
  "description": "The Goose Tools carousel worker — your computer drafts and renders carousel slides for goosetools.com using your own Claude account.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -13,7 +13,8 @@
13
13
  "styles/polka-dot",
14
14
  "carousels/demo/slides.yml",
15
15
  "brand.yml",
16
- "README.md"
16
+ "README.md",
17
+ "skills"
17
18
  ],
18
19
  "type": "module",
19
20
  "bin": {
@@ -0,0 +1,149 @@
1
+ # Reference Analysis Methodology
2
+
3
+ How to study a set of reference images, map them onto something new, and check
4
+ the finished render against them. Shared by the Carousel Maker (slides) and the
5
+ Overlay Factory (overlays on reels) — the reference images are the source of
6
+ truth for EVERY behavior described here; there are no hardcoded rules. Worker
7
+ prompts splice individual sections by the SECTION markers below.
8
+
9
+ SHARED FILE: the source of truth is workers/shared/reference-analysis.md in the
10
+ goosetools repo, copied into each worker's skills/ by `npm run workers:sync`.
11
+
12
+ <!-- SECTION: principles -->
13
+ ## Principles — both tools
14
+
15
+ - **Purpose first, paint second.** Work out what each reference is FOR — the
16
+ recurring format a follower would recognize — before its colours and fonts.
17
+ A copy that nails the palette but misses the format is wrong.
18
+ - **Variance vs constants.** Across the set, note what varies and what never
19
+ changes. Freedom lives exactly where the references vary; fidelity is owed
20
+ everywhere they don't.
21
+ - **Same-account test.** The finished thing should read as the same account's
22
+ work if posted next to the references — same format, same typographic
23
+ voice, same palette logic. Pixel-matching any one reference is NOT the goal.
24
+ - **Look, don't assume.** Read every image before deciding anything, and judge
25
+ your own output by looking at the render, not by re-reading your markup.
26
+
27
+ <!-- SECTION: analyze -->
28
+ ## Phase A — understand what each reference is DOING
29
+
30
+ Read every reference image first. For each one, work out:
31
+
32
+ - **Role**: is this the cover (the hook slide), a middle content slide, or
33
+ the closer/CTA? The first reference is usually the cover; use layout and
34
+ copy cues (page counters, "swipe", "follow") to confirm.
35
+ - **Content job**: what is the slide FOR? Presenting a color palette with
36
+ labeled swatches? Comparing a before vs an after? Listing tips? Showcasing
37
+ a product photo? The recurring format a follower would recognize is the
38
+ thing to reproduce — purpose first, paint second.
39
+ - **Photo and subject**: where does the photo's main subject sit in the
40
+ frame? How tight is the crop?
41
+ - **Overlays**: where do overlays (swatch stacks, badges, labels, text
42
+ blocks) sit relative to the subject? Record which behavior this set uses:
43
+ some styles keep overlays OFF the subject (overlays live in the empty
44
+ side of the frame); others deliberately lay elements OVER the photo as
45
+ part of the look. Both are legitimate — copy whichever these references do.
46
+ - **Variance vs constants**: across the whole set, what varies (number of
47
+ swatches, which side the overlay sits on, crop tightness) and what never
48
+ changes (the format, the typography, the palette treatment, the border
49
+ style)? Freedom lives exactly where the references vary; fidelity is owed
50
+ everywhere they don't.
51
+
52
+ <!-- SECTION: map -->
53
+ ## Phase B — map references onto the new carousel, role to role
54
+
55
+ Match by ROLE and FORMAT, never image-to-image: your cover should do what
56
+ the reference cover does, your closer what their closer does, and every
57
+ middle slide should follow the references' middle-slide format. Your slide 3
58
+ does not need to mirror reference slide 3.
59
+
60
+ - **Colors**: if the user's photos share a coherent palette (e.g. they are
61
+ all sunsets, all one product line), sample the carousel's colors from THE
62
+ USER'S PHOTOS so the deck feels made from their images. If the photos are
63
+ visually unrelated, keep the references' original colors. Never mix in
64
+ colors from anywhere else.
65
+ - **Variance**: whatever varied across the references may vary across your
66
+ slides the same way — swatch counts, overlay side, crop tightness. Do not
67
+ make every slide identical when the references weren't.
68
+ - **Overlay placement**: follow the coverage behavior recorded in Phase A.
69
+ If the references keep overlays clear of the subject, look at each of the
70
+ user's photos (and what the user's prompt says the photo is about) and
71
+ place overlays on the empty side — use `variant: flip` on a slide to
72
+ mirror a template's overlay to the other side. If the references overlay
73
+ the photo deliberately, do the same.
74
+ - **Photo count adaptation** — the references decide the slide mix:
75
+ - More photos than slides: choose the photos that best serve each slide's
76
+ message, but if the user's prompt asks to show something specific, the
77
+ photo showing it MUST be used.
78
+ - Fewer photos than the format wants: if the references put a photo on
79
+ every slide, reuse a photo with a DIFFERENT focus/zoom crop so it reads
80
+ as a new frame; if the references include photo-free formats (statement
81
+ slides, text slides), use those instead. Never pad with invented filler
82
+ content.
83
+
84
+ <!-- SECTION: compare -->
85
+ ## Phase C — compare each rendered slide against the references
86
+
87
+ For each rendered slide, find the reference(s) with the same ROLE (slide 1 =
88
+ cover, last slide = CTA/closer, everything else = middle) and ask:
89
+
90
+ - **Same-account test**: if this slide were posted next to the references,
91
+ would it read as the same account's work — same format, same typographic
92
+ voice, same palette logic? Exact alignment with any single reference is
93
+ NOT required; matching the format is.
94
+ - **Overlay-behavior test**: does the slide follow the references' coverage
95
+ behavior? If they keep overlays off the subject, is this slide's subject
96
+ (or a face) hidden under a swatch stack, badge, or caption? If so it
97
+ fails — fix with `variant: flip` (mirror the overlay side) or a focus/zoom
98
+ change that moves the subject clear.
99
+ - **Framing test**: is the thing the slide is about actually prominent and
100
+ centered by the crop, exactly as the reference format frames its subjects?
101
+
102
+ Fix vocabulary (per slide): `focus` ("X% Y%" on the original photo),
103
+ `zoom` (1–3), `variant: flip` (mirror the overlay side), `swatches`
104
+ (recount/recolor a swatch list — only on slides that already have one).
105
+ Never rewrite a slide's text or switch its template during comparison.
106
+
107
+ <!-- SECTION: overlay-analyze -->
108
+ ## Overlay Phase A — understand what the references are DOING
109
+
110
+ These are frames from reels (or screenshots of them) with text or graphics laid
111
+ over footage. For the set, work out:
112
+
113
+ - **Format**: what one episode of this is — a question, a hot take, a stat, a
114
+ quote, a before/after label? That is what the fields should capture.
115
+ - **Hierarchy**: what the eye reads first, second, third, and how that is
116
+ achieved (size, weight, colour, a box, a bar, a label above the main line).
117
+ - **Type**: weight, case, letter-spacing, serif vs sans vs mono, line length,
118
+ how many lines the main text runs to.
119
+ - **Containers**: solid box, translucent scrim, outline, shadow only, or text
120
+ straight on footage — and corner radius, border, padding.
121
+ - **Placement**: where on the 9:16 frame each element sits, and how much of
122
+ the frame the overlay takes. Note anything placed where Instagram's UI would
123
+ cover it — keep the format but move it into the safe band.
124
+ - **Colour logic**: which colours are fixed accents and which come from the
125
+ footage; how contrast is kept over busy or bright video.
126
+ - **Variance vs constants** across the set (see Principles).
127
+
128
+ <!-- SECTION: overlay-compare -->
129
+ ## Overlay Phase C — compare the rendered frame against the references
130
+
131
+ Look at the rendered frame (sample text in every field, over grey) next to the
132
+ references and ask:
133
+
134
+ - **Same-account test**: would this sit next to the references as the same
135
+ series? Same format, hierarchy, type treatment, container style, colour
136
+ logic.
137
+ - **Hierarchy test**: does the eye land where it lands in the references, in
138
+ the same order?
139
+ - **Proportion test**: is the overlay roughly the size the references use — not
140
+ a tiny label where they fill the band, not a slab where they are a caption?
141
+ - **Legibility test**: would it read over ANY footage, on a phone at arm's
142
+ length? Thin text straight on video fails.
143
+ - **Safe-area test**: is anything in Instagram's top bar, right action rail or
144
+ bottom caption zone?
145
+
146
+ Fix by editing the templates (sizes, weights, spacing, colours, containers,
147
+ widthPct, anchor). Never change field keys, the content brief, or wording that
148
+ the user typed or asked for.
149
+