Skip to content

blendtutor-course skill: author courses, lessons, evals, and Quarto/site output - #241

Merged
mcmullarkey merged 4 commits into
mainfrom
feat/course-authoring-skill
Sep 13, 2026
Merged

mcmullarkey merged 4 commits into
mainfrom
feat/course-authoring-skill

Conversation

@mcmullarkey

Copy link
Copy Markdown
Owner

Summary

Adds a project skill, .claude/skills/blendtutor-course/SKILL.md, that walks an author from source material to a published blendtutor course:

  1. Scaffold with blendtutor init and blendtutor new lesson.
  2. Write lessons that work in webR/Pyodide: inline data, checks that assert results (R stopifnot, Python assert), a solution that passes them, bullet hints/gotchas, and success_criteria for what checks cannot see.
  3. Write a minimal eval: four cases (canonical correct, alternative correct, near-miss that passes checks but misses the point, check-caught mistake).
  4. Verify locally without paid calls: validate, list, plus copy-paste R and Python scripts that run the solution and every eval case against the checks. Paid blendtutor eval only after confirming with the user.
  5. Publish: export-quarto snippet / --document / --key-page with the Quarto setup gotchas (install next to _quarto.yml, filter in one place, commit _extensions/, no file://), or blendtutor build --target webr|pyodide, with the --embed-key risk called out.

.gitignore now ignores .claude/* but shares .claude/skills/, so local Claude settings and plans stay out of git.

Test plan

  • The Python verification script, extracted verbatim from SKILL.md, run against a real Python lesson + eval: solution and correct cases pass, near-miss passes checks, check-caught case fails
  • The R verification script, extracted verbatim from SKILL.md, run against examples/write-less-code-r/01_seed_data.yaml + its eval: solution and correct cases pass, incorrect cases fail; no temp files left behind
  • CLI commands and flags in the skill match --help for init, new lesson, validate, list, run, eval, build, export-quarto
  • git check-ignore: SKILL.md tracked; .claude/settings.local.json and .claude/plans/ still ignored
  • Invoke the skill end to end in a fresh Claude Code session on a new course

…and Quarto/site output

A project skill under .claude/skills/ walks an author from source material to a published course: scaffold with init/new, write lessons whose checks, solution, hints, and success_criteria work in webR/Pyodide, write a four-case minimal eval (canonical, alternative, near-miss, check-caught), verify solution and eval cases against the checks locally for R and Python without paid calls, then export a Quarto snippet/page or build a static site. .gitignore keeps local .claude state ignored while sharing .claude/skills/.
…eating Lessons, point README at the skill

README keeps install, API key, the command overview, and Pages deploy, adds a Claude Code skill quick reference, and links each Quarto topic to its whole-game section (88 lines). The whole-game chapter now carries the Quarto extension quick start, export, auto-bootstrap opt-out, COI, demo book, and BYOK prose plus the eval-report path scrub note. Creating Lessons duplicated the whole game and is removed from the book. The docs-contract scripts read the moved prose from whole-game.md; README keeps its line ceiling and a pin on the demo-book link.
@mcmullarkey
mcmullarkey merged commit 40e6379 into main Sep 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant