Repository navigation
EN Create Production Template
Français · Type: reference · Audience: author · Context: engine repository, created project · Status: ready · Applies from: 4.0.0
The production plan is a document you write for one game, to hand as-is to an orchestrator that launches sub-agents in parallel: every work package (WP) is autonomous, owns its files, and checks itself. This page is the template, part by part, then the whole of it to copy. It is the plan used for the first game built with this engine (Working with an AI).
-
Where it goes. Copy the whole template into your game's repository as
docs/PRODUCTION.md(the name the sub-agent prompt of §7 reads), and replace every<…>. -
Filling it with an AI. In the engine repository, the
/production-planskill (.claude/skills/production-plan/) reads the template,games/<id>/storyboard.jsonand the current state (npm run validate,npm run solve,npm test, the rooms and assets present), then fills it: delivery goal, constraints of the subject, state, work packages with owned files, ordering, final checklist, sub-agent prompt, a model per package. -
Context. The template is written for the engine repository: paths
games/<id>/…,src/engine/…, and the scriptsnpm testandnpm run audit. In a created project, the game is ingame/, there is no engine package to change (no WP-A), and the checks arenpm run verify(validate, solve, translation status, lint, playtests) andnpm run build; see Layout of a created project.
The plan opens with its title, Production plan — « <GAME TITLE> », and one paragraph: what ships, when, for whom,
and the one priority everything else bends to (for example "a game that can be finished without a bug, from the title
screen to the ending, on the family's phones"). Then it says it is written for an orchestrator, and suggests a model
per package:
| Package | Model | Why |
|---|---|---|
| Engine changes, shared rules, final QA | the strongest reasoning model available | engine logic and last-minute arbitration |
| Room transcription, assets, minigames | a fast model | large but guided word for word by the storyboard; validate + solve catch mistakes |
- Wave 1: the independent packages in parallel (engine, assets, minigames), then the content packages as soon as the engine has delivered the DSL additions they need.
- Each agent receives the plan, its package, and the prompt template of §7. It touches only the files its package owns. A need outside its package goes into its report; it does not do it.
- Each agent ends with
npm run validate && npm test(andnpm run solvefor content packages) and returns a short report: done / not done / for another package. - Wave 2: the QA package starts when everyone has delivered. It may fix any file, alone.
- Order of truth when sources disagree:
games/<id>/storyboard.json> the owner's notes > the current code. The storyboard is always right about text; the code is only right about technique.
| File | Role |
|---|---|
games/<id>/storyboard.json (and its Markdown export) |
the whole script: boards, panels, lines, optional reactions, hints, talk topics, look lines |
| the documentation: DSL reference, How the engine works, Checking your game | how to write content (DSL), the engine, the tools |
games/<id>/layout/*.json |
validated placement (never typed by hand) |
games/<id>/art/<sheet>/ |
all cut sprites; never recut, never deleted |
The 4.4 template named docs/en/CONTENT_GUIDE.md, ENGINE.md and TOOLS.md in the second row; from 4.5 those
pages are this wiki's.
<Private material stays out of the repository: list what.>- Never delete an asset: rename to
_v1,_v2, keep a backup. <Sensitivities of the subject: people who must stay silent, jokes that are refused, tone rules.><Style rules: sentence length, rhythm (normal → normal → normal → absurd), no plain negation as a fallback.>
-
Working:
<engine features, rooms written, items, characters, minigames, tests green, deploy documented.> -
Missing, by importance:
<a numbered list.>
Each package lists its owned files, its deliverables and its verification.
| Package | Owned files | Deliverables | Verification |
|---|---|---|---|
| WP-A · Engine | src/engine/** |
… |
npm test, a room screenshot per visual change |
| WP-B · Content, split by groups of rooms (B1, B2, B3) |
games/<id>/rooms/**, game.ts, items.ts, cast.ts
|
every panel of the storyboard transcribed; hints; checkpoints | npm run validate && npm run solve && npm test |
| WP-C · Assets |
games/<id>/art/**, npm run assets
|
… |
… |
| WP-D · Minigames |
src/engine/minigames/** or games/<id>/minigames/**
|
… |
… |
| WP-E · QA, pre-production, deployment (wave 2, one agent) | any file | full e2e playthrough with screenshots, fixes, build, deploy, the checklist of §6 | §6 |
<Who waits for whom; one commit per package; the commit message format.>
-
npm run validate,npm run solve,npm test,npm run buildall green - e2e playthrough green, screenshots reviewed
- played once on a real phone, in landscape, with sound
- nothing private in
dist/(npm run audit)
In the engine repository, npm run build already runs the type-check and the tests (npm run check) before the
build. The complete list before a release: Checking your game.
You work on the game « <GAME TITLE> » (repo: <path>). Read docs/PRODUCTION.md entirely, then your package: WP-<X>.
You own exclusively the files listed in your package; you change nothing else. A need outside your package goes into your report.
Sources of truth, in order: games/<id>/storyboard.json, the owner's notes, then the code.
Respect §2 without exception.
End with: npm run validate && npm test (and npm run solve for a content package).
Return a report of 15 lines maximum: done / not done and why / what another package must do / verification commands that passed.
# Production plan — « <GAME TITLE> »
<One paragraph: what ships, when, for whom. The one priority everything else bends to, e.g. "a game that can be
finished without a bug, from the title screen to the ending, on the family's phones".>
This file is written to be handed as-is to an orchestrator that launches sub-agents in parallel: every work package
(WP) is autonomous, owns its files, and verifies itself.
**Suggested models per package**
| Package | Model | Why |
|---|---|---|
| Engine changes, shared rules, final QA | the strongest reasoning model available | engine logic and last-minute arbitration |
| Room transcription, assets, minigames | a fast model | large but guided word for word by the storyboard; validate + solve catch mistakes |
## 0. How the orchestrator runs this
1. Launch wave 1: the independent packages in parallel (engine, assets, minigames), then the content packages as soon
as the engine has delivered the DSL additions they need.
2. Each agent receives this file, its package, and the prompt template of §7. It touches **only** the files its
package owns. A need outside its package goes into its report; it does not do it.
3. Each agent ends with `npm run validate && npm test` (and `npm run solve` for content packages) and returns a short
report: done / not done / for another package.
4. Wave 2: the QA package starts when everyone has delivered. It may fix any file, alone.
5. Order of truth when sources disagree: `games/<id>/storyboard.json` > the owner's notes > the current code.
The storyboard is always right about text; the code is only right about technique.
## 1. Sources of truth (read in this order)
| File | Role |
|---|---|
| `games/<id>/storyboard.json` (+ its Markdown export) | the whole script: boards, panels, lines, optional reactions, hints, talk topics, look lines |
| the wiki: DSL reference, How the engine works, Checking your game | how to write content (DSL), the engine, the tools |
| `games/<id>/layout/*.json` | validated placement (never typed by hand) |
| `games/<id>/art/<sheet>/` | all cut sprites; never recut, never deleted |
## 2. Non-negotiable constraints
- <Private material stays out of the repo: list what.>
- Never delete an asset: rename to `_v1`, `_v2`, keep a backup.
- <Sensitivities of the subject: people who must stay silent, jokes that are refused, tone rules.>
- <Style rules: sentence length, rhythm (normal → normal → normal → absurd), no plain negation as a fallback.>
## 3. State of the project on <date>
**Working:** <engine features, rooms written, items, characters, minigames, tests green, deploy documented.>
**Missing, by importance:** <numbered list.>
## 4. Work packages
### WP-A · Engine (`src/engine/**`)
Owned files: … Deliverables: … Verification: `npm test`, a room screenshot per visual change.
### WP-B · Content (`games/<id>/rooms/**`, `game.ts`, `items.ts`, `cast.ts`)
Split by groups of rooms (B1, B2, B3). Owned files: … Deliverables: every panel of the storyboard transcribed; hints;
checkpoints. Verification: `npm run validate && npm run solve && npm test`.
### WP-C · Assets (`games/<id>/art/**`, `npm run assets`)
### WP-D · Minigames (`src/engine/minigames/**` or `games/<id>/minigames/**`)
### WP-E · QA, pre-production, deployment (wave 2, one agent)
Full e2e playthrough with screenshots, fixes, build, deploy, checklist of §6.
## 5. Ordering and merge rules
<Who waits for whom; one commit per package; commit message format.>
## 6. Final checklist before sending the link
- [ ] `npm run validate`, `npm run solve`, `npm test`, `npm run build` all green
- [ ] e2e playthrough green with screenshots reviewed
- [ ] played once on a real phone, in landscape, with sound
- [ ] nothing private in `dist/` (`npm run audit`)
## 7. Prompt template for a sub-agent
(the block of §7 above)Limit ·
template-not-checkedThe template is a document, not a tool: nothing checks that a plan follows it or that a sub-agent kept to its owned files. The checks are the commands each package ends with.
-
npm run validate,npm run solve,npm test,npm run build,npm run audit,npm run assets. - The
/production-planskill (.claude/skills/production-plan/SKILL.md, engine repository). - Working with an AI, The storyboard, Contributing with AI agents.
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