Three.js App Director
Own the complete non-game 3D application outcome. Do not invent game objectives,
scoring, failure, or progression unless the experience genuinely needs them.
Read references/app-patterns.md for the matching application archetype.
For a fresh model, animation, asset-pack, material, material-pack, or Mint-world
delivery whose asset is the requested product, read
../../references/asset-viewer.md and start from the packaged Asset Viewer
scaffold.
For imported-model orientation, manipulation, simulation, terrain, or other
spatially complex work, read ../../references/spatial-contracts.md.
Route The Work
| Need |
Skill |
| Models, composition, materials, lighting, shaders, VFX |
../threejs-visual-systems/SKILL.md |
| Cameras, controls, picking, selection, configuration, manipulation, UI |
../threejs-interaction-systems/SKILL.md |
| Rendering, loading, input bugs, profiling, optimization |
../threejs-debug-profiler/SKILL.md |
| Browser QA, visual regression, production release |
../threejs-qa-release/SKILL.md |
| Game mechanics or game feel inside a mixed experience |
../threejs-gameplay-systems/SKILL.md |
Workflow
- Inspect the existing stack, scene lifecycle, assets, interactions, UI, data
ownership, loading states, target devices, and deployment constraints.
- Define the app brief: user goal, primary 3D subject, essential interactions,
camera/control model, state or data flow, loading/error behavior, outputs,
and performance budget.
- If the work needs Mint assets, resolve one Mint Project for the local
codebase through
../../references/mint-project-workspaces.md. Infer its
name from the app brief when no association or explicit destination exists.
- Establish one owner for renderer, scene, camera, animation frame, resize,
asset lifecycle, and disposal.
- Use Mint MCP through
../../references/mint-mcp-assets.md when production
assets are needed. Register ordinary artifacts and remote world runtime
configuration in the project-root mint-assets.json through
../../references/asset-pipeline.md; stream world RAD manifests through
../../references/mint-world-splats.md.
- Implement the smallest complete user journey before secondary polish.
- Apply visual systems and interaction guidance appropriate to the archetype.
- Reproduce and measure defects or performance issues before optimizing.
- Follow
../../references/verification-policy.md: run the automatic minimum,
then offer a scoped desktop/browser QA pass. Treat mobile as a separate
approval.
Asset Viewer Scaffold
For a greenfield asset-delivery viewer, create the canonical vanilla Three.js
project:
python3 <this-skill-dir>/scripts/create_threejs_asset_viewer.py ./my-asset-viewer
Use --force only when overwriting the target is intended. Configure
src/asset-manifest.ts from the synchronized mint-assets.json; do not replace
the scaffold's model, animation, material, pack, or RAD session with a bespoke
scene unless the user requested a broader application.
Completion Gates
- Build/typecheck or the nearest compile gate passes.
- Focused non-browser tests for changed logic pass when available.
- Referenced project-local assets and changed imports resolve.
mint-assets.json records every integrated Mint artifact or remote world
runtime under a stable logical key and records the validated Mint Project.
- Report that extended browser QA was not run unless the user approved it.
After the user approves the relevant QA scope:
- The primary user journey works through real input.
- Camera and controls match the task and do not fight each other.
- Loading, empty, unsupported, and error states are handled when applicable.
- Selection, configuration, manipulation, playback, or navigation state has one
owner and visible feedback.
- Assets load from stable local paths or the deliberate remote world runtime
with correct scale, orientation, materials, animation, bounds, and disposal.
- Desktop behavior is verified; mobile behavior is verified only under its
separate approval.
- Build/typecheck, browser errors, canvas pixels, screenshots, and changed risky
paths pass.
- Visual quality and renderer cost meet the requested bar.
Final Response
Lead with the implemented user journey. Report controls, state ownership, changed
files, Mint links and artifact paths, screenshots, verification, performance
evidence, deployment assumptions, and remaining risks. Explicitly name the
extended desktop and mobile QA that was not run.
1---2name: threejs-app-director3description: Build and upgrade general Three.js apps including model and material viewers, configurators, walkthroughs, simulations, visualizations, editors, showcases, and interactive experiences.4---56# Three.js App Director78Own the complete non-game 3D application outcome. Do not invent game objectives,9scoring, failure, or progression unless the experience genuinely needs them.1011Read `references/app-patterns.md` for the matching application archetype.12For a fresh model, animation, asset-pack, material, material-pack, or Mint-world13delivery whose asset is the requested product, read14`../../references/asset-viewer.md` and start from the packaged Asset Viewer15scaffold.16For imported-model orientation, manipulation, simulation, terrain, or other17spatially complex work, read `../../references/spatial-contracts.md`.1819## Route The Work2021| Need | Skill |22| --- | --- |23| Models, composition, materials, lighting, shaders, VFX | `../threejs-visual-systems/SKILL.md` |24| Cameras, controls, picking, selection, configuration, manipulation, UI | `../threejs-interaction-systems/SKILL.md` |25| Rendering, loading, input bugs, profiling, optimization | `../threejs-debug-profiler/SKILL.md` |26| Browser QA, visual regression, production release | `../threejs-qa-release/SKILL.md` |27| Game mechanics or game feel inside a mixed experience | `../threejs-gameplay-systems/SKILL.md` |2829## Workflow30311. Inspect the existing stack, scene lifecycle, assets, interactions, UI, data32 ownership, loading states, target devices, and deployment constraints.332. Define the app brief: user goal, primary 3D subject, essential interactions,34 camera/control model, state or data flow, loading/error behavior, outputs,35 and performance budget.363. If the work needs Mint assets, resolve one Mint Project for the local37 codebase through `../../references/mint-project-workspaces.md`. Infer its38 name from the app brief when no association or explicit destination exists.394. Establish one owner for renderer, scene, camera, animation frame, resize,40 asset lifecycle, and disposal.415. Use Mint MCP through `../../references/mint-mcp-assets.md` when production42 assets are needed. Register ordinary artifacts and remote world runtime43 configuration in the project-root `mint-assets.json` through44 `../../references/asset-pipeline.md`; stream world RAD manifests through45 `../../references/mint-world-splats.md`.466. Implement the smallest complete user journey before secondary polish.477. Apply visual systems and interaction guidance appropriate to the archetype.488. Reproduce and measure defects or performance issues before optimizing.499. Follow `../../references/verification-policy.md`: run the automatic minimum,50 then offer a scoped desktop/browser QA pass. Treat mobile as a separate51 approval.5253## Asset Viewer Scaffold5455For a greenfield asset-delivery viewer, create the canonical vanilla Three.js56project:5758```bash59python3 <this-skill-dir>/scripts/create_threejs_asset_viewer.py ./my-asset-viewer60```6162Use `--force` only when overwriting the target is intended. Configure63`src/asset-manifest.ts` from the synchronized `mint-assets.json`; do not replace64the scaffold's model, animation, material, pack, or RAD session with a bespoke65scene unless the user requested a broader application.6667## Completion Gates6869- Build/typecheck or the nearest compile gate passes.70- Focused non-browser tests for changed logic pass when available.71- Referenced project-local assets and changed imports resolve.72- `mint-assets.json` records every integrated Mint artifact or remote world73 runtime under a stable logical key and records the validated Mint Project.74- Report that extended browser QA was not run unless the user approved it.7576After the user approves the relevant QA scope:7778- The primary user journey works through real input.79- Camera and controls match the task and do not fight each other.80- Loading, empty, unsupported, and error states are handled when applicable.81- Selection, configuration, manipulation, playback, or navigation state has one82 owner and visible feedback.83- Assets load from stable local paths or the deliberate remote world runtime84 with correct scale, orientation, materials, animation, bounds, and disposal.85- Desktop behavior is verified; mobile behavior is verified only under its86 separate approval.87- Build/typecheck, browser errors, canvas pixels, screenshots, and changed risky88 paths pass.89- Visual quality and renderer cost meet the requested bar.9091## Final Response9293Lead with the implemented user journey. Report controls, state ownership, changed94files, Mint links and artifact paths, screenshots, verification, performance95evidence, deployment assumptions, and remaining risks. Explicitly name the96extended desktop and mobile QA that was not run.