---
name: firefly-hollow
description: Build an interactive glass miniature with glowing fireflies, a forest cabin, an unscrewing lid and fixed-step particle escape and return through the real jar mouth.
version: 0.1.0
---

# Firefly Hollow

Build Moonlit Jar, an offline interactive forest in thick glass on a moonlit desk. Turn the jar, tap its glass and unscrew its brass lid. Actual simulated fireflies leave through the neck, light the miniature and return before the lid seals. English and Simplified Chinese controls support mouse, keyboard and touch.

## Run

```sh
node scripts/fill-prompt.mjs --slots assets/prompts/examples/moonlit-jar.json --out prompt.md
node scripts/new-project.mjs --out my-hollow
cd my-hollow && npm ci
npm run dev
npm run build:single
npm run shoot -- --file dist-single/index.html
```

Give the filled prompt and project to a coding agent. Edit `src/habitat.json` within the validated layout, then update simulation, geometry and verification together for structural changes. Deliver editable source, the single HTML and bilingual reports.

## Interact

Drag the jar to turn it; tap its glass for a local scatter and glow response. Tap the lid or drag it sideways to unscrew it. The Close action recalls escaped fireflies and waits for them before sealing. Cabin and desk lights, daylight, population, glow, palette, slow motion, pause, reset view and restart are exposed in the controls. Right-drag orbits and the wheel zooms; touch uses two fingers for zoom/pan. Cinema hides the interface, with an exit button and Escape.

The scene runs a seeded fixed 60 Hz particle integrator. Rendered instances use the same positions as containment, separation and portal crossing. A limited set of actual point lights follows active fireflies. The jar uses physical transmission and a procedural room environment. Everything is local; no models, fonts, audio files or network assets load at runtime.

## Limits

This is a kinematic miniature, not a biological or fluid simulation. Population edits add or remove particles immediately. Slow motion changes simulation time; reduced motion starts paused. Sound consists only of optional short synthesized tones after a gesture. There is no recorded ambience, speech, storage, condensation, smoke or moth subsystem. The browser state is temporary; Restart restores the authored seed.

## Verification and hosting

See `references/verification.md` and `references/hosting.md`. Build in a temporary or generated project, never in the packaged source folder. Node 22.4 or newer and npm dependencies are required. A missing Chrome installation stops browser verification; invalid habitat data fails with stable rule codes. Headless frame rates do not establish real-device performance, listening or human acceptance.

## Credentials

No credentials, paid calls or uploads are needed. A coding agent may use its own authorized model to edit the project; this Skill itself calls none.
