Own a reusable curriculum and an offline course that a learner can finish without a continuing
conversation. tk-teach owns personal tutoring based on observed answers and misconceptions;
tk-explain owns one concept/system explanation. Creation grants no commit, push, PR or deployment.
Reuse the user's goal, corpus, audience and prior media decisions; ask only material unknowns.
Design, then author
Research current primary sources and retain claim-level provenance. Account for every supplied
corpus member as used, partial, unavailable or omitted with reason; unavailable essential material
prevents a complete-corpus claim. Work backward from what a learner should explain, judge or do.
Map prerequisites, ordered lessons, worked examples, transfer practice and reasoned answers in
curriculum.md; keep sources.md and authored course.json beside the output. A completed course
must teach and assess its outcomes without relying on hidden chat context or a tutor's memory.
Never infer mastery from reading, playback, scores or a manually checked completion box.
Choose each lesson's medium from its learning goal. Prefer HTML/SVG slides plus local generated
narration for a staged explanation. Choose video when continuous movement, actual software input
or a physical procedure is itself needed. Do not duplicate every slide deck as a video. Resolve
TTS before production, including available engine/model/voice and readiness from tk-tts;
reuse answers rather than asking again. Read media production for selected
narration or video. Keep synthesis in tk-tts and assembly in tk-video; consume ordinary files,
never sibling Python imports or a shared dispatcher. Browser speech is an explicit final playback
fallback, not an exported-audio engine. Preserve an explicit no-narration choice.
Read clear writing for new narration/prose. Introduce what each slide will explain, connect the visible entities to a worked case, then explain the result and transition. A script must make sense with its slide; do not read disconnected labels. Read visual grammar when choosing a figure and HTML output for the offline/theme/escaping contract. The course player is a media layout; document-navigation rules apply only to document-like notes, not a second rail around the player.
Build and verify
Read authoring and build, use the packaged components and fixed player,
and run scripts/build_course.py --input <course.json> --output <new-course-dir>.
Default to ignored .tigerkit/courses/<topic>/; honor explicit destinations. Keep learning
content separate from renderer code. Do not copy demo content, brand marks, engine setup or
implementation notes into learning screens. Retain third-party notices and the AI footer.
The output includes a single-file index.html and independently readable lesson pages.
Inspect the actual reading/listening order, objective/prerequisite coverage, source support,
component overflow, captions, notes, question/answer separation and retry feedback. Verify audio
readiness, missing-file recovery, immediate first play, breathing gaps, reveal/seek state,
caption size/opacity (default 50%), light/dark/system themes, settings hit areas, default mute,
volume/rate and progress import/export. A finished video owns its audio, pauses and time axis;
never overlay live TTS. Manual progress belongs to the course and is not tutoring evidence.
Use tk-browser-verify for actual runtime checks; static/media doubles are not browser or listening
proof. Report unexecuted checks and pending human listening, never fabricate generated audio.
Return a concise link and actual verification limits. Do not launch the user's browser.
For existing artifacts or several topics, read incremental editing and collections before changing anything. Preserve unrelated courses, learner notes and unknown progress formats.
For attribution and deliberate omissions, see sources.
Narration Choice
Ask the creator to choose TTS, supplied audio or no narration before any video or spoken-slide production. Reuse an answered parent/user choice; video or a voice preference is not TTS consent. Show current tk-tts model/voice/device/setup options before synthesis/assembly. Preserve no narration; offer MP4 for GIF sound. Static HTML/text needs no unrelated voice interview. Installation/download/publication require their own authority; playback mute/fallback are separate.
Artifact Paths
Create artifacts only when this skill's task authorizes them. Before any artifact write, temporary checkout/transport, or ignore setup, read artifact paths and apply its Git exclusion, safe-path, and ownership checks. Reuse identical content still in this context; hash-check uncertain copies and reread changed/lost content. Always repeat fresh safety checks. Default repository-owned output to .tigerkit/; honor explicit final destinations. Conversation-only work skips this reference and performs no file or ignore setup. Artifact handling grants no unrelated mutation or publication authority.
User Questions
Resolve researchable facts and reuse matching authorization before asking. For an unmet prerequisite or material user-owned decision, read question rounds and recovery (reuse it if still in context). Ask only answerable decisions in its plain-chat format, with approval separate. Otherwise continue without confirmation.
Skill Feedback
For a reusable incident, retain minimal non-secret evidence and suggest tk-retro.
Invocation, feedback artifacts, installed-skill edits and publication require separate
authorization through the owning workflow; this pointer grants none.
Reader-facing Result Summary
Return a brief result with the outcome, actual verification, material limitations and direct deliverable links. Distinguish plans/skipped checks from executed work; retain outstanding manual checks and real cleanup, blocker or human-action details. Never claim unverified completion or cleanup. Preserve the owner's required artifact, publication preview, approval boundary, machine return, exact status/footer and final question block; keep nested returns compact and omit empty sections.
Output Notation
Use ASCII numbering (1. Item, (1) Item) and - Item, not enclosed/keycap numerals.
Show complete absolute clickable file paths, including examples, without ellipses.
Preserve exact code, commands, identifiers, URLs, quotations and verified UI labels
unless their edit is authorized.
For chat comparisons with multiple shared attributes, use narrow GFM pipe tables (about four columns, header, short cells); otherwise use lists. No box-drawing, fenced or empty tables. Owner-specific previews take precedence; publication bodies and file artifacts retain their own table formats.
In rendered Markdown prose, use hyphens for ranges and escape literal tildes as \~;
preserve exact code, quotations and identifiers.
For authorized temporary input files, follow Artifact Paths before creation and consumption; a prefilled template is not completed input. This grants no write authority.