Dojo
Skill quangtran88/dojo
Generate a personalized, self-mentoring learning repo (a "dojo") for any topic the user wants to master — coding or not. Interviews the learner, deep-researches and curates the best materials, synthesizes a module-based curriculum with a roadmap, then scaffolds a git repo whose AGENTS.md turns any coding agent into a persistent mentor with daily check-ins, teach-back gates, spaced repetition, confidence calibration, and progress tracking. Use when the user asks to build a dojo, learning repo, curriculum, roadmap, or mentor repo for a topic, or commits to mastering a topic long-term ("build me a dojo for X", "teach me X long-term") — not for one-off questions about a topic.From its SKILL.md
npx -y skills add quangtran88/dojoAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
8.7 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
Learning Repo Generator
You are about to build a learning repo: a self-contained git repository that any coding agent can open and operate as a persistent mentor for one topic. The repo you generate is the product. After generation, you (or any other agent) will be running it — so everything you write must be executable by a cold agent with no memory of this session.
What you will produce
<topic-slug>/
├── AGENTS.md # the mentor protocol — personalized, self-sufficient
├── CLAUDE.md # shim: "@AGENTS.md"
├── GEMINI.md # shim: "@AGENTS.md"
├── README.md # what this repo is, the command table
├── .gitignore # ignores progress/profile.md
├── curriculum/
│ ├── guide.md # the synthesized curriculum: modules, exercises, roadmap
│ └── self-test.md # closed-book recall question bank (module m0)
├── references/
│ └── library.md # annotated, link-verified reference library by module
├── progress/
│ ├── progress.json # source of truth for state (see assets/progress.schema.json)
│ ├── journal.md # append-only daily log (starts with the generation entry)
│ └── profile.md # interview record — gitignored, contains personal info
├── site/
│ └── index.html # zero-dependency dashboard
└── scripts/
└── sync.mjs # injects progress.json into the dashboard
Non-negotiables
These principles are the point of the whole system. Never trade them away for speed, and never let a learner's preference remove them (adapt the content, not the mechanics):
- Retrieval over re-reading. Quizzes are closed-book, recall-only, one question at a time. No multiple choice, ever.
- Teach-back gates. A learn-item is done only when the learner explains it back causally — a mechanism, a tradeoff, or a failure mode. Restated definitions are rejected.
- Spacing with expanding intervals. Mastered areas come back at 1 week → 3 weeks → 9 weeks. One fuzzy answer resets the clock. "Done" means scheduled, not finished.
- Confidence calibration. The learner calls sure / likely / guess before every quiz answer. A "sure" that grades fuzzy outranks ignorance in the review queue.
- Personal grounding. Every do-item and prove-item names the learner's real projects, contexts, or stakes from the interview. If an item would read the same for any learner, rewrite it.
- One item at a time. The mentor never dumps a module.
- The mentor's self-assessment is never verification. Grades are contestable with evidence, both ways.
Phase 1 — Interview
Read references/interview.md (relative to this SKILL.md) and conduct the interview: one question at a time, conversational, never a form. You are done when you can fill every field of the profile template at the bottom of that file with something concrete.
Do not skip this even if the user's request seems complete ("teach me Rust, I'm a senior Go dev" still leaves stakes, hours, horizon, and grounding unknown). If the user explicitly refuses the interview, extract what you can from the conversation, state your assumptions, and mark them in profile.md as assumptions.
Phase 2 — Research
Read references/research.md and run the deep-research pass for the topic. Output: the annotated reference library (references/library.md in the generated repo), with every link fetched and verified live — a hallucinated reference in a learning repo poisons months of study. This phase should use real web search/fetch tools; if none are available, tell the user up front that the library will be built from your training knowledge with links unverified, mark every such link (unverified), and continue.
Phase 3 — Synthesis
Read references/curriculum.md and synthesize:
curriculum/guide.md— modules ordered by leverage, each with why it matters, learn-items (pointing into the library), do-items (grounded in the learner's real context), and one prove-item (a verifiable or public artifact). Plus the roadmap: periods with themes and milestones, honest about total weeks vs. available hours.curriculum/self-test.md— the m0 recall-audit bank: 8–15 areas over things the learner will use constantly, 3–6 mechanism-probing questions each, with a reading pointer per area.progress/progress.json— every itemstatus: "todo"; every modulestatus: "todo"except m0, any ongoing module, and the first topic module, which startin_progress(all active from day one;current_moduleis still"m1", never m0); the first periodin_progress, the restupcoming. Matchassets/progress.schema.json.- The daily drill: one 90-second daily micro-practice for this domain, gradable crisp/fuzzy/blank (the curriculum reference explains how to design it).
Phase 4 — Scaffold
- Ask where to create the repo if not obvious (default: a sibling directory of the current project, named after the topic slug). If the target directory already exists and is non-empty, stop and ask: a new path, update the existing dojo in place (never regenerate
progress/— study history must survive), or explicit overwrite. Never clobber silently. - Copy the templates from this skill's
assets/directory and fill every placeholder:
| Placeholder | Filled with |
|---|---|
{{TOPIC}} | topic name, e.g. "Rust", "watercolor painting" |
{{TOPIC_TITLE}} | display title for README/dashboard |
{{TOPIC_SLUG}} | kebab-case slug — used as the repo directory name only; appears in no template file |
{{LEARNER_SUMMARY}} | 1–2 sentences: who this learner is, their goal, their horizon |
{{HIGH_STAKES_CONTEXT}} | where a mistake costs this learner most (their real context) |
{{DAILY_DRILL}} | the 90-second daily micro-practice you designed in Phase 3 |
{{MODULE_ORDER}} | the module sequence with any optional modules noted |
{{TAGLINE}} | one line describing the curriculum's promise |
{{GENERATED_DATE}} | today, YYYY-MM-DD |
assets/AGENTS.md.tmpl→AGENTS.mdassets/README.md.tmpl→README.mdassets/dashboard.html.tmpl→site/index.htmlassets/sync.mjs→scripts/sync.mjs(verbatim, no placeholders)
-
Write the shims —
CLAUDE.mdandGEMINI.mdget identical content:# {{TOPIC_TITLE}} — Learning Repo The mentor protocol lives in **`AGENTS.md`**. Follow it exactly. @AGENTS.mdand
.gitignorecontaining the single lineprogress/profile.md. -
Write
progress/profile.md(the interview record),progress/journal.md(first entry: generation date + one line), and the Phase-3 outputs. -
Validate: run
node scripts/sync.mjsinside the new repo — it must printdashboard synced. If node is unavailable, say so and leave the dashboard unsynced rather than hand-editing the data island. -
git init,git add -A, commit:init: generate <topic> learning repo. -
Hand off with the command table (from the generated README):
what should I learn today?,done <item>,quiz me,weekly review,audit me,podcast pack <item>,update my profile— and remind the learner the repo contains a gitignored personal profile, so a public fork should be scrubbed first.
Quality gates — check before you finish
- Zero unfilled
{{placeholders}}anywhere in the generated repo (grep -rn "{{" <repo>is empty). - Every do-item and prove-item names the learner's real context — no item that any learner could receive.
- Every reference link was fetched live during Phase 2 (or is marked unverified).
-
node scripts/sync.mjsruns clean. - The AGENTS.md protocol sections are intact: daily check-in, teach-back gate, spaced re-checks, confidence calibration, interleaving, weekly review, monthly audit. If you trimmed one to save tokens, restore it.
- Total module-weeks vs. the learner's hours/week is stated honestly in the roadmap, with designated slack.
What ships with it: 11 files
46.8 KB alongside SKILL.md, 1 of them executable
assets/
- AGENTS.md.tmpl11.0 KB
- dashboard.html.tmpl9.0 KB
- progress.schema.json3.0 KB
- README.md.tmpl2.2 KB
- sync.mjsruns1.1 KB
references/
- curriculum.md5.7 KB
- interview.md3.8 KB
- research.md3.2 KB
- .gitignore39 B
- LICENSE1.0 KB
- README.md6.6 KB
Gives 0 of the 12 instructions most learn study skills give in ~2.0k tokens
Counted across 546 of the 573 authors here whose files we hold, read 2026-08-07
- Calculate the zone of proximal development before teachingin 25 of 546, across 8 files
- Produce self-contained HTML lessonsin 24 of 546, across 8 files
- Record user preferences in a notes filein 23 of 546, across 5 files
- Maintain a teaching workspace in the current directoryin 21 of 546, across 4 files
- Find high-quality resources before writing lessonsin 19 of 546, across 5 files
- Make lessons beautiful, short, and quickly completablein 19 of 546, across 3 files
- Create reusable components for lessonsin 19 of 546, across 5 files
- Create compressed reference documents for quick lookupin 19 of 546, across 3 files
- Update the mission file and records upon mission changesin 16 of 546, across 2 files
- Set min_dist to 0.0 for clustering preprocessingin 16 of 546, across 6 files
- Populate the mission file before teachingin 15 of 546, across 1 file
- Include interactive feedback loops in lessonsin 15 of 546, across 1 file
Said here and by no other author read
- conduct the learner interview one question at a time
- deep-research the topic and verify every reference link
- synthesize a module-based curriculum with a roadmap
- write closed-book recall-only single-question quizzes
- require causal teach-back explanations for completion
- name the learner's real context in every task
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.