Onboarding script
Generate an ordered SERIES of onboarding video scripts (a curriculum) to introduce a new team member to a company — who we are, the tools/accounts we use, our engineering best practices, how to create a new project with the company's skills/templates, and how we deploy. Auto-discovers the company's identity, stack, project-creation and deploy flow from whatever is connected (gh CLI org/account + repos + CI workflows; az/gcloud/vercel cloud CLIs; a Notion MCP; a Linear MCP; past chat transcripts) and degrades gracefully when a source is missing. Company-agnostic. Produces text/JSON only (no video, no API key): per topic it writes a shooting script (.script.md), a clean narration track (.narration.txt), an avatar-video-reel script with [DEMO] screen-recording markers (.reel.txt) and an avatar-reel-composer storyboard scaffold (.storyboard.json). Use when the user wants onboarding videos/reels for a new hire, an employee-onboarding series, scripts for "how we work / create a project / deploy", or mentions onboarding, new team member, new hire, or company induction videos.From its SKILL.md
npx -y skills add puntorigen/avatar-skills --skill onboarding-scriptAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.5 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
Onboarding Script
Write the words + screens for an ordered series of onboarding reels that
introduce a new team member to a company. This skill only produces the
scripts (text/JSON); the videos are generated later by the avatar pipeline
(avatar-video-reel /
avatar-reel-composer), which the outputs
drop straight into.
It is company-agnostic: it learns the company from whatever tooling is
connected — the logged-in GitHub org/account (gh), the cloud CLIs
(az/gcloud/vercel), a Notion MCP, a Linear MCP, and past chat transcripts —
and degrades gracefully when a source is missing (records the gap and asks
you to confirm an assumption instead of inventing facts).
What it produces
An ordered curriculum (curriculum.json) and, per episode, a format-agnostic
package so either downstream skill can consume it:
NN_<slug>.script.md— human shooting script (beats: VO + on-screen +[DEMO]intent + B-roll + captions + timing).NN_<slug>.narration.txt— clean spoken VO only (feed tovoice-clone/avatar-reel-composer'snarrate.py).NN_<slug>.reel.txt— plain-text script with[DEMO: url | intent]...[/DEMO]markers (drop-in foravatar-video-reel).NN_<slug>.storyboard.json— a storyboard scaffold (talking_head + broll scenes whosetexttiles the narration verbatim) foravatar-reel-composer; fillavatar_dirwhen you pick an avatar.README.md— the series index, in order.
All outputs land under onboarding/<company>/ (git-ignored).
Workflow
Copy this checklist and track progress:
- [ ] 1. Discover context (detect_context.py + augment with MCP/CI/transcripts)
- [ ] 2. Confirm the company (fill facts{}, resolve gaps, get sign-off on assumptions)
- [ ] 3. Plan the curriculum (scaffold_curriculum.py — user guideline OR default minimum)
- [ ] 4. Scaffold episodes (scaffold_episode.py — one beat sheet per episode)
- [ ] 5. Write the copy (fill each episode.json, grounded in company_context.json)
- [ ] 6. Validate (check_episode.py — fix every FAIL, weigh WARNs)
- [ ] 7. Render (render_episode.py — the 4 files/episode + README)
- [ ] 8. Hand off (feed .reel.txt / .storyboard.json to the avatar skills)
1. Discover context
Probe every connected source and write company_context.json:
python3 .cursor/skills/onboarding-script/scripts/detect_context.py \
--out onboarding/<company>/context/company_context.json
# optional: --org <github-org> --keywords "acme,widget,platform" --no-workflows
The script covers the CLI-visible sources (read-only, short timeouts, never fails a run if a tool is absent):
- GitHub (
gh): login, orgs, repos (name/description/language/topics/default branch/template flag), flags askills/templates/starter/.githubrepo, and scans a few repos'.github/workflows/*.ymlfor deploy hints. - Clouds (first-class, each optional):
az account show;gcloud config list+gcloud projects list;vercel whoami+vercel projects ls. Plus name-detection ofaws/flyctl/wrangler/kubectl/docker/… - Transcripts: finds this project's
agent-transcripts/and greps for company/stack keywords.
Then you (the agent) augment the JSON with the MCP-only and doc-only sources (the script can't call MCPs) — see REFERENCE.md "Discovery playbook" for the exact queries:
- If a Notion MCP is connected: search for handbook / onboarding / engineering-guidelines / deploy pages; pull the relevant ones.
- If a Linear MCP is connected: read the team, workflow states, labels and projects (the real "how we work" process).
- Read the flagged repos'
README/CONTRIBUTINGand CI workflows viagh apito ground the create-project and deploy steps. - Mine the transcript matches for company-specific facts.
Fill the facts{} block and set each sources[].status. Never fabricate
internal process: if a fact is unknown, leave it and mark it [TO CONFIRM].
2. Confirm the company
If company_selection.needs_user_choice is true (the probe found more than
one probable company across the connected sources — e.g. a gh login/org plus a
different gcloud/vercel/az account), STOP and ask the user which one is
correct before doing anything else. Use AskQuestion and list
company_candidates[] (show each name + the sources that suggested it). Then
lock it in by re-running:
python3 .cursor/skills/onboarding-script/scripts/detect_context.py \
--company <chosen> # or --org <chosen> if it's the GitHub org \
--out onboarding/<company>/context/company_context.json
Then show the user the resolved company, stack, and the gaps[] list, and get
sign-off on any assumption before scripting.
3. Plan the curriculum
Ask the user for a guideline (which topics, order, target role, language, length). If they don't give one, propose the minimum default curriculum:
- Welcome & company intro — mission, values, team, what we build.
- Tools & accounts we use — the detected stack (gh org, cloud, Notion, Linear, comms) + how to get access.
- Engineering best practices — branching, PRs, reviews, coding standards.
- Create a new project with the company skills — the concrete bootstrap (template repo /
npx skills add <org>/…/ scaffold). - How we deploy — the real CI/CD + cloud flow (from the CI workflows and the detected cloud: Azure/GCP/Vercel).
- Where to get help & what's next — people, docs, rituals.
# default minimum curriculum (grounded in the context)
python3 .cursor/skills/onboarding-script/scripts/scaffold_curriculum.py \
--context onboarding/<company>/context/company_context.json \
--language en --audience "new engineer" --seconds 45 \
--out onboarding/<company>/curriculum.json
# custom set: write an episodes JSON (id/title/objective/topics/demo_targets) and pass it
python3 .cursor/skills/onboarding-script/scripts/scaffold_curriculum.py \
--context .../company_context.json --episodes-file my_topics.json \
--out onboarding/<company>/curriculum.json
4. Scaffold episodes
Turn the curriculum into one beat-sheet episode.json per episode:
python3 .cursor/skills/onboarding-script/scripts/scaffold_episode.py \
--curriculum onboarding/<company>/curriculum.json \
--out-dir onboarding/<company>/episodes/
# or a single one: --episode create-project
5. Write the copy
Edit each episodes/<slug>.episode.json. Every beat has a kind
(talking_head | demo | broll), narration (the spoken VO), on_screen,
caption, and — for demo beats — a demo.url + demo.intent (natural-language
description of the screen recording). Ground every claim in
company_context.json; cite the source in the episode's sources[]; mark
anything unverified [TO CONFIRM]. Keep sentences short and spoken (this is
read aloud / lip-synced and captioned).
6. Validate (feedback loop)
python3 .cursor/skills/onboarding-script/scripts/check_episode.py \
onboarding/<company>/episodes/*.episode.json
Fix every FAIL; weigh each WARN. Re-run until it passes.
7. Render
python3 .cursor/skills/onboarding-script/scripts/render_episode.py \
onboarding/<company>/episodes/*.episode.json \
--out onboarding/<company>/scripts/
Writes the four files per episode + the series README.md index.
8. Hand off
The rendered files are drop-in for the avatar pipeline the user installs later:
# avatar-video-reel: the [DEMO]-marked plain-text script
python3 .cursor/skills/avatar-video-reel/scripts/generate_reel.py \
--script-file onboarding/<company>/scripts/04_create-project.reel.txt --language en --format reel ...
# avatar-reel-composer: the storyboard scaffold (set avatar_dir first)
python3 .cursor/skills/avatar-reel-composer/scripts/compose_reel.py \
onboarding/<company>/scripts/01_welcome.storyboard.json --finish
Output layout
onboarding/<company>/
context/company_context.json # what we discovered (+ your MCP/doc augmentation)
curriculum.json # ordered episodes
episodes/<slug>.episode.json # per-episode beat sheet (source of truth; edit these)
scripts/ # rendered: .script.md .narration.txt .reel.txt .storyboard.json
README.md # the series index, in order
Anti-patterns
- Inventing internal process (deploy steps, tools) not backed by a source — mark
[TO CONFIRM]and ask instead. - Hard-coding one company — always resolve identity/stack from the connected tools; nothing is specific to any org.
- One long block of VO — short sentences per beat so captions show one phrase at a time.
- A
demobeat without aurl+intent— the recorder needs both (it drives the browser from the intent). - Skipping the confirmation step — never ship assumptions as facts.
Additional resources
- The full discovery playbook (exact gh + az/gcloud/vercel probes, Notion/Linear prompts, transcript mining, degrade-gracefully rules), the JSON schemas, and the tool-to-topic map: REFERENCE.md
- Worked examples: examples/curriculum.example.json, examples/episode.example.json, examples/01_welcome.script.example.md
What ships with it: 9 files
71.6 KB alongside SKILL.md, 5 of them executable
examples/
- 01_welcome.script.example.md1.5 KB
- curriculum.example.json3.5 KB
- episode.example.json2.3 KB
scripts/
- check_episode.pyruns5.6 KB
- detect_context.pyruns24.4 KB
- render_episode.pyruns10.7 KB
- scaffold_curriculum.pyruns9.2 KB
- scaffold_episode.pyruns6.3 KB
- REFERENCE.md8.1 KB
Gives 0 of the 12 instructions most hr recruiting skills give in ~2.4k tokens
Counted across 356 of the 357 authors here whose files we hold, read 2026-08-07
- Quantify achievements with specific metricsin 14 of 356, across 6 files
- Keep the resume under two pagesin 14 of 356, across 6 files
- Request the full job description if not providedin 12 of 356, across 4 files
- Extract keywords and prioritize job requirementsin 12 of 356, across 4 files
- Stop and ask for clarification if required inputs are missingin 12 of 356, across 5 files
- Map candidate experience to job requirementsin 11 of 356, across 3 files
- Ask if the user wants adjustmentsin 11 of 356, across 3 files
- Provide strengths and gap analysis after the resumein 10 of 356, across 2 files
- Request candidate background details if not providedin 10 of 356, across 2 files
- Format experience bullets as action verb plus resultin 10 of 356, across 2 files
- Ask for missing inputs before startingin 10 of 356, across 9 files
- Use exact job description terminologyin 9 of 356, across 1 file
Said here and by no other author read
- resolve company identity from connected tools
- degrade gracefully when a source is missing
- ask the user to confirm when multiple companies are detected
- get user sign-off on any unverified assumptions
- ask the user for curriculum guidelines
- propose a default curriculum if none is provided
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.