1. Overview
claat, Google's codelab tool, is archived and no longer maintained. Good news: labforge reads almost the same Markdown, and publishes each lab at the same /<id>/ URL.
In this lab, you will migrate a claat codelab step by step.
2. Get the Markdown source
If your codelab is already written in claat Markdown, copy it into your labs folder:
labs/
└── first-web-app/
├── first-web-app.md
└── img/
If it lives in Google Docs, export it one last time with claat:
claat export -f md <google-doc-id>
3. Convert the metadata
claat reads its metadata from key: value lines at the top of the file:
summary: Build your first web app
id: first-web-app
categories: Web, Cloud
status: Published
authors: Jane Doe
feedback link: https://github.com/acme/codelabs/issues
labforge uses a YAML frontmatter instead. Wrap the block between --- lines and adjust a few fields:
---
id: first-web-app
title: Build your first web app
summary: Build your first web app
categories: [Web, Cloud]
status: published
authors: [Jane Doe]
feedback: https://github.com/acme/codelabs/issues
---
| claat | labforge |
|---|---|
Web, Cloud |
[Web, Cloud] |
Published |
published |
feedback link |
feedback |
# Title only |
title field |
4. Adapt the content
Steps (## Title) and Duration: mm:ss lines work as they are. labforge does not render raw HTML, so replace claat's info boxes with blockquotes:
> **Tip:** run the tests before deploying.
Also remove the <!-- ---- --> separators between steps, and rewrite durations given in minutes only: Duration: 5 becomes Duration: 5:00.
5. Preview and fix
Start the dev server:
npx labforge serve labs
labforge validates every lab and points to the exact field to fix:
error: Invalid frontmatter in …/first-web-app.md:
- status: Invalid option: expected one of "draft"|"published"
Fix the reported issues: the page reloads on every save.
6. Wrap up
Your codelab now builds with labforge, keeps its URL, and gains dark mode, saved progress and a catalog for free. Repeat for your other codelabs, then deploy.