# Create a dojo manually



## Start from an example [#start-from-an-example]

Clone the kata starter into a new folder:

```sh
git clone https://github.com/dojofoo/starter-kata.git my-dojo
cd my-dojo
```

Keep the starter's structure while replacing its example lessons. Check its setup instructions and `mise.toml` for the tools and dependencies it needs.

## Define the course and lessons [#define-the-course-and-lessons]

* **`dojo.yaml` or `dojo.json`** describes the course and its lessons. Update the name, description, and curriculum to match your material.
* **`DOJO.md`** defines course-wide teaching guidance.
* **Each lesson's `SENSEI.md` or `SENSEI.mdx`** explains how to teach that lesson: prerequisites, useful examples, misconceptions, and when to offer more help.
* **Exercise files and tests** define the learner's work and check its behavior. Retain the starter's manifest references when renaming or moving files.
* **`mise.toml`** owns environment preparation. See [portable dojo setup](/docs/commands/add#authoring-a-portable-dojo) for assets, MDX, and non-JavaScript tools.

Keep teaching guidance separate from the learner's exercise. Explain unfamiliar concepts before testing recall, and use tests to check behavior rather than prescribe one implementation.

## Try the course [#try-the-course]

Install your local course from a separate learner folder:

```sh
mkdir ../my-dojo-trial
cd ../my-dojo-trial
npx dojofoo install
npx dojofoo add ../my-dojo
npx dojofoo ui
```

Work through the lesson as a learner. Check that the introduction gives a useful first step, failures produce helpful feedback, and completion offers a clear next step.

When ready, push your course to your own Git repository. Learners can install it with `npx dojofoo add owner/repository`. See [installation and marketplace registration](/docs/commands/add) before publishing; use `marketplace: false` for courses that should not be listed.
