mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
509 lines
28 KiB
Markdown
509 lines
28 KiB
Markdown
# Prompt Guide Arc Restructure — Implementation Plan
|
||
|
||
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
|
||
|
||
**Goal:** Restructure the 29-page Prompt Guide from a reference manual into a novice→advanced arc (spec: `plans/prompt-guide-arc.md`) where each level builds on the prior one and ends in a validated capstone film.
|
||
|
||
**Architecture:** Pages keep their slugs (`docs/prompting/*.mdx`) — only `docs.json` grouping, page content framing, and two new pages (`storyboards`, `capstone`) change. Content rewrites are per-level editorial passes with a fixed bridge template. New prompts follow the standing validation protocol (built as written → lint/check → render → embed).
|
||
|
||
**Tech Stack:** Mintlify docs (`docs/`), oxfmt/oxlint, HyperFrames CLI validation builds, S3 render hosting via `scripts/upload-docs-images.sh`.
|
||
|
||
## Global Constraints
|
||
|
||
- All work in worktree `~/src/wt/hyperframes/prompt-guide` on branch `fix/prompt-guide-validation-bugs` (PR #2109). Commit with `/usr/bin/git` (the `rtk` proxy silently no-ops commits). Conventional commits; header ≤ 100 chars.
|
||
- **No prompt ships unverified.** Every NEW prompt printed in the guide must pass the Validation Protocol below before its page is committed. Existing prompts keep their existing 64 embedded renders; do not rewrite a validated prompt's text (rewriting voids its render).
|
||
- **Bridge template** — every chapter page gets both:
|
||
- Entry bridge: first paragraph after the frontmatter opens with what the reader can already do, then what this chapter adds. Pattern: `You can already <prior-level skill>. This chapter adds <this chapter's skill>.` (Adapt the wording per page; keep the two-beat shape.)
|
||
- Exit bridge: final line of the page, italic: `*Next: [<next chapter title>](/prompting/<next-slug>) — <one clause on what it adds>.*` The last chapter of a level points at the first chapter of the next level.
|
||
- Keep page counts out of prose (drift rule). Never say "29 pages" / "30 pages" in any `.mdx`.
|
||
- Embed snippet for renders (copy exactly, swap filename):
|
||
```mdx
|
||
<video
|
||
controls
|
||
muted
|
||
loop
|
||
playsinline
|
||
preload="metadata"
|
||
src="https://static.heygen.ai/hyperframes-oss/docs/images/prompting/<name>.mp4"
|
||
style={{ borderRadius: "0.5rem", marginTop: "0.75rem" }}
|
||
></video>
|
||
```
|
||
- `docs/images/` is gitignored by design — renders go to S3 via `bash scripts/upload-docs-images.sh` (AWS profile `engineering-767398024897`), then verify each URL: `curl -sI <url> | head -1` → `HTTP/2 200`.
|
||
- After editing any file: `bunx oxfmt <files>` then `bunx oxlint <files>`. Markdown/MDX gets oxfmt only.
|
||
- Docs sanity gate (run before every commit that touches `docs/`):
|
||
```bash
|
||
cd ~/src/wt/hyperframes/prompt-guide
|
||
python3 -c "import json; json.load(open('docs/docs.json')); print('docs.json ok')"
|
||
cd docs && npx mintlify broken-links
|
||
```
|
||
- Do not modify `.gitignore`. Do not close or open PRs. Push only in the final task.
|
||
|
||
## Validation Protocol (for every NEW prompt)
|
||
|
||
Used by Tasks 3, 7, 8, 9, 10. The executor dispatches a fresh builder subagent per prompt:
|
||
|
||
1. `mkdir -p ~/src/hyperframes-prompt-examples/guide-v3/<name>`
|
||
2. Dispatch a `general-purpose` subagent with EXACTLY this framing: "You are a HyperFrames builder. Your entire brief is the prompt below, verbatim — do not use any knowledge of why this prompt exists. Work in `~/src/hyperframes-prompt-examples/guide-v3/<name>`. Follow the `/hyperframes` skill routing. The project must pass `npx hyperframes lint` and `npx hyperframes check`, then render an MP4. Report the render path and any prompt ambiguity you had to resolve yourself." + the prompt text.
|
||
3. If the builder reports ambiguity or a gate failure caused by the prompt text: fix the page's prompt, re-run with a fresh subagent. The page ships the text that passed.
|
||
4. Copy the render: `cp <render>.mp4 ~/src/wt/hyperframes/prompt-guide/docs/images/prompting/<name>.mp4`
|
||
5. Upload + verify (see Global Constraints), embed under the prompt with the standard snippet and a one-line italic caption stating it is the unedited render of the prompt above.
|
||
|
||
---
|
||
|
||
### Task 1: Fix the red Format CI check
|
||
|
||
**Files:**
|
||
|
||
- Modify: `plans/prompt-guide-expansion.md` (formatting only)
|
||
|
||
- [ ] **Step 1: Reproduce**
|
||
|
||
```bash
|
||
cd ~/src/wt/hyperframes/prompt-guide && bun run format:check
|
||
```
|
||
|
||
Expected: FAIL listing `plans/prompt-guide-expansion.md`.
|
||
|
||
- [ ] **Step 2: Fix**
|
||
|
||
```bash
|
||
bunx oxfmt plans/prompt-guide-expansion.md
|
||
```
|
||
|
||
- [ ] **Step 3: Verify**
|
||
|
||
```bash
|
||
bun run format:check
|
||
```
|
||
|
||
Expected: exit 0.
|
||
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add plans/prompt-guide-expansion.md
|
||
/usr/bin/git commit -m "chore: format prompt-guide-expansion plan (fixes Format CI)"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 2: Restructure docs.json nav into levels
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/docs.json` (the `Prompt Guide` group only)
|
||
|
||
**Interfaces:**
|
||
|
||
- Produces: the level grouping every later task's pages live in. Slugs unchanged; no new redirects needed (the existing `/guides/prompting` → `/prompting/overview` redirect stays untouched).
|
||
|
||
- [ ] **Step 1: Replace the Prompt Guide group's subgroups**
|
||
|
||
In `docs/docs.json`, find the group `"Prompt Guide"` and replace its `pages` array with:
|
||
|
||
```json
|
||
[
|
||
"prompting/overview",
|
||
{
|
||
"group": "Level 1 — Your first video",
|
||
"pages": [
|
||
"prompting/product-launch",
|
||
"prompting/explainers",
|
||
"prompting/code-and-prs",
|
||
"prompting/captions-and-talking-heads",
|
||
"prompting/music-and-slideshows",
|
||
"prompting/motion-graphics"
|
||
]
|
||
},
|
||
{
|
||
"group": "Level 2 — Control",
|
||
"pages": [
|
||
"prompting/anatomy",
|
||
"prompting/specification-dial",
|
||
"prompting/vocabulary",
|
||
"prompting/visual-specs",
|
||
"prompting/examples"
|
||
]
|
||
},
|
||
{
|
||
"group": "Level 3 — Life",
|
||
"pages": ["prompting/motion", "prompting/transitions"]
|
||
},
|
||
{
|
||
"group": "Level 4 — Substance",
|
||
"pages": [
|
||
"prompting/code-blocks",
|
||
"prompting/data-and-maps",
|
||
"prompting/overlays-and-lower-thirds",
|
||
"prompting/captions-catalog",
|
||
"prompting/generated-artwork",
|
||
"prompting/vfx-and-liquid-glass",
|
||
"prompting/runtimes-and-3d"
|
||
]
|
||
},
|
||
{
|
||
"group": "Level 5 — Voice and sound",
|
||
"pages": ["prompting/media-and-audio"]
|
||
},
|
||
{
|
||
"group": "Level 6 — Scale",
|
||
"pages": [
|
||
"prompting/design-systems",
|
||
"prompting/variables-and-templating",
|
||
"prompting/editing-existing-videos",
|
||
"prompting/iterating",
|
||
"prompting/recreating-references",
|
||
"prompting/rendering-and-output",
|
||
"prompting/remotion-migration"
|
||
]
|
||
},
|
||
{
|
||
"group": "Appendix",
|
||
"pages": ["prompting/rules-and-anti-patterns"]
|
||
}
|
||
]
|
||
```
|
||
|
||
Notes: `prompting/storyboards` is added to Level 6 (before `editing-existing-videos`) in Task 9 when the file exists; `prompting/capstone` is added as a `"Level 7 — Capstone"` group between Level 6 and Appendix in Task 11. Mintlify fails on nav entries whose files don't exist yet — that's why they're deferred.
|
||
|
||
- [ ] **Step 2: Verify**
|
||
|
||
Run the docs sanity gate (Global Constraints). Expected: `docs.json ok`, no broken links.
|
||
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/docs.json
|
||
/usr/bin/git commit -m "docs(prompting): regroup Prompt Guide nav into novice-to-advanced levels"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 3: Level 1 — workflow-ride rewrites (6 pages)
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/product-launch.mdx`, `docs/prompting/explainers.mdx`, `docs/prompting/code-and-prs.mdx`, `docs/prompting/captions-and-talking-heads.mdx`, `docs/prompting/music-and-slideshows.mdx`, `docs/prompting/motion-graphics.mdx`
|
||
|
||
**Interfaces:**
|
||
|
||
- Consumes: nav order from Task 2 (bridge targets follow that order: product-launch → explainers → code-and-prs → captions-and-talking-heads → music-and-slideshows → motion-graphics → anatomy).
|
||
- Produces: L1 framing later levels refer back to ("you rode a workflow; now open the hood").
|
||
|
||
**Editorial contract (each page):**
|
||
|
||
1. Reframe the page intro as a _first win_: one prompt to the workflow gets a finished video; the page's first validated prompt + its existing render move to the top.
|
||
2. Keep every existing validated prompt and embed verbatim (moving them on the page is fine; editing their text is not).
|
||
3. Existing "knobs that matter" material stays but moves after the first-win section, introduced as "what you can steer from the prompt before you've learned any technique."
|
||
4. Apply the bridge template. Entry bridge for `product-launch` (the arc's first chapter) instead states the level premise: you need zero technique to get a first video — one sentence describing your product is enough.
|
||
5. `motion-graphics` exit bridge points to `anatomy` and names the turn: "you've been riding workflows; Level 2 opens the prompt itself."
|
||
|
||
**`code-and-prs` additionally** gains a short "Changelog videos" section: the `changelog-video` skill (landed after the original guide) turns a repo's recent merges into a changelog video. Write one prompt for it and run the Validation Protocol with name `changelog-video` — the builder runs against the public `heygen-com/hyperframes` repo history so the render is publishable.
|
||
|
||
- [ ] **Step 1: Rewrite the 6 pages per the contract**
|
||
- [ ] **Step 2: Validate the new changelog-video prompt** (Validation Protocol, name `changelog-video`; embed render in `code-and-prs.mdx`)
|
||
- [ ] **Step 3: Format + docs sanity gate**
|
||
|
||
```bash
|
||
bunx oxfmt docs/prompting/product-launch.mdx docs/prompting/explainers.mdx docs/prompting/code-and-prs.mdx docs/prompting/captions-and-talking-heads.mdx docs/prompting/music-and-slideshows.mdx docs/prompting/motion-graphics.mdx
|
||
```
|
||
|
||
Then the docs sanity gate.
|
||
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): Level 1 — reframe workflow pages as first-win rides + changelog-video"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 4: Level 2 — Control rewrites (5 pages)
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/anatomy.mdx`, `docs/prompting/specification-dial.mdx`, `docs/prompting/vocabulary.mdx`, `docs/prompting/visual-specs.mdx`, `docs/prompting/examples.mdx`
|
||
|
||
**Editorial contract:**
|
||
|
||
1. `anatomy` entry bridge: "your Level 1 prompts worked because the workflow filled the gaps; the skeleton is how you take that control yourself." Add one short paragraph noting the composition-structure mandate now enforced by the framework (main commit `0aaac7aa3` / PR #2599): compositions follow a required structural shape, so the skeleton isn't style advice — the framework soft-warns when structure drifts. No new prompt needed.
|
||
2. `examples` reframed as the level-end gallery: entry bridge frames the 18 dissections as "read these with your new vocabulary — spot the skeleton parts in each."
|
||
3. Chapter order for bridges: anatomy → specification-dial → vocabulary → visual-specs → examples → motion.
|
||
4. All existing prompts/renders/tables stay verbatim.
|
||
|
||
- [ ] **Step 1: Rewrite the 5 pages per the contract**
|
||
- [ ] **Step 2: Format + docs sanity gate** (`bunx oxfmt` the five files, then the gate)
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): Level 2 — control chapters with bridges + structure mandate note"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 5: Level 3 — Life rewrites (2 pages)
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/motion.mdx`, `docs/prompting/transitions.mdx`
|
||
|
||
**Editorial contract:**
|
||
|
||
1. `motion` entry bridge: "you can specify a frame precisely; this level makes it feel alive." Content (grammar, measured A/B, rule 7 seeded motion) already complete — bridges only.
|
||
2. `transitions` moves from feature-reference framing to "motion between scenes": entry bridge builds on the grammar ("rule 2's camera and rule 3's overlap apply _between_ scenes too"). Existing prompts/renders stay.
|
||
3. Bridge order: motion → transitions → code-blocks.
|
||
|
||
- [ ] **Step 1: Rewrite the 2 pages per the contract**
|
||
- [ ] **Step 2: Format + docs sanity gate**
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): Level 3 — life chapters with bridges"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 6: Level 4 — Substance rewrites (7 pages)
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/code-blocks.mdx`, `docs/prompting/data-and-maps.mdx`, `docs/prompting/overlays-and-lower-thirds.mdx`, `docs/prompting/captions-catalog.mdx`, `docs/prompting/generated-artwork.mdx`, `docs/prompting/vfx-and-liquid-glass.mdx`, `docs/prompting/runtimes-and-3d.mdx`
|
||
|
||
**Editorial contract:**
|
||
|
||
1. Every page reframes from "the X feature" to "add X to what you already have": the entry bridge names a Level 1-3 artifact the capability slots into (e.g. code-blocks → "your PR video from Level 1, now with a diff that types itself").
|
||
2. All existing prompts/renders stay verbatim.
|
||
3. Bridge order: code-blocks → data-and-maps → overlays-and-lower-thirds → captions-catalog → generated-artwork → vfx-and-liquid-glass → runtimes-and-3d → media-and-audio.
|
||
|
||
- [ ] **Step 1: Rewrite the 7 pages per the contract**
|
||
- [ ] **Step 2: Format + docs sanity gate**
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): Level 4 — capability chapters framed as additive"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 7: Level 5 — media-and-audio + the proxy subsystem
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/media-and-audio.mdx`
|
||
- Read for grounding: `git log main --oneline` commits `9ca1e1710`, `9d148d288`, `645880706`, `39b588cbd`, `74b4f1e8c`, `35eff5038`, `e8371a7ac`, `664c39db9`, and `docs/` pages touched by `5f2819b1e`, `8c1b6c515` (the existing proxy docs — link to them rather than duplicating mechanics).
|
||
|
||
**Editorial contract:**
|
||
|
||
1. Entry bridge: "your video moves and reads right; this level gives it a voice" — narration/TTS/BGM material stays.
|
||
2. New section "Bring any footage" covering the proxy subsystem _from the prompter's perspective_: you can now hand the workflow HEVC/HDR/odd-codec footage and preview/play/publish keep working — the framework probes codecs and builds bounded H.264 (and alpha-capable) proxies automatically; renders still use the original; `hyperframes lint` flags hostile codecs at info level; projects can opt out. Link to the concepts/media docs added by `8c1b6c515` for mechanics.
|
||
3. One new validated prompt exercising it: a prompt that builds a short picture-in-picture piece from a provided HEVC clip. Validation Protocol name `proxy-footage`; the builder gets a real HEVC test clip (generate one first: `ffmpeg -f lavfi -i testsrc2=size=1280x720:rate=30 -t 6 -c:v libx265 -tag:v hvc1 ~/src/hyperframes-prompt-examples/guide-v3/proxy-footage/source-hevc.mp4`) and the prompt references `source-hevc.mp4` by relative path.
|
||
|
||
- [ ] **Step 1: Ground against the proxy commits, then rewrite the page**
|
||
- [ ] **Step 2: Validate the proxy-footage prompt** (Validation Protocol; embed render)
|
||
- [ ] **Step 3: Format + docs sanity gate**
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/media-and-audio.mdx
|
||
/usr/bin/git commit -m "docs(prompting): Level 5 — voice, sound, and automatic media proxies"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 8: Level 6 — Scale rewrites (7 pages)
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/design-systems.mdx`, `docs/prompting/variables-and-templating.mdx`, `docs/prompting/editing-existing-videos.mdx`, `docs/prompting/iterating.mdx`, `docs/prompting/recreating-references.mdx`, `docs/prompting/rendering-and-output.mdx`, `docs/prompting/remotion-migration.mdx`
|
||
|
||
**Editorial contract:**
|
||
|
||
1. Level premise (design-systems entry bridge): "everything so far was one scene at a time; this level is about videos as systems — design that persists across scenes, edits that don't regress, output that ships."
|
||
2. `variables-and-templating`: add a correction note — composition variables no longer shadow authored CSS custom properties (main commit `406894061`); verify the page's existing wording against that commit's behavior and fix any sentence it invalidates. Existing default-vs-overridden render pair stays.
|
||
3. `remotion-migration` framed as "bringing an existing Remotion project into everything you now know," last chapter before the capstone level.
|
||
4. Bridge order: design-systems → variables-and-templating → storyboards (added in Task 9) → editing-existing-videos → iterating → recreating-references → rendering-and-output → remotion-migration → capstone (added in Task 11; until then point remotion-migration's exit bridge at rules-and-anti-patterns and fix it in Task 11).
|
||
|
||
- [ ] **Step 1: Verify the variables claim against `git show 406894061`, then rewrite the 7 pages**
|
||
- [ ] **Step 2: Format + docs sanity gate**
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): Level 6 — scale chapters + variables CSS-shadow correction"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 9: New chapter — storyboards
|
||
|
||
**Files:**
|
||
|
||
- Create: `docs/prompting/storyboards.mdx`
|
||
- Modify: `docs/docs.json` (insert `prompting/storyboards` into Level 6 before `editing-existing-videos`), `docs/prompting/variables-and-templating.mdx` (exit bridge now points to storyboards)
|
||
- Source material: `videos/team-vault-explained/STORYBOARD.md` (in-repo), `~/src/videos/hyperframes-infra-proposals/STORYBOARD.md` — mine structure, not content.
|
||
|
||
**Editorial contract:**
|
||
|
||
1. Teach prompting _into_ a storyboard: for multi-scene work you don't prompt scenes, you prompt the plan — arc, per-frame beats, VO pacing — and the workflow builds frames against it.
|
||
2. Document the storyboard vocabulary the internal films prove, as prompt language: narrative arc line, VO-paced reveals ("at t=0 only what the narrator is saying is on screen; each element lands on its spoken cue"), persuasion/beat per frame, a callback (an early motif returning denser late), exactly one breather frame, a per-frame negative list. Do NOT reproduce internal film content — invent neutral examples.
|
||
3. One new validated prompt: a 3-frame mini storyboard piece (hook → substance → landing with callback), ~15s, no narration (keeps the build cheap). Validation Protocol name `storyboard-mini`; embed render.
|
||
4. Bridges: entry from variables-and-templating; exit to editing-existing-videos.
|
||
|
||
- [ ] **Step 1: Write the chapter per the contract**
|
||
- [ ] **Step 2: Validate the storyboard-mini prompt** (Validation Protocol; embed render)
|
||
- [ ] **Step 3: Add to nav, fix neighboring bridges, format + docs sanity gate**
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/storyboards.mdx docs/prompting/variables-and-templating.mdx docs/prompting/editing-existing-videos.mdx docs/docs.json
|
||
/usr/bin/git commit -m "docs(prompting): add storyboards chapter — prompting the plan, not the scenes"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 10: Appendix — rules cheat sheet + new lint rules
|
||
|
||
**Files:**
|
||
|
||
- Modify: `docs/prompting/rules-and-anti-patterns.mdx`; plus one-sentence in-context mentions on `docs/prompting/motion.mdx` (seek-safety) and `docs/prompting/runtimes-and-3d.mdx` (SVG draw-on) where the gotchas bite.
|
||
|
||
**Editorial contract:**
|
||
|
||
1. Reframe as the consolidated cheat sheet: entry bridge says every rule here was taught in context — this page is the lookup table; each rule row links its teaching chapter.
|
||
2. Add the post-guide lint rules, phrased as prompt guidance (what to write / avoid so the build passes first try), each verified against its lint source before writing:
|
||
- `gsap_cold_seek_hidden_fromto_missing_reveal` (#2503) — elements hidden at t=0 need an explicit reveal tween.
|
||
- `gsap_callback_dom_measurement`, `gsap_function_value_hazard`, `gsap_repeat_refresh_relative_value`, `svg_drawon_css_dasharray_conflict`, `svg_measure_before_path_d` (#2611 / `f3d210066`) — seek-order safety and SVG draw-on.
|
||
- `gsap_relative_value_second_writer`, `gsap_timeline_set_initial_hide` (#2612 / `4ad582606`).
|
||
Ground each row: `git show <commit> -- packages/lint/src/rules/gsap.ts` and read the rule's message string; the guide row must match what the linter actually says.
|
||
3. Rows are prompt guidance, not prompts — but any row that prints a runnable example prompt must pass the Validation Protocol (name `lint-<rule>`); rows with phrasing-only guidance need no build.
|
||
|
||
- [ ] **Step 1: Ground each rule against lint source, write the rows + in-context mentions**
|
||
- [ ] **Step 2: Format + docs sanity gate**
|
||
- [ ] **Step 3: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/
|
||
/usr/bin/git commit -m "docs(prompting): appendix cheat sheet + post-guide lint rules as prompt guidance"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 11: Capstone film — build, validate, render
|
||
|
||
**Files:**
|
||
|
||
- Create (outside repo): `~/src/hyperframes-prompt-examples/capstone/` (brief, `frame.md`, `STORYBOARD.md`, compositions, audio, renders)
|
||
- Create (repo, this task): nothing yet — the chapter is Task 12; this task produces the artifacts.
|
||
|
||
**The film (from the spec):** public promo for HyperFrames itself ("write HTML, render video"), ~45-60s, 7 frames, 1920×1080. Required technique checklist and its frame mapping:
|
||
|
||
| Frame | Content | Techniques it must carry |
|
||
| ----- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
|
||
| F1 | Hook — kinetic type on the one-line pitch | L2 skeleton, L3 grammar (staggered overshoot entrances) |
|
||
| F2 | "Write HTML" — a composition types itself | L4 code-blocks (per-character typing beat) |
|
||
| F3 | "It becomes video" — pipeline diagram; **matched-motion transition into F4** (a diagram line becomes the F4 chart axis) | L3 transitions |
|
||
| F4 | Proof — data-viz beat (e.g. render-speed or catalog count-up) | L4 data-and-maps |
|
||
| F5 | Generated-artwork hybrid — one illustration-led beat (generated raster on contrasting solid bg, keyed, code-layer animation on top) | L4 generated-artwork |
|
||
| F6 | Capability montage — quick cuts, continuous camera push across them | L3 camera-as-actor, L1 callbacks to workflows |
|
||
| F7 | Landing lockup — F1 motif returns denser (callback), the film's one breather, CTA `npx skills add heygen-com/hyperframes` | L6 storyboard craft |
|
||
|
||
Production constraints:
|
||
|
||
- `frame.md`: strict two-color system + negative list, per the internal-promo pattern — but pick a palette that is NOT cream/cobalt (do not read as a reuse of the internal films).
|
||
- `STORYBOARD.md` uses the same frontmatter + per-frame field shape as `videos/team-vault-explained/STORYBOARD.md` (format/message/arc/audience/music; per-frame scene/voiceover/duration/transition_in/type/persuasion/beat/blueprint/focal). VO-paced reveals throughout.
|
||
- Narration: TTS via `/media-use` (pick a voice explicitly — pass `--voice`); BGM resolved via `/media-use` at the default bed level (post-#2110 `bgmDefaultVolume`, do not override).
|
||
- Variables: expose the two palette colors + product name as composition variables; render twice — default, and one `--variables` re-skin.
|
||
- The film is built BY a builder subagent from a single long-form prompt (the "capstone prompt") that the guide will print in full — this is the point: the prompt IS the most advanced artifact. Author the capstone prompt first (brief + design system + storyboard direction + technique requirements in prose, per the guide's own anatomy), then run the Validation Protocol with name `capstone`. Iterate the prompt (fresh builder each time) until the render passes review; the shipped chapter prints the exact prompt that produced the shipped render.
|
||
|
||
- [ ] **Step 1: Author the capstone prompt** (long-form; follows the guide's own 6-part anatomy; encodes the table above without naming levels)
|
||
- [ ] **Step 2: Run the Validation Protocol, name `capstone`** — builder must produce: `frame.md`, `STORYBOARD.md`, frames, passing `lint`/`check`, `capstone.mp4`
|
||
- [ ] **Step 3: Re-skin render** — `npx hyperframes render` with `--variables` overriding the palette colors → `capstone-reskin.mp4`
|
||
- [ ] **Step 4: Review gate** — watch both renders; check every row of the technique table is visibly present; if not, revise the prompt and re-run Step 2 with a fresh builder
|
||
- [ ] **Step 5: Upload** — copy `capstone.mp4` + `capstone-reskin.mp4` to `docs/images/prompting/`, run `bash scripts/upload-docs-images.sh`, `curl -sI` both URLs → 200
|
||
|
||
No repo commit in this task (artifacts live outside the repo + on S3).
|
||
|
||
---
|
||
|
||
### Task 12: Capstone chapter + overview rewrite
|
||
|
||
**Files:**
|
||
|
||
- Create: `docs/prompting/capstone.mdx`
|
||
- Modify: `docs/prompting/overview.mdx` (full rewrite), `docs/docs.json` (add `"Level 7 — Capstone"` group with `["prompting/capstone"]` between Level 6 and Appendix), `docs/prompting/remotion-migration.mdx` (exit bridge → capstone)
|
||
|
||
**Editorial contract — `capstone.mdx`:**
|
||
|
||
1. Opens with the embedded `capstone.mp4` render, then: "every technique in this film has a chapter in this guide."
|
||
2. Prints the full capstone prompt verbatim (the one that produced the render), then dissects it: walk brief → design system → storyboard → frames → validation → render, each step linking the chapter that taught it (anatomy, visual-specs, motion, transitions, code-blocks, data-and-maps, generated-artwork, media-and-audio, design-systems, variables-and-templating, storyboards, rendering-and-output).
|
||
3. Shows the `capstone-reskin.mp4` pair with the exact `--variables` invocation used.
|
||
4. Exit bridge points at the Appendix cheat sheet: "keep this open while you build."
|
||
|
||
**Editorial contract — `overview.mdx`:**
|
||
|
||
1. Rewrite as the arc's map: open with the capstone embed and the promise "by the end of this guide you can build this with a prompt"; then the level ladder (one line per level: what you can do after it); then the existing one-time skill setup; then the two prompt shapes + workflow loop condensed.
|
||
2. Existing "best of" example embeds may stay at the bottom.
|
||
|
||
- [ ] **Step 1: Write `capstone.mdx` per the contract**
|
||
- [ ] **Step 2: Rewrite `overview.mdx` per the contract**
|
||
- [ ] **Step 3: Nav + bridges, format + docs sanity gate**
|
||
- [ ] **Step 4: Commit**
|
||
|
||
```bash
|
||
/usr/bin/git add docs/prompting/capstone.mdx docs/prompting/overview.mdx docs/prompting/remotion-migration.mdx docs/docs.json
|
||
/usr/bin/git commit -m "docs(prompting): capstone chapter + overview rewritten as the arc's map"
|
||
```
|
||
|
||
---
|
||
|
||
### Task 13: Final QA + PR update
|
||
|
||
**Files:**
|
||
|
||
- Modify: PR #2109 description (via `gh`), spec `plans/prompt-guide-arc.md` status line.
|
||
|
||
- [ ] **Step 1: Full-guide QA sweep**
|
||
|
||
```bash
|
||
cd ~/src/wt/hyperframes/prompt-guide
|
||
bun run format:check # expect exit 0
|
||
python3 -c "import json; json.load(open('docs/docs.json')); print('ok')"
|
||
cd docs && npx mintlify broken-links # expect none
|
||
# every S3 embed resolves:
|
||
grep -rhoE 'https://static\.heygen\.ai/[^" ]+\.mp4' docs/prompting/ | sort -u | while read u; do
|
||
code=$(curl -s -o /dev/null -w '%{http_code}' -I "$u"); [ "$code" = 200 ] || echo "BROKEN $code $u"
|
||
done
|
||
```
|
||
|
||
Also start `npx mintlify dev --port 3333` in `docs/` and click through the level nav once.
|
||
|
||
- [ ] **Step 2: Bridge-chain check** — read only entry/exit bridges of all chapters in nav order; every exit target matches the next chapter; fix any mismatch.
|
||
|
||
- [ ] **Step 3: Update spec status** — change `plans/prompt-guide-arc.md` line 3 `Status:` to `implemented <today's date>`; commit with the bridge fixes if any:
|
||
|
||
```bash
|
||
/usr/bin/git add -A plans/prompt-guide-arc.md docs/
|
||
/usr/bin/git commit -m "docs(prompting): final QA pass for the guide arc"
|
||
```
|
||
|
||
- [ ] **Step 4: Push + update PR #2109**
|
||
|
||
```bash
|
||
/usr/bin/git push origin fix/prompt-guide-validation-bugs
|
||
gh pr edit 2109 --title "docs: Prompt Guide as a novice-to-capstone arc + text corrections from validation"
|
||
```
|
||
|
||
Rewrite the PR body (via `gh pr edit 2109 --body-file`) to describe: the arc restructure (levels, full dissolve, bridges), the capstone film + its validated prompt, new topics covered (proxies, new lint rules, changelog-video, structure mandate, variables/CSS fix), the new validation builds, and keep the existing "text corrections" section. Keep the existing footer convention.
|
||
|
||
- [ ] **Step 5: Verify CI green**
|
||
|
||
```bash
|
||
gh pr checks 2109 --watch
|
||
```
|
||
|
||
Expected: Format passes (Task 1); docs-only lanes skip as before.
|