[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MNJTS8XB87ZAB6GBT0ENHA":3,"skill-same:01M6MNJTS8XB87ZAB6GBT0ENHA":176},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6MNJTS8XB87ZAB6GBT0ENHA","threejs-animatic",null,"Build a three.js animatic (\"animatronic\", 3D previz, blockout) of a multi-shot video: every storyboard shot becomes a schematic 3D scene drawn in code, with jointed mannequins and poses, master sets in real metres and props, a real camera per shot (START\u002FEND keys, lens in mm, move and ease), timed to the music or voiceover, reviewed in the browser with a top-down set map of every camera frustum, approved, exported as a camera plan, rendered to MP4 frame by frame (headless Chrome or HyperFrames), then used as the @video1 reference for Seedance 2.5 video-to-video on varg so the generated shots keep the approved camera and blocking. Use when someone asks for a three.js animatic or animatronic, a 3D previz or blockout, camera blocking, a camera plan, shot sizes and lenses, a grey-box of a storyboard, previz to Seedance, a reference video for video-to-video, or a look blockout (reference pictures as textures on the blockout, stills for look approval). Includes a working starter project (no npm).","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1566,"MIT","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"threejs animatic","threejs","voiceover","when","exported","headless","top","move","lens","end","project","map","MCP","generated","plan","3D","Video","SET","browser","code","google","2026-11-10 10:12:30",false,"---\nname: threejs-animatic\ndescription: >-\n  Build a three.js animatic (\"animatronic\", 3D previz, blockout) of a multi-shot video: every storyboard shot\n  becomes a schematic 3D scene drawn in code, with jointed mannequins and poses, master sets in real metres and\n  props, a real camera per shot (START\u002FEND keys, lens in mm, move and ease), timed to the music or voiceover,\n  reviewed in the browser with a top-down set map of every camera frustum, approved, exported as a camera plan,\n  rendered to MP4 frame by frame (headless Chrome or HyperFrames), then used as the @video1 reference for\n  Seedance 2.5 video-to-video on varg so the generated shots keep the approved camera and blocking. Use when\n  someone asks for a three.js animatic or animatronic, a 3D previz or blockout, camera blocking, a camera plan,\n  shot sizes and lenses, a grey-box of a storyboard, previz to Seedance, a reference video for\n  video-to-video, or a look blockout (reference pictures as textures on the blockout, stills for look approval).\n  Includes a working starter project (no npm).\nlicense: MIT\nmetadata:\n  author: vargHQ\n  version: \"1.0.0\"\ncompatibility: >-\n  Starter: a browser, Bun, Google Chrome or Chromium, ffmpeg; three.js loads from jsDelivr (pinned). HyperFrames\n  path: npx hyperframes. Generation: the varg MCP (https:\u002F\u002Fmcp.varg.ai\u002Fmcp) and credits on the varg account.\n---\n\n# three.js animatic: approve camera and blocking in code, then let Seedance redraw it\n\nAI video models redraw the world on every call: cameras wander, rooms change layout between shots, a person ends\nup as big as their car. A three.js animatic fixes camera, geography, scale and timing **for free**, before the\npaid step. It is a grey-box: it approves where things are and how the camera sees them, never the look. The\napproved clip then goes to Seedance 2.5 as `@video1`, and the generated shots keep that camera and blocking.\n\nDistilled from real production sessions: a 36-shot vertical music video (previz → 13 Seedance runs), product and\nlaunch films, and a deterministic three.js film rendered through HyperFrames.\n\n## When to use it, and which tool\n\n| project | do |\n|---|---|\n| 1–3 shots, simple camera | skip the animatic: a still per shot, approve, then image-to-video |\n| 3–15 shots, one or two places | **this skill + `starter\u002F`**: hand-key the cameras, review, render, pack |\n| a storyboard of 15+ shots, songs, many locations | this skill for the craft, plus the `varg-previz` skill for its full app: auto cameras from storyboard words (\"MCU, 3\u002F4 left, push in\"), `pack.json` + board builder, story structure and sheet guides (in this repo: [`varg-previz`](..\u002Fvarg-previz\u002F)) |\n| the animatic itself is the film (3D product shot, explainer) | this skill, render path B (HyperFrames) with HTML text on top, plus the optional look blockout |\n| the look must be approved before paid generation | the optional look blockout (below): reference pictures on the grey set, stills only |\n\n## Quick start\n\n```bash\ncp -r \u003Cthis skill>\u002Fstarter my-film\u002Fpreviz && cd my-film\u002Fpreviz\nbun serve.ts                          # http:\u002F\u002Flocalhost:8777\u002F  review UI: shot view, set map, timeline, panel\nbun tools\u002Fcheck.ts                    # headless: UI screenshot, frames per shot, contact sheet, seek-safety test\nbun tools\u002Fcapture.ts                  # renders\u002Fanimatic.mp4, frame-exact, 24 fps\n```\n\nThe demo is generic: two mannequins at a cafe table, a drone flies in and lands; 3 shots, 10 s, 16:9, 120 BPM.\nReplace `js\u002Fconfig.js` (format, bpm), `js\u002Fsets.js` (the place), `js\u002Fshots.js` (shots + blocking). The rest is the\nengine. `starter\u002FREADME.md` lists every key and file.\n\n## The workflow\n\n1. **Brief.** Write the director's words verbatim, dated, in `brief.md`. Lock format (aspect, length, fps),\n   music or VO, BPM. Every later note gets applied to brief, shot list and animatic in the same pass.\n2. **Shot list.** One entry per shot: `id`, `start`\u002F`end` (cuts on bar lines when there is music; the hook in the\n   first 2–3 s), `picture` (what we see), `action` (what happens, written for the video model), camera words,\n   `subjects` to check. In the starter this is `SHOTS` in `js\u002Fshots.js`; long projects keep a\n   `storyboard.json`.\n3. **Master sets.** One set per location, built from primitives in real metres from one master plate, with every\n   story object named in `S.o`. → `references\u002Fsets-and-blocking.md`\n4. **Mannequin blocking.** Jointed mannequins posed from a pose library, blended by time ramps; the action is\n   blocked ONCE in world time (`BLOCKING(S, T)`), and every shot is only a camera on it.\n   → `references\u002Fmannequin-rig.md`\n5. **Cameras.** Per shot a START and END key (position, look-at target on the subject, lens, roll), an ease and a\n   path (`line`, or `arc` for orbits). Key them in code, then fix them by eye in the UI (`1`\u002F`2`, drag, write).\n   → `references\u002Fcamera-language.md`\n6. **Review.** Shot view + top-down set map with every START\u002FEND frustum + automatic warnings (out of frame,\n   on the edge, blocked, camera inside geometry). Run `bun tools\u002Fcheck.ts` and LOOK at `checks\u002Fsheet.png`\n   (START, middle, last frame before each cut). Do not report a shot as fine without having seen it.\n7. **Approve.** Mark each shot approved \u002F needs a fix with a note, `⌘S`. If the direction is still open, approve\n   stills first (`capture.ts --stills`) on a board, animate after.\n8. **Camera plan.** \"export plan\" writes `camera_plan.md` (size, angle, lens, move, positions, status, notes) and\n   `camera_plan.json` for prompts and tools.\n9. **Render the MP4.** Path A: `bun tools\u002Fcapture.ts` (headless Chrome over CDP, frame i = t i\u002Ffps, ffmpeg).\n   Path B: `bun tools\u002Fmake_hf.ts` → `npx hyperframes render hf` when the animatic needs HTML text, audio or\n   Studio edits. Both call the same `film.pose(t)`. → `references\u002Fseek-safe-rendering.md`\n10. **Seedance pack.** Group shots into runs (one location, consecutive shots, 4–30 s), render each run as a\n    greyscale clip with `--shots … --grey`, pick image references for exactly what is in frame, write the prompt.\n    → `references\u002Fseedance-v2v-pack.md`\n11. **Generate on varg.** Upload, `estimate_cost`, a yes from the person paying, ONE run first, then the batch.\n    QA every output against its `@video1`, cut it back onto the timeline with the run's placement file.\n\nSpend nothing before step 11 except cheap stills. Steps 1–9 are free, and notes cost least there.\n\n## Optional: look blockout (separate from the grey export)\n\nThe grey-box approves camera and blocking; a look blockout approves the look on the same set, for free. Reference\npictures and generated matte paintings go onto the grey geometry as textures (backgrounds, ground, a few hero\nsurfaces) with `js\u002Flook.js`; geometry, cameras and blocking stay code. Render one still per shot\n(`bun tools\u002Fcapture.ts --look --stills`), put each next to its reference, list the gaps, fix one area at a time,\nup to 3 rounds, then the person approves the stills. A first version that \"looks like a toy\" gets a detail pass\n(textures, light matching the reference, small props for scale).\n→ `references\u002Flook-blockout.md`\n\n- **Use it** when the animatic itself is the final video (code-rendered), or to approve the look before paid\n  generation. Turn it on only after camera and blocking are approved.\n- **Never feed a textured render as the greyscale `@video1`** unless that is deliberate. The v2v reference stays\n  `capture.ts --grey` without `--look`; the look reaches Seedance through image references and the `Look:` line.\n- Off by default: without `?look=1` \u002F `--look` the review UI and every export are the plain grey film.\n\n## Camera cheat sheet\n\nSize = frame height at the look-at target, `2·d·tan(vFOV\u002F2)`:\n\n| ECU | CU | MCU | MS | MLS | FS | WS | EWS |\n|---|---|---|---|---|---|---|---|\n| \u003C 0.2 m | \u003C 0.4 m | \u003C 0.7 m | \u003C 1.1 m | \u003C 1.5 m | \u003C 2.4 m | \u003C 8 m | ≥ 8 m |\n\nFor objects divide by `height \u002F 1.8` (a 0.3 m bottle: 0.17). Angle from pitch: \u003C −60° top, −60…−15° high,\n±15° eye level, 15…60° low, > 60° worm's eye; roll > 5° dutch.\n\nLens (full-frame equivalent, 36 mm on the long side) → three.js vertical FOV:\n\n| lens | 18 | 24 | 35 | 50 | 65 | 85 | 135 |\n|---|---|---|---|---|---|---|---|\n| 16:9 vFOV | 58.7° | 45.7° | 32.3° | 22.9° | 17.7° | 13.6° | 8.6° |\n| 9:16 vFOV | 90.0° | 73.7° | 54.4° | 39.6° | 31.0° | 23.9° | 15.2° |\n\nMoves as keys: push in \u002F pull out = `p` along the view, same `t`; zoom = `fov` only; truck = `p` and `t`\nsideways; crane = `p.y`; pan\u002Ftilt = `t` only; orbit = `p` around a fixed `t` with path `arc`; whip = `whip` ease;\nimpact = `shake: [s]`. One move per shot.\n\nGrammar: keep all cameras of a dialogue on one side of the 180° line (check the map); match eyelines; change angle\nby ≥ 30° or one size between consecutive shots of a subject; cut on action or on the beat; vary the coverage.\nNarrow frames: horizontal half-FOV = `atan(tan(vFOV\u002F2)·W\u002FH)`; at 9:16 and vFOV 55° that is 16°.\n\n## Lessons and gotchas (from real sessions)\n\n**Building**\n- One location = one master set = one master plate. Wides and close-ups share it, or layouts and faces drift.\n- Real metres and a 1.8 m mannequin beside every vehicle, product or creature. Models otherwise draw a person as\n  big as their ship. Judge shot size against the main subject (a ship by its length, not by a person).\n- Mannequins need real limbs, a head with a nose, and feet. Capsules come back as logs or bollards.\n- Separate characters by luminance (light top vs dark top): the Seedance reference is greyscale.\n- Keep poses clean and props in hands rare. Seedance copies poses literally: arms tangled around a helmet and a\n  card in a fist both came back as artefacts. Simplify in the previz, say the detail in the prompt.\n- Light every set with a hemisphere fill plus one key. A one-light mesh facing away renders as a black cutout; a\n  dark creature against black space vanished until it got a rim light.\n- No text, noise, TV static or glitch walls in the previz: text comes back garbled, static comes back as mush.\n- Block action once in world time; per-shot cheats only where the wide cannot see them.\n\n**Reviewing**\n- Look at every frame. In one 36-shot pass the automatic and visual checks found: a camera inside a bulkhead\n  (the shot showed only wall), a headrest hiding the subject, a head 33° below the axis with a 30° half-FOV (out of\n  frame in 9:16), a drone flying straight into the lens, a glowing prop covering the frame, a wide that lost both\n  subjects. The top-down frustum map shows most of these at a glance.\n- Auto cameras and first guesses are starting points: expect to fix about a third of them by eye.\n- Previz is where coverage variety is decided: all-frontal medium shots were the main review complaint once.\n- Story notes are cheap here and expensive later (\"the reveal must be more epic\", \"too long a pause between\n  scenes\", \"make the weapon readable\"): re-block and re-time in the animatic, not in generation.\n- Record notes verbatim with dates; apply each one everywhere in the same pass.\n\n**Rendering**\n- What is on screen must be a pure function of t: seeded random, no clocks, no state between frames, speeds\n  integrated in closed form. HyperFrames renders frames in parallel workers out of order.\n  `tools\u002Fcheck.ts` proves it by comparing pixels across render orders.\n- Render frame by frame (`capture.ts` or HyperFrames), never by screen recording.\n- Headless Chrome: `--headless=new --use-angle=swiftshader --enable-unsafe-swiftshader`; a plain `--screenshot`\n  also needs `--virtual-time-budget=8000` or it captures before the first WebGL frame.\n- HyperFrames + three.js: `data-duration` on the root is required; pin `three` (and `three\u002Faddons\u002F`) in the import\n  map; heavy setup goes on `window.__hf.buildReady`; check the last frame before each cut.\n- Verify the tail of a padded run clip: the blocking keeps going while the camera holds, and later action can\n  walk into frame.\n- Review-UI bugs met for real: a body state class equal to a component class hid the whole page (prefix state\n  classes); keys before the first frame had no current shot (select it at init); a server without Range support\n  could not seek audio (fetch it into a blob).\n\n**Seedance video-to-video**\n- Every run needs an image reference for every character, product and place in frame; without one, the\n  mannequin came back as a real \"toy\" person.\n- Send `@video1` greyscale and say \"copy only camera, cuts and blocking; the result must not look like @video1\".\n  One colour previz came back unchanged, as the output.\n- References only for what is in frame: crop sheets; no exterior stills for interiors; no stale stills.\n- References under 300 px wide were rejected: pad crops.\n- Output framing is looser than the previz: frame one size tighter.\n- Times in prompts are absolute from the clip start. Look line = style only; light per run.\n- Runs: one location, consecutive shots, whole seconds 4–30; don't split a continuous scene into tiny runs.\n- Image-edit stills for plates and key frames from the blockout render as the FIRST file (\"keep camera and\n  geometry exactly; grey blocks = …\"); an environment image alone still drifted per camera.\n- Estimate before spending, quote it as the ceiling, one run first, never resubmit a running job.\n- QA every output against its `@video1` (stacked frames), fix small artefacts in the edit, regenerate only what\n  the edit cannot fix.\n\n## Files\n\n| path | what |\n|---|---|\n| `references\u002Fcamera-language.md` | sizes, angles, lens table, moves as keys, coverage rules, the narrow frame, camera words in prompts |\n| `references\u002Fmannequin-rig.md` | joint hierarchy and sizes, sign conventions, pose layers, walk cycle, props, readability for AI |\n| `references\u002Fsets-and-blocking.md` | master sets from plates, lighting, world-time blocking, cheats, labels, the set map |\n| `references\u002Fseek-safe-rendering.md` | the determinism contract, CDP capture, HyperFrames path, troubleshooting |\n| `references\u002Fseedance-v2v-pack.md` | runs, the greyscale clip, references, a generic prompt, the `call_tool` request, QA |\n| `references\u002Flook-blockout.md` | optional look pass: textures on the grey set, still vs reference for 3 rounds, detail pass, when not to use it |\n| `starter\u002F` | the working project: review UI, set map, camera editor, save\u002Fexport, checks, MP4\u002Fstills capture, HyperFrames builder, optional look mode (`js\u002Flook.js`) |\n\n## Related skills\n\n`video-animate` (what to do once the animatic is approved: code or AI, which model, cheap pass, takes, sound, plates for motion design),\n`varg-previz` (full previz app, auto cameras, pack builder), `varg-ai` (models, prices, uploads, jobs),\n`varg-video-prompting` (prompting Seedance and other models), `varg-mockups` (still boards before animation),\n`varg-consistent-characters` (character and location sheets), `hyperframes` and its three.js adapter (HTML → MP4,\ntext over the animatic).\n","# three.js animatic: approve camera and blocking in code, then let Seedance redraw it\n\nAI video models redraw the world on every call: cameras wander, rooms change layout between shots, a person ends\nup as big as their car. A three.js animatic fixes camera, geography, scale and timing **for free**, before the\npaid step. It is a grey-box: it approves where things are and how the camera sees them, never the look. The\napproved clip then goes to Seedance 2.5 as `@video1`, and the generated shots keep that camera and blocking.\n\nDistilled from real production sessions: a 36-shot vertical music video (previz → 13 Seedance runs), product and\nlaunch films, and a deterministic three.js film rendered through HyperFrames.\n\n## When to use it, and which tool\n\n| project | do |\n|---|---|\n| 1–3 shots, simple camera | skip the animatic: a still per shot, approve, then image-to-video |\n| 3–15 shots, one or two places | **this skill + `starter\u002F`**: hand-key the cameras, review, render, pack |\n| a storyboard of 15+ shots, songs, many locations | this skill for the craft, plus the `varg-previz` skill for its full app: auto cameras from storyboard words (\"MCU, 3\u002F4 left, push in\"), `pack.json` + board builder, story structure and sheet guides (in this repo: [`varg-previz`](..\u002Fvarg-previz\u002F)) |\n| the animatic itself is the film (3D product shot, explainer) | this skill, render path B (HyperFrames) with HTML text on top, plus the optional look blockout |\n| the look must be approved before paid generation | the optional look blockout (below): reference pictures on the grey set, stills only |\n\n## Quick start\n\n```bash\ncp -r \u003Cthis skill>\u002Fstarter my-film\u002Fpreviz && cd my-film\u002Fpreviz\nbun serve.ts                          # http:\u002F\u002Flocalhost:8777\u002F  review UI: shot view, set map, timeline, panel\nbun tools\u002Fcheck.ts                    # headless: UI screenshot, frames per shot, contact sheet, seek-safety test\nbun tools\u002Fcapture.ts                  # renders\u002Fanimatic.mp4, frame-exact, 24 fps\n```\n\nThe demo is generic: two mannequins at a cafe table, a drone flies in and lands; 3 shots, 10 s, 16:9, 120 BPM.\nReplace `js\u002Fconfig.js` (format, bpm), `js\u002Fsets.js` (the place), `js\u002Fshots.js` (shots + blocking). The rest is the\nengine. `starter\u002FREADME.md` lists every key and file.\n\n## The workflow\n\n1. **Brief.** Write the director's words verbatim, dated, in `brief.md`. Lock format (aspect, length, fps),\n   music or VO, BPM. Every later note gets applied to brief, shot list and animatic in the same pass.\n2. **Shot list.** One entry per shot: `id`, `start`\u002F`end` (cuts on bar lines when there is music; the hook in the\n   first 2–3 s), `picture` (what we see), `action` (what happens, written for the video model), camera words,\n   `subjects` to check. In the starter this is `SHOTS` in `js\u002Fshots.js`; long projects keep a\n   `storyboard.json`.\n3. **Master sets.** One set per location, built from primitives in real metres from one master plate, with every\n   story object named in `S.o`. → `references\u002Fsets-and-blocking.md`\n4. **Mannequin blocking.** Jointed mannequins posed from a pose library, blended by time ramps; the action is\n   blocked ONCE in world time (`BLOCKING(S, T)`), and every shot is only a camera on it.\n   → `references\u002Fmannequin-rig.md`\n5. **Cameras.** Per shot a START and END key (position, look-at target on the subject, lens, roll), an ease and a\n   path (`line`, or `arc` for orbits). Key them in code, then fix them by eye in the UI (`1`\u002F`2`, drag, write).\n   → `references\u002Fcamera-language.md`\n6. **Review.** Shot view + top-down set map with every START\u002FEND frustum + automatic warnings (out of frame,\n   on the edge, blocked, camera inside geometry). Run `bun tools\u002Fcheck.ts` and LOOK at `checks\u002Fsheet.png`\n   (START, middle, last frame before each cut). Do not report a shot as fine without having seen it.\n7. **Approve.** Mark each shot approved \u002F needs a fix with a note, `⌘S`. If the direction is still open, approve\n   stills first (`capture.ts --stills`) on a board, animate after.\n8. **Camera plan.** \"export plan\" writes `camera_plan.md` (size, angle, lens, move, positions, status, notes) and\n   `camera_plan.json` for prompts and tools.\n9. **Render the MP4.** Path A: `bun tools\u002Fcapture.ts` (headless Chrome over CDP, frame i = t i\u002Ffps, ffmpeg).\n   Path B: `bun tools\u002Fmake_hf.ts` → `npx hyperframes render hf` when the animatic needs HTML text, audio or\n   Studio edits. Both call the same `film.pose(t)`. → `references\u002Fseek-safe-rendering.md`\n10. **Seedance pack.** Group shots into runs (one location, consecutive shots, 4–30 s), render each run as a\n    greyscale clip with `--shots … --grey`, pick image references for exactly what is in frame, write the prompt.\n    → `references\u002Fseedance-v2v-pack.md`\n11. **Generate on varg.** Upload, `estimate_cost`, a yes from the person paying, ONE run first, then the batch.\n    QA every output against its `@video1`, cut it back onto the timeline with the run's placement file.\n\nSpend nothing before step 11 except cheap stills. Steps 1–9 are free, and notes cost least there.\n\n## Optional: look blockout (separate from the grey export)\n\nThe grey-box approves camera and blocking; a look blockout approves the look on the same set, for free. Reference\npictures and generated matte paintings go onto the grey geometry as textures (backgrounds, ground, a few hero\nsurfaces) with `js\u002Flook.js`; geometry, cameras and blocking stay code. Render one still per shot\n(`bun tools\u002Fcapture.ts --look --stills`), put each next to its reference, list the gaps, fix one area at a time,\nup to 3 rounds, then the person approves the stills. A first version that \"looks like a toy\" gets a detail pass\n(textures, light matching the reference, small props for scale).\n→ `references\u002Flook-blockout.md`\n\n- **Use it** when the animatic itself is the final video (code-rendered), or to approve the look before paid\n  generation. Turn it on only after camera and blocking are approved.\n- **Never feed a textured render as the greyscale `@video1`** unless that is deliberate. The v2v reference stays\n  `capture.ts --grey` without `--look`; the look reaches Seedance through image references and the `Look:` line.\n- Off by default: without `?look=1` \u002F `--look` the review UI and every export are the plain grey film.\n\n## Camera cheat sheet\n\nSize = frame height at the look-at target, `2·d·tan(vFOV\u002F2)`:\n\n| ECU | CU | MCU | MS | MLS | FS | WS | EWS |\n|---|---|---|---|---|---|---|---|\n| \u003C 0.2 m | \u003C 0.4 m | \u003C 0.7 m | \u003C 1.1 m | \u003C 1.5 m | \u003C 2.4 m | \u003C 8 m | ≥ 8 m |\n\nFor objects divide by `height \u002F 1.8` (a 0.3 m bottle: 0.17). Angle from pitch: \u003C −60° top, −60…−15° high,\n±15° eye level, 15…60° low, > 60° worm's eye; roll > 5° dutch.\n\nLens (full-frame equivalent, 36 mm on the long side) → three.js vertical FOV:\n\n| lens | 18 | 24 | 35 | 50 | 65 | 85 | 135 |\n|---|---|---|---|---|---|---|---|\n| 16:9 vFOV | 58.7° | 45.7° | 32.3° | 22.9° | 17.7° | 13.6° | 8.6° |\n| 9:16 vFOV | 90.0° | 73.7° | 54.4° | 39.6° | 31.0° | 23.9° | 15.2° |\n\nMoves as keys: push in \u002F pull out = `p` along the view, same `t`; zoom = `fov` only; truck = `p` and `t`\nsideways; crane = `p.y`; pan\u002Ftilt = `t` only; orbit = `p` around a fixed `t` with path `arc`; whip = `whip` ease;\nimpact = `shake: [s]`. One move per shot.\n\nGrammar: keep all cameras of a dialogue on one side of the 180° line (check the map); match eyelines; change angle\nby ≥ 30° or one size between consecutive shots of a subject; cut on action or on the beat; vary the coverage.\nNarrow frames: horizontal half-FOV = `atan(tan(vFOV\u002F2)·W\u002FH)`; at 9:16 and vFOV 55° that is 16°.\n\n## Lessons and gotchas (from real sessions)\n\n**Building**\n- One location = one master set = one master plate. Wides and close-ups share it, or layouts and faces drift.\n- Real metres and a 1.8 m mannequin beside every vehicle, product or creature. Models otherwise draw a person as\n  big as their ship. Judge shot size against the main subject (a ship by its length, not by a person).\n- Mannequins need real limbs, a head with a nose, and feet. Capsules come back as logs or bollards.\n- Separate characters by luminance (light top vs dark top): the Seedance reference is greyscale.\n- Keep poses clean and props in hands rare. Seedance copies poses literally: arms tangled around a helmet and a\n  card in a fist both came back as artefacts. Simplify in the previz, say the detail in the prompt.\n- Light every set with a hemisphere fill plus one key. A one-light mesh facing away renders as a black cutout; a\n  dark creature against black space vanished until it got a rim light.\n- No text, noise, TV static or glitch walls in the previz: text comes back garbled, static comes back as mush.\n- Block action once in world time; per-shot cheats only where the wide cannot see them.\n\n**Reviewing**\n- Look at every frame. In one 36-shot pass the automatic and visual checks found: a camera inside a bulkhead\n  (the shot showed only wall), a headrest hiding the subject, a head 33° below the axis with a 30° half-FOV (out of\n  frame in 9:16), a drone flying straight into the lens, a glowing prop covering the frame, a wide that lost both\n  subjects. The top-down frustum map shows most of these at a glance.\n- Auto cameras and first guesses are starting points: expect to fix about a third of them by eye.\n- Previz is where coverage variety is decided: all-frontal medium shots were the main review complaint once.\n- Story notes are cheap here and expensive later (\"the reveal must be more epic\", \"too long a pause between\n  scenes\", \"make the weapon readable\"): re-block and re-time in the animatic, not in generation.\n- Record notes verbatim with dates; apply each one everywhere in the same pass.\n\n**Rendering**\n- What is on screen must be a pure function of t: seeded random, no clocks, no state between frames, speeds\n  integrated in closed form. HyperFrames renders frames in parallel workers out of order.\n  `tools\u002Fcheck.ts` proves it by comparing pixels across render orders.\n- Render frame by frame (`capture.ts` or HyperFrames), never by screen recording.\n- Headless Chrome: `--headless=new --use-angle=swiftshader --enable-unsafe-swiftshader`; a plain `--screenshot`\n  also needs `--virtual-time-budget=8000` or it captures before the first WebGL frame.\n- HyperFrames + three.js: `data-duration` on the root is required; pin `three` (and `three\u002Faddons\u002F`) in the import\n  map; heavy setup goes on `window.__hf.buildReady`; check the last frame before each cut.\n- Verify the tail of a padded run clip: the blocking keeps going while the camera holds, and later action can\n  walk into frame.\n- Review-UI bugs met for real: a body state class equal to a component class hid the whole page (prefix state\n  classes); keys before the first frame had no current shot (select it at init); a server without Range support\n  could not seek audio (fetch it into a blob).\n\n**Seedance video-to-video**\n- Every run needs an image reference for every character, product and place in frame; without one, the\n  mannequin came back as a real \"toy\" person.\n- Send `@video1` greyscale and say \"copy only camera, cuts and blocking; the result must not look like @video1\".\n  One colour previz came back unchanged, as the output.\n- References only for what is in frame: crop sheets; no exterior stills for interiors; no stale stills.\n- References under 300 px wide were rejected: pad crops.\n- Output framing is looser than the previz: frame one size tighter.\n- Times in prompts are absolute from the clip start. Look line = style only; light per run.\n- Runs: one location, consecutive shots, whole seconds 4–30; don't split a continuous scene into tiny runs.\n- Image-edit stills for plates and key frames from the blockout render as the FIRST file (\"keep camera and\n  geometry exactly; grey blocks = …\"); an environment image alone still drifted per camera.\n- Estimate before spending, quote it as the ceiling, one run first, never resubmit a running job.\n- QA every output against its `@video1` (stacked frames), fix small artefacts in the edit, regenerate only what\n  the edit cannot fix.\n\n## Files\n\n| path | what |\n|---|---|\n| `references\u002Fcamera-language.md` | sizes, angles, lens table, moves as keys, coverage rules, the narrow frame, camera words in prompts |\n| `references\u002Fmannequin-rig.md` | joint hierarchy and sizes, sign conventions, pose layers, walk cycle, props, readability for AI |\n| `references\u002Fsets-and-blocking.md` | master sets from plates, lighting, world-time blocking, cheats, labels, the set map |\n| `references\u002Fseek-safe-rendering.md` | the determinism contract, CDP capture, HyperFrames path, troubleshooting |\n| `references\u002Fseedance-v2v-pack.md` | runs, the greyscale clip, references, a generic prompt, the `call_tool` request, QA |\n| `references\u002Flook-blockout.md` | optional look pass: textures on the grey set, still vs reference for 3 rounds, detail pass, when not to use it |\n| `starter\u002F` | the working project: review UI, set map, camera editor, save\u002Fexport, checks, MP4\u002Fstills capture, HyperFrames builder, optional look mode (`js\u002Flook.js`) |\n\n## Related skills\n\n`video-animate` (what to do once the animatic is approved: code or AI, which model, cheap pass, takes, sound, plates for motion design),\n`varg-previz` (full previz app, auto cameras, pack builder), `varg-ai` (models, prices, uploads, jobs),\n`varg-video-prompting` (prompting Seedance and other models), `varg-mockups` (still boards before animation),\n`varg-consistent-characters` (character and location sheets), `hyperframes` and its three.js adapter (HTML → MP4,\ntext over the animatic).\n",{"name":5,"license":15,"metadata":50,"description":7,"compatibility":53},{"author":51,"version":52},"vargHQ","1.0.0","Starter: a browser, Bun, Google Chrome or Chromium, ffmpeg; three.js loads from jsDelivr (pinned). HyperFrames path: npx hyperframes. Generation: the varg MCP (https:\u002F\u002Fmcp.varg.ai\u002Fmcp) and credits on the varg account.","main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic",483,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-13 02:16:32",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill threejs-animatic",{"tool":70,"command":71},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill threejs-animatic",{"tool":73,"command":74},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill threejs-animatic","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002FSKILL.md",true,[78,84,88,92,96,100,104,110,114,118,124,128,132,136,140,144,148,152,156,160,164,168,172],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fcamera-language.md","REFERENCE","参考文档",7356,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Fcamera-language.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Flook-blockout.md",8482,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Flook-blockout.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fmannequin-rig.md",5303,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Fmannequin-rig.md",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fseedance-v2v-pack.md",9177,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Fseedance-v2v-pack.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fseek-safe-rendering.md",7938,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Fseek-safe-rendering.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fsets-and-blocking.md",5405,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Freferences\u002Fsets-and-blocking.md",{"path":105,"resourceType":106,"resourceTypeDesc":107,"sizeBytes":108,"sourceHtmlUrl":109},"starter\u002F.gitignore","OTHER","其他",49,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002F.gitignore",{"path":111,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":112,"sourceHtmlUrl":113},"starter\u002Fdata\u002Fedits.json",124,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fdata\u002Fedits.json",{"path":115,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":116,"sourceHtmlUrl":117},"starter\u002Findex.html",11190,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Findex.html",{"path":119,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":122,"sourceHtmlUrl":123},"starter\u002Fjs\u002Fcamera.js","SCRIPT","脚本",10376,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fcamera.js",{"path":125,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":126,"sourceHtmlUrl":127},"starter\u002Fjs\u002Fconfig.js",590,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fconfig.js",{"path":129,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":130,"sourceHtmlUrl":131},"starter\u002Fjs\u002Ffilm.js",4033,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Ffilm.js",{"path":133,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":134,"sourceHtmlUrl":135},"starter\u002Fjs\u002Flook.js",3522,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Flook.js",{"path":137,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":138,"sourceHtmlUrl":139},"starter\u002Fjs\u002Fmain.js",23831,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fmain.js",{"path":141,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":142,"sourceHtmlUrl":143},"starter\u002Fjs\u002Fprops.js",10208,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fprops.js",{"path":145,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":146,"sourceHtmlUrl":147},"starter\u002Fjs\u002Fsets.js",4638,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fsets.js",{"path":149,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":150,"sourceHtmlUrl":151},"starter\u002Fjs\u002Fshots.js",5450,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fjs\u002Fshots.js",{"path":153,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":154,"sourceHtmlUrl":155},"starter\u002FREADME.md",4661,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002FREADME.md",{"path":157,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":158,"sourceHtmlUrl":159},"starter\u002Fserve.ts",2554,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Fserve.ts",{"path":161,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":162,"sourceHtmlUrl":163},"starter\u002Ftools\u002Fcapture.ts",5137,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Ftools\u002Fcapture.ts",{"path":165,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":166,"sourceHtmlUrl":167},"starter\u002Ftools\u002Fcdp.ts",5611,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Ftools\u002Fcdp.ts",{"path":169,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":170,"sourceHtmlUrl":171},"starter\u002Ftools\u002Fcheck.ts",3369,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Ftools\u002Fcheck.ts",{"path":173,"resourceType":120,"resourceTypeDesc":121,"sizeBytes":174,"sourceHtmlUrl":175},"starter\u002Ftools\u002Fmake_hf.ts",3728,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FvargHQ\u002Fskills\u002Fthreejs-animatic\u002Fstarter\u002Ftools\u002Fmake_hf.ts",[177,186,193,200,226,249],{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":184,"publishedAt":185},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":192,"publishedAt":185},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":197,"categories":198,"keywords":199,"publishedAt":185},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":45},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[207,208,209,210,211,212,213,214,215,216,217,27,218,219,220,221,222,223,224,225],"search","deja search","never","error","ready","memory","re","decide","fix","design","debugging","you","done","reviewer","io","change","cli","merge","past",{"skillNo":227,"name":228,"nameZh":6,"description":229,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":230,"categories":231,"keywords":232,"publishedAt":45},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[233,234,235,221,236,237,238,239,240,241,242,243,244,245,212,246,34,247,33,248],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","session","reflection",{"skillNo":250,"name":251,"nameZh":6,"description":252,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":181,"licenseFileUrl":6,"sourceHtmlUrl":253,"categories":254,"keywords":262,"publishedAt":45},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[255,258,259],{"categoryNo":256,"categoryName":257,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":260,"categoryName":261,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[251,263,40,264,265,266,267,34,268,213,269,270,36,271,27,272,273,274,275,276],"URL","short-form","standalone","PDF","viral","tiktok","short","social","song","image","mcp server","schedule","api","publish"]