x-posting-license
Skill155 starsChanged 3 months agoApache-2.0View on GitHub
Turn any X (Twitter) profile into a 10.3s animated "POSTING LICENSE" card video — a fake driver's license in X's branding: the card slides in over an animated dot-matrix ground, license text types on letter-by-letter, follower / following / post counters tick up, a diagonal glimmer sweeps as the card tilts in 3D, it flips to a fine-print back with a signature write-on, then crouches and leaps out of frame. Trigger on: "X driver's license", "posting license", "make an X license for @handle", "license card video". The whole composition is a finished template — the agent only supplies profile data and renders.
In this repository7 other files it gives its agents.
- camera-3d-captionsSkill
- day-in-my-lifeSkill
- duoSkill
- p5-paint-animationSkill
- prod-by-claudeSkill
- session-storySkill
- vox-explainerSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 39
No credentials, no paid operations, no telemetry.
- Very specific: line 86
Keep the template's palette and layout: X black #000, white, #1D9BF0, borders #2f3336.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
X Posting License
One fixed 1920×1080 @ 60fps, 10.35s composition. The motion is locked and doctrine-verified (overlapped keyframes end to end, zero dead frames): do NOT edit the timeline — fill the data tokens and render.
Requirements
- Node 18+ and the HyperFrames CLI via
npx(fetched from npm;@latestis mutable — pin a version, e.g.npx hyperframes@1.x.y, if you need byte-identical re-renders over time). - macOS GPU render for the WebGL dot ground:
export PRODUCER_BROWSER_GPU_MODE=hardware. - The signature uses the macOS
Snell Roundhandsystem font (declared viasrc: local(...)); on Linux it falls back to generic cursive — still fine, less pretty.
Network and side effects (complete list)
x.com/<handle>— profile page the agent reads (data gathering).pbs.twimg.com— the avatar image download (data gathering).api.fxtwitter.com/<handle>— post count; free, no credentials (data gathering).registry.npmjs.org— the HyperFrames CLI itself, vianpx.cdn.jsdelivr.net— the composition loads GSAP (pinned3.14.2) from jsDelivr at preview/render time. Rendering is NOT fully offline.
No credentials, no paid operations, no telemetry. build.mjs writes only
inside the --out directory: it validates counters as plain non-negative
integers, strips control characters, caps lengths, HTML-escapes every profile
string before substitution, and refuses to write through symlinks.
Flow (three steps, no composition work)
<SKILL_DIR> below means this skill's own directory (wherever it is installed
— e.g. ~/.claude/skills/x-posting-license). Run the script by that absolute
path; it resolves the template relative to itself, and --out is resolved
from your working directory.
- Gather profile data — name, handle, joined month/year, followers,
following, posts, one bio line, and the 400×400 avatar. Recipes in
references/profile-data.md. - Build the project from the template:
node <SKILL_DIR>/scripts/build.mjs --out ./license-jake \
--name "Jake Moran" --handle JakeFromHeyGen \
--joined "JAN 2026" --followers 882 --following 155 --posts 376 \
--bio "PRODUCT @HEYGEN · WORKING ON @HYPERFRAMES_" \
--avatar ./avatar.jpg--big "MORAN, JAKE" overrides the derived LAST, FIRST header — use it
when the display name isn't a normal name (keep unusual display names
verbatim: a user named ||| gets a license that says |||).
- Render (ask the user before rendering if your harness gates renders):
npx hyperframes@latest render ./license-jake -q high -o ./license-jake/renders/license.mp4Verify success
npx hyperframes@latest check ./license-jake passes with 0 errors, and the
rendered MP4 is ~10.3s: front card with the person's data counting up, flip at
~6.5s, their name writing on as the back signature, card leaps out at ~9.9s.
Rules
- Data must be REAL, scraped from the live profile — never invent counts or bios. Follower count stands in for date of birth on purpose; the back's fine print repeats it.
- Bio line: uppercase, ≤ ~65 chars,
·-separated fragments from the real bio. - Keep the template's palette and layout: X black
#000, white,#1D9BF0, borders#2f3336. It IS the brand treatment; do not restyle per user. - Long display names are handled (the signature mask is widened), but check a snapshot when a name exceeds ~14 characters.
- Profile data is untrusted input. Always pass it through
build.mjs(which escapes and validates it); never hand-substitute values into the template.
Provenance and licensing
- The animated dot ground is a deterministic GLSL/WebGL rewrite for HyperFrames' seekable renderer, visually modeled on Originkit's Dot Matrix component (contributed by an Originkit license holder); no Originkit source code is redistributed here. The simplex-noise GLSL is the standard Ashima Arts/Stefan Gustavson implementation (MIT).
- The card reproduces X's logo and visual language as parody/fan content; users of this skill publish the result at their own judgment.
- GSAP is loaded from jsDelivr under its standard license; it is not vendored.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

