diff --git a/instructor/.gitkeep b/instructor/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/instructor/.gitkeep @@ -0,0 +1 @@ + diff --git a/instructor/agent-brief-template.md b/instructor/agent-brief-template.md new file mode 100644 index 0000000..a1c473b --- /dev/null +++ b/instructor/agent-brief-template.md @@ -0,0 +1,85 @@ +# Agent brief template (copy/paste for instructors) + +Use this prompt to instruct an agent to generate a complete Epic Workshop on a topic. + +## Prompt + +### Context + +You are building an **Epic Workshop** repository using the Epic Workshop format. + +You must: + +- scope the topic appropriately for a workshop +- design a cohesive set of exercises with small deltas +- generate exercises/steps in the correct directory structure +- write all required `README.mdx`/`FINISHED.mdx` files +- add tests or other verification for each step +- validate by running through the workshop using the **Epic Workshop MCP server tools** + +### Inputs + +- **Topic**: +- **Audience**: +- **Timebox**: +- **Assumed prerequisites**: + - +- **Target outcomes** (3–7 bullets): + - +- **Preferred stack/runtime** (if any): + - +- **Constraints**: + - All filenames must be lower-kebab-case. + - Keep problem→solution diffs small and focused. + +### Repository starting point + +Start from an existing template: + +- clone/copy `workshop-template/` into a new repo directory +- update root `package.json#name` and `package.json#epicshop` metadata +- ensure `npm run setup` and `npm start` work + +### Deliverables (must produce all) + +1. **Workshop plan** (before writing code): + - title + subtitle + - outcomes + - exercise list with step titles and acceptance criteria + - app type per exercise (simple vs project) + - tests plan per step +2. **Workshop implementation**: + - correct `exercises/` structure + - all MDX instructions written + - problem/solution apps created for each step + - tests (or verification) for each step +3. **Validation proof**: + - demonstrate the workshop can be navigated using the Epic Workshop MCP tools: + - `get_workshop_context` + - `set_playground` + - `get_exercise_step_context` + - `open_exercise_step_files` + - `get_exercise_step_progress_diff` + - `get_what_is_next` + - ensure at least one full exercise is completable end-to-end + +### Working agreement (iteration) + +Work in an iterative loop: + +- implement **exercise 01 fully**, validate it, then proceed +- do not generate the entire workshop without intermediate validation +- when you discover missing prerequisites or scope issues, adjust the plan and continue + +### Tone and instruction style + +Write learner instructions that include: + +- what to do +- why it matters +- where to work (use `` when helpful) +- acceptance criteria +- at least one helpful tip or gotcha when appropriate + +Now begin by producing the **Workshop plan** only. + diff --git a/instructor/emoji-guide.md b/instructor/emoji-guide.md new file mode 100644 index 0000000..eaef619 --- /dev/null +++ b/instructor/emoji-guide.md @@ -0,0 +1,15 @@ +# Epic Workshop emoji/character guide + +Use these characters consistently in workshop MDX to keep a familiar narrative voice across Epic Workshops. + +- **Peter the Product Manager 👨‍💼**: helps us know what our users want +- **Kellie the Co-worker 🧝‍♀️**: your co-worker who sometimes does work ahead of your exercises +- **Kody the Koala 🐨**: will tell you when there's something specific you should do +- **Lily the Life Jacket 🦺**: will help you with any TypeScript-specific parts of the exercises +- **Marty the Money Bag 💰**: will give you specific tips (and sometimes code) along the way +- **Nancy the Notepad 📝**: will encourage you to take notes on what you're learning +- **Olivia the Owl 🦉**: will give you useful tidbits/best practice notes +- **Dominic the Document 📜**: will give you links to useful documentation +- **Barry the Bomb 💣**: will be hanging around anywhere you need to blow stuff up (delete code) +- **Alfred the Alert 🚨**: will occasionally show up in test failure messages with potential explanations for why tests are failing + diff --git a/instructor/epic-workshop-anatomy.md b/instructor/epic-workshop-anatomy.md new file mode 100644 index 0000000..227faec --- /dev/null +++ b/instructor/epic-workshop-anatomy.md @@ -0,0 +1,132 @@ +# Epic Workshop anatomy (repo structure + conventions) + +This is the **non-negotiable “shape”** of an Epic Workshop. Agents should follow this exactly unless there’s a strong reason not to. + +## Core definitions + +- **Workshop**: the entire repository. +- **Workshop app**: the Epic Workshop app that renders exercises and runs apps/tests. +- **Exercise**: each directory inside `exercises/` like `01.topic-name/`. +- **Exercise step**: each subdirectory inside an exercise like `01.problem.some-step/` and `01.solution.some-step/`. +- **Problem app**: the starting state for a step. +- **Solution app**: the finished state for a step. +- **Playground**: where learners do their work; “Set to Playground” copies a chosen app into `playground/`. + +## Canonical directory structure + +At a high level: + +``` +. +├── README.md +├── package.json +├── package-lock.json +├── epicshop/ +│ ├── package.json +│ ├── setup.js +│ └── ... workshop app helpers ... +├── exercises/ +│ ├── README.mdx +│ ├── FINISHED.mdx +│ ├── 01.some-exercise/ +│ │ ├── README.mdx +│ │ ├── FINISHED.mdx +│ │ ├── 01.problem.some-step/ +│ │ │ ├── README.mdx +│ │ │ └── ... app files ... +│ │ └── 01.solution.some-step/ +│ │ ├── README.mdx +│ │ └── ... app files ... +│ └── 02.next-exercise/ +│ └── ... +└── playground/ + └── (generated by “Set to playground”) +``` + +### Naming rules + +- **Exercise directories**: `NN.exercise-title` (e.g. `01.js-hello-world`, `07.csrf`). +- **Step directories**: `NN.problem.step-name` and `NN.solution.step-name`. +- **All names should be lower-kebab-case**. +- Use **2-digit** exercise folders when possible (many repos do both; be consistent in a workshop). + +## App types: “simple” vs “project” + +The workshop app supports two app types: + +### Simple app + +If there is **no** `package.json` with a `dev` script in the app directory, it’s treated as a *simple app*. + +Common patterns: + +- `index.html` + inline `