scaffold-exercises
vinvcn/mattpocock-skills-zh-CN/skills/misc/scaffold-exercises/SKILL.md
创建包含章节、题目、答案和讲解的练习目录结构,并确保通过 linting。适用于用户想 scaffold exercises、创建 exercise stubs,或设置新的课程章节时。
Skill4.6k starsChanged 55 days ago
What's in it
- Scaffold Exercises
- Directory naming
- Exercise variants
- Required files
- Workflow
- Lint rules summary
- Moving/renaming exercises
- Example: stubbing from a plan
---
name: scaffold-exercises
description: 创建包含章节、题目、答案和讲解的练习目录结构,并确保通过 linting。适用于用户想 scaffold exercises、创建 exercise stubs,或设置新的课程章节时。
---
# Scaffold Exercises
创建能通过 `pnpm ai-hero-cli internal lint` 的 exercise directory structures,然后用 `git commit` 提交。
## Directory naming
- **Sections**:`exercises/` 下的 `XX-section-name/`(例如 `01-retrieval-skill-building`)
- **Exercises**:section 下的 `XX.YY-exercise-name/`(例如 `01.03-retrieval-with-bm25`)
- Section number = `XX`,exercise number = `XX.YY`
- Names 使用 dash-case(小写、连字符)
## Exercise variants
每个 exercise 至少需要这些 subfolders 中的一个:
- `problem/` — student workspace,包含 TODOs
- `solution/` — reference implementation
- `explainer/` — conceptual material,不含 TODOs
创建 stub 时,除非 plan 指定其他 variant,否则默认使用 `explainer/`。
## Required files
每个 subfolder(`problem/`、`solution/`、`explainer/`)都需要一个 `readme.md`,要求:
- **非空**(必须有真实内容,即使只有一行 title 也可以)
- 没有 broken links
创建 stub 时,生成带 title 和 description 的最小 readme:
```md
# Exercise Title
Description here
```
如果 subfolder 有 code,还需要 `main.ts`(>1 行)。但对 stubs 来说,readme-only exercise 可以接受。
## Workflow
1. **Parse the plan** — 提取 section names、exercise names 和 variant types
2. **Create directories** — 对每个 path 执行 `mkdir -p`
3. **Create stub readmes** — 每个 variant folder 一个带 title 的 `readme.md`
4. **Run lint** — 执行 `pnpm ai-hero-cli internal lint` 验证
5. **Fix any errors** — 迭代直到 lint 通过
## Lint rules summary
linter(`pnpm ai-hero-cli internal lint`)检查:
- 每个 exercise 有 subfolders(`problem/`、`solution/`、`explainer/`)
- 至少存在 `problem/`、`explainer/` 或 `explainer.1/` 之一
- primary subfolder 中存在非空 `readme.md`
- 没有 `.gitkeep` files
- 没有 `speaker-notes.md` files
- readmes 中没有 broken links
- readmes 中没有 `pnpm run exercise` commands
- 除非是 readme-only,否则每个 subfolder 都需要 `main.ts`
## Moving/renaming exercises
重新编号或移动 exercises 时:
1. 使用 `git mv`(不是 `mv`)重命名 directories,保留 git history
2. 更新 numeric prefix 以维持顺序
3. 移动后重新运行 lint
Example:
```bash
git mv exercises/01-retrieval/01.03-embeddings exercises/01-retrieval/01.04-embeddings
```
## Example: stubbing from a plan
给定这样的 plan:
```
Section 05: Memory Skill Building
- 05.01 Introduction to Memory
- 05.02 Short-term Memory (explainer + problem + solution)
- 05.03 Long-term Memory
```
创建:
```bash
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
```
然后创建 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"
```
More agent context in vinvcn/mattpocock-skills-zh-CN
39 other files this repository gives its agents.
AGENTS.md
CLAUDE.md
Skill
- ask-mattskills/engineering/ask-matt/SKILL.md
- codebase-designskills/engineering/codebase-design/SKILL.md
- code-reviewskills/engineering/code-review/SKILL.md
- diagnosing-bugsskills/engineering/diagnosing-bugs/SKILL.md
- domain-modelingskills/engineering/domain-modeling/SKILL.md
- grill-with-docsskills/engineering/grill-with-docs/SKILL.md
- implementskills/engineering/implement/SKILL.md
- improve-codebase-architectureskills/engineering/improve-codebase-architecture/SKILL.md
- prototypeskills/engineering/prototype/SKILL.md
- researchskills/engineering/research/SKILL.md
- resolving-merge-conflictsskills/engineering/resolving-merge-conflicts/SKILL.md
- setup-matt-pocock-skillsskills/engineering/setup-matt-pocock-skills/SKILL.md
- tddskills/engineering/tdd/SKILL.md
- to-specskills/engineering/to-spec/SKILL.md
- to-ticketsskills/engineering/to-tickets/SKILL.md
- triageskills/engineering/triage/SKILL.md
- wayfinderskills/engineering/wayfinder/SKILL.md
- wizardskills/engineering/wizard/SKILL.md
- claude-handoffskills/in-progress/claude-handoff/SKILL.md
- implement-specskills/in-progress/implement-spec/SKILL.md
- loop-meskills/in-progress/loop-me/SKILL.md
- prskills/in-progress/pr/SKILL.md
- retroskills/in-progress/retro/SKILL.md
- setup-ts-deep-modulesskills/in-progress/setup-ts-deep-modules/SKILL.md
- writing-beatsskills/in-progress/writing-beats/SKILL.md
- writing-fragmentsskills/in-progress/writing-fragments/SKILL.md
- writing-shapeskills/in-progress/writing-shape/SKILL.md
- git-guardrails-claude-codeskills/misc/git-guardrails-claude-code/SKILL.md
- migrate-to-shoehornskills/misc/migrate-to-shoehorn/SKILL.md
- setup-pre-commitskills/misc/setup-pre-commit/SKILL.md
- grillingskills/productivity/grilling/SKILL.md
- grill-meskills/productivity/grill-me/SKILL.md
- handoffskills/productivity/handoff/SKILL.md
- teachskills/productivity/teach/SKILL.md
- to-questionnaireskills/productivity/to-questionnaire/SKILL.md
- wait-whatskills/productivity/wait-what/SKILL.md
- writing-for-agentsskills/productivity/writing-for-agents/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
Reports can't be read right now.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

