VersAssist
Internal Tooling
VersAssist · Claude Code Skill

Chalk — Training Video Builder

Turn a workflow you have just finished into a narrated, captioned training video with chapters — and publish it on its own link. One command per stage.

Install

Download chalk.tar.gz

Unpack it into your Claude Code skills folder:

# Windows (Git Bash)
mkdir -p ~/.claude/skills
tar -xzf chalk.tar.gz -C ~/.claude/skills

# macOS / Linux
mkdir -p ~/.claude/skills && tar -xzf chalk.tar.gz -C ~/.claude/skills

Restart Claude Code. Then just say “run Chalk” or “make a training video of this workflow” and it takes over.

Check it loaded Ask Claude “what skills do you have?” — chalk should be listed.

What it produces

What it is not Chalk does not record your screen. It builds a slide deck and narrates it. If you need real screen footage, that is a different tool.

How to use it

StepCommand
1. Scaffoldpython new_deck.py <folder> "Video Title"
2. Write the deckEdit slides.html — one .slide div per slide
3. Write narrationEdit narration.json — one string per slide, same order
4. Buildpython make.py "Output-Name"
5. Publishpython deploy.py <slug> "Page Title"

In practice Claude writes steps 2 and 3 for you from the conversation you have just had. Your job is to check the content is true.

The rule that decides whether it is any good

Teach the workflow, not the click path. A good training video explains why a step exists and what breaks without it. The videos that work carry the real rules we learned the hard way — not a list of buttons.

Never Invent content to fill a slide. Everything in the video must come from what actually happened — the transcript, the client's own words, the mistake that caused the rule.

Two things that will catch you out

Slide count must equal narration count

The build stops if they differ. If they drifted and you forced past it, every slide after the mismatch gets the wrong audio — and it looks fine until you watch it.

Changed a slide but the video did not change?

Finished segments are cached by duration, so editing a slide image without changing its narration reuses the old one. Delete that segment and rebuild:

rm segments/seg-15.mp4
python make.py "Output-Name"

The full list is in reference/GOTCHAS.md inside the skill. Read it before debugging.

Examples built with it

VersAssist · Internal tooling · Not for client distribution