scaffold-exercises
- 信任分
- 88/100
- 兼容 Agent
- 1
- 领域
- 工程开发
- 兼容 Agent
- Claude Code
- 信任分
- 88 / 100 · 社区维护
- 作者 / 版本 / 许可
- @mattpocock · 未声明 license
- 安装命令数
- 1 条
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
想读作者英文原文? ↓ 滚到正文区切换 · 在 GitHub 查看 ↗
scaffold-exercises 是给 ai-hero 教学仓库用的——它把「新课的目录骨架」自动化:建出能通过 pnpm ai-hero-cli internal lint 的 exercises/ 子树,再正常 git commit。重点是严格遵循命名 + 结构规则,让 lint 和 pnpm run exercise 工具链跑得动。
命名规范
- Section:
XX-section-name/在exercises/下,例如01-retrieval-skill-building - Exercise:
XX.YY-exercise-name/在 section 下,例如01.03-retrieval-with-bm25 - 编号
XX是 section、XX.YY是 exercise;命名一律 dash-case 小写
Exercise 三种 variant
每个 exercise 至少要有:problem/(带 TODO 的学生工作区)、solution/(参考实现)、explainer/(概念性材料、无 TODO)。Stub 时默认建 explainer/,除非计划另说。每个 variant 子目录里的 readme.md 不能为空(最少得有一行标题)、不能有死链;带代码的还得有 >1 行的 main.ts,但 stub 阶段允许 readme-only。
工作流
① 解析计划,抽出 section/exercise/variant;② mkdir -p 建路径;③ 每个 variant 写一份最小 readme(标题 + 描述);④ 跑 pnpm ai-hero-cli internal lint 验;⑤ 按报错迭代直到通过。重命名 / 移位用 git mv 而非 mv,保住 history。
Lint 摘要
检查项包括:每个 exercise 有 problem/solution/explainer 之一;至少 problem/ / explainer/ / explainer.1/ 有一个;主 variant 的 readme.md 非空;禁止 .gitkeep 与 speaker-notes.md;readme 里不能有死链;readme 不能含 pnpm run exercise 命令;非 readme-only 的子文件夹必须有 main.ts。
适合谁
- 在 ai-hero 课程仓库或同款结构的教学项目里加新 section / exercise
- 一次拆几十条 exercise 大纲、需要快速建骨架并保证 lint 通过
何时不要用
- 不是 ai-hero 体系:lint 规则不通用,本技能没用武之地
- 单题快速试做:直接手建文件比走骨架更快
配套
review-mattpocock(同体系的双轴 review)、setup-matt-pocock-skills(一键安装 Matt Pocock 系列技能)。
Scaffold Exercises
Create exercise directory structures that pass pnpm ai-hero-cli internal lint, then commit with git commit.
Directory naming
- Sections:
XX-section-name/insideexercises/(e.g.,01-retrieval-skill-building) - Exercises:
XX.YY-exercise-name/inside a section (e.g.,01.03-retrieval-with-bm25) - Section number =
XX, exercise number =XX.YY - Names are dash-case (lowercase, hyphens)
Exercise variants
Each exercise needs at least one of these subfolders:
problem/- student workspace with TODOssolution/- reference implementationexplainer/- conceptual material, no TODOs
When stubbing, default to explainer/ unless the plan specifies otherwise.
Required files
Each subfolder (problem/, solution/, explainer/) needs a readme.md that:
- Is not empty (must have real content, even a single title line works)
- Has no broken links
When stubbing, create a minimal readme with a title and a description:
# Exercise Title
Description here
If the subfolder has code, it also needs a main.ts (>1 line). But for stubs, a readme-only exercise is fine.
Workflow
- Parse the plan - extract section names, exercise names, and variant types
- Create directories -
mkdir -pfor each path - Create stub readmes - one
readme.mdper variant folder with a title - Run lint -
pnpm ai-hero-cli internal lintto validate - Fix any errors - iterate until lint passes
Lint rules summary
The linter (pnpm ai-hero-cli internal lint) checks:
- Each exercise has subfolders (
problem/,solution/,explainer/) - At least one of
problem/,explainer/, orexplainer.1/exists readme.mdexists and is non-empty in the primary subfolder- No
.gitkeepfiles - No
speaker-notes.mdfiles - No broken links in readmes
- No
pnpm run exercisecommands in readmes main.tsrequired per subfolder unless it's readme-only
Moving/renaming exercises
When renumbering or moving exercises:
- Use
git mv(notmv) to rename directories - preserves git history - Update the numeric prefix to maintain order
- Re-run lint after moves
Example:
git mv exercises/01-retrieval/01.03-embeddings exercises/01-retrieval/01.04-embeddings
Example: stubbing from a plan
Given a plan like:
Section 05: Memory Skill Building
- 05.01 Introduction to Memory
- 05.02 Short-term Memory (explainer + problem + solution)
- 05.03 Long-term Memory
Create:
mkdir -p exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer
mkdir -p exercises/05-memory-skill-building/05.02-short-term-memory/{explainer,problem,solution}
mkdir -p exercises/05-memory-skill-building/05.03-long-term-memory/explainer
Then create readme stubs:
exercises/05-memory-skill-building/05.01-introduction-to-memory/explainer/readme.md -> "# Introduction to Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/explainer/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/problem/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.02-short-term-memory/solution/readme.md -> "# Short-term Memory"
exercises/05-memory-skill-building/05.03-long-term-memory/explainer/readme.md -> "# Long-term Memory"