Project Submission Template
Use this guide when you want to contribute a new runnable project to the playbook. All projects in projects/ must meet this standard before they are merged.
What a project is
A project is a self-contained, runnable AI system under projects/p0N-project-name/. It teaches one or more layers of the curriculum through code a learner can run locally, read completely, and extend.
Project folder structure
projects/pNN-your-project-name/
├── README.md # Required. Learner-facing brief (see template below)
├── architecture.md # Required. System diagram + decision rationale
├── package.json # Required. Must include: typecheck, build, smoke scripts
├── tsconfig.json # Required for TypeScript projects
├── src/ # Required. Source code
├── examples/ # Required. At least one runnable example
└── evals/ # Recommended. At least one eval for output quality
README.md template
Copy this for your project's README:
# Project NN: [Project Name]
## What this builds
One paragraph. What is the system, what does it do, why does it matter?
## What you will learn
- skill 1
- skill 2
- skill 3
## Prerequisites
- Node 20+ (or Python 3.11+ if applicable)
- [List API keys or services required]
## Quick start
\`\`\`bash
npm install
npm run smoke
\`\`\`
## Architecture
See [architecture.md](./architecture.md).
## Examples
\`\`\`bash
npm run example:basic
npm run example:advanced
\`\`\`
## Evals
\`\`\`bash
npm run eval
\`\`\`
## Extension ideas
- idea 1
- idea 2
## Related playbook chapters
- [Link to relevant chapter]
architecture.md template
# Architecture: [Project Name]
## System diagram
\`\`\`mermaid
graph TD
A[Input] --> B[Processing]
B --> C[Output]
\`\`\`
## Components
| Component | Purpose | Technology |
|---|---|---|
| Component A | ... | ... |
## Key decisions
### Decision 1: [Decision title]
**Option considered:** ...
**Chosen approach:** ...
**Reason:** ...
## Failure modes and mitigations
| Failure | Mitigation |
|---|---|
| ... | ... |
package.json scripts (required)
Every project must expose these scripts:
{
"scripts": {
"typecheck": "tsc --noEmit",
"build": "tsc",
"smoke": "node dist/examples/smoke.js",
"eval": "node dist/evals/run.js"
}
}
smoke must run without network calls, API keys, or browser installs. It validates that the code compiles and the core logic executes. eval may require API keys but must exit cleanly with a pass/fail summary.
Pre-submission checklist
- Folder follows
pNN-kebab-namenaming convention -
README.mduses the template above -
architecture.mdincludes a Mermaid diagram -
npm run typecheckpasses -
npm run buildpasses -
npm run smokepasses without API keys or external services - At least one file in
examples/ - No secrets, tokens, or personal data committed
-
.env.exampleprovided if the project requires environment variables - Project referenced in the relevant curriculum chapter
- CI workflow updated to include the new project (copy an existing job in
.github/workflows/ci.yml)
Submitting
- Open a feature request issue first to describe the project and confirm it fits the curriculum
- Build it in your fork following this template
- Open a PR with the title
[Project] PN: Project Name - Include in the PR description: what learners will build, what layer it covers, and smoke test output
Projects that cannot be run locally will not be merged.