Casset Apps · Starters
0.1.0-alpha.0Three real projects. Three deliberately different boundaries.
Each deterministic ZIP includes source, tests, a valid manifest, the vendored repository-local SDK,
AGENTS.md, CLAUDE.md, and a prompt for making something original.Download
Choose the smallest starter that proves your idea.
Minimal Profile AppDependency-light TypeScript + DOM. Reads bounded artist and Catalog context with complete sparse states.Minimal · PROFILE_SURFACEReact Profile AppReact + TypeScript. Reads release/Track context and guards a host-approved PLAY_TRACK request.Intermediate · PROFILE_SURFACETrack ExperienceTypeScript + DOM. Reconstructs one visual interaction from canonical Track seconds without playback control.Advanced · TRACK_RUNTIME
Comparison
Match the runtime to the experience.
| Starter | Stack | Primary lesson | Playback |
|---|---|---|---|
| Minimal Profile App | TypeScript + DOM | Host subscription, bounded Catalog, authored sparse states, complete cleanup. | No playback request. |
| React Profile App | React + TypeScript | Typed release/Track selection and accepted/denied host decisions. | Profile-only PLAY_TRACK with permission and capability guards. |
| Track Experience | TypeScript + DOM | Deterministic visual reconstruction across pause, seek, completion, deactivate, and reactivate. | Read-only canonical Track time. |
Open with Codex
Copy a bounded implementation prompt.
Read AGENTS.md, README.md, casset-app.json, and PROMPT.md completely.
Build an original Casset App from the starter without copying its visual composition. Preserve the declared permissions, host-owned playback, availability states, responsive behavior, and lifecycle cleanup. Do not add raw media, a local playback clock, global navigation, private API calls, or unsupported SDK fields.
Run pnpm test and pnpm build. Report the exact context fields, permissions, and host capabilities used.Open with Claude Code
Copy the same contract in Claude's project language.
Read CLAUDE.md, README.md, casset-app.json, and PROMPT.md completely before editing.
Create a new emotionally coherent experience inside the starter's existing Casset context. Keep Casset as the only playback and lifecycle authority. Design loading, empty, permission-denied, unavailable, closed, mobile, keyboard, and reduced-motion states.
Validate with pnpm test and pnpm build, then list every SDK field and host request the experience uses.Inside every ZIP
Agent context and validation travel with the code.
| File | Responsibility |
|---|---|
| casset-app.json | Strict public manifest parsed by @casset/apps at startup. |
| README.md | Real install, dev, test, and build commands plus integration boundaries. |
| AGENTS.md / CLAUDE.md | Tool-specific constraints for permission handling, playback ownership, sparse states, mobile, and cleanup. |
| PROMPT.md | An original build direction that explicitly rejects cloning the starter composition. |
| src/fixture.* | Deterministic local host states with no production credentials or private artist records. |
| src/*.test.* | Focused state, permission, seek, and lifecycle contracts. |