mcpField
D
day-in-my-life

day-in-my-life

github.com/heygen-comCreative & media236183 installsUpdated 5w ago
Repository

About day-in-my-life

day-in-my-life creates a personal short film from a user's local Claude Code history, for users who want to revisit their work with the agent. Every on-screen line is reviewed and approved by the user, and the source material is not uploaded.

Key features

  1. 01Extract verbatim material from local sessions
  2. 02Organize the story around actual routines
  3. 03Show sources and request approval for each line
  4. 04Create a string score and check the finished film

Use cases

  1. 01Make a short film from personal Claude Code work history
  2. 02Review a typical work session in chronological order

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/heygen-com/hyperframes-community-skills --skill day-in-my-life

After installing, type/day-in-my-lifein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

assets/kit/
brush-ink.js
film.js
hf-bridge.js
props.js
assets/template/
archetypes.json
hyperframes.json
index.html
scenes.js
story.example.json
references/
look.md
score.md
story.md
scripts/
harvest.py
new-film.mjs
package-lock.json
package.json
qc.py
requirements.txt
score.py
setup.sh
shoot.mjs

Details

From the project README

A day in my life as 's agent

The agent reads its own history with the user and makes a short film about it:

  • Look: two-tone brush ink, hand-lettered title, one character (the blot).
  • Story: one average session in time order, built from what this user actually does (a coder gets a coding day), from the first message to the lesson it keeps.
  • Sound: a string score locked to every beat.

Every line on screen is a receipt. The user approves each one before anything renders.

When to use / when not

  • Use when a Claude Code user wants a personal film of their work with the agent, and has at least 10 local sessions over 5 days in ~/.claude/projects.
  • Do not use for someone else's history, a team's shared logs, product marketing, or content the user won't review. If there are no local transcripts (e.g. claude.ai only), stop: this skill never invents receipts.

Requirements and side effects (complete list)

  • Tools: Node 22+, Python 3.9+, ffmpeg on PATH. The HyperFrames CLI pinned to npx [email protected] (downloaded from the npm registry on first use).
  • Setup (once, manually): sh scripts/setup.sh runs npm ci from the committed lockfile: p5 2.3.2 (LGPL-2.1), p5.brush 2.2.1 (MIT), puppeteer 25.9.0 (Apache-2.0, which fetches its pinned Chrome for Testing). For score.py: python3 -m pip install -r scripts/requirements.txt (numpy, scipy).
  • Reads (local only): ~/.claude/projects/*/*.jsonl (the user's transcripts), ~/.claude/projects/*/memory/*.md, and the CLAUDE.md of projects those transcripts point at. Nothing is uploaded.
  • Network at preview/render: the page loads the Gochi Hand font (SIL OFL) from Google Fonts. Nothing else.
  • Writes: only inside the film folder you create: receipts.json, story.json, story.js, music/, renders/. These hold the user's words; never commit or share them.
  • No credentials, no paid calls.

Workflow

  1. Setup: sh scripts/setup.sh (once), plus the pip line above.
  2. Harvest: python3 scripts/harvest.py --out <film>/receipts.json. Stop if enough is false.
  3. Story: build the timeline from routine (the user's average session, in order), map each step to a chapter type, and fill it from the receipts, per references/story.md. 8 to 13 chapters. Ask the user which name goes in the title.
  4. Privacy gate: show the user one table of every on-screen line with its source (session, timestamp), take their edits, and get an explicit yes. Then set "approved": true.
  5. Scaffold: node scripts/new-film.mjs <film>. It builds the film around the story.json already in the folder. After any later edit to story.json, run node scripts/new-film.mjs <film> --sync. It validates order, fields and captions, blocks secrets, emails and paths, and flags URLs.
  6. Design pass: node scripts/shoot.mjs <film> chapters <film>/renders/sheet.jpg --sheet 4 (one frame per chapter, at its payload moment). Check every chapter reads (blot visible, quotes legible, nothing clipped or covering a bubble) and show the sheet to the user.
  7. Score: python3 scripts/score.py <film>, per references/score.md.
  8. Render: npx --yes [email protected] check <film>, then from <film>: npx --yes [email protected] render --fps 24 --crf 12 --browser-gpu -o renders/film.mp4. Render locally; the page paints with WebGL.
  9. QC: python3 scripts/qc.py <film> <film>/renders/film.mp4 must pass. Then watch it through once, with sound, before delivering.

Rules

  • The user's day, not a template. The routine sets which chapters appear and their order. Never add a step the history doesn't show.
  • Receipts only. Quotes are verbatim; stats are counted; names are the user's call. Drop any chapter you can't back with a real line.
  • Approval before render. story.approved is set only by the user's yes. The validator refuses credentials, emails and file paths outright.
  • The clock is the score. Timings live in archetypes.json; scenes.js and score.py both read it. Never retime one without the other.
  • Nothing idles. Every chapter keeps a camera move, a staged reveal or an action in flight. The boil is texture.
  • Look defaults: SKETCH = 1.8, two tones, captions lowercase with no trailing period, seams through ink. See references/look.md.

Verify success

  • new-film.mjs --sync prints no errors.
  • The design-pass sheet shows every chapter.
  • qc.py passes all checks:
    • stepping: about 8 drawings/s, every change on the 3-frame grid, no hold longer than 3 frames
    • seams: a fully inked frame on every wipe and swallow cut
    • lamp: picture black and score silent within one frame of each other, until the tag
    • loudness: -19 to -15 LUFS, true peak ≤ -1 dBTP

Smoke test without anyone's data (the fictional example story):

node scripts/new-film.mjs /tmp/dimil && python3 scripts/score.py /tmp/dimil \
  && (cd /tmp/dimil && npx --yes [email protected] render --fps 24 --crf 12 --browser-gpu -o renders/film.mp4) \
  && python3 scripts/qc.py /tmp/dimil /tmp/dimil/renders/film.mp4

Files

  • scripts/:
    • harvest.py: local receipts.
    • new-film.mjs: scaffold and validate.
    • shoot.mjs: stills and sheets.
    • score.py: compose, synthesize and master.
    • qc.py: render checks.
    • setup.sh, package.json, package-lock.json, requirements.txt: pinned dependencies.
  • assets/kit/: the ink engine (brush-ink.js, props.js, film.js, hf-bridge.js).
  • assets/template/: index.html, scenes.js, archetypes.json, hyperframes.json, story.example.json (fictional).
  • references/: story.md (routine → timeline → lines → privacy gate), look.md (the kit), score.md (the arrangement).

Comments

Markdown supported