course-extension
Skill1 starsChanged 24 days agoMITView on GitHub
How to extend a finished codelabgen course — analysing what a request needs against the existing curriculum and source digests, planning targeted research (hunt.yaml), placing new or deepened lessons without renumbering, and what happens to lessons that build on rewritten ones. Used by the gap analyst and by the curriculum architect in extend mode.
In this repository24 other files it gives its agents.
- code-authoringSkill
- codelabgen-orchestratorSkill
- curriculum-designSkill
- diagrammingSkill
- example-designSkill
- lesson-reviewSkill
- notes-writingSkill
- readalong-writingSkill
- runtime-strategySkill
- site-assemblySkill
- source-articlesSkill
- source-books-coursesSkill
- source-digestSkill
- source-evaluationSkill
- source-github-reposSkill
- source-official-blogSkill
- source-official-docsSkill
- source-package-internalsSkill
- source-papers-specsSkill
- source-qaSkill
- source-talks-workshopsSkill
- source-universitySkill
- state-protocolSkill
- topic-extractionSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 2 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 19
Read request.md, .codelabgen/curriculum.yaml, and the lessons the request touches: their README.md, docs/notes.md, and spec.
- Very specific: line 20
Read .codelabgen/sources/index.md and the digests of the relevant sources, especially their "Gaps / dig deeper" sections: they often say …
- Distinctive: line 86
Never remove lessons. Extensions only add and rewrite.
- Distinctive: line 87
Keep slugs of existing lessons unchanged: the slug path is how a lesson is recognised.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Extending a course
A finished course can be extended in two ways:
- Deepen an existing topic: "more on checkpointers", "explain reducers properly"
- Add a new topic: "add a module on deployment", "add a lesson on streaming"
Extensions live in .codelabgen/extensions/<n>/. The request is in request.md.
1. Gap analysis (gap analyst)
Work out what the request needs and what the course already has:
- Read
request.md,.codelabgen/curriculum.yaml, and the lessons the request touches: theirREADME.md,docs/notes.md, and spec. - Read
.codelabgen/sources/index.mdand the digests of the relevant sources, especially their "Gaps / dig deeper" sections: they often say exactly where more material is. - Decide what is already covered (and where), what is covered only shallowly, and what is missing entirely.
Write gaps.md:
# Extension 2: gap analysis
## Request
"Add a lesson on streaming"
## Already in the course
- 1.2 shows `stream_mode="updates"` in passing (readalong, "Запуск"), without explanation
## What the extension needs
- Streaming modes: values, updates, messages, custom, debug; when to use which
- Token streaming from LLM nodes
- …
## Material we already have
- official-docs--…--a1b2c3 covers stream modes (digest, "Topics covered"); its "dig deeper" points to the streaming how-to (not fetched)
## Missing material
- Token streaming with LLM nodes: no digest covers it
## Suggested placement
A new lesson 2.5 at the end of module 2, extending the 2.4 example. No renumbering needed.And hunt.yaml: the targeted searches to run. It may be empty ([]) when the existing digests are enough.
- type: official-docs
skill: source-official-docs
focus: "Streaming how-to: stream modes and token streaming (linked from the Graph API digest's dig-deeper section)"
- type: qa
skill: source-qa
focus: "Issues about streaming LLM tokens through graph nodes"type and skill come from the hunters' table (source-official-docs, source-articles, …). focus tells the hunter exactly what to look for. Keep it to the few searches that matter.
2. The proposed curriculum (architect, extend mode)
The architect writes a complete proposed curriculum to .codelabgen/extensions/<n>/curriculum.yaml: a copy of the current curriculum.yaml with the change applied. Then:
codelabgen curriculum number --file .codelabgen/extensions/<n>/curriculum.yaml
codelabgen curriculum validate --file .codelabgen/extensions/<n>/curriculum.yamlPlacement: avoid renumbering
Changing an existing lesson's id moves its directory, renames its package and breaks the user's branches. So place new material, in this order of preference:
- A sub-lesson under the lesson it deepens (
2.3.1), if the tree has room (three levels at most). - At the end of the module it belongs to.
- A new module at the end of the course.
Insert in the middle (renumbering later lessons) only when the order really matters for understanding. Say so clearly in the status notes: the user must approve renumbering explicitly.
Deepening an existing lesson
Edit that lesson's summary and objectives in the proposal: the lesson will be rewritten from its spec onwards. Lessons whose example builds on it (example.from, directly or indirectly) become stale and are re-checked.
Rules
- Never remove lessons. Extensions only add and rewrite.
- Keep slugs of existing lessons unchanged: the slug path is how a lesson is recognised. Changing a slug looks like removing a lesson and adding a new one.
- Wording-only edits (titles) are fine; they don't trigger a rewrite.
- New lessons follow the curriculum-design skill: objectives, prerequisites, storyline, and
sources, including the new digests.
3. After the user approves
codelabgen extend apply (with --allow-renumber only when the user agreed) does the rest:
- registers new lessons as
pending - sends rewritten lessons back to
pending - marks lessons that build on them
stale - moves renumbered lessons: directories, packages, specs, runs, links
Lesson production then runs as usual.
Stale lessons are re-checked, not rewritten blindly. Run codelabgen verify <id>. If it passes, the lesson reviewer checks whether the lesson still agrees with the rewritten one it builds on. Then either accept it (state set <id> reviewed, then done) or rework it like any review.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

