Repository navigation
EN Contribute AI Agents
Français · Type: how-to · Audience: contributor · Context: engine repository · Status: ready · Applies from: 4.5.0
quest'n'click is made with AI assistants and reviewed by people. This page says how an assistant (Claude Code, Cursor, Codex, Gemini CLI, Aider or a hand-written agent) is set up in the engine repository, which rules it follows, and how its work is checked before it is merged.
An assistant that reads the project's rules first, edits content and code through the same commands and MCP tools a person uses, checks its own work with the truth commands, finds the documentation by section rather than by guessing, and whose change is read again by a second context before the maintainer merges it.
The engine repository. AGENTS.md and the MCP server exist since 1.0.0; the documentation tools search_docs,
list_docs and read_doc { id, section } since 4.5.0 (read_doc { name }, the whole legacy page, exists before).
- A prepared repository: Developer setup.
- An assistant that can run shell commands, or an MCP client (Local MCP setup).
In the engine repository, on your machine; the assistant runs from the repository's root, where it finds AGENTS.md,
.mcp.json and .cursor/mcp.json.
src/engine/ core (the DSL, the engine), tools (validate, solve, lint, i18n…), dom (the player), minigames, reality
games/demo/ the sample game: rooms, layouts, art, audio, locales, storyboard
games/_template/ copied by npm run new-game
tools/ the commands, the Studio, the MCP server, the art and audio pipelines, the Vite plugins
bridge/ the Reality Bridge (the package quest-n-click-bridge)
connectors/ the connectors of the world outside (the package quest-n-click-connectors)
wiki/ the documentation, in English and French (4.5.0); docs/dev: the work log, the decisions, each release's passes
Until 4.5.0 the documentation lived in docs/en and docs/fr; they are now transition pages pointing to the wiki. The
engine, the solver and the replay share one code path (Architecture,
Code tour).
Made with an AI assistant, reviewed by people. The content is declarative, so an assistant reads and writes it like
any other file (AGENTS.md holds the rules); every operation is a command and an MCP tool
(MCP tools); after each change it can validate, solve, replay and take a screenshot, so it sees
its own mistakes before a person does. Every result stays reviewable, in the Studio and in Git.
-
Point the assistant at
AGENTS.mdfirst. It is vendor-neutral: every assistant reads it.CLAUDE.mdis a short pointer to it for Claude Code, with what is specific to Claude Code (skills, MCP through.mcp.json).AGENTS.mdholds:- the files an assistant edits and who edits each (the storyboard first; rooms mostly by the AI; layouts never by
hand, but by the Studio or the placement page;
notes.jsonshared by both); - the commands that tell the truth (
validate,solve,npm test,e2e,assets,prompts,audio,build,studio,mcp,i18n,lint,playtests,ids,prove:game,doctor,dev:lan, andGAME=<id>); - thirteen rules. The ones an engine contributor meets most: content is data, no functions in
games/; never invent coordinates; after any content change runnpm run validate && npm run solve && npm testand report the output, not a summary; after any visual change take a screenshot and look at it; never delete an asset, rename it_v1; when unsure, write a note innotes.jsoninstead of guessing; read the classic mechanics before asking for a new command; never drop a sound file of unknown origin intoaudio/.
- the files an assistant edits and who edits each (the storyboard first; rooms mostly by the AI; layouts never by
hand, but by the Studio or the placement page;
-
Connect the MCP server when the assistant speaks MCP.
npm run -s mcpserves the Studio's operations as tools (get_room,set_text,add_note,validate,solve,screenshot,read_doc…). The repository registers it for Claude Code (.mcp.json) and Cursor (.cursor/mcp.json):{ "mcpServers": { "quest-n-click": { "type": "stdio", "command": "npm", "args": ["run", "-s", "mcp"], "env": {} } } }Other clients: Local MCP setup. The human sees the assistant's edits live in the Studio and answers through the Notes tab; a note tagged
task: trueinnotes.jsonis a request from the human (written from the Studio's Assistant): the assistant does it, then answers withadd_noteon the sameabout.
-
Let it find the documentation by section. With the MCP server:
-
search_docs { query, lang?, context?, version? }returnsid#sectionresults with an excerpt and the reason of the match, or an explicit empty list when nothing matches with confidence; -
read_doc { id, section, lang? }reads that section (20 000 characters by default, acursorfor the rest), with where the text comes from (version, commit, doc revision) at its top; -
list_docs { audience?, context?, type?, lang? }lists the pages there are to read.
read_doc { name: "CONTENT_GUIDE" }still returns a whole legacy page in one block; preferidandsection. -
-
Use the project's skills (Claude Code).
.claude/skills/holdsnew-game,new-room,new-character,storyboard,placement,review,production-plan,asset-promptsandmegadrive-audio.
- Make it check its own work, and say what it could not check. Before a pull request, the assistant runs the list of Before a pull request, one test suite at a time, and reports the commands with their output. A check it could not run (no browser, no Python) is said, never skipped silently.
-
Have a second context read it. A change of any weight is read again by a context that did not write it (another
session, a sub-agent), which reproduces before it judges and ranks its findings (
blocker,should,nit), then by the maintainer (Governance). An assistant's check of its own wiki pages is recorded as such (--kind ai --relation author), never as a person's review (Writing documentation).
Limit ·
no-approval-by-agentAn assistant never gives the maintainer's approvals: signing a release tag, approving a carried field pass, or recording a human review each need the maintainer's own explicit yes (D37).
The assistant's report names the commands it ran and their output; npm run -s mcp lists the tools in the client;
search_docs answers with sections of wiki/. The pull request passes pr-gate, and the LOG or the pull request says
what the second reading found.
| Symptom | Cause | Fix |
|---|---|---|
| The MCP client lists no tools | It was started outside the repository, or npm ci was not run |
Start it from the repository's root; run npm ci
|
| The assistant invents coordinates | It skipped AGENTS.md rule 2 |
Ask the human to place things in the Studio or the placement page, then read the JSON |
| The machine heats up, tests hang | Several test suites run at once, or orphan Vitest workers remain | One suite at a time; stop leftover workers by their process id |
| A report says "all green" without output | The truth commands' output was summarised | Ask for the output itself (rule 5) |
What the assistant edits (games/<id>/, src/, wiki/…), games/<id>/notes.json through add_note, and the
branch's changes/ fragment. The MCP configuration files are tracked and need no change.
Everything the assistant writes is in Git and in the Studio's undo: git restore or git revert undoes it.
-
AGENTS.md,CLAUDE.md,.mcp.json. - Working with an AI on a game, MCP tools, Local MCP setup.
- Governance, Before a pull request.
Generated publication · publication générée — current documentation · documentation courante: quest'n'click 4.4.0 r1, documentation revision · révision de la documentation 8dc717c69acb62c4742b69c54a7e7dfb620f75d8.
Earlier versions and permalinks · versions précédentes et liens permanents: https://wanoo.github.io/quest-n-click/docs/
An edit made in this wiki is overwritten at the next publication · une modification faite dans ce wiki est écrasée à la publication suivante.
Edit the source · Modifier la source · Report an error · Signaler une erreur
Index (6)
Start (6)
Play (9)
Install (17)
- Requirements
- Install from the release archive
- Install from npm, once published
- Install from the repository to work on the engine
- doctor: checking your machine
- Image toolchain
- Audio toolchain: ffmpeg, fluidsynth, Furnace, uv
- Upgrade
- Upgrade notes: 4.4
- Upgrade notes: 4.3
- Upgrade notes: 4.2
- Upgrade notes: 4.1
- Upgrade notes: v3
- Upgrade notes: v2 to v3
- Coming from web-scumm
- Package reference
- Install troubleshooting
Create a game (55)
- Your first game
- Layout of a created project and of the engine repository
- The working loop
- Content principles and the identity contract
- Rooms
- Geometry: placement, walk zones, masks, layers, camera
- Something is visible but unreachable
- Reactions
- Game commands
- Conditions
- Flags, variables and events: which to use
- Custom code
- Characters
- Items and inventory
- World map
- Dialogues
- Scripts and events
- Moving characters: patrols and walks
- Exits
- Chapters and objectives
- State and saves: persistent or temporary, renaming an id, migrations
- Staging: wide rooms and animations
- The stage: lights, particles, floors
- Skin and fonts
- Title and credits
- Heroes: several characters and hero choice
- Built-in minigames
- A custom minigame
- Translations
- Music in stems
- Sound effects
- Voices: per language and per hero
- Images: prompts, cutting sheets, transparency, scale
- Asset provenance
- The storyboard, source of truth
- Puzzle design
- Classic mechanics
- Review pages
- DSL reference
- Checking your game
- What the solver proves
- Solver options
- Playtests
- Remix
- Speedrun for authors
- The sealed ending
- Production template
- Example games
- Working with an AI
- Build and release a game
- Publish on GitHub Pages
- The static game on Clever Cloud
- Other static hosts
- Sub-path, cache and service worker, incomplete deploys, going back
- Testing on a phone over the LAN
Local Studio (24)
- The local Studio: overview and launch
- Edit a room
- Placement and stage
- Preview, apply, undo
- Storyboard
- Assets and cutting
- Check: validator, solver, critical path, heat, health, coverage
- Before and after captures
- Semantic diff
- Play and replay a session
- Rule explainer
- Language and objectives
- Voices and the heroes × languages matrix
- Map
- Notes
- Remix in the Studio
- Music
- The Assistant: bring your own key
- Demo mode and studio-apply
- Local and LAN security
- Studio API
- Local MCP: setting up each client
- MCP tools
- Studio troubleshooting
Team Studio (21)
- What runs where
- Concepts: revision, transaction, span, lease, preview, build
- Starting as an invited dev
- Working together day to day
- Roles and actions: the full matrix
- Invitations
- Managing members
- Write refused on the hosted Studio: stale base revision (409)
- Write refused on the hosted Studio: span locked (423)
- Recovering after a lost lease, a disconnection or a stale preview
- Comments
- Map and semantic diff
- Publishing builds
- Remote MCP
- The game in Git
- Upgrading the engine of a hosted game
- Hosted assets
- The server's command line
- Health and metrics routes
- Trying it locally with compose.yml
- Known limits
Clever Cloud (23)
- Clever Cloud: overview, cost and prerequisites
- Apps and add-ons
- Domains and TLS
- Keycloak
- Generic OIDC and GitLab
- Configuration
- First deployment
- Backups
- RPO and RTO
- Restore the Studio on a fresh installation
- Redeploys
- Upgrading the server and checking state after a migration
- Limits of going back
- Monitoring
- Security
- Rotating keys
- Recovering admin access
- Changing domain or OIDC provider
- Worker, PostgreSQL or Cellar down
- Exporting the game and leaving the installation
- Retention
- Clever Cloud troubleshooting
- Costs and teardown
Reality Bridge and connectors (16)
- The Reality Bridge: what it is
- Quick start
- Guarantees
- Install and run the Bridge
- Backup and restore
- Several tenants
- Signals and the manifest
- The Bridge's command line
- Connectors overview
- Email connector
- Telnet connector
- SSH connector
- Open Badges connector
- The connector SDK
- Security: Biscuit and signatures
- Bridge and connector troubleshooting
Contribute (25)
- Welcome
- Developer setup
- The dev loop
- Before a pull request
- Conventions
- Writing documentation
- Architecture
- Code tour
- Import boundaries
- Which tests run when
- Mutation testing
- The coverage ratchet
- The quality baseline
- CI explained
- Field passes
- Benchmarks
- Releasing
- npm packages
- Decisions and ADRs
- Governance
- Bot pull requests
- Contributing with AI agents
- Security policy
- Code of conduct
- Licences and credits