---
id: daily-scaffold-exercises
name: "scaffold-exercises"
url: https://skills.yangsir.net/skill/daily-scaffold-exercises
author: mattpocock
domain: education
tags: ["learning-resources", "tutorial-generation", "skill-development", "automation"]
install_count: 3400
rating: 4.40 (20 reviews)
github: https://github.com/mattpocock/skills
---

# scaffold-exercises

> 自动创建符合 lint 规范的练习目录结构，运行检查并提交代码，简化课程练习环境搭建流程

**Stats**: 3,400 installs · 4.4/5 (20 reviews)

## Before / After 对比

### 手动搭建练习目录

**Before**:

手动创建嵌套目录结构、编写配置文件、反复运行 lint 修复格式问题，一次练习环境搭建需要 20 分钟

**After**:

自动生成符合规范的目录结构和配置文件，一键通过 lint 检查并提交，3 分钟完成练习环境搭建

| Metric | Before | After | Change |
|---|---|---|---|
| 搭建时间 | 20min | 3min | -85% |

## Readme

# scaffold-exercises

# 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/` inside `exercises/` (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 TODOs

- `solution/` - reference implementation

- `explainer/` - 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 -p` for each path

- **Create stub readmes** - one `readme.md` per variant folder with a title

- **Run lint** - `pnpm ai-hero-cli internal lint` to 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/`, or `explainer.1/` exists

- `readme.md` exists and is non-empty in the primary subfolder

- No `.gitkeep` files

- No `speaker-notes.md` files

- No broken links in readmes

- No `pnpm run exercise` commands in readmes

- `main.ts` required per subfolder unless it's readme-only

## Moving/renaming exercises

When renumbering or moving exercises:

- Use `git mv` (not `mv`) 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"

```
Weekly Installs210Repository[mattpocock/skills](https://github.com/mattpocock/skills)GitHub Stars4.6KFirst Seen7 days agoSecurity Audits[Gen Agent Trust HubPass](/mattpocock/skills/scaffold-exercises/security/agent-trust-hub)[SocketPass](/mattpocock/skills/scaffold-exercises/security/socket)[SnykPass](/mattpocock/skills/scaffold-exercises/security/snyk)Installed oncodex201gemini-cli198cursor198github-copilot197kimi-cli197amp197

---
*Source: https://skills.yangsir.net/skill/daily-scaffold-exercises*
*Markdown mirror: https://skills.yangsir.net/api/skill/daily-scaffold-exercises/markdown*