Skip to content

Instantly share code, notes, and snippets.

@melvincarvalho
Last active October 19, 2026 08:13
Show Gist options
  • Select an option

  • Save melvincarvalho/c00df2fe2cf4424f57b050ec7a95baf6 to your computer and use it in GitHub Desktop.

Select an option

Save melvincarvalho/c00df2fe2cf4424f57b050ec7a95baf6 to your computer and use it in GitHub Desktop.
A film by an agent that can prove it made it: create-agent + aam skills + motion-director brief, marked on txbt4

A film by an agent that can prove it made it

An agent with a key, a trail on Bitcoin and two skills makes a short film about itself, runs a critic loop until it ships, and marks the result on the chain. Nothing is pasted in by hand; the agent reads two SKILL.md files and one brief. Done on 2026-10-19 on txbt4, the BLAKE2b testnet.

1. An agent, one command

mkdir self && cd self
npm create agent@latest gitmark

Key in git config nostr.privkey, agent.did.json, 10,000 sats from your voucher file (or a bootstrap coin on txbt4 if you have none), git mark init, the first commit marked. Ends with git mark info. create-agent 0.0.23 or newer.

2. Two skills

npx aam@latest skills remotion-dev/skills --skill remotion-best-practices   # the official Remotion skill, with its reference directories
npx aam@latest skills ~/.claude/skills/motion-director                        # a director's brief and pipeline, from a local path

Both land in .claude/skills/, where Claude Code reads them, each with the files that sit beside its SKILL.md (aam 0.0.58 or newer). aam says unsigned for each; the agent reads them and vouches with --vouch if it is willing to work by them.

The motion-director brief: melvincarvalho/aam#33 has the context; the brief itself is a fill-in form (mode, subject, viewer, end state, length, brand, facts, sound, autonomy, toolchain, sign-off), craft rules, audio first, a critic loop with fresh critics, a measured quality bar, and a deliverables list.

3. The task, in full

Make a film about yourself under the motion-director brief, working its pipeline unattended, and deliver what it lists.

With the brief filled where you have a view and the rest left to the agent to decide and record in brief.md:

  • subject: the agent itself: one key that is an identity, a wallet and a signer; its trail; what it made before
  • viewer: someone who has heard "AI agent" a hundred times and wants to see one that can prove what it did
  • end state: they understand every mark is checkable, and know the DID to check
  • length: 15 s, 16:9; frame rate: the agent's choice
  • facts: agent.did.json, blocktrails.json, its own commits, and at most one request to the chain explorer. Nothing else may appear as a claim
  • assets: none; everything drawn in code
  • sound: music + sfx synthesised in code. No music model, no voice model, no paid API, no downloads; the nearest thing in code, said so in the ledger
  • autonomy: unattended, never stop for a gate; keep the critic loop with fresh critic subagents, logged in ledger.md
  • toolchain: Remotion; a headless Chrome already in node_modules/.remotion or --browser-executable; CPU render under ten minutes
  • deliverables under film/; MP4 under 8 MB
  • then: commit everything including the trail file, git mark (300 sats; note that bare git mark is the mark command), git mark announce, git mark verify, stop. Never git mark exodus
  • never print the key; stay inside the repo; if something is missing, ask rather than work around it
  • keep a transcript, with an honest section on where each skill was unclear, wrong, or assumed a human or a tool it did not have

4. What came out

film 15 s, 1920×1080, 30 fps, h264 + AAC, 1.6 MB, plus a music-only version
critic rounds five, fresh subagent each time, 13 → 13 → 12 → 11 → 1 problems, then "ship"
quality bar, measured −13.6 LUFS, true peak −1.8 dBTP, contrast 5:1 to 15:1, colours sampled from the decoded render, every string traced to facts.json by three critics, hits within 1 frame of timing.json
deliverables MP4, music-only MP4, 30-tile contact sheet, brief.md, facts.json, storyboard.md, style.md + three style frames, timing.json, ledger.md, quality-bar.md, human-check.md
on the chain the commit marked (300 sats), announced to three relays, four marks verified
cost 10,000 sats funded; 1,200 in marks across both films; about ninety minutes of agent time

Frame one: "I AM ONE KEY" over the DID as a 4×16 grid. Then the DID resolves into identity · wallet · signer, a line to a 10,000-sat coin, a mark's txid, and a sign-off holding the full DID with "three marks · txbt4 · status at mempool.guide/testnet4/api".

5. What the agent said about the skills

The critique is the most useful output. The director's brief assumes a music model, a voice model, a human to play the mix to and to pass each gate; it lacks a render budget, a resolution and codec line, a timing.json schema, a deliverables checklist and instructions for critic subagents. The agent invented substitutes for every gate and every ear: a pure-JS synth cut to timing.json, loudness measured after the AAC encode, colours and contrast sampled from the render, exact-frame pulls for critics. Fold those into the skill and the next run needs none of the inventing.

The Remotion skill's advice is interactive (open Studio, do not render) and has no headless branch; an agent whose deliverable is a file needs one.

6. Why it matters

The film is its own evidence. Its facts come from the agent's own identity and trail files; the commit that holds it is marked on the chain by the same key the film names; anyone can run git mark verify on a clone. Media with provenance, without watermarks.

Tools: https://git-mark.com/start.html · https://github.com/melvincarvalho/create-agent · https://github.com/blocktrails/fund-agent · https://github.com/melvincarvalho/aam · https://github.com/remotion-dev/skills

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment