SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

lesson-builder

Pesquisa e Web

Generates bilingual TEFL/ESL courses with lessons, exams, flashcards, conversations, pronunciation drills, worksheets, and syllabi for any language pair.

0estrelas
Ver no GitHub ↗Autor: ddtravellerLicença: MIT
<!-- Changelog (most recent first) WS5 complete (2026-04-17): CHILDREN_PAGES.md, NOTEBOOKLM.md, IMAGE_GENERATION.md deleted outright (no redirect stubs). Content migrated to templates/children_pages/{README.md,story_example.html,game_example.html,coloring_example.html}, templates/notebooklm/query_patterns.md, templates/images/{README.md,prompt_style_prefix.txt}. SKILL.md gained §Querying the corpus (Phase 2 anchor) and §Image prompt conventions (Quality Checklist §3 anchor). All SKILL.md references to deleted files updated to template locations. README.md repo tree updated. NOTE: SKILL.md line count 681 — above [440,520] target (see T095 gate note; user review needed). WS4+WS6 complete (2026-04-17): scripts/backend_probes.py (shared probe module, 8 backends); scripts/check_content.py (Phase 5c content-truth validator, off/tavily/notebooklm backends, 20%/10%/100% sampling, seeded per course_id); Interactive Mode Q8-Q10 backend choices block added; §Course-creation backend choices availability-check table added; §Phase 5c shipping gate added; config/schema.md updated with unified backend choices group; all example configs updated with content_truth/images.backend/video fields; check_pages.py refactored to import probe_node() from backend_probes.py. WS3 complete (2026-04-17): scripts/regenerate.py added — page-level and question-level patch paths; config/children_10_12.json added; §Operational: Patching a Single Page or Question anchor added to SKILL.md; templates/buddy/tasks.md patch-path note added. Architecture note: children_10_12 quiz pages use inline HTML question blocks (not questionBank JS object); determinism check correctly flags generator's random distractor shuffle. WS2 complete (2026-04-17): check_pages.py (rules 2.1-2.7) added; §Common JS bugs 4a-4e, §Relative path depth tutorial, §Filename convention coordination, §Path-bug detection script deleted; Unit 1 gate trimmed. SKILL.md now 569 lines. WS1 complete (2026-04-17): Phases 1-4 delegated to buddy:*; minimal fallback at Appendix. -->

When to use

Use this skill when:

  • The user asks to create a lesson, course, syllabus, or curriculum
  • The user asks to generate activities, exams, flashcards, or other course pages
  • The user says "build lesson", "create course", "generate syllabus", etc.

Step 0: Check Backend Availability (ALWAYS RUN FIRST)

On every invocation, before asking any questions, run the shared backend-availability script and display its output to the user:

python scripts/backend_probes.py

This probes every backend the skill supports (node, tavily, notebooklm, flux, heygen, remotion, capcut, webm) and prints a status line per backend plus an "N/M backends available" summary. The script is the single source of truth for auth and availability checks — do not duplicate its logic in prose.

Downstream behavior based on the report:

  • Research: if tavily+notebooklm both OK → Tavily→NotebookLM bridge; if only notebooklm OK → plain NotebookLM source add-research; if only tavily OK → Tavily standalone; if neither → Web Search fallback.
  • Images: if flux SKIPimages.backend falls back to off regardless of config.
  • Video: each chosen video.backend must report OK; otherwise warn and fall back to off (the availability-check contract is in §Interactive Mode below).

If any backend reports SKIP and the user wants to enable it, see:

  • NotebookLM auth troubleshooting → templates/notebooklm/query_patterns.md
  • Tavily login / install → run tvly login --api-key ... or curl -fsSL https://cli.tavily.com/install.sh | bash
  • Replicate token → add REPLICATE_API_TOKEN=r8_... to .env

Then proceed to interactive mode.

Interactive Mode — Ask Before Building

If the user invokes this skill without specifying all parameters, ASK:

  1. Topic/Subject — "What topic should the course cover?" (e.g., "General English for beginners", "Business English", "English through IT skills")

  2. Languages — "What is the learner's first language (L1) and target language (L2)?" (default: Thai → English)

  3. Number of weeks/units — "How many units?" (default: 12)

  4. Age group — "Who is this course for?"

    • Children (4-7) — Audio-first, big visuals, tap/drag interactions, no reading required
    • Older children (8-12) — Can read simple text, handle basic game rules
    • Adults — Full text-based lessons with grammar explanations
  5. Page types — "Which page types per unit?" Show options based on age group:

    Adult page types:

    • Lesson, Activities, Exam, Flashcards, Conversation, Pronunciation, Worksheet, Syllabus

    Children's page types: See templates/children_pages/README.md for full list and specifications (Story, Game, Song, Coloring, Stickers, Flashcards, Reward, Avatar Video for ages 4-7; Comic, Quiz Show, Word Puzzle, Adventure, Journal, Video Lesson, Board Game, Reading for ages 8-12)

  6. Output location — "Where should files go?" (default: HTML/courses/{topic_slug}/)

  7. Color theme — "Any color preference?" (or auto-pick)

Backend choices group (Q8–Q10) — ask contiguously after Q7. Before showing each prompt, call the matching probe from scripts/backend_probes.py and display the availability result inline. If the operator picks a backend that the probe reports as unavailable, show a visible warning and record off — never silently accept an unavailable backend. The config file always reflects what was actually confirmed available.

  1. Content-truth validation backend — probe availability first, then ask: Content-truth validation backend? [tavily / notebooklm / off] (default: off — no quota spend)

    • tavily: cross-checks vocab cards, grammar boxes, and exam answers via Tavily Research CLI.
    • notebooklm: queries the Phase-2 research notebook (ID stored in research.md).
    • off: skip content-truth validation entirely — no quota consumed.
    • Records to content_truth.backend in the course config.
  2. Image generation backend — probe availability first, then ask: Image generation backend? [flux / off] (default: off)

    • flux: generate images via Replicate (FLUX Dev model). Requires REPLICATE_API_TOKEN in env or .env. (Note: "FLUX" is the correct name — an earlier iteration of the spec used "FLEX" which was a typo.)
    • off: no image generation.
    • Records to images.backend in the course config.
  3. Video generation backend — probe availability first, then ask: Video generation backend? [heygen / remotion / capcut / webm / off] (default: off)

    • heygen: AI avatar video via HeyGen API. Costs approximately $2 per lesson video on the current plan — choose knowingly. Requires the heygen SSM parameter (AWS deploy profile).
    • remotion: React-based video generation via the watdonchan/ai-english-video Remotion project. Free, requires Node + the project directory.
    • capcut: prompt-to-human workflow — operator assembles video manually in CapCut. Always available; no runtime requirement.
    • webm: NOT YET IMPLEMENTED — probe returns unavailable; will fall back to off automatically.
    • off: no video generation.
    • Records to video.backend in the course config.
    • Follow-up if not off: Video max count (integer cap to prevent surprise spend)? → records to video.max_count.

Course-creation backend choices — availability-check contract

Before each Q8/9/10 prompt, run the corresponding probe and show the result inline:

BackendProbeOn unavailable
content_truth: tavilyprobe_tavily()tvly auth --jsonwarn, fall back to off
content_truth: notebooklmprobe_notebooklm()python -m notebooklm auth check --test --jsonwarn, fall back to off
images: fluxprobe_flux() — check `REPLICATE_API_

Como adicionar

/plugin marketplace add ddtraveller/lesson-builder

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.