Date: 2026-04-12
Sources: Official MakeCode documentation (makecode.com)
Great news: MakeCode tutorials are already written in markdown! No complex JSON conversion needed.
- Source: https://makecode.com/writing-docs/tutorials
- Format: Standard markdown with special syntax extensions
- Structure: Level 2 headings (
##) = tutorial steps - Hosting: Can be GitHub-hosted (public repos)
# Tutorial Title
## Step 1
Description text here...
```blocks
basic.showString("Hello!")More instructions...
basic.showIcon(IconNames.Heart)
#### Key Features
1. **Title:** Level 1 heading (`#`) = tutorial title
2. **Steps:** Each `##` heading = new step
3. **Code blocks:** ````blocks` for visual blocks, ````typescript` for text code
4. **Images:** Standard markdown `` syntax
5. **Hints:** Any content after first code block/image = hint dialog
6. **Step modifiers:** Special tags like `@showdialog`, `@showhint`
### Publishing Methods
**Three ways to share a tutorial:**
1. **GitHub URL** (recommended for us):
https://makecode.microbit.org/#tutorial:github:username/repo/path/to/tutorial
- Requires: Public GitHub repo with markdown file
- Path: Relative to repo root, **without .md extension**
- Example: `#tutorial:github:brian-forwardedu/tutorials/blink-led/tutorial`
2. **MakeCode Project** (shared project link):
- Save tutorial as a MakeCode project
- Share project URL
- Good for quick sharing, not version-controlled
3. **Built into editor** (for MakeCode maintainers):
- Not relevant for third-party tutorials
### GitHub Hosting Details
**Requirements:**
- Public repository
- Markdown file accessible via GitHub
- Images hosted in same repo (or external CDN)
- Path in URL does NOT include `.md` extension
**URL Format:**
https://makecode.microbit.org/#tutorial:github:USERNAME/REPO/PATH/TO/FILE
**Example:**
- Repo: `github.com/brian-forwardedu/makecode-tutorials`
- File: `tutorials/blink-led/tutorial.md`
- URL: `https://makecode.microbit.org/#tutorial:github:brian-forwardedu/makecode-tutorials/tutorials/blink-led/tutorial`
**Image hosting:**
- Relative paths work: ``
- MakeCode resolves images from same GitHub repo
- Or use absolute URLs (external hosting)
### Step Modifiers
Special tags in step headings:
- `@showdialog` — Display step in overlay dialog, auto-skip to next
- `@showhint` — Always show hint dialog (for important messages)
- `@unplugged` — (deprecated, use `@showdialog`)
- `@fullscreen` — (deprecated, use `@showhint`)
**Example:**
```markdown
## Introduction @showdialog
Welcome to the tutorial! Click Next to begin.

## Step 1
Now let's code...
-
Blocks (visual):
```blocks basic.showString("Hello") ```
- Renders as draggable block UI
- Restricts toolbox to only blocks in example
-
TypeScript (text):
```typescript let x = 5 console.log(x) ```
- Renders as code editor
- For JavaScript/TypeScript tutorials
-
Block configuration:
```blockconfig.global scene.setBackgroundColor(7) ```
- Customizes default block parameters in toolbox
-
Validation:
```validation.local # BlocksExistValidator * markers: validate-exists ```
- Checks if student completed step correctly
Automatic hints:
- Text before first code block/image = step description (caption)
- Text/code after first block/image = hint (click to reveal)
Explicit hint syntax:
~hint Extra info here
This is hidden until student clicks.
hint~If tutorial needs extra blocks (extensions):
```package
microturtle=github:microsoft/pxt-microturtle
```- Use incognito/private browser window
- Or clear browser cache
- Otherwise old version will show
MakeCode Tutorial Tool:
- URL: https://makecode.com/tutorial-tool
- Online editor for writing/testing tutorials
- Select target (micro:bit, Arcade, etc.)
- Live preview
- No converter needed! We can write directly in MakeCode markdown format.
- No JSON schema research — markdown is the schema.
- Direct GitHub hosting — just push markdown to public repo.
- No build step — MakeCode reads markdown directly.
Before (imagined):
Custom markdown → Converter script → MakeCode JSON → GitHub → URL
After (actual):
MakeCode markdown → GitHub → URL
That's it! MakeCode does all the work.
- Tutorial template — Starter markdown file following MakeCode format
- Image management — Where to store images, how to reference them
- URL generator — Script to construct GitHub tutorial URLs
- QR code generator — For classroom handouts
- Publish workflow — Git commit + push automation
- Tutorial index — README with links to all tutorials
- ❌ Markdown → JSON converter
- ❌ MakeCode schema documentation
- ❌ Custom hosting infrastructure
- ❌ Build pipeline
makecode-tutorials/
├── README.md # Tutorial index (auto-generated)
├── tutorials/
│ ├── blink-led/
│ │ ├── tutorial.md # MakeCode markdown (source)
│ │ └── images/
│ │ └── led-grid.png
│ ├── temperature-sensor/
│ │ ├── tutorial.md
│ │ └── images/
│ └── ...
├── templates/
│ └── basic-tutorial.md # Starter template
├── scripts/
│ ├── generate-url.sh # Construct GitHub tutorial URL
│ ├── generate-qr.sh # Create QR code for URL
│ ├── publish.sh # Git commit + push
│ └── generate-index.py # Auto-generate README index
└── .github/
└── workflows/
└── update-index.yml # CI: auto-update README on push
Note: No tutorial.json files needed! Markdown is the source format.
- ✅ Update
README.mdandformat-spec.mdwith actual MakeCode format - ✅ Create tutorial template file
- ✅ Build URL generator script
- ✅ Build QR code generator
- ✅ Create example tutorial (test with real MakeCode)
- Choose repo name + create GitHub repo
- Test live tutorial URL
- Document gotchas and best practices
- Repo name:
makecode-tutorials,microbit-tutorials, or something else? - Image hosting: GitHub repo vs external CDN? (Start with GitHub)
- Tutorial validation: How to test locally before pushing? (Use Tutorial Tool)
- Accessibility: Alt text for images, screen reader support?
- Analytics: Track tutorial usage (visits, completions)?
Status: Research complete! Ready to update project docs and build prototypes.