boomcode 0.5.2__tar.gz → 0.5.3__tar.gz

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.
Files changed (63) hide show
  1. {boomcode-0.5.2 → boomcode-0.5.3}/PKG-INFO +1 -1
  2. {boomcode-0.5.2 → boomcode-0.5.3}/boomcode.egg-info/PKG-INFO +1 -1
  3. {boomcode-0.5.2 → boomcode-0.5.3}/pyproject.toml +1 -1
  4. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/__init__.py +1 -1
  5. boomcode-0.5.3/python/boomcode/layer/skills/lets-scroll/SKILL.md +274 -0
  6. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/lets-scroll/references/pipeline.md +7 -1
  7. boomcode-0.5.2/python/boomcode/layer/skills/lets-scroll/SKILL.md +0 -877
  8. {boomcode-0.5.2 → boomcode-0.5.3}/LICENSE +0 -0
  9. {boomcode-0.5.2 → boomcode-0.5.3}/README.md +0 -0
  10. {boomcode-0.5.2 → boomcode-0.5.3}/boomcode.egg-info/SOURCES.txt +0 -0
  11. {boomcode-0.5.2 → boomcode-0.5.3}/boomcode.egg-info/dependency_links.txt +0 -0
  12. {boomcode-0.5.2 → boomcode-0.5.3}/boomcode.egg-info/entry_points.txt +0 -0
  13. {boomcode-0.5.2 → boomcode-0.5.3}/boomcode.egg-info/top_level.txt +0 -0
  14. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/cli.py +0 -0
  15. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/README.md +0 -0
  16. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/agent/build.md +0 -0
  17. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/agent/debugger.md +0 -0
  18. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/agent/designer.md +0 -0
  19. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/agent/vision.md +0 -0
  20. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/agent/writer.md +0 -0
  21. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/ask.md +0 -0
  22. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/boom.md +0 -0
  23. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/explore.md +0 -0
  24. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/fix.md +0 -0
  25. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/open.md +0 -0
  26. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/command/review.md +0 -0
  27. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/opencode.json +0 -0
  28. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/themes/bangladeshi.json +0 -0
  29. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/themes/boomcode.json +0 -0
  30. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/config/tui.json +0 -0
  31. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/install.sh +0 -0
  32. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/__pycache__/patch-brand.cpython-312.pyc +0 -0
  33. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/boomcode +0 -0
  34. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/boomcode-browser +0 -0
  35. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/boomcode-menu +0 -0
  36. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/boomcode-uninstall +0 -0
  37. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/boomcode-vision +0 -0
  38. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/oc-settings.sh +0 -0
  39. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/scripts/patch-brand.py +0 -0
  40. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/android-app/SKILL.md +0 -0
  41. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/api-integration/SKILL.md +0 -0
  42. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/bash-cli-expert/SKILL.md +0 -0
  43. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/bot-development/SKILL.md +0 -0
  44. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/clean-code-performance/SKILL.md +0 -0
  45. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/database/SKILL.md +0 -0
  46. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/debugging-fixes/SKILL.md +0 -0
  47. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/deploy-hosting/SKILL.md +0 -0
  48. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/docker/SKILL.md +0 -0
  49. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/firebase-supabase/SKILL.md +0 -0
  50. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/git-workflow/SKILL.md +0 -0
  51. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/lets-scroll/references/index-template.html +0 -0
  52. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/lets-scroll/references/knockout.py +0 -0
  53. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/lets-scroll/references/prompts.md +0 -0
  54. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/lets-scroll/references/scrub-engine.js +0 -0
  55. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/project-structure/SKILL.md +0 -0
  56. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/python-automation/SKILL.md +0 -0
  57. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/react-next-best-practices/SKILL.md +0 -0
  58. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/security-review/SKILL.md +0 -0
  59. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/seo-basics/SKILL.md +0 -0
  60. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/testing/SKILL.md +0 -0
  61. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/ui-ux-responsive/SKILL.md +0 -0
  62. {boomcode-0.5.2 → boomcode-0.5.3}/python/boomcode/layer/skills/website-builder/SKILL.md +0 -0
  63. {boomcode-0.5.2 → boomcode-0.5.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boomcode
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: BOOMCODE — AI coding CLI for Termux. Your app, BLAM, done!
5
5
  Author: zyvo9
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: boomcode
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: BOOMCODE — AI coding CLI for Termux. Your app, BLAM, done!
5
5
  Author: zyvo9
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "boomcode"
7
- version = "0.5.2"
7
+ version = "0.5.3"
8
8
  description = "BOOMCODE — AI coding CLI for Termux. Your app, BLAM, done!"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -6,4 +6,4 @@ hands over to the real installer (install.sh) which does everything
6
6
  else (core engine, deps, single-line live progress).
7
7
  """
8
8
 
9
- __version__ = "0.5.2"
9
+ __version__ = "0.5.3"
@@ -0,0 +1,274 @@
1
+ ---
2
+ name: lets-scroll
3
+ description: >
4
+ Build an immersive scroll-driven "fly through the world" landing page for any
5
+ business or idea. As the visitor scrolls, a pre-rendered camera flies through
6
+ 3D scenes with NO cuts — one continuous journey. FREE BY DESIGN: the AI designs
7
+ everything and writes a kit of copy-paste prompts (images + videos) into the
8
+ project's lets-scroll/ folder with a step-by-step beginner guide; the user
9
+ generates the assets in ANY AI tool they like (free tools work) and pastes the
10
+ results next to the prompts. Then the AI verifies, encodes, and wires a
11
+ portable scroll-scrub engine. Use when the user wants a "3D world" site, a
12
+ scroll cinematic, a diorama landing, or to turn a business into a scrollable
13
+ world. Paid render automation (Monid/Higgsfield CLIs) exists as an OPTIONAL
14
+ appendix in references/pipeline.md for users who already have those tools.
15
+ allowed-tools: Bash, Read, Write, Edit, AskUserQuestion, Skill
16
+ ---
17
+
18
+ # lets-scroll
19
+
20
+ Build a landing page where scrolling flies the visitor through a little 3D
21
+ world — scene after scene, no cuts — ending at the brand.
22
+
23
+ > **BEGINNER VOICE — mandatory for the whole skill.** The user may be a complete
24
+ > beginner on a phone. Short sentences. Simple words. Every technical term gets a
25
+ > one-line plain meaning the first time it appears. Never dump jargon; explain
26
+ > what to do, in order, like a friendly guide. All user-facing writing (chat,
27
+ > GUIDE.md, file names) uses the plain `image-…` / `video-…` vocabulary below —
28
+ > never internal words like "still", "dive", "connector", "leg".
29
+
30
+ ## The idea in one minute
31
+
32
+ 1. You interview the user about their business/idea (simple questions).
33
+ 2. You design the scenes and the camera journey.
34
+ 3. You write a **kit** into the project — one folder, `lets-scroll/`:
35
+ - `GUIDE.md` — a friendly step-by-step guide for the user
36
+ - one prompt file per picture (`image-01-….txt`) and per video clip
37
+ (`video-01-….txt`, `video-connector-1.txt`)
38
+ 4. The user copies each prompt into ANY AI image/video tool (free ones are fine),
39
+ downloads the result, and saves it **in the same folder, same name**:
40
+ `image-01-….txt` → `image-01-….png`, `video-01-….txt` → `video-01-….mp4`.
41
+ 5. When they say "done", you verify every file, polish it with ffmpeg, wire the
42
+ scroll engine, open it with `boomcode preview`, and check it together.
43
+
44
+ The kit is the contract. The folder tells everyone (you and the user) exactly
45
+ what exists, what is waiting, and what is still missing.
46
+
47
+ ## Step 0 — Quick check (10 seconds)
48
+
49
+ You need only **ffmpeg + ffprobe** on this path. Check `ffmpeg -version` and
50
+ `ffprobe -version`. If missing or broken:
51
+
52
+ - **Termux (Android):** `pkg install ffmpeg` (or `pkg reinstall ffmpeg` if a
53
+ broken install reports linker errors). Also `pkg install python` if python is
54
+ missing (needed later for the local preview server).
55
+ - Everything else — image/video generation — happens in the USER's tools, so
56
+ nothing else is required from this machine.
57
+ - Scratch files go to `$TMPDIR` (never `/tmp` — Termux has no `/tmp`).
58
+
59
+ Optional: if the user already pays for render CLIs, automation lives in
60
+ `references/pipeline.md`. Do not bring it up unless they ask.
61
+
62
+ ## Step 1 — Interview (simple questions, one at a time)
63
+
64
+ Ask these in plain words. Accept answers in any language. Record the answers
65
+ (the checklist in `references/prompts.md` is your write-down format).
66
+
67
+ 1. **What is this about?** (their business/idea — open question, never
68
+ multiple-choice)
69
+ 2. **Brand kit** — name + a few brand colors if they have them (or offer to
70
+ propose a palette). Keep it to: name, 4–6 colors, tone.
71
+ 3. **Look & feel** — show the options by feel, one line each (default: **clay
72
+ diorama**; alternates in `references/prompts.md`: papercraft, glossy toy,
73
+ claymation, neon night, photoreal). One choice for the whole site.
74
+ 4. **Camera style** — ask by feel: *"should the camera walk through the world
75
+ (walkthrough) or dive down into it from above (fly-through)?"*
76
+ - walkthrough → architecture **A** (one continuous forward take — simpler,
77
+ recommended)
78
+ - fly-through, god's-eye → architecture **B** (dive + connector clips)
79
+ - If they want a fixed isometric camera the whole way, that's A with the
80
+ locked-iso clause from `references/prompts.md`.
81
+ 5. **How many scenes?** Offer 2 / 4 / 6 (6 is the max that stays smooth).
82
+ Then propose the scene list from their answer to #1 — each scene gets a
83
+ subject, a short headline idea, one-line body, 0–3 tags; the last scene is
84
+ the hero + call-to-action. Confirm the list with the user.
85
+ 6. **Phone version?** ("should the site also have a vertical version for
86
+ phones?") — if yes, the kit doubles the video prompts (a 9:16 copy of each)
87
+ — say plainly that it's about twice the generating work for them.
88
+
89
+ ## Step 2 — Write the kit into the project
90
+
91
+ Create ONE folder in the project root:
92
+
93
+ ```
94
+ lets-scroll/
95
+ ├── GUIDE.md
96
+ ├── image-01-<short-scene-name>.txt ← picture prompt
97
+ │ image-01-<short-scene-name>.png ← user saves the result HERE, same name
98
+ ├── image-02-<name>.txt
99
+ │ image-02-<name>.png
100
+ ├── video-01-<what-it-does>.txt ← video prompt
101
+ │ video-01-<what-it-does>.mp4
102
+ └── video-connector-1.txt ← only for architecture B
103
+ video-connector-1.mp4
104
+ ```
105
+
106
+ **Naming rules (this is the whole system):**
107
+ - `image-…` = it makes a PICTURE. `video-…` = it makes a VIDEO CLIP.
108
+ - The number is the order to generate in.
109
+ - The prompt file `X.txt` and the user's saved result `X.png` / `X.mp4` share
110
+ the exact same name and live in the exact same folder.
111
+ - Architecture A: `image-01…` to `image-N` (one per scene) and `video-01…` to
112
+ `video-N` (one journey clip per scene).
113
+ - Architecture B: the same images, but videos are `video-01…` (dive into each
114
+ scene) plus `video-connector-1…` (the linking flight between scenes).
115
+
116
+ **Every prompt file starts with a marker line, then the full prompt:**
117
+
118
+ ```
119
+ === IMAGE PROMPT (generates 1 picture) ===
120
+ …complete prompt, self-contained (style preamble baked in from references/prompts.md)…
121
+
122
+ SAVE AS: image-01-shopfront.png (3:2 landscape, at least 1536px wide,
123
+ solid background, no text in the picture)
124
+ ```
125
+
126
+ ```
127
+ === VIDEO PROMPT (generates 1 short clip) ===
128
+ …complete prompt…
129
+ FIRST FRAME: attach video-01-start.png (provided next to this prompt) —
130
+ your tool must support a start/first frame.
131
+ SAVE AS: video-01-shopfront.mp4 (16:9, ~8 seconds, no sound)
132
+ ```
133
+
134
+ Use the templates in `references/prompts.md` (scene still, leg/dive, connector)
135
+ — they bake in the style preamble so every prompt works alone in any tool.
136
+
137
+ **Start frames (architecture A chain):** the journey must be seamless, so
138
+ video-02 continues from the LAST frame of video-01. Do it step by step:
139
+ 1. Write all image prompts + the FIRST video prompt now.
140
+ 2. When `video-01….mp4` arrives, extract its last frame:
141
+ `ffmpeg -sseof -0.1 -i video-01-x.mp4 -frames:v 1 video-02-start.png`
142
+ 3. Write/update `video-02….txt` to attach that frame, and tell the user.
143
+ (For architecture B, connectors get BOTH a first and a last frame — extract
144
+ them from the two videos they link.)
145
+
146
+ **GUIDE.md** — write it for a total beginner, roughly:
147
+
148
+ ```markdown
149
+ # Your 3D website — how to finish it
150
+
151
+ Each .txt file here is one prompt. Generate them in number order (01, 02, …).
152
+
153
+ - image-… files make PICTURES → paste into any AI image tool
154
+ - video-… files make SHORT VIDEOS → paste into any AI video tool
155
+ (it must accept a start/first frame — the file is already in this folder)
156
+
157
+ For every prompt: open it, copy everything under the === line, run it in your
158
+ tool, download the result, and save it in THIS folder with the exact name from
159
+ the "SAVE AS" line (image-01-shopfront.png, video-01-shopfront.mp4, …).
160
+
161
+ The videos connect like a chain — that's why the order matters. If a video
162
+ prompt says "FIRST FRAME: attach …", upload that frame together with the prompt.
163
+
164
+ When everything has its file next to its prompt, tell the AI: **done**.
165
+ If a result looks wrong, just delete that file and try again.
166
+ ```
167
+
168
+ **Also show the user a simple status table in chat** (never a wall of prose):
169
+
170
+ | # | file to make | kind | needs start frame? | status |
171
+ |---|---|---|---|---|
172
+ | 1 | image-01-shopfront.png | picture | — | waiting |
173
+
174
+ Keep it updated as files arrive.
175
+
176
+ ## Step 3 — As files arrive: check them kindly
177
+
178
+ After the user says files are in (or anytime they say "check"):
179
+
180
+ 1. `ls lets-scroll/` — match every `X.txt` to its `X.png`/`X.mp4`.
181
+ 2. Verify each new file before relying on it:
182
+ - pictures: opens, 3:2 landscape, ≥ ~1536px wide (`ffprobe` or PIL)
183
+ - videos: plays, 16:9 (or 9:16 mobile), duration ≈ 8s (dives) / 5s
184
+ (connectors), **frame 0 must match the start frame** you handed over —
185
+ extract frame 0 with ffmpeg and compare by composition (or
186
+ `boomcode-vision` on both). A video whose tool ignored the start frame
187
+ will break its seam — ask for a re-run of that one prompt.
188
+ 3. Update the status table and tell the user in one friendly line what's left.
189
+ 4. Architecture A: extract each accepted video's last frame and unlock the
190
+ next video prompt (Step 2 chain rule).
191
+
192
+ Never scold a bad file — just say which number to re-run and why in one line.
193
+
194
+ ## Step 4 — Assemble (once every file is accepted)
195
+
196
+ 1. **Optional floating scenes** (only if the style wants it, e.g. product
197
+ close-ups floating beside the world): strip the background with
198
+ `references/knockout.py` (needs PIL — `pkg install python pillow` /
199
+ `pip install pillow`).
200
+ 2. **Encode for smooth scrolling** — scrubbing means the page sets
201
+ `video.currentTime` as you scroll, so clips must be encoded kindly:
202
+
203
+ ```bash
204
+ ffmpeg -i src.mp4 -an -vf "unsharp=5:5:0.8:5:5:0.0" \
205
+ -c:v libx264 -preset slow -crf 20 -pix_fmt yuv420p \
206
+ -g 8 -keyint_min 8 -sc_threshold 0 -movflags +faststart out.mp4
207
+ ```
208
+
209
+ Native resolution, no downscale. If the user opted into the phone version,
210
+ also make each clip a 9:16 native portrait copy encoded 720 wide with
211
+ `-g 4`, crf 23 (cheaper seeks on phone decoders), plus each portrait clip's
212
+ first frame as the phone poster image.
213
+ 3. **Place files** (project root, served by the page):
214
+ - `assets/<scene>.webp` — the stills (`cwebp -q 84`, resize to 1800)
215
+ - `assets/vid/<scene>.mp4` + `-m.mp4` portrait copies + connector clips
216
+ 4. **Wire the engine** — copy `references/scrub-engine.js` and
217
+ `references/index-template.html` into the project and fill the
218
+ `mountLetsScroll(config)` block: `brand`, `diveScroll: 1.3`,
219
+ `connScroll: 0.9`, one `sections[]` entry per scene
220
+ (`id, label, still, clip, clipMobile, stillMobile, scroll, linger, accent,
221
+ eyebrow, title, body, tags, cta`), `connectors[]` for architecture B
222
+ (architecture A: `connectors: []` and a small crossfade ~0.08).
223
+ Copy rules (eyebrow/title/body/tags) are in `references/prompts.md`.
224
+
225
+ ## Step 5 — See it and check it (phone-friendly QA)
226
+
227
+ There is no headless browser here — check it the human way:
228
+
229
+ 1. `boomcode preview` — opens the page in the phone/desktop browser.
230
+ 2. Scroll through slowly, then fast. Ask the user to look for one thing:
231
+ **does any scene "jump" or flash at a boundary?** (a jump = the video's
232
+ first frame didn't match — re-check that pair's start frame; a flash = the
233
+ crossfade band is too short).
234
+ 3. Verify the technical parts from the shell:
235
+ - file specs re-run through `ffprobe` (aspect, duration)
236
+ - first-frame matching via ffmpeg extract + `boomcode-vision` comparison
237
+ - page loads over the preview server (no `file://` — browsers block it;
238
+ that's why `boomcode preview` exists)
239
+ 4. Phone version (if built): open the same link on the phone — portrait clips
240
+ must be served there (natively portrait, not squashed), posters must match
241
+ each clip's first frame, scrolling with the URL-bar collapsing must not
242
+ jump the page, and reduced-motion users should see the stills, no videos.
243
+ 5. Fix round: adjust `crossfade`/`linger`, re-encode a clip, or ask for one
244
+ re-run — then check again. Only ship when the user says it feels smooth.
245
+
246
+ ## Gotchas (hard-won, the free-path subset)
247
+
248
+ - **Start frames are sacred.** A tool that ignores the attached first frame
249
+ will break every seam after it. Verify frame 0 on arrival, every time.
250
+ - **Architecture A is a chain.** Video 2 starts from video 1's actual last
251
+ frame — never from the original image. Extract, don't assume.
252
+ - **No `file://` previewing** — browsers block the scripts and blob fetching
253
+ the engine needs. Always `boomcode preview`.
254
+ - **Blob loading is why scrubbing works** — the engine fetches clips as blobs
255
+ (fully seekable) so plain static serving is fine; don't switch to
256
+ byte-range hacks.
257
+ - **Never downscale the masters** — encode at native resolution, crf ~20,
258
+ small GOP (`-g 8`; portrait 720-wide `-g 4`).
259
+ - **ffmpeg on Termux** can arrive broken (linker errors) — `pkg reinstall
260
+ ffmpeg` fixes it; check before blaming the videos.
261
+ - **Six scenes is the ceiling** — more scenes = more seams = harder to keep
262
+ smooth.
263
+ - iOS Safari is the strictest judge: if the priming/poster logic is touched,
264
+ test that the first scene paints instantly with no black flash.
265
+
266
+ ## References
267
+
268
+ - `references/prompts.md` — intake checklist + style preambles + all prompt
269
+ templates (scene picture, journey video, connector video) + copy rules
270
+ - `references/pipeline.md` — OPTIONAL paid automation (Monid/Higgsfield CLIs)
271
+ and the full encode/asset recipes (§6/§6b) for users who have those tools
272
+ - `references/scrub-engine.js` — the scroll engine (zero dependencies)
273
+ - `references/index-template.html` — the page template with the config block
274
+ - `references/knockout.py` — optional background removal for floating scenes
@@ -1,9 +1,15 @@
1
1
  # Pipeline: copy-paste scripts (bash 3.2 safe)
2
2
 
3
+ > **OPTIONAL AUTOMATION.** The default lets-scroll flow (SKILL.md) is FREE and
4
+ > manual: the AI writes a prompt kit into the project's `lets-scroll/` folder
5
+ > and the user renders in any tool they like. THIS file is only for users who
6
+ > already have render CLIs (Monid / Higgsfield / Codex) and want them driven
7
+ > automatically. Nothing here is required for the free flow.
8
+
3
9
  Set these once. `NAMES` is the ordered section ids; the last is the hero/finale.
4
10
 
5
11
  ```bash
6
- WORK=/tmp/lets-scroll # scratch dir for prompts, sources, frames
12
+ WORK="${TMPDIR:-/tmp}/lets-scroll" # scratch dir (Termux-safe: $TMPDIR, never /tmp)
7
13
  ASSETS=./assets # where the site reads stills (webp) + clips (mp4)
8
14
  mkdir -p "$WORK" "$ASSETS/vid"
9
15
  NAMES="farm kitchen shop delivery plaza finale" # <-- your section ids, in order