Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/leon-ai/leon/live-tutorialnpx skills add leon-ai/leon --skill live-tutorialgit clone --depth 1 https://github.com/leon-ai/leonWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00045 | $0.01038 |
| Opus 5 | $0.00023 | $0.00519 |
| Sonnet 5 | $0.00009 | $0.00208 |
| Haiku 4.5 | $0.00005 | $0.00104 |
Grade A, and why
live-tutorial scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 59 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Live Tutorial
Create a short annotated MP4 from a workflow Leon actually completes in the owner's application and workspace. It is an instructional slideshow, not a continuous screen recording or a reconstruction of steps Leon did not perform.
Outcome
Return one playable MP4 with 3–6 meaningful steps. Each step should show:
- the interface before the action;
- a numbered, concise instruction;
- a rectangle around the target and an arrow pointing to it;
- enough surrounding context to recognize the location.
Keep the original captures with the tutorial artifacts. Add annotations with deterministic local rendering; never recreate the interface with a generative image model.
Every frame must be evidence from the demonstrated journey. Do not reuse one screenshot to illustrate different states, invent missing steps, or claim success when the requested result was not reached.
Workflow
- Identify the target application, task, and successful result. Ask only if one is genuinely ambiguous.
- Call
computer_use.cua.start_recordingwithrecord_video: falseand retain itsoutput_dir. - Complete the real task as a sequence of consequential owner-facing actions. Retain the initial observation, then after each selected action observe once to verify its result and ground the next action. That post-action observation becomes the next step's pre-action capture; do not capture the same state twice.
- Retry or stop when an action cannot be visually verified. Do not turn an unchanged capture, an unperformed instruction, or a guessed future state into a tutorial step.
- Once the requested result is visible, stop interacting and render immediately. Always call
stop_recording, including after a failure. Completing the original tutorial request includes assembling the MP4; do not ask for separate confirmation to finish it. - Annotate each successful action's own pre-action screenshot and assemble the frames into an MP4 inside the retained
output_dir. Reuse that exact path rather than reconstructing it from profile or session identifiers. If a render continues in a later turn, use only artifacts from the currentLEON_PROFILEandLEON_SESSION_ID; never scan other profiles or substitute a pre-existing video. - Make the encoded frame dimensions even by padding at most one pixel on each axis. For FFmpeg, use
pad=ceil(iw/2)*2:ceil(ih/2)*2; do not resize the tutorial or alter annotation coordinates for encoder compatibility. - Verify that the MP4 is non-empty and readable before reporting success. Return the MP4 only if the requested workflow was completed; otherwise explain where the demonstration stopped and preserve the verified captures.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 59 lines · 45 tokens per session scan A bb8d9a298689
live-tutorial is a skill published in the GitHub repository leon-ai/leon (17,476 stars, last pushed 6d ago), licensed MIT. It adds 45 tokens to every session and 1,038 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
weekly-review
Pull together the week's open tasks, GitHub notifications, Canvas missing assignments, and remembered context into one retrospective-style summary.
blog-post
Writes and structures long-form blog posts, creates tutorial outlines, and optimizes content for SEO with cover image generation. Use when the user asks to write a blog post, article, how-to guide, tutorial, technical writeup, thought leadership piece, or long-form content.
playwright
Use when the task requires capturing or automating a real browser from the terminal.
resource-curator
Find, evaluate, and maintain high-quality external resources for JavaScript concept documentation, including auditing for broken and outdated links.
marimo-pair
Work inside the user's live marimo notebook from the code editor: run Python in the same kernel the user does, inspect live notebook state, and commit durable notebook changes through code mode. Use whenever you create, analyze, or improve the user's marimo notebook.
fill-model-descriptions
Fill empty description: "" fields in packages/llm-info/data/models.yml by querying OpenRouter and provider documentation. Use when the user asks to populate model descriptions, enrich the model catalog, or backfill descriptions after running pnpm sync-models.