claude-code-dojo
CLAUDE.md1 starsChanged 2 months agoMITView on GitHub
Interactive, browser-based platform that teaches Claude Code via Beginner/ Intermediate/Advanced pathways. Pure frontend, no backend.
In this repository3 other files it gives its agents.
- new-languageSkill
- new-lessonSkill
- refresh-lessonsSkill
The file
We split this CLAUDE.md into the rules it gives an agent
4 rules. About 0 are common, 0 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
All localStorage keys live in src/lib/storageKeys.ts, namespaced ccd:.
- Very specific: line 31
All language-specific content lives in src/content/snippets/* (one file per language) and resolves with fallback to the default pack …
- Very specific: line 44
Add a lesson / module / level: use the new-lesson skill (cli.ts lesson or cli.ts outline).
- Very specific: line 54
Add a language: use the new-language skill (cli.ts language) — creates an empty pack.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Claude Code Dojo
Interactive, browser-based platform that teaches Claude Code via Beginner/ Intermediate/Advanced pathways. Pure frontend, no backend.
Stack
- Vite + React + TypeScript (strict)
- Tailwind CSS v4 (CSS-first config;
@import "tailwindcss"+@custom-variant; no tailwind.config.js) - Framer Motion (animations), MDX (lesson content)
- State: React Context + localStorage (
ccd:namespace) - Tests: Vitest + React Testing Library (jsdom)
Conventions
- TypeScript strict; no
anyin committed code. - Dark mode:
darkclass on<html>; never inline-toggle styles. - All localStorage keys live in
src/lib/storageKeys.ts, namespacedccd:. - One responsibility per file; keep files small and focused.
Design system
- Tokens, type scale, and primitives:
design-system/MASTER.md. Spec:docs/superpowers/specs/2026-06-28-design-system-design.md. - Consume semantic tokens only (
bg-background,text-primary,border-ink) — never raw hex or--ccd-*primitives. - Brand = coral; green is reserved for success/completed. "Chunky" style (ink
border + hard offset shadow) on
Button/Card/Badgeinsrc/components/ui/.
Load-bearing invariants
src/content/curriculum.tsis the single source of truth for sidebar, routing, and progress.- All language-specific content lives in
src/content/snippets/*(one file per language) and resolves with fallback to the default pack (JavaScript).
Adding a chart
Charts (src/content/charts/) are stacks of typed rows — cards, connector,
flow (branching flowcharts for decision trees/loops), bar, grid, and
ledger — embedded in lessons via <ChartEmbed id="…" />. Nodes can target a
lesson or a popup. To add one: define a ChartDef, register it in index.ts,
and embed it. Full guide: src/content/charts/README.md.
Adding lessons & languages
Authoring is frontmatter-first and script-backed (scripts/authoring/, run via tsx),
wrapped by skills:
- Add a lesson / module / level: use the
new-lessonskill (cli.ts lessonorcli.ts outline). Lesson frontmatter (id, order, prerequisites, volatility, etc.) is the single source of truth; the dottedidis auto-assigned from the module's next free order — never pass or hand-edit it.src/content/curriculum.tsis generated from that frontmatter (npm run gen:curriculum, run automatically by the CLI) — never hand-edit it. New levels/modules are edited by hand insrc/content/structure.ts(or introduced via--level-title/--module-title/--module-slugon first use). Inline fenced code is the default;<Snippet>/<TryPrompt>stubs in the default pack are opt-in (--snippets/--prompts) for genuinely language-specific spots — other packs fall back. Cross-link lessons inline with<LessonLink id="B2.3" />. - Add a language: use the
new-languageskill (cli.ts language) — creates an empty pack; existing lessons fall back to the default until translated. - Check coverage:
npm run check-snippets— now the full content check (also a CI gate and the/check-snippetscommand): frontmatter validation (type/volatility, unresolved prerequisites/references, non-contiguous order, missingdocsSourceson any lesson exceptcheckpoint/milestone, slug/filename mismatch, etc.) plus snippet/prompt coverage. Tiered: any frontmatter or coverage error fails; non-default pack gaps and leftover@@TODO@@stubs warn.
Lesson quality & freshness
- Style guide:
docs/lesson-style-guide.mdholds the enforced prose/content rules. It absorbs thehumanizerskill's signs-of-AI-writing patterns, retuned for technical teaching prose: five prose families (emphasis/significance, sentence shapes, word choice, structure/framing, formatting), the content mechanics (fence discipline, bare dotted ids, inline URLs indocsSources), and a binding "what not to flag" list. Every rule has a slug the checker cites. Thenew-lessonskill auto-runs the style check on each finished lesson; thelesson-stylesubagent (.claude/agents/lesson-style.md) audits one lesson on demand. - Freshness: the
lesson-freshnesssubagent (.claude/agents/lesson-freshness.md) verifies a lesson against current Claude Code docs and repairs staleness. Therefresh-lessonsskill batches this across a volatility category (/refresh-lessons stable|evolving|volatile).
Commands
npm run dev— dev servernpm run build— type-check + bundlenpm test— run Vitest oncenpm run lint— oxlint (ships with the current Vite template)npm run check-snippets— content check (frontmatter validation + snippet/prompt coverage); also runs in CI
Design history
Original specs and build plans live under docs/superpowers/{specs,plans}/. They
record the intent behind each phase but have drifted from the current
implementation — treat the living sources (design-system/MASTER.md, the module
READMEs, and this file) as authoritative, not those docs.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

