How to use Mosaic

You describe a course; Claude builds it, and proves it against your Unity project. This page is the whole of that, step by step, in the words you say to Claude and what you will see back. It assumes you have finished setting up: the connector is running, Unity is open on a project, and your Claude has the Mosaic tools.

How it works

There are three places, and knowing which is which explains almost everything you will see.

Your Unity project

On your machine. Claude drives it through the connector: creates objects, takes screenshots, records GIFs. Captures are filed inside the project, under a folder named after the course.

Your course

On the Mosaic service, in your workspace. One folder per course, with one file that is the source of truth for everything: course-config.json. Every document is rendered from it, so you change the config, never the documents.

Your Claude

The only thing you talk to. It has sixteen Mosaic tools; you will see their names in its replies (course_define, course_gates and so on), which is how you know where you are. You never call them yourself.

The path is always the same: describe the course, agree what it teaches, build it, gate it, photograph the steps in Unity, copy the photographs in, gate again, and download. A course is finished when the gates say GO.

One rule. Claude fills in structure; the teaching is yours. Twice along the way it reads back what it decided on your behalf — once when the course is created, once when its configuration first validates. Read those two paragraphs carefully. They are where a pass mark you did not choose, or an objective phrased wrongly, will show up.

Path A — a course from a project you already have

You have a Unity project you teach from, or want to. Mosaic is already added to it (the install page, step 2). Start here.

  1. Open the project and confirm the connection

    Open the project in Unity, make sure the connector window is running, then:

    is my Unity Editor connected?
    Unity Editor answering (this Editor since …, 301 tools). If it says not answering, Unity is still importing: wait for the Console to settle and ask again. If it warns that no education routes are loaded, follow the fix it gives.
  2. Describe the course in one paragraph

    Say what it is, who it is for, how long, how many people, and what a learner can do at the end. Name the project. That is all Claude needs to create it.

    Create a course from this project: a one-day course on Unity lighting for technical artists new to URP, ten people, six hours. By the end they can light a small interior scene and explain why each light is there. The project is C:\Users\me\Projects\MyGame.
    Claude runs course_define. The reply has two parts. First, a list of what is still missing (objectives, topics, a lab, a quiz) — that is expected. Second, a paragraph beginning "Read this back to the instructor": what you told it and what it assumed. Correct anything wrong now. "One session per day" is the usual assumption; say so if your day is split.
  3. Agree what it teaches

    Claude will propose objectives, a plan for each day, a lab and a knowledge check, and ask you about the things only you know. Answer in your own words; it writes the configuration and validates it as it goes.

    Two objectives: describe URP's light types, and light an interior with direct, point and baked bounce light. The morning is a lecture on what a light does, the afternoon is the lab. Quiz at the end, pass at 70%.
    One or two rounds of course_write_config, each ending INVALID with a numbered list, then VALID. At VALID it prints "This is now in the course, and the instructor has not seen any of it": the objective sentences, the pass mark, how each day splits into taught, lab and check. This is the second paragraph to read carefully. If an objective is phrased wrongly, say so and it will be changed in the config.
  4. Continue at Build, gate, photograph

Path B — from nothing

No project, no course. Twenty minutes to the same place Path A starts from.

  1. Make a Unity project

    In Unity Hub: New project, 3D (URP), any name, any location. Do not open it yet.

  2. Add Mosaic to it with one command

    In a terminal (PowerShell on Windows), from the folder where the connector lives:

    mosaic-connector add "C:\Users\me\Projects\MyNewCourse"
    added bridge + pro.core + pro.education to MyNewCourse, then Open the project in Unity once so the packages import.
  3. Open it in Unity, once, and wait

    The first open fetches the three Mosaic packages from the registry and compiles them: a few minutes. Package Manager will show Signature: Missing and Pre-release on them; both are normal. When the Console settles, the connector window says connector ready.

    is my Unity Editor connected?
    Unity Editor answering … 301 tools.
  4. Now follow Path A from step 2, naming this project in your paragraph.
Several projects, several courses. A machine can hold any number of each. Run add once per project. Captures are filed inside each project under a folder named after the course, so two courses on one project never overwrite each other.

Build, gate, photograph

Both paths arrive here with a VALID configuration. From here to GO is one loop.

  1. Build it
    build the course
    course_regen: Regeneration complete, and a list of what was rendered — syllabus, labs, quizzes, live-coding script, the course site, the PDF book. About four seconds.
  2. Record the project

    With Unity open on the project the course is taught from:

    record the Unity project into the course
    course_record_build: Unity version, installed packages, scripts, the active scene, and no errors in the Unity Console. The Build and Packages gates read this.
  3. Run the gates
    run the gates
    course_gates: fourteen checks, each GO, NO-GO or SKIP, then a verdict. A brand-new course is often already GO here; if it is NO-GO, the failing gates say exactly what they want, and NO-GO is the normal state of an unfinished course is printed so you know it is a to-do list, not a judgement.
  4. Plan the photographs
    seed the capture plan
    N shot(s) planned — one per step in the course, plus a Play-Mode GIF per day. Nothing is captured yet; this tells the coverage gate what to look for.
  5. Photograph each step in Unity

    For every step, set the Editor up as the step describes and ask for the capture, naming the step. Claude captures the whole Editor by default and files the image under the course inside the project.

    set up step day1-s02-01 in the Editor and capture it for this course
    A file path inside your project (…\lighting-in-a-day\screenshots\week-1\…) and captureDetail: composited 9 of 9 panels into 1918x934 — the whole Editor, as you see it. For a still of one panel say capture the Inspector; for motion say record a Play-Mode GIF of this step.
  6. Copy the photographs into the course

    They are in your project; the course is on the service. This carries them across, renames the folders to the course's own unit word (days, not weeks), and removes from the course anything you have since deleted in the project.

    import the captures
    course_import_captures: Copied 5 capture(s) … Filed under screenshots/day-N.
  7. Link each photograph to its step, then build and gate again
    attach the captures, rebuild, and run the gates
    attach_captures pairs each image with the step you named when you took it. Then course_regen places them in the lab and the site, and course_gates should read Capture coverage — 5/5 step(s) have a capture (100%), Media quality — 5 usable screenshot(s), and Verdict: GO.
  8. Download it
    give me the links
    artifact_link: the course site, the PDF book, the syllabus, every lab, quiz and handout, each with a download link that lasts an hour. Ask for one file by name to get just that link: link me the syllabus.
Changing something afterwards. Tell Claude what to change; it edits the configuration and revalidates. Then build the course and run the gates again. Never edit a rendered document: the next build overwrites it, and every document carries a line saying so.

Reading the gates

Eleven checks, in the order they run. The verdict is GO only when none of them is NO-GO. SKIP means the gate could not check, which is not a failure.

GateWhat it asks
Config validIs the configuration complete and well-formed? Every error names the field and what belongs in it.
Cross-layer consistentDo the config, the build record and the captures agree with each other about ids, scenes and objects?
Quality (pro bar)Is every document present and not a stub? Is every objective taught somewhere and assessed somewhere?
Naming (unit word)If the course teaches in days, is nothing filed under "week"?
CompletenessNo placeholders left in any rendered document.
AlignmentDo the lab, the slides and the live-coding script all render the same steps?
Capture coverageDoes every planned step have a photograph linked to it? Needs 100%.
Media qualityAre the images real: not blank panels, not byte-identical duplicates, GIFs that actually move?
PackagesDoes the recorded project have the packages the course claims to teach?
Claims vs the projectDoes the Unity version the course states match the project that was recorded?
Durations (report)Does the content fit the day? Reports only; never blocks.

Below the gates, a Deliverables block lists what exists: the PDF, the site, how many usable screenshots, and whether there is a Play-Mode GIF. The GIF is optional polish, but it is the one thing that shows the game running.

Everyday

To…Do this
Start a sessionOpen the project in Unity; make sure the connector window is running (mosaic-connector run). It reconnects on its own if Unity restarts.
See your courseslist my courses
Delete a coursedelete the course called X — Claude asks you to confirm; it cannot be undone.
Remove a bad photographDelete the file inside the project's course folder, then import the captures again: the import mirrors the project, so it leaves the course too.
Upgrade MosaicClose Unity, wait for it to fully exit, run mosaic-connector add <project> again. It says what moved. Reopen Unity. On Windows, if Unity reports EPERM … rename while importing, click Retry; excluding the project's Library folder from Defender's real-time scan stops it recurring.
Check your connector buildmosaic-connector version
Editor refused: "signed in as … but this code is issued to …"Your code is tied to your Unity ID. Sign in to Unity as that account (Unity Hub, or the account menu in the Editor). Until then the course tools all work; only photographing is refused.
A Pro tool answers "Mosaic Pro has no licence on this machine"The Pro tools (photographing, measuring) carry a licence the connector fetches from the service on every connection and writes beside its config. Start the connector (mosaic-connector run) and try again. Mosaic › Pro Licence in Unity shows what it holds: who it is issued to, which features, and until when. It renews itself while your access code is valid; when the code is withdrawn it stops within a week.
The connector says your access code has expiredNothing to do on your machine. Leave the connector window open: it checks every ten minutes and connects on its own once the code is extended. Tell whoever issued the code.
Use a second machineSet it up with the same code: your access code works on up to two of your own machines, and only one Unity Editor can be connected at a time. A third machine is refused and says which two hold the code. Codes are personal; a colleague needs their own.
Drive the Editor directlyAnything the Editor can do: create a cube called Hello, enter play mode, show me the console errors. Ask what can the Editor do with materials? to see the routes.

What to say

Plain sentences work. These are the ones that map most directly onto what happens.

Creating

create a course from this project: …
the day is split into two sessions
rephrase objective two as …
make the pass mark 80%

Building

build the course
record the Unity project into the course
run the gates
give me the links / link me the syllabus

Photographing

seed the capture plan
capture step day1-s02-01 for this course
capture the Inspector / the Scene view
record a Play-Mode GIF of this step
import the captures / attach the captures

Checking

is my Unity Editor connected?
why did the media gate fail?
which steps still have no capture?
what did you assume about this course?

Slash commands

Three of the longer jobs are available as slash commands in Claude Code. They are not files on your machine: they come from the service, so they are always the current version, and they start a guided conversation rather than running something blindly. Type /mcp__ and the list appears.

CommandWhat it starts
/mcp__mosaic__define_courseInterviews you about audience, level, days and hours, what learners build, and which Unity features are in scope, then writes and validates the configuration. Nothing is assumed silently.
/mcp__mosaic__build_dayPerforms one day's steps in your connected Editor and photographs each one as it goes.
/mcp__mosaic__update_courseApplies a change and then proves nothing else broke, by regenerating and re-running the gates.

Everything these do can also be asked for in your own words. The commands exist so the long jobs start the same way every time.

The tools, for reference

You never call these; Claude does. Their names appear in its replies, and this is what each one is.

ToolDoes
workspace_listLists your courses.
course_defineCreates a course from your paragraph, and reads back what it assumed.
course_write_configSaves the configuration and validates it; at VALID, reads back the teaching decisions.
config_validateValidates without saving.
course_regenRenders every document from the configuration.
course_record_buildRecords what the connected Unity project actually contains.
course_gatesThe fourteen checks and the verdict.
course_import_capturesCopies the project's photographs into the course; mirrors deletions.
course_sweepChecks a course for broken links, local paths and bad JSON.
course_deleteDeletes a course, after you confirm.
renderRuns one renderer on its own, including seed_capture_plan and attach_captures.
derive_workshopMakes a short workshop and a webinar edition from a course.
artifact_linkDownload links for everything the course produced.
editor_statusIs the Editor answering, since when, with how many tools.
editor_routesWhat the Editor can do; with a route name, that route's parameters and allowed values.
editor_callDoes one thing in the Editor. With a course named, files anything it writes under that course.
Where the files are. The course and every rendered document live on the Mosaic service; you reach them through give me the links. Photographs are taken into your Unity project at <project>\<course-id>\screenshots\ and copied to the course by import the captures. Nothing from the Mosaic pipeline itself is ever placed on your machine.

← Setting up  ·  https://cloud.mosaicxr.ai