Agent skill

Short

by gug007 in gug007/lpm

Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step…

MITAuto-check passedMedia & Creative

Install Short

skills CLI
$ npx skills add gug007/lpm --skill short -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gug007/lpm short --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gug007/lpm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/short .claude/skills/short && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
short
GitHub stars
152
Token cost
~3.3k tokens
SKILL.md length
1,871 words
Files
13 (incl. scripts)
Skills in repo
12
Repo updated
First seen
Licence
MIT

At a glance

Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step…

  • The user asks for a TikTok
  • SKILL.md covers What makes it TikTok-native, Writing the lesson, Beats and Pipeline, plus 1 more section
  • Runs JavaScript and Shell scripts from its folder; calls node
  • Short-form video about lpm

What it does

Short is an agent skill from gug007/lpm. Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step stickers, jump cuts over waiting, recorded from the real desktop app. Topic in, 1080x1920 MP4 + cover + post caption out. Use when the user asks for a TikTok, a Reel, a Short, or any vertical or short-form video about lpm.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts (for example `scripts/camera.js`, `scripts/edit.js` and `scripts/kit.js`).

It sits in Media & Creative, covering Social media graphics and Video production. It works with TikTok. The repository describes itself as: Start, stop, and duplicate dev projects with one click. The best workspace for running Claude Code, Codex, and other AI agents alongside your services. The licence is MIT.

When your agent uses it

  • The user asks for a TikTok
  • Short-form video about lpm

Example prompts

  • “/short”

Requirements

  • Node.js
  • A Bash shell

What it can do on your machine

Read from SKILL.md and the folder at commit 764e997. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 12 files in scripts/ (JavaScript and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • node

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Short loads about 3.3k tokens when it runs. Until then it costs about 105 tokens; SKILL.md has 1,871 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~105
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from gug007/lpm at commit 764e997, republished under its MIT licence (© gug007). 1,871 words, ~3,293 tokens.

Download SKILL.mdSave it as .claude/skills/short/SKILL.md (or your agent's skills folder). This skill also uses 12 other files; get the full folder from GitHub.
name
short
description
Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step stickers, jump cuts over waiting, recorded from the real desktop app. Topic in, 1080x1920 MP4 + cover + post caption out. Use when the user asks for a TikTok, a Reel, a Short, or any vertical or short-form video about lpm.
version
1.2.0
argument-hint
"<topic>" [-- <notes>]

Make a vertical lesson video from a topic and optional notes. It is not a trimmed YouTube lesson: the script, the pacing and the picture are built for a phone held upright with the sound possibly off.

The recorder, the voice and the mix are the lesson skill's (../lesson/scripts). Everything that skill's SKILL.md says about driving the app still holds and is not repeated here: the pristine ~/.lpm-lessons data dir, /Users/Shared/lpm-lessons workspace, the lesson control socket, real pointer and keys (s.keys("return"), never cliclick kp:), agent trust, waitFor/click/type selectors, foreground takes, the OpenAI key in the Keychain, the preflight and lint that check the Mac and the script before every take, the take folders (_takes/), the guarded agent settings and the checks after the mux (qa/report.json; the screen is read on the take's clock). The beat API is in lesson/reference/beats-api.md.

What makes it TikTok-native

  • Vertical 1080x1920, 20–45 s. The app runs in a portrait window (820x1040 pt by default; "window" in lesson.json). The window floats on a dark canvas with cyan, pink and violet glows. A virtual camera cuts a 9:16 crop from it that eases between a wide shot (the whole window width) and push-ins that follow the action.
  • Payoff first, and held. The video opens cold on the finished result (a later moment of the take) under the hook line and a big headline sticker. The steps come after. Frame 0 is already the payoff with text on it, so it is also the cover. The opening lines' beats are never seen, so the last of them does the setup (pick the project, start an agent).
  • Don't cut away at 2 s. TikTok's retention graph for the best video so far (1.9K views) showed most viewers leaving at 0:02, the moment a one-line opening cut from the result to the app's setup. Its likes peaked at 0:01, on the result. Open on two lines over the payoff ("open": 2, about 4–5 s): the hook, then a line that gives a reason to keep watching.
  • Hook in under 2.5 s. One short sentence: a problem ("Stop guessing your Claude Code limits."), a surprising fact, or a result. Never "In this video", never "Here's how to set it up in lpm". The headline sticker says what the video delivers ("Claude Code limits, right under your prompt 👀").
  • Burned-in word-by-word captions. Most people watch muted. Pages of up to 3 words sit in the lower middle, heavy white with a black stroke, the spoken word in yellow, *word* in cyan. They are timed from the voice clip's own transcript.
  • Numbered step stickers. A line's "label" puts "① Open Settings" at the top of the frame until the next one.
  • No dead air. Lines follow each other with 140 ms gaps. Typing and agent thinking are jump-cut with s.skip(). The voice is quick and upbeat (DEFAULT_STYLE in scripts/make.js, sped up 1.08x with pitch kept; "tempo" in lesson.json).
  • Ends on the result. The last line plays over the payoff shot the video opened on (it loops cleanly), with an lpm.cx end sticker. No outro card, no "follow for part 2", no next-lesson teaser (user rule: every video stands alone).
  • Safe zones. Stickers, captions and push-in targets keep clear of TikTok's own UI: the top tabs, the right-hand button column, and the caption and sound area at the bottom. The review sheet draws those zones in.

Writing the lesson

~/Movies/lpm-lessons/tiktok/<slug>/lesson.json (LPM_TIKTOK_DIR for another root):

json
{
  "title": "Claude Code statusline: see your usage limits live",
  "window": { "w": 860, "h": 1040 },
  "narration": [
    { "id": "hook", "text": "Stop guessing your Claude Code limits.", "headline": "Claude Code limits, right under your prompt 👀" },
    { "id": "settings", "text": "In lpm, open More and pick Settings.", "label": "Open Settings" },
    { "id": "pick", "text": "Pick *Clean*. Context left, plus your *5-hour* and *weekly* limits.", "label": "Pick Clean" },
    { "id": "wrap", "text": "Now you'll see a limit coming before you hit it." }
  ],
  "post": { "caption": "…", "hashtags": ["claudecode", "aicoding", "devtools", "lpm"] }
}
  • 6–9 lines, 60–110 words in total. One action per line, 3–9 words, spoken in the second person, the way someone talks to a friend.
  • Commas become audible pauses (a one-comma line lost 0.9 s). Prefer two short sentences to one long one.
  • Mark 1–3 key words per line with *…*; the asterisks are never read aloud. Digits read well ("5-hour") and show as digits in the captions.
  • open is how many lines play over the payoff (default 1). With 2 or more, only the last opening line may do slow setup in its beat; a wait in an earlier one plays as silence over the payoff (the cut logs it). The payoff shot must last as long as the opening (the opening on the payoff log line), so mark it early enough in the last lines.
  • headline (on the first line, or top-level) is the cover text: 4–8 words, with at most one emoji. Lead with the words people search for (below). cta changes the end sticker (default lpm.cx; false for none).
  • slam ({ "a": "Fable 5.1", "b": "Opus 5.5" }, optional "colors") opens on two names slammed in big over the dimmed payoff: a in cyan from the left, a VS, b in pink from the right. After 1.5 s the stack shrinks away and the headline pops in at 1.65 s (left out when the opening has under 0.6 s left). The cover is then the frame at 1.2 s, with all three lines on screen and no headline. Names are sized to fit 820 px, so long ones shrink.
  • post.caption goes into post.txt for TikTok: one or two search-friendly sentences (people search TikTok like Google), then at most 5 hashtags (TikTok's cap: a 6th loses its #), lpm among them. Keep the brand lowercase lpm.
  • Use searched words. Search sent 0% of the views so far, and For You shows a new account's posts mostly to people near the phone that posts them, so search is the way to reach coding viewers elsewhere. TikTok's Creator Search Insights (global, 2026-09-27): "claude tips" 224K and rising fast, "claude vs gemini" 194K, "claude ai vs chatgpt" 138K, "claude vs gemini vs gpt" 127K, "ai agents for beginners" 116K, "vibe coding apps" 96K, "how to vibe code with claude code" 85K; "claude code tips" only 1.9K, and nobody searches for "claude limit". Say "Claude" and "ChatGPT" rather than "Claude Code" and "Codex" in headlines and captions, and frame a feature as a "Claude tip" rather than by its lpm name.
  • settings in lesson.json seeds the app's settings.json (for example terminalFontSize); "limits": false leaves the sidebar meters out.
Show full SKILL.md (871 more words)Show less

Beats

beats.js exports setup and one beat per line id, exactly like lesson. The shared helpers are in lesson/scripts/kit.js: writeProject (a seeded folder, git, its lpm config), neutralShell (a plain prompt, plus a claude/codex wrapper that records the folder trust), openAgent, claudeDone/codexDone, until, clickUntil, typeInto, waitGone, scrollTo, tagByPosition, focusLeft, park. A lesson requires it by absolute path: const kit = require("<repo>/.claude/skills/lesson/scripts/kit") (the older short/scripts/kit path still works). Beats add these calls:

  • s.focus(sel, { scale, at, ms, cue }): push the camera in on an element; it lands 36% down the frame, above the captions and the button column. Use 1.4–1.6 for a whole terminal line or a settings preview, and 1.8–2.2 for a button, a tab or a row. A pushed-in camera pans after the pointer when it leaves the shot. s.zoom is the same call.
  • s.wide({ ms, cue }): back to the whole window. Go wide when a new screen opens. s.zoomOut is the same call.
  • s.label(text, { cue }): a step sticker mid-line; null clears it. { plain: true } leaves the step number off, and a plain label that follows another changes in place without the pop, so calling it once a second makes a running clock.
  • s.payoff({ cue }): marks the shot the video opens on. Put it on the final result and hold that shot for at least the hook line's length; the last line usually does. Hide the drawn cursor first (s.hideCursor()) unless it points at something.
  • await s.skip(() => work, { keepMs }): starts work at once (typing a prompt, waiting for an agent) and cuts everything from the end of this line's narration until work is done.
  • No s.card(): a vertical lesson has stickers, not topic cards.

A cue is the spoken word an action lands on, as in lesson. Aim for a camera change or a click every 1.5–3 s. Make every push-in land on its cue word.

Pipeline

Every lesson folder has a take.sh, which runs this skill's scripts/take.sh (lesson's runner with this skill's make.js): the preflight first, then make.js on an empty clipboard under caffeinate, with the clipboard and the user's agent settings put back afterwards. The plain one is:

sh
#!/bin/sh
exec "<repo>/.claude/skills/short/scripts/take.sh" "$(dirname "$0")" "$@"
<slug>/take.sh --no-audio            # dry run: raw window frames in frames/
<slug>/take.sh                       # voice → take → cut → MP4 + cover + sheet + post + checks
<slug>/take.sh --mux-only            # re-cut the last take (camera, stickers, captions, music)

Flags: --respeak, --keep-state, --lpm-dir <dir>, --dom-mouse, --voice <name>, --style "…", --music <file> / --no-music (the default bed is lesson/music/bed.mp3, which the preflight downloads; 11 LU under the voice, full level from frame 0). --no-qa skips the checks. node scripts/make.js <slug or folder path> … runs the same pipeline without the preflight, the clipboard swap and the settings guard; a path is used as it is (a scratch copy never touches the lesson in ~/Movies).

Output in the lesson folder: <slug>.mp4 (H.264 High, 30 fps, AAC 48 kHz), cover.jpg (the opening frame, or the slam at 1.2 s), post.txt (caption and hashtags), sheet.jpg (a frame every 1.5 s with TikTok's UI zones in red), cut.json (the edit, the camera keys, the text track), timeline.json, record.mkv, overlay/ (rendered text frames, reused by --mux-only), audio/, qa/report.json, and _takes/ (every take's log and script; earlier takes' recordings).

Before a take, close tauri dev and keep the lid open. The recording app is the debug build and loads its UI from Vite on :9245. When nothing serves that port, the launcher starts its own server that doesn't watch files (lesson/scripts/vite.lesson.config.mjs) and warms it. A running tauri dev server does watch them, so an edit under desktop/frontend/src (another agent in the same worktree) reloads the app mid-take and closes any open dialog, and a Rust edit restarts tauri dev's own app, which takes keyboard focus while the take is typing. The launcher logs which server it used. Closing the lid sleeps the Mac and ends the take; caffeinate only keeps the display awake through long waits.

The runner already saves and restores the agents' model, effort and status-line settings (lesson/scripts/guard.js). A take that changes anything else in the user's real config backs that file up in its take.sh, sets trap restore EXIT, and then calls "<repo>/.claude/skills/short/scripts/take.sh" "$DIR" "$@" without exec, so the restore runs after the take. short-race's new.js still writes one around claude-default.js, which is harmless next to the guard.

Review before posting

Open sheet.jpg and cover.jpg and check:

  • No sticker, caption or push-in target sits in a red zone. The right-hand button column matters most for anything at 40–80% of the frame height.
  • System popups. The capture records the screen area, so a macOS popup lands in the video with the user's name on it ("<name>'s AirPods Connected", "Pasting from <name>'s iPhone…"). Retake if one appears.
  • Terminal lines cut off. A TUI truncates a line wider than the pane with "…", and a push-in that is too tight crops it. Widen "window" or lower the push-in scale.
  • Real numbers. Usage meters, plan names and costs are the user's real ones.
  • The hook is 2.5 s or less (the audio hook: log line) and the whole video is 45 s or less (the muxed log line). scripts/rehook.sh <slug> re-speaks an edited hook line and re-cuts without a retake.

scripts/scan.sh <slug> [out-dir] makes a one-frame-per-second contact sheet of the MP4 for spotting popups.

Then watch the MP4 once with the sound off: the captions alone should carry the lesson.

When the video is done, end the reply with the rendered MP4's full absolute path (~/Movies/lpm-lessons/tiktok/<slug>/<slug>.mp4), not just the slug or a relative path.

© gug007, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 12 other files (scripts) in .claude/skills/short of gug007/lpm.

  • SKILL.md
  • scripts/camera.js
  • scripts/edit.js
  • scripts/kit.js
  • scripts/look.js
  • scripts/make.js
  • scripts/overlays.js
  • scripts/rehook.sh
  • scripts/scan.sh
  • scripts/shared.js
  • scripts/take.sh
  • scripts/texttrack.js
  • scripts/tiktokstage.js

Open the folder on GitHubat commit 764e997

Compare with similar skills

Short next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Short compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Short this skillgug007/lpm152—~3.3kAutomated safety check: PassMIT
Karaoke CaptionsAI-Builder-Club/skills1.3k—~850Automated safety check: PassNone
Taisly Social Media Postingtaisly/agent2171 repos~1.5kAutomated safety check: PassMIT
Viral Captions And Ctasvyralcontent/content-skills1331 repos~2.8kAutomated safety check: PassMIT
Viral Hooksvyralcontent/content-skills1331 repos~2.5kAutomated safety check: PassMIT
Net New Video Editorericosiu/ai-marketing-skills3.6k—~1.1kAutomated safety check: PassMIT

Similar skills

  • Karaoke Captions

    AI-Builder-Club/skills

    Generate TikTok/Shorts-style karaoke captions using MLX Whisper, ASS subtitles, and FFmpeg libass.

    1.3k GitHub stars~850 tokensUpdated 23 days ago
    Media & CreativeAuto-check passed
  • Free AI-first short-form video publishing to TikTok, Instagram Reels, YouTube Shorts, X, and Facebook from AI agents through Taisly.

    217 GitHub starsUsed in 1 repo~1.5k tokens
    Media & CreativeAuto-check passed
  • Viral Captions And Ctas

    vyralcontent/content-skills

    Write captions, on-screen text, hashtags, and CTAs for short-form video that earn saves and sends without tripping engagement-bait penalties.

    133 GitHub starsUsed in 1 repo~2.8k tokens
    Media & CreativeAuto-check passed
  • Viral Hooks

    vyralcontent/content-skills

    Write and critique viral hooks for short-form video: the opening 1 to 3 seconds that decide whether anything else gets seen.

    133 GitHub starsUsed in 1 repo~2.5k tokens
    Media & CreativeAuto-check passed
  • Net New Video Editor

    ericosiu/ai-marketing-skills

    Turn newly recorded talking-head footage into review-ready vertical video drafts with an explicit edit plan, deterministic FFmpeg rendering, captions, hook cards, audio normalization, and visual QA.

    3.6k GitHub stars~1.1k tokensUpdated 16 days ago
    Media & CreativeAuto-check passed
  • Youtube Thumbnail

    hassancs91/claude-youtube-editor

    Dedicated YouTube thumbnail generator — interviews you for exactly the style elements you want (environment, text budget, extras, accent color), then renders high-contrast, vibrant, face-consistent…

    325 GitHub stars~2.1k tokensUpdated 1 mo ago
    Media & CreativeAuto-check: notes

More from gug007/lpm

All 12 skills in this repo
  • Short Game

    gug007/lpm

    Make a short vertical (9:16) video where two AI models build the same self-playing game in lpm, side by side, and both games then play live in lpm's browser.

    152 GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Short Race

    gug007/lpm

    Make a short vertical (9:16) video that races two AI models on the same prompt in lpm, side by side: Run in duplicates puts each model in its own copy of the project, shown as side-by-side columns…

    152 GitHub stars~3.9k tokensUpdated today
    Auto-check passed
  • Lpm Config

    gug007/lpm

    Create and edit lpm YAML configs for projects, duplicates, worktree metadata, services, actions, header and footer button zones and zone layers, terminals, profiles, SSH projects, and shared config…

    152 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Make the App Store screenshots for lpm Link (iPhone 6.3" 1206x2622 and iPad 13" 2064x2752) from the current mobile/ source: a screenshot build of the app opens each screen straight into Demo Mode…

    152 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Short Publish

    gug007/lpm

    Post a finished vertical lesson from ~/Movies/lpm-lessons/tiktok/<slug/ to YouTube Shorts (LPM channel, through Chrome) and TikTok (@lpm06557, from the user's iPhone through iPhone Mirroring) in…

    152 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Record the App Store review demo video for lpm Link: the lpm desktop app and lpm Link on a physical iPhone (live through iPhone Mirroring) side by side, pairing and then controlling the Mac from the…

    152 GitHub stars~2.4k tokensUpdated today
    Auto-check passed

Works with

Questions about Short

What does Short do?

Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step…. Short is an agent skill from gug007/lpm. Make a short vertical (9:16) lpm lesson that feels native to TikTok, Reels and Shorts: a payoff-first hook, fast push-ins that follow the action, word-by-word burned-in captions, numbered step stickers, jump cuts over waiting, recorded from the real desktop app.

When should I use Short?

Short fits situations like: the user asks for a TikTok; short-form video about lpm.

How do I install Short in Claude Code?

Run `npx skills add gug007/lpm --skill short -a claude-code`. Or copy the skill folder (.claude/skills/short in gug007/lpm) into .claude/skills/short in your project. Claude Code loads it when a task matches its description.

How do I install Short in Codex?

Run `npx skills add gug007/lpm --skill short -a codex`. Or copy the skill folder (.claude/skills/short in gug007/lpm) into .agents/skills/short in your project. Codex loads it when a task matches its description.

Can I use Short in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gug007/lpm --skill short -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/short, .gemini/skills/short, .github/skills/short and .opencode/skills/short in your project.

What does Short need to run?

Going by SKILL.md and its folder, Short needs JavaScript and a shell for the scripts in its folder and the command-line tools its instructions call (node). Our summary lists: Node.js; A Bash shell.

Does Short access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Short safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Short use?

Short is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Short use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Short?

Skills that share tags, products or a category with Short: Karaoke Captions (AI-Builder-Club/skills, 1.3k stars), Taisly Social Media Posting (taisly/agent, 217 stars), Viral Captions And Ctas (vyralcontent/content-skills, 133 stars) and Viral Hooks (vyralcontent/content-skills, 133 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Short?

gug007 (a GitHub user) maintains it in gug007/lpm, which has 152 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 9, 2026.

Source: gug007/lpm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.