@struq/skill 0.0.0-stage → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -2
  3. package/cli/struq.mjs +132 -0
  4. package/package.json +41 -4
  5. package/skills/struq/SKILL.md +237 -0
  6. package/skills/struq/cinematic/README.md +409 -0
  7. package/skills/struq/cinematic/checklists/01-preproduction.md +15 -0
  8. package/skills/struq/cinematic/checklists/02-implementation.md +17 -0
  9. package/skills/struq/cinematic/checklists/03-polish.md +17 -0
  10. package/skills/struq/cinematic/examples/code/nextjs/README.md +13 -0
  11. package/skills/struq/cinematic/examples/code/nextjs/app/cinematic-experience.tsx +13 -0
  12. package/skills/struq/cinematic/examples/code/nextjs/app/components/LenisRoot.tsx +42 -0
  13. package/skills/struq/cinematic/examples/code/nextjs/app/page.tsx +6 -0
  14. package/skills/struq/cinematic/examples/code/shared/CameraRig.tsx +65 -0
  15. package/skills/struq/cinematic/examples/code/shared/ExperienceCanvas.tsx +20 -0
  16. package/skills/struq/cinematic/examples/code/shared/ExperienceDirector.tsx +57 -0
  17. package/skills/struq/cinematic/examples/code/shared/ExperienceOverlay.tsx +37 -0
  18. package/skills/struq/cinematic/examples/code/shared/ExperiencePage.tsx +52 -0
  19. package/skills/struq/cinematic/examples/code/shared/GsapFrameLoop.tsx +32 -0
  20. package/skills/struq/cinematic/examples/code/shared/InteriorRoot.tsx +30 -0
  21. package/skills/struq/cinematic/examples/code/shared/README.md +20 -0
  22. package/skills/struq/cinematic/examples/code/shared/SubjectRig.tsx +58 -0
  23. package/skills/struq/cinematic/examples/code/shared/build-experience-timeline.ts +237 -0
  24. package/skills/struq/cinematic/examples/code/shared/direction.ts +52 -0
  25. package/skills/struq/cinematic/examples/code/shared/gsap-client.ts +32 -0
  26. package/skills/struq/cinematic/examples/code/shared/math.ts +12 -0
  27. package/skills/struq/cinematic/examples/code/shared/registry.ts +58 -0
  28. package/skills/struq/cinematic/examples/code/shared/runtime.ts +52 -0
  29. package/skills/struq/cinematic/examples/code/shared/styles.css +127 -0
  30. package/skills/struq/cinematic/examples/code/shared/useExperienceInput.ts +42 -0
  31. package/skills/struq/cinematic/examples/code/vite/README.md +14 -0
  32. package/skills/struq/cinematic/examples/code/vite/src/App.tsx +11 -0
  33. package/skills/struq/cinematic/examples/code/vite/src/LenisRoot.tsx +37 -0
  34. package/skills/struq/cinematic/examples/code/vite/src/main.tsx +9 -0
  35. package/skills/struq/cinematic/examples/concise/01-chapter-spec-example.md +42 -0
  36. package/skills/struq/cinematic/examples/concise/02-handoff-example.md +25 -0
  37. package/skills/struq/cinematic/examples/concise/03-audit-finding-example.md +13 -0
  38. package/skills/struq/cinematic/examples/verbose/01-full-experience-direction.md +687 -0
  39. package/skills/struq/cinematic/examples/verbose/02-full-audit-example.md +362 -0
  40. package/skills/struq/cinematic/references/01-core-mental-model.md +221 -0
  41. package/skills/struq/cinematic/references/02-vocabulary.md +384 -0
  42. package/skills/struq/cinematic/references/03-experience-architecture.md +302 -0
  43. package/skills/struq/cinematic/references/04-timeline-choreography.md +264 -0
  44. package/skills/struq/cinematic/references/05-handoff-contracts.md +241 -0
  45. package/skills/struq/cinematic/references/06-three-rig-architecture.md +286 -0
  46. package/skills/struq/cinematic/references/07-stack-integration.md +228 -0
  47. package/skills/struq/cinematic/references/08-gsap-plugin-patterns.md +218 -0
  48. package/skills/struq/cinematic/references/09-tuning-harness.md +202 -0
  49. package/skills/struq/cinematic/references/10-quality-systems.md +206 -0
  50. package/skills/struq/cinematic/references/11-agent-workflows.md +246 -0
  51. package/skills/struq/cinematic/references/12-audit-rubric.md +176 -0
  52. package/skills/struq/cinematic/references/13-official-docs.md +53 -0
  53. package/skills/struq/cinematic/templates/01-experience-brief.md +105 -0
  54. package/skills/struq/cinematic/templates/02-experience-contract.md +80 -0
  55. package/skills/struq/cinematic/templates/03-chapter-spec.md +103 -0
  56. package/skills/struq/cinematic/templates/04-handoff-contract.md +102 -0
  57. package/skills/struq/cinematic/templates/05-ownership-matrix.md +29 -0
  58. package/skills/struq/cinematic/templates/06-shot-presets.md +59 -0
  59. package/skills/struq/cinematic/templates/07-implementation-slice.md +66 -0
  60. package/skills/struq/cinematic/templates/08-tuning-register.md +36 -0
  61. package/skills/struq/cinematic/templates/09-acceptance-tests.md +57 -0
  62. package/skills/struq/references/anti-patterns.md +265 -0
  63. package/skills/struq/references/baseline-prompt.md +118 -0
  64. package/skills/struq/references/brand.md +143 -0
  65. package/skills/struq/references/brief-router.md +219 -0
  66. package/skills/struq/references/composition.md +191 -0
  67. package/skills/struq/references/depth-parallax.md +235 -0
  68. package/skills/struq/references/direction.md +188 -0
  69. package/skills/struq/references/feel-layer.md +107 -0
  70. package/skills/struq/references/gsap-api.md +293 -0
  71. package/skills/struq/references/iconography.md +255 -0
  72. package/skills/struq/references/imagery.md +144 -0
  73. package/skills/struq/references/loaders.md +287 -0
  74. package/skills/struq/references/micro-interactions.md +270 -0
  75. package/skills/struq/references/mobile-composition.md +70 -0
  76. package/skills/struq/references/nav-header.md +296 -0
  77. package/skills/struq/references/page-architecture.md +134 -0
  78. package/skills/struq/references/page-entrances.md +198 -0
  79. package/skills/struq/references/performance.md +235 -0
  80. package/skills/struq/references/pinning-scrub.md +341 -0
  81. package/skills/struq/references/pitfalls.md +290 -0
  82. package/skills/struq/references/route-transitions.md +281 -0
  83. package/skills/struq/references/scaling.md +151 -0
  84. package/skills/struq/references/scroll-reveals.md +280 -0
  85. package/skills/struq/references/seo.md +219 -0
  86. package/skills/struq/references/setup.md +397 -0
  87. package/skills/struq/references/showcase.md +87 -0
  88. package/skills/struq/references/stack-targets.md +78 -0
  89. package/skills/struq/references/struq-imagery.md +107 -0
  90. package/skills/struq/references/svg-motion.md +390 -0
  91. package/skills/struq/references/transitions.md +160 -0
  92. package/skills/struq/references/triage.md +71 -0
  93. package/skills/struq/references/typography.md +720 -0
  94. package/skills/struq/references/vibe-presets.md +287 -0
  95. package/skills/struq/references/webgl-r3f.md +274 -0
  96. package/skills/struq/references/webgl-scenes.md +593 -0
@@ -0,0 +1,103 @@
1
+ # Chapter Specification
2
+
3
+ ## Identity
4
+
5
+ **Chapter ID:**
6
+
7
+ **Name:**
8
+
9
+ **Narrative purpose:**
10
+
11
+ **Local progress source:**
12
+
13
+ **Scroll-distance budget:**
14
+
15
+ ## State transformation
16
+
17
+ **Incoming state:**
18
+
19
+ **Hero state:**
20
+
21
+ **Outgoing state:**
22
+
23
+ **Primary subject:**
24
+
25
+ **Bridge to next:**
26
+
27
+ ## Phase windows
28
+
29
+ | Phase | Start | End | Viewer sees | Camera | Subject | DOM/SVG | Light/effects |
30
+ |---|---:|---:|---|---|---|---|---|
31
+ | Pre-roll | | | | | | | |
32
+ | Entrance | | | | | | | |
33
+ | Establish | | | | | | | |
34
+ | Development | | | | | | | |
35
+ | Transformation | | | | | | | |
36
+ | Handoff prep | | | | | | | |
37
+ | Handoff | | | | | | | |
38
+ | Resolution | | | | | | | |
39
+
40
+ ## Semantic cues
41
+
42
+ | Label | Progress | Meaning | Systems responding |
43
+ |---|---:|---|---|
44
+ | `chapter:enter` | | | |
45
+ | `subject:established` | | | |
46
+ | `copy:available` | | | |
47
+ | `transformation:apex` | | | |
48
+ | `handoff:armed` | | | |
49
+ | `chapter:resolved` | | | |
50
+
51
+ ## Shot sequence
52
+
53
+ | Shot | Progress range | Camera move | Target behavior | FOV/focus | Composition purpose |
54
+ |---|---|---|---|---|---|
55
+
56
+ ## Property ownership
57
+
58
+ | Property | Authoritative owner | Additive channel | Active range |
59
+ |---|---|---|---|
60
+
61
+ ## Interaction envelope
62
+
63
+ **Available interactions:**
64
+
65
+ **Enable range:**
66
+
67
+ **Critical interval:**
68
+
69
+ **Attenuation rule:**
70
+
71
+ **Touch behavior:**
72
+
73
+ **Keyboard behavior:**
74
+
75
+ ## Reverse behavior
76
+
77
+ [Describe what reverses, what remains loaded, which state thresholds change, and how interactions return.]
78
+
79
+ ## Responsive variants
80
+
81
+ ### Desktop
82
+
83
+ ### Tablet
84
+
85
+ ### Mobile
86
+
87
+ ### Reduced motion
88
+
89
+ ## Tuning values
90
+
91
+ -
92
+ -
93
+ -
94
+
95
+ ## Validation
96
+
97
+ - [ ] Forward scrub is continuous.
98
+ - [ ] Reverse scrub is continuous.
99
+ - [ ] Key poses preserve composition.
100
+ - [ ] Copy has sufficient reading time.
101
+ - [ ] Interaction does not fight critical camera motion.
102
+ - [ ] Handoff starts from the documented outgoing state.
103
+ - [ ] Mobile composition is separately authored.
@@ -0,0 +1,102 @@
1
+ # Handoff Contract
2
+
3
+ ## Identity
4
+
5
+ **ID:**
6
+
7
+ **From:**
8
+
9
+ **To:**
10
+
11
+ **Global or local progress window:**
12
+
13
+ ## Bridge
14
+
15
+ **Bridge element(s):**
16
+
17
+ **Continuity type:** object / screen-space / world-space / typography / vector / light / texture / motion
18
+
19
+ **Why the viewer understands the bridge:**
20
+
21
+ ## Outgoing state
22
+
23
+ | Property | Value | Coordinate space | Owner |
24
+ |---|---|---|---|
25
+
26
+ ## Incoming state
27
+
28
+ | Property | Value | Coordinate space | Owner |
29
+ |---|---|---|---|
30
+
31
+ ## State equality requirements
32
+
33
+ | Shared property | Outgoing final | Incoming initial | Tolerance |
34
+ |---|---|---|---|
35
+
36
+ ## Ownership transfer
37
+
38
+ | Property | Outgoing owner | Transfer cue | Transition owner | Incoming cue | Incoming owner |
39
+ |---|---|---|---|---|---|
40
+
41
+ ## Choreography
42
+
43
+ | Handoff progress | Action | Visual purpose | Owner |
44
+ |---:|---|---|---|
45
+ | 0.00 | | | |
46
+ | 0.25 | | | |
47
+ | 0.50 | | | |
48
+ | 0.75 | | | |
49
+ | 1.00 | | | |
50
+
51
+ ## Camera continuity
52
+
53
+ **Method:** continuous path / match pose / cut under cover / render blend / subject-relative
54
+
55
+ **Position and target behavior:**
56
+
57
+ **FOV and focus behavior:**
58
+
59
+ ## Cover or compositing
60
+
61
+ **Occlusion strategy:**
62
+
63
+ **Coverage condition:**
64
+
65
+ **Scene or asset swap condition:**
66
+
67
+ ## Lighting and typography
68
+
69
+ **Lighting continuity:**
70
+
71
+ **Typography continuity:**
72
+
73
+ ## Interaction gating
74
+
75
+ **Pointer:**
76
+
77
+ **Scroll velocity effects:**
78
+
79
+ **Click or hover:**
80
+
81
+ ## Readiness
82
+
83
+ - Required assets:
84
+ - Prefetch cue:
85
+ - Fallback if unavailable:
86
+
87
+ ## Reverse behavior
88
+
89
+ [Describe exact reverse thresholds, retained assets, and owner restoration.]
90
+
91
+ ## Completion condition
92
+
93
+ [Measurable state proving that the incoming chapter is authoritative.]
94
+
95
+ ## Validation
96
+
97
+ - [ ] Shared values match.
98
+ - [ ] Cover condition works on all viewport classes.
99
+ - [ ] No frame exposes an invalid mixed state.
100
+ - [ ] Reverse behavior reconstructs the outgoing chapter.
101
+ - [ ] Interaction ownership transfers cleanly.
102
+ - [ ] Assets remain alive for reversal.
@@ -0,0 +1,29 @@
1
+ # Property Ownership Matrix
2
+
3
+ ## Rules
4
+
5
+ - Every mutable visual property has one authoritative writer at a time.
6
+ - Additive behavior uses separate rigs or named channels.
7
+ - Ownership changes occur only at semantic cues.
8
+ - Route-level transitions can temporarily take ownership only through a documented handoff.
9
+
10
+ ## Matrix
11
+
12
+ | Target | Property | Narrative owner | Reactive channel | Ambient channel | Discrete owner | Transfer cue | Final resolution |
13
+ |---|---|---|---|---|---|---|---|
14
+ | Camera | position | | | | | | |
15
+ | Camera | target | | | | | | |
16
+ | Camera | FOV | | | | | | |
17
+ | Subject | position | | | | | | |
18
+ | Subject | rotation | | | | | | |
19
+ | Subject | scale | | | | | | |
20
+ | Material | transition progress | | | | | | |
21
+ | Shader | distortion | | | | | | |
22
+ | DOM title wrapper | transform | | | | | | |
23
+ | SVG bridge | path/morph | | | | | | |
24
+ | Post FX | bloom | | | | | | |
25
+
26
+ ## Conflict findings
27
+
28
+ | Property | Current writers | Symptom | Correction |
29
+ |---|---|---|---|
@@ -0,0 +1,59 @@
1
+ # Camera and Composition Shot Presets
2
+
3
+ ## Shot schema
4
+
5
+ ```ts
6
+ type ShotPreset = {
7
+ id: string;
8
+ camera: {
9
+ position: [number, number, number];
10
+ target: [number, number, number];
11
+ fov: number;
12
+ roll: number;
13
+ };
14
+ focus?: {
15
+ distance: number;
16
+ aperture: number;
17
+ };
18
+ subject?: {
19
+ position: [number, number, number];
20
+ rotation: [number, number, number];
21
+ scale: number | [number, number, number];
22
+ };
23
+ exposure?: number;
24
+ composition: string;
25
+ safeArea: string;
26
+ };
27
+ ```
28
+
29
+ ## Presets
30
+
31
+ ### `shot-name`
32
+
33
+ **Purpose:**
34
+
35
+ **Camera position:** `[x, y, z]`
36
+
37
+ **Target:** `[x, y, z]`
38
+
39
+ **FOV:**
40
+
41
+ **Roll:**
42
+
43
+ **Focus distance:**
44
+
45
+ **Aperture:**
46
+
47
+ **Subject transform:**
48
+
49
+ **Exposure:**
50
+
51
+ **Composition:**
52
+
53
+ **Typography safe area:**
54
+
55
+ **Desktop notes:**
56
+
57
+ **Mobile variant:**
58
+
59
+ **Transition compatibility:**
@@ -0,0 +1,66 @@
1
+ # Implementation Vertical Slice
2
+
3
+ ## Target behavior
4
+
5
+ **Chapter:**
6
+
7
+ **Handoff:**
8
+
9
+ **Starting state:**
10
+
11
+ **Ending state:**
12
+
13
+ **Acceptance behavior:**
14
+
15
+ ## Files and responsibilities
16
+
17
+ | File | Responsibility | Change |
18
+ |---|---|---|
19
+
20
+ ## Required targets
21
+
22
+ | Registry key | Component owner | Readiness condition |
23
+ |---|---|---|
24
+
25
+ ## Timeline plan
26
+
27
+ | Label | Progress/time | Action |
28
+ |---|---:|---|
29
+
30
+ ## State and ownership changes
31
+
32
+ | Property | Before | During | After |
33
+ |---|---|---|---|
34
+
35
+ ## Responsive behavior
36
+
37
+ **Desktop:**
38
+
39
+ **Mobile:**
40
+
41
+ **Reduced motion:**
42
+
43
+ ## Cleanup
44
+
45
+ - timelines:
46
+ - ScrollTriggers:
47
+ - ticker callbacks:
48
+ - listeners:
49
+ - WebGL resources:
50
+ - document styles/classes:
51
+
52
+ ## Tuning values exposed
53
+
54
+ -
55
+ -
56
+
57
+ ## Validation
58
+
59
+ - [ ] forward
60
+ - [ ] reverse
61
+ - [ ] fast scroll
62
+ - [ ] resize
63
+ - [ ] route leave
64
+ - [ ] touch
65
+ - [ ] reduced motion
66
+ - [ ] low-performance tier
@@ -0,0 +1,36 @@
1
+ # Tuning Register
2
+
3
+ ## Current build
4
+
5
+ **Commit or version:**
6
+
7
+ **Viewport:**
8
+
9
+ **Device:**
10
+
11
+ **Performance tier:**
12
+
13
+ ## Values
14
+
15
+ | ID | System | Value | Unit/range | Purpose | Last change | Evidence |
16
+ |---|---|---:|---|---|---|---|
17
+
18
+ ## Shot captures
19
+
20
+ | Shot | Camera | Target | FOV | Subject | Notes |
21
+ |---|---|---:|---:|---|---|
22
+
23
+ ## Timing decisions
24
+
25
+ | Chapter | Cue or phase | Previous | New | Reason | Recording/reference |
26
+ |---|---|---:|---:|---|---|
27
+
28
+ ## Open visual questions
29
+
30
+ -
31
+ -
32
+
33
+ ## Rejected values
34
+
35
+ | Value | Rejected because | Replacement |
36
+ |---|---|---|
@@ -0,0 +1,57 @@
1
+ # Experience Acceptance Tests
2
+
3
+ ## Narrative and continuity
4
+
5
+ - [ ] The experience can be described as one coherent transformation.
6
+ - [ ] Every chapter performs a distinct narrative action.
7
+ - [ ] Every boundary has a visible or conceptual bridge.
8
+ - [ ] Shared end and start states match.
9
+ - [ ] No transition relies solely on hiding a jump with opacity.
10
+
11
+ ## Timeline and ownership
12
+
13
+ - [ ] Every important property has one authoritative writer.
14
+ - [ ] Chapter and handoff timelines are separated.
15
+ - [ ] Semantic labels coordinate DOM and WebGL.
16
+ - [ ] Reverse scrub reconstructs valid states.
17
+ - [ ] Critical intervals attenuate reactive effects.
18
+
19
+ ## Camera and composition
20
+
21
+ - [ ] Every chapter has named key shots.
22
+ - [ ] Camera position and target are authored together.
23
+ - [ ] Holds provide comprehension and reading time.
24
+ - [ ] Mobile shots preserve the intended focal hierarchy.
25
+ - [ ] FOV and focus changes are deliberate.
26
+
27
+ ## Interaction
28
+
29
+ - [ ] Scroll owns macro progression.
30
+ - [ ] Pointer and hover remain additive.
31
+ - [ ] Touch has equivalent behavior.
32
+ - [ ] Keyboard navigation is available where required.
33
+ - [ ] Gesture modes provide a clear exit.
34
+
35
+ ## Responsive and reduced motion
36
+
37
+ - [ ] Desktop, tablet, and mobile choreography are tested.
38
+ - [ ] Reduced motion preserves story and visibility.
39
+ - [ ] Transition covers work at all aspect ratios.
40
+ - [ ] Typography re-splits or rebuilds safely.
41
+
42
+ ## Performance
43
+
44
+ - [ ] Target frame-rate behavior is documented.
45
+ - [ ] DPR and effects scale by tier.
46
+ - [ ] Next-chapter assets are ready before the handoff.
47
+ - [ ] No recurring allocations or React state updates occur in the frame loop.
48
+ - [ ] Transparent overdraw and render targets are controlled.
49
+
50
+ ## Lifecycle
51
+
52
+ - [ ] ScrollTriggers are killed on unmount.
53
+ - [ ] GSAP ticker callbacks are removed.
54
+ - [ ] Lenis state is restored.
55
+ - [ ] Event listeners are removed.
56
+ - [ ] custom WebGL resources are disposed.
57
+ - [ ] route back/forward behavior is valid.