The interface is localized. Skill descriptions and documents are machine-translated by AI into your language; code, commands, paths and technical terms stay in the original, and the author's document governs.
Explore skills
Development · SKILL.md

explorer-viewer-builder

explorer-viewer-builder

Use when asked to build a 3D viewer for a GLB model, make an interactive explorer with clickable labelled parts, add an exploded view or quiz to a 3D model, or turn a parts list into a web page. Produces a single-file Three.js viewer that loads GLB models, with orbit controls, clickable labelled parts, an exploded view toggle and a quiz mode, built from the…

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill documentation

GitHub

name: explorer-viewer-builder description: "Use when asked to build a 3D viewer for a GLB model, make an interactive explorer with clickable labelled parts, add an exploded view or quiz to a 3D model, or turn a parts list into a web page. Produces a single-file Three.js viewer that loads GLB models, with orbit controls, clickable labelled parts, an exploded view toggle and a quiz mode, built from the tested template in references/viewer-template.html. Third step of explorer-pipeline." version: 1.0.0

Explorer Viewer Builder

The last step of a 3D explorer is a page anyone can open: no install, no build step, works on a phone. This skill produces a single HTML file from the tested template in references/viewer-template.html: Three.js from a CDN, a GLB loader, orbit controls, clickable parts with sourced labels, an exploded view and a quiz mode, filled in with the parts list and palette from the earlier steps.

Required Inputs

Ask for these if not provided:

  • The GLB file (path or URL), or confirmation to start with the template's demo assembly
  • The parts list: mesh name, label, description and source for each part (from model-prompt-pack)
  • Palette and layout values (from explorer-interface-brief), or accept the template defaults
  • Title and the illustrative statement
  • Hosting: GitHub Pages, a static host, or opening the file locally (GLB files need a local server; browsers block file:// loading)

Output Structure

1. The viewer file

A complete index.html based on the template, with:

  • CONFIG filled in: title, model, and parts (one entry per mesh name, each with label, description and source)
  • Palette applied to the CSS custom properties, with a dark-mode block
  • The illustrative statement in the panel footer
  • unchanged core behaviour from the template: orbit controls with damping; click (or tap) to select, ignoring drags; selection through the parts list for keyboard users; exploded view that moves each part away from the model's centre in its parent's space; quiz mode that asks for a random part, scores answers and highlights the right part after a miss; reset view; a demo fallback and a console warning if the model fails to load; a list of the model's mesh names when none match the parts list

2. Mesh-name check

A table matching the parts list against the mesh names the viewer reports (open the page with the model and read the panel, or the console): | Mesh name in parts list | Found in GLB? | Action |

3. Run and publish instructions

  • Local: npx serve . (or python3 -m http.server) in the folder, then open the printed address
  • GitHub Pages: commit index.html and the .glb, enable Pages for the branch, and note the file-size limits
  • Performance: keep the GLB under 15 MB; compress textures; test on a mid-range phone

4. Test checklist

Binary checks to run in a browser: the model appears; each part in the list highlights and shows its label and source; dragging rotates without selecting; exploded view separates every labelled part and reverses; quiz mode scores a right and a wrong answer; the page has no horizontal scroll at 390 px wide; dark mode is readable; the console shows no errors.

Quality Checks

  • The output is a single HTML file with no build step
  • Every entry in CONFIG.parts has a label, a description and a source
  • Every parts-list mesh name is checked against the GLB, with mismatches listed
  • Parts can be selected from the keyboard through the parts list
  • Exploded view and quiz mode both work and can be turned off
  • The illustrative statement is visible on the page
  • The page works at 390 px width and in dark mode with no console errors
  • Three.js is loaded from a pinned version, not "latest"

Anti-Patterns

  • Opening the HTML by double-clicking with a local GLB. Browsers block it; use a local server.
  • Labels without sources. The viewer shows the source line for a reason; never leave it blank.
  • Selecting on pointer down. Every rotation then selects a part; select on a click without movement.
  • Unpinned CDN versions. A Three.js update can break the page overnight.

Example Trigger Phrases

  • "Build a viewer for heart.glb with clickable labelled parts and a quiz."
  • "Turn this parts list into a single-file Three.js explorer."
  • "Add an exploded view and quiz mode to my 3D model page."
  • "Make a GLB viewer that works on phones, no build step."
Saved skills