feat(spec): #48 Three.js game β SpecKit specify + clarify (Phase 0.5)#95
Draft
TortoiseWolfe wants to merge 3 commits into
Draft
feat(spec): #48 Three.js game β SpecKit specify + clarify (Phase 0.5)#95TortoiseWolfe wants to merge 3 commits into
TortoiseWolfe wants to merge 3 commits into
Conversation
Per /speckit.specify skill, generates the SpecKit-formatted spec.md from the existing PRP at features/enhancements/047-threejs-game/047_threejs-game_feature.md and validates it against the spec quality checklist (all items pass on first iteration). Spec covers 5 user stories (visit route P1, theme reactivity P1, reduced motion P2, Pa11y exclusion P2, mobile responsive P3), 7 functional + 5 non-functional requirements, edge cases for WebGL unavailability + GPU context loss + theme switch during animation, and 8 explicit out-of-scope exclusions. Phase 0.5 per ~/.claude/plans/gleaming-kitten-execution.md β strategic stepping stone before GrimGlow Phase 1a browser fork. First feature in this repo to exercise the freshly-vendored .specify/scripts/bash/ SpecKit harness (PR #83, commit cb6312c). Constitution v1.0.2 mandatory wireframe gate applies between /speckit.clarify and /speckit.plan; wireframes will land in a follow-up commit. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Per /speckit.clarify skill, 4 clarification questions resolved against
the v1.0.2 wireframe gate (all 11 taxonomy categories now Clear):
1. v1 scene content: ScriptHammer-themed sculpt β stylized procedural
hammer + anvil + DaisyUI-themed accents. Procedural only (no .glb
imports). Specifies FR-007 and Key Entities β Scene.
2. WebGL-unavailable / GPU-context-lost fallback: themed CSS/SVG
silhouette panel + explanatory message + user-actionable Retry
button. No silent auto-retry. Added as FR-008; Edge Cases section
tightened with concrete behavior.
3. Camera control bounds: constrained polar angle (no flipping under
ground plane) + 360Β° yaw + bounded zoom (min/max distance) + auto-
orbit-when-idle (suspends on user input, resumes after 3s of
inactivity, disabled when prefers-reduced-motion: reduce). Specifies
FR-005; US-3 acceptance scenarios updated to call auto-orbit by
name.
4. Observability scope: GA4 default page view only β no custom
scene-loaded, scene-interaction, or theme-switched-in-scene events
for v1. Privacy-friendly default per Constitution Principle VI.
Added as NFR-006 and Out-of-Scope entry.
Success Criteria gained SC-009 (fallback panel rendering + keyboard
accessibility) and SC-010 (auto-orbit observability).
Checklist updated to record /speckit.clarify completion and note that
the spec is now ready for the v1.0.2 wireframe gate.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Constitution v1.0.2 Principle III mandatory wireframe gate completed.
Two SVG wireframes generated, validated via shipped v5.0 validator,
issues classified PATCH, resolved, and signed off into spec.md.
WIREFRAMES (both PASS the validator's 40+ structural rules):
- wireframes/01-game-3d-main.svg
Desktop + mobile of /game/3d with canvas mounted. Visual:
stylized procedural hammer + anvil + DaisyUI-themed accent
orbs (the v1 sculpt). HUD overlays for orbit hint and auto-
orbit indicator. Anchors annotations to US-001, US-002,
US-003, US-005, FR-002, FR-003, FR-004, FR-005, FR-007,
NFR-004, SC-001, SC-002, SC-010.
- wireframes/02-game-3d-fallback.svg
Desktop + mobile of /game/3d fallback panel. Visual: CSS/SVG
hammer+anvil silhouette (DaisyUI tokens) with diagonal "off"
cue, headline, body copy, 44Γ44 keyboard-accessible Retry
button. Anchors annotations to US-001, US-002, US-004, FR-008,
SC-006, SC-009.
CHROME:
- wireframes/includes/ seeded from features/foundation/003-user-
authentication/wireframes/includes/ per wireframe-config.yml's
"copy precedent once, then sync-wireframes.sh keeps it in sync"
workflow.
PATCH ROUNDS (all classified PATCH per features/CLAUDE.md decision
table β no REGEN needed):
Round 1 fixes (3 issues on 01, 8 on 02):
SIGNATURE-003/004: signature must be left-aligned at x=40 and
use trailing token "ScriptHammer" (not "SpecKit").
CALLOUT-003: callouts at (640,524) and (180,506) overlapped
Retry buttons; relocated to (770,524) and (304,506).
COLL-001: callout at cy=620 too close to footer; relocated up
to (1180,568).
CALLOUT-002: annotations had 6 concepts but mockup only had 5
callout circles; added 3 more on the desktop mockup.
US-002: only 1 User Story badge present; added US-001, US-002,
US-004 to annotation groups 4/5/6 so the fallback wireframe
links back to its proper user story anchors.
Round 2 fix (1 issue on 02):
XML-004: validator regex parsed XML comment `at x=80..280, y=...`
as an unquoted attribute. Reworded the comment.
Final validator run: PASS for both files (zero errors).
AUDIT TRAILS preserved per features/CLAUDE.md ("never delete the
.issues.md files β they're the historical record"):
- wireframes/01-game-3d-main.issues.md (3 resolved)
- wireframes/02-game-3d-fallback.issues.md (9 resolved)
SIGN-OFF: spec.md gains `## UI Mockup` block linking both approved
wireframes and explicitly noting the wireframe gate is PASSED, so
/speckit.plan is now unblocked.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
~/.claude/plans/gleaming-kitten-execution.mdβ strategic stepping stone before GrimGlow Phase 1a (browser fork)..specify/scripts/bash/SpecKit harness (PR chore(speckit): vendor harness scripts under .specify/scripts/bash/Β #83, commitcb6312c)./speckit.specifyand/speckit.clarifycomplete; spec is now ready for the v1.0.2 mandatory wireframe gate.Closes: none yet β implementation is multi-session.
Tracks: #48.
What's in this PR (so far)
features/enhancements/047-threejs-game/spec.mdβ 215+ line SpecKit spec covering 5 user stories (P1: visit + theme reactivity; P2: reduced motion + Pa11y exclusion; P3: mobile responsive), 8 functional + 6 non-functional requirements, 7 edge cases, 8 out-of-scope items, and 10 measurable success criteria.features/enhancements/047-threejs-game/checklists/requirements.mdβ spec quality checklist, all items green.Clarifications resolved (session 2026-05-15)
prefers-reduced-motion: reduce).What's next (subsequent commits / sessions)
Per Constitution v1.0.2 Principle III (PRP Methodology with Mandatory Wireframe Gate):
/speckit.wireframe.prepβ/speckit.wireframe.generate(desktop 1280Γ720 + mobile 360Γ720)/speckit.wireframe.reviewβ regenerate if any REGEN findings β repeat until all PASS/speckit.plan(BLOCKED until wireframe review passes)/speckit.checklistβ/speckit.tasksβ/speckit.analyzeβ/speckit.implementEach phase will land as additional commits on this branch.
Why "draft" + opened early
CI is fast for spec-only changes. Opening the PR now means we have a stable URL to reference + early CI signal as more commits land. Leaves the PR in draft so it doesn't accidentally get auto-merged before wireframes + implementation are in place.
Test plan
pre-pushhooks pass locally (lint, type-check, unit tests, production build) β all green on push./game/3drenders the ScriptHammer-themed sculpt in production build.--disable-webglChrome flag./game(existing dice game, feature 037-game-a11y-tests) β no regression.π€ Generated with Claude Code