@rune-kit/rune 2.8.0 → 2.11.0

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 (287) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +68 -34
  3. package/agents/adversary.md +27 -0
  4. package/agents/architect.md +19 -29
  5. package/agents/asset-creator.md +18 -4
  6. package/agents/audit.md +25 -4
  7. package/agents/autopsy.md +19 -4
  8. package/agents/ba.md +35 -0
  9. package/agents/brainstorm.md +31 -4
  10. package/agents/browser-pilot.md +21 -4
  11. package/agents/coder.md +21 -29
  12. package/agents/completion-gate.md +20 -4
  13. package/agents/constraint-check.md +18 -4
  14. package/agents/context-engine.md +22 -4
  15. package/agents/context-pack.md +32 -0
  16. package/agents/cook.md +41 -4
  17. package/agents/db.md +19 -4
  18. package/agents/debug.md +33 -4
  19. package/agents/dependency-doctor.md +20 -4
  20. package/agents/deploy.md +27 -4
  21. package/agents/design.md +22 -4
  22. package/agents/doc-processor.md +27 -0
  23. package/agents/docs-seeker.md +19 -4
  24. package/agents/docs.md +31 -0
  25. package/agents/fix.md +37 -4
  26. package/agents/git.md +29 -0
  27. package/agents/hallucination-guard.md +20 -4
  28. package/agents/incident.md +21 -4
  29. package/agents/integrity-check.md +18 -4
  30. package/agents/journal.md +19 -4
  31. package/agents/launch.md +32 -4
  32. package/agents/logic-guardian.md +26 -11
  33. package/agents/marketing.md +23 -4
  34. package/agents/mcp-builder.md +26 -0
  35. package/agents/neural-memory.md +30 -0
  36. package/agents/onboard.md +22 -4
  37. package/agents/perf.md +21 -4
  38. package/agents/plan.md +29 -4
  39. package/agents/preflight.md +22 -4
  40. package/agents/problem-solver.md +20 -4
  41. package/agents/rescue.md +23 -4
  42. package/agents/research.md +19 -4
  43. package/agents/researcher.md +19 -29
  44. package/agents/retro.md +32 -0
  45. package/agents/review-intake.md +20 -4
  46. package/agents/review.md +32 -4
  47. package/agents/reviewer.md +20 -28
  48. package/agents/safeguard.md +19 -4
  49. package/agents/sast.md +18 -4
  50. package/agents/scaffold.md +41 -0
  51. package/agents/scanner.md +19 -28
  52. package/agents/scope-guard.md +18 -4
  53. package/agents/scout.md +23 -4
  54. package/agents/sentinel-env.md +26 -0
  55. package/agents/sentinel.md +33 -4
  56. package/agents/sequential-thinking.md +20 -4
  57. package/agents/session-bridge.md +24 -4
  58. package/agents/skill-forge.md +22 -4
  59. package/agents/skill-router.md +26 -4
  60. package/agents/slides.md +24 -0
  61. package/agents/surgeon.md +19 -4
  62. package/agents/team.md +30 -4
  63. package/agents/test.md +36 -4
  64. package/agents/trend-scout.md +17 -4
  65. package/agents/verification.md +20 -4
  66. package/agents/video-creator.md +20 -4
  67. package/agents/watchdog.md +19 -4
  68. package/agents/worktree.md +17 -4
  69. package/commands/rune.md +168 -168
  70. package/compiler/__tests__/analytics.test.js +370 -0
  71. package/compiler/adapters/openclaw.js +2 -2
  72. package/compiler/analytics.js +385 -0
  73. package/compiler/bin/rune.js +68 -2
  74. package/compiler/dashboard.js +883 -0
  75. package/compiler/transforms/branding.js +1 -1
  76. package/contexts/dev.md +34 -34
  77. package/contexts/research.md +43 -43
  78. package/contexts/review.md +55 -55
  79. package/extensions/ai-ml/PACK.md +88 -88
  80. package/extensions/ai-ml/skills/ai-agents.md +172 -172
  81. package/extensions/ai-ml/skills/code-sandbox.md +187 -187
  82. package/extensions/ai-ml/skills/deep-research.md +146 -146
  83. package/extensions/ai-ml/skills/embedding-search.md +66 -66
  84. package/extensions/ai-ml/skills/fine-tuning-guide.md +74 -74
  85. package/extensions/ai-ml/skills/llm-architect.md +125 -125
  86. package/extensions/ai-ml/skills/llm-integration.md +64 -64
  87. package/extensions/ai-ml/skills/prompt-patterns.md +72 -72
  88. package/extensions/ai-ml/skills/rag-patterns.md +66 -66
  89. package/extensions/ai-ml/skills/web-extraction.md +114 -114
  90. package/extensions/analytics/PACK.md +92 -92
  91. package/extensions/analytics/skills/ab-testing.md +72 -72
  92. package/extensions/analytics/skills/dashboard-patterns.md +83 -83
  93. package/extensions/analytics/skills/data-validation.md +68 -68
  94. package/extensions/analytics/skills/funnel-analysis.md +81 -81
  95. package/extensions/analytics/skills/sql-patterns.md +57 -57
  96. package/extensions/analytics/skills/statistical-analysis.md +79 -79
  97. package/extensions/analytics/skills/tracking-setup.md +71 -71
  98. package/extensions/backend/PACK.md +104 -104
  99. package/extensions/backend/skills/api-patterns.md +84 -84
  100. package/extensions/backend/skills/async-pipeline.md +193 -193
  101. package/extensions/backend/skills/auth-patterns.md +97 -97
  102. package/extensions/backend/skills/background-jobs.md +133 -133
  103. package/extensions/backend/skills/caching-patterns.md +108 -108
  104. package/extensions/backend/skills/cli-generation.md +133 -133
  105. package/extensions/backend/skills/database-patterns.md +87 -87
  106. package/extensions/backend/skills/middleware-patterns.md +104 -104
  107. package/extensions/chrome-ext/PACK.md +93 -93
  108. package/extensions/chrome-ext/skills/cws-preflight.md +143 -143
  109. package/extensions/chrome-ext/skills/cws-publish.md +104 -104
  110. package/extensions/chrome-ext/skills/ext-ai-integration.md +251 -251
  111. package/extensions/chrome-ext/skills/ext-messaging.md +139 -139
  112. package/extensions/chrome-ext/skills/ext-storage.md +133 -133
  113. package/extensions/chrome-ext/skills/mv3-scaffold.md +164 -164
  114. package/extensions/content/PACK.md +96 -96
  115. package/extensions/content/skills/blog-patterns.md +88 -88
  116. package/extensions/content/skills/cms-integration.md +131 -131
  117. package/extensions/content/skills/content-scoring.md +107 -107
  118. package/extensions/content/skills/i18n.md +83 -83
  119. package/extensions/content/skills/mdx-authoring.md +137 -137
  120. package/extensions/content/skills/reference.md +1014 -1014
  121. package/extensions/content/skills/seo-patterns.md +67 -67
  122. package/extensions/content/skills/video-repurpose.md +153 -153
  123. package/extensions/devops/PACK.md +101 -101
  124. package/extensions/devops/skills/chaos-testing.md +67 -67
  125. package/extensions/devops/skills/ci-cd.md +75 -75
  126. package/extensions/devops/skills/docker.md +58 -58
  127. package/extensions/devops/skills/edge-serverless.md +163 -163
  128. package/extensions/devops/skills/infra-as-code.md +158 -158
  129. package/extensions/devops/skills/kubernetes.md +110 -110
  130. package/extensions/devops/skills/monitoring.md +57 -57
  131. package/extensions/devops/skills/server-setup.md +64 -64
  132. package/extensions/devops/skills/ssl-domain.md +42 -42
  133. package/extensions/ecommerce/PACK.md +116 -116
  134. package/extensions/ecommerce/skills/cart-system.md +79 -79
  135. package/extensions/ecommerce/skills/inventory-mgmt.md +102 -102
  136. package/extensions/ecommerce/skills/order-management.md +126 -126
  137. package/extensions/ecommerce/skills/payment-integration.md +472 -472
  138. package/extensions/ecommerce/skills/shopify-dev.md +69 -69
  139. package/extensions/ecommerce/skills/subscription-billing.md +93 -93
  140. package/extensions/ecommerce/skills/tax-compliance.md +117 -117
  141. package/extensions/gamedev/PACK.md +142 -142
  142. package/extensions/gamedev/skills/asset-pipeline.md +74 -74
  143. package/extensions/gamedev/skills/audio-system.md +129 -129
  144. package/extensions/gamedev/skills/camera-system.md +87 -87
  145. package/extensions/gamedev/skills/ecs.md +98 -98
  146. package/extensions/gamedev/skills/game-loops.md +72 -72
  147. package/extensions/gamedev/skills/input-system.md +199 -199
  148. package/extensions/gamedev/skills/multiplayer.md +180 -180
  149. package/extensions/gamedev/skills/particles.md +105 -105
  150. package/extensions/gamedev/skills/physics-engine.md +89 -89
  151. package/extensions/gamedev/skills/scene-management.md +146 -146
  152. package/extensions/gamedev/skills/threejs-patterns.md +90 -90
  153. package/extensions/gamedev/skills/webgl.md +71 -71
  154. package/extensions/mobile/PACK.md +106 -106
  155. package/extensions/mobile/skills/app-store-connect.md +152 -152
  156. package/extensions/mobile/skills/app-store-prep.md +66 -66
  157. package/extensions/mobile/skills/deep-linking.md +109 -109
  158. package/extensions/mobile/skills/flutter.md +60 -60
  159. package/extensions/mobile/skills/ios-build-pipeline.md +142 -142
  160. package/extensions/mobile/skills/native-bridge.md +66 -66
  161. package/extensions/mobile/skills/ota-updates.md +97 -97
  162. package/extensions/mobile/skills/push-notifications.md +111 -111
  163. package/extensions/mobile/skills/react-native.md +82 -82
  164. package/extensions/saas/PACK.md +116 -116
  165. package/extensions/saas/skills/billing-integration.md +200 -200
  166. package/extensions/saas/skills/feature-flags.md +130 -130
  167. package/extensions/saas/skills/multi-tenant.md +103 -103
  168. package/extensions/saas/skills/onboarding-flow.md +139 -139
  169. package/extensions/saas/skills/subscription-flow.md +95 -95
  170. package/extensions/saas/skills/team-management.md +144 -144
  171. package/extensions/security/PACK.md +99 -99
  172. package/extensions/security/skills/api-security.md +140 -140
  173. package/extensions/security/skills/compliance.md +68 -68
  174. package/extensions/security/skills/owasp-audit.md +64 -64
  175. package/extensions/security/skills/pentest-patterns.md +77 -77
  176. package/extensions/security/skills/secret-mgmt.md +65 -65
  177. package/extensions/security/skills/supply-chain.md +65 -65
  178. package/extensions/trading/PACK.md +80 -80
  179. package/extensions/trading/skills/chart-components.md +55 -55
  180. package/extensions/trading/skills/experiment-loop.md +125 -125
  181. package/extensions/trading/skills/fintech-patterns.md +47 -47
  182. package/extensions/trading/skills/indicator-library.md +58 -58
  183. package/extensions/trading/skills/quant-analysis.md +111 -111
  184. package/extensions/trading/skills/realtime-data.md +58 -58
  185. package/extensions/trading/skills/trade-logic.md +104 -104
  186. package/extensions/ui/PACK.md +130 -130
  187. package/extensions/ui/skills/a11y-audit.md +91 -91
  188. package/extensions/ui/skills/animation-patterns.md +127 -106
  189. package/extensions/ui/skills/component-patterns.md +100 -75
  190. package/extensions/ui/skills/design-decision.md +108 -108
  191. package/extensions/ui/skills/design-system.md +68 -68
  192. package/extensions/ui/skills/landing-patterns.md +155 -155
  193. package/extensions/ui/skills/palette-picker.md +173 -173
  194. package/extensions/ui/skills/react-health.md +90 -90
  195. package/extensions/ui/skills/type-system.md +125 -125
  196. package/extensions/ui/skills/web-vitals.md +153 -153
  197. package/extensions/zalo/PACK.md +145 -145
  198. package/extensions/zalo/skills/zalo-oa-mcp.md +317 -317
  199. package/extensions/zalo/skills/zalo-oa-messaging.md +429 -429
  200. package/extensions/zalo/skills/zalo-oa-setup.md +236 -236
  201. package/extensions/zalo/skills/zalo-oa-webhook.md +189 -189
  202. package/extensions/zalo/skills/zalo-personal-messaging.md +194 -194
  203. package/extensions/zalo/skills/zalo-personal-setup.md +153 -153
  204. package/extensions/zalo/skills/zalo-rate-guard.md +219 -219
  205. package/hooks/auto-format/index.cjs +48 -48
  206. package/hooks/context-watch/index.cjs +95 -68
  207. package/hooks/hooks.json +111 -111
  208. package/hooks/metrics-collector/index.cjs +86 -42
  209. package/hooks/post-session-reflect/index.cjs +189 -153
  210. package/hooks/pre-compact/index.cjs +95 -95
  211. package/hooks/run-hook.cmd +1 -1
  212. package/hooks/secrets-scan/index.cjs +100 -100
  213. package/hooks/session-start/index.cjs +71 -65
  214. package/hooks/typecheck/index.cjs +65 -65
  215. package/package.json +63 -63
  216. package/references/ui-pro-max-data/LICENSE-UI-PRO-MAX +21 -21
  217. package/references/ui-pro-max-data/charts.csv +26 -26
  218. package/references/ui-pro-max-data/colors.csv +161 -161
  219. package/references/ui-pro-max-data/styles.csv +68 -68
  220. package/references/ui-pro-max-data/typography.csv +74 -74
  221. package/references/ui-pro-max-data/ui-reasoning.csv +162 -162
  222. package/references/ui-pro-max-data/ux-guidelines.csv +99 -99
  223. package/skills/adversary/SKILL.md +283 -283
  224. package/skills/asset-creator/SKILL.md +157 -157
  225. package/skills/audit/SKILL.md +148 -2
  226. package/skills/autopsy/SKILL.md +335 -259
  227. package/skills/autopsy/references/repo-analysis-patterns.md +113 -0
  228. package/skills/ba/SKILL.md +72 -2
  229. package/skills/brainstorm/SKILL.md +342 -341
  230. package/skills/browser-pilot/SKILL.md +168 -168
  231. package/skills/constraint-check/SKILL.md +165 -165
  232. package/skills/context-engine/SKILL.md +404 -404
  233. package/skills/cook/SKILL.md +917 -834
  234. package/skills/cook/references/output-format.md +33 -0
  235. package/skills/db/SKILL.md +273 -272
  236. package/skills/debug/SKILL.md +465 -443
  237. package/skills/dependency-doctor/SKILL.md +265 -235
  238. package/skills/deploy/SKILL.md +274 -231
  239. package/skills/design/DESIGN-REFERENCE.md +365 -365
  240. package/skills/design/SKILL.md +589 -482
  241. package/skills/doc-processor/SKILL.md +254 -254
  242. package/skills/docs/SKILL.md +374 -373
  243. package/skills/docs-seeker/SKILL.md +177 -177
  244. package/skills/fix/SKILL.md +330 -308
  245. package/skills/git/SKILL.md +339 -339
  246. package/skills/graft/SKILL.md +352 -0
  247. package/skills/graft/references/challenge-framework.md +98 -0
  248. package/skills/graft/references/mode-decision.md +44 -0
  249. package/skills/hallucination-guard/SKILL.md +219 -219
  250. package/skills/incident/SKILL.md +254 -251
  251. package/skills/integrity-check/SKILL.md +169 -169
  252. package/skills/journal/SKILL.md +240 -238
  253. package/skills/launch/SKILL.md +344 -342
  254. package/skills/logic-guardian/SKILL.md +251 -251
  255. package/skills/marketing/SKILL.md +290 -245
  256. package/skills/mcp-builder/SKILL.md +425 -423
  257. package/skills/mcp-builder/references/auto-discovery-pattern.md +169 -0
  258. package/skills/neural-memory/SKILL.md +362 -362
  259. package/skills/onboard/SKILL.md +404 -403
  260. package/skills/perf/SKILL.md +346 -346
  261. package/skills/plan/SKILL.md +433 -370
  262. package/skills/plan/references/feature-map.md +84 -0
  263. package/skills/preflight/SKILL.md +415 -396
  264. package/skills/problem-solver/SKILL.md +380 -284
  265. package/skills/rescue/SKILL.md +474 -450
  266. package/skills/retro/SKILL.md +5 -1
  267. package/skills/review/SKILL.md +612 -535
  268. package/skills/review-intake/SKILL.md +249 -249
  269. package/skills/safeguard/SKILL.md +200 -200
  270. package/skills/sast/SKILL.md +190 -190
  271. package/skills/scaffold/SKILL.md +328 -286
  272. package/skills/scope-guard/SKILL.md +180 -162
  273. package/skills/scout/SKILL.md +263 -263
  274. package/skills/sentinel/SKILL.md +382 -353
  275. package/skills/sentinel-env/SKILL.md +254 -254
  276. package/skills/sequential-thinking/SKILL.md +234 -234
  277. package/skills/session-bridge/SKILL.md +543 -397
  278. package/skills/skill-forge/SKILL.md +581 -539
  279. package/skills/skill-router/{skill.md → SKILL.md} +30 -2
  280. package/skills/surgeon/SKILL.md +215 -215
  281. package/skills/team/SKILL.md +556 -514
  282. package/skills/test/SKILL.md +614 -587
  283. package/skills/trend-scout/SKILL.md +145 -145
  284. package/skills/verification/SKILL.md +326 -325
  285. package/skills/video-creator/SKILL.md +201 -201
  286. package/skills/watchdog/SKILL.md +168 -168
  287. package/skills/worktree/SKILL.md +140 -140
@@ -1,142 +1,142 @@
1
- ---
2
- name: "@rune/gamedev"
3
- description: Game development patterns — Three.js, WebGL, game loops, physics engines, asset pipelines, multiplayer, audio, input, ECS, particles, camera, and scene management.
4
- metadata:
5
- author: runedev
6
- version: "0.2.0"
7
- layer: L4
8
- price: "$12"
9
- target: Game developers
10
- format: split
11
- ---
12
-
13
- # @rune/gamedev
14
-
15
- ## Purpose
16
-
17
- Web game development hits performance walls that traditional web apps never encounter: 60fps render loops that stutter on garbage collection, physics simulations that diverge between clients, shaders that work on desktop but fail on mobile GPUs, and asset loading that blocks the first frame for 10 seconds. This pack provides patterns for the full web game stack — rendering, simulation, physics, assets, multiplayer, audio, input, ECS, particles, camera, and scene management — each optimized for the unique constraints of real-time interactive applications running in a browser.
18
-
19
- ## Triggers
20
-
21
- - Auto-trigger: when `three`, `@react-three/fiber`, `pixi.js`, `phaser`, `cannon`, `rapier`, `*.glsl`, `*.wgsl` detected
22
- - `/rune threejs-patterns` — audit or optimize Three.js scene
23
- - `/rune webgl` — raw WebGL/shader development
24
- - `/rune game-loops` — implement or audit game loop architecture
25
- - `/rune physics-engine` — set up or optimize physics simulation
26
- - `/rune asset-pipeline` — optimize asset loading and management
27
- - `/rune multiplayer` — WebSocket game server and client prediction
28
- - `/rune audio-system` — Web Audio API, spatial audio, SFX management
29
- - `/rune input-system` — keyboard/mouse/gamepad/touch input handling
30
- - `/rune ecs` — Entity Component System architecture
31
- - `/rune particles` — GPU particle system with WebGL
32
- - `/rune camera-system` — follow camera, screen shake, zoom
33
- - `/rune scene-management` — scene transitions, preloading, serialization
34
- - Called by `cook` (L1) when game development task detected
35
-
36
- ## Skills Included
37
-
38
- | Skill | Model | Description |
39
- |-------|-------|-------------|
40
- | [threejs-patterns](skills/threejs-patterns.md) | sonnet | Three.js scene, React Three Fiber, PBR materials, LOD, post-processing, instanced rendering, and disposal patterns. |
41
- | [webgl](skills/webgl.md) | sonnet | Raw WebGL2, GLSL shaders, VAO buffer management, instanced rendering, and texture handling. |
42
- | [game-loops](skills/game-loops.md) | sonnet | Fixed timestep with accumulator, interpolation for smooth rendering, decoupled input handler, and frame budget monitoring. |
43
- | [physics-engine](skills/physics-engine.md) | sonnet | Rapier.js (WASM) setup with collision groups, sleep thresholds, event-driven collision callbacks, and raycasting. |
44
- | [asset-pipeline](skills/asset-pipeline.md) | sonnet | glTF/Draco loading, KTX2 texture compression, typed asset manifest, preloader with progress tracking. |
45
- | [multiplayer](skills/multiplayer.md) | sonnet | Authoritative WebSocket game server, client-side prediction, reconciliation, entity interpolation, and lag compensation. |
46
- | [audio-system](skills/audio-system.md) | sonnet | Web Audio API AudioManager — spatial audio, music crossfade, SFX pooling, browser autoplay policy handling. |
47
- | [input-system](skills/input-system.md) | sonnet | Unified keyboard/mouse/gamepad/touch input with action mapping, input buffering, coyote time, and virtual joystick. |
48
- | [ecs](skills/ecs.md) | sonnet | Lightweight archetype-based ECS — dense component storage, query-based entity iteration, and pure system functions. |
49
- | [particles](skills/particles.md) | sonnet | Object-pooled CPU particle system with WebGL instancing path for 10k+ particles and emitter presets. |
50
- | [camera-system](skills/camera-system.md) | sonnet | 2D camera with smooth lerp follow, dead zone, screen shake decay, and zoom-to target. |
51
- | [scene-management](skills/scene-management.md) | sonnet | Stack-based SceneManager with fade transitions, asset preloading before enter, and level JSON serialization. |
52
-
53
- ## Common Workflows
54
-
55
- | Workflow | Skills Involved | Typical Trigger |
56
- |----------|----------------|----------------|
57
- | 2D platformer bootstrap | game-loops → physics-engine → input-system → camera-system | new Phaser/PixiJS project |
58
- | 3D world with NPCs | threejs-patterns → ecs → physics-engine → camera-system | Three.js/R3F project |
59
- | Multiplayer action game | game-loops → multiplayer → physics-engine → input-system | real-time PvP feature |
60
- | Mobile game port | asset-pipeline → input-system → camera-system → game-loops | add touch controls |
61
- | VFX & atmosphere | particles → webgl → threejs-patterns → audio-system | visual polish sprint |
62
- | Game level editor | scene-management → asset-pipeline → ecs → camera-system | tooling sprint |
63
- | Performance audit | game-loops → webgl → particles → asset-pipeline | frame rate complaints |
64
-
65
- ## Cross-Pack Connections
66
-
67
- | Target Pack | Connection | Use Case |
68
- |-------------|-----------|----------|
69
- | **@rune/ui** | HUD components, inventory screens, pause menus, leaderboard overlays | Health bars, minimap, skill cooldowns, settings modal |
70
- | **@rune/backend** | REST/WebSocket API for leaderboards, save data, player accounts, matchmaking | POST `/scores`, GET `/leaderboard`, save game state to DB |
71
- | **@rune/analytics** | Player telemetry — session length, death locations, skill usage heatmaps | `analytics.track('player_died', { x, y, cause })` |
72
- | **@rune/ai-ml** | NPC behavior trees, pathfinding ML, procedural content, cheat detection | A* pathfinding, trained NPC models, PCG level generation |
73
-
74
- ## Connections
75
-
76
- ```
77
- Calls → perf (L2): frame budget and rendering performance audit
78
- Calls → asset-creator (L3): generate placeholder assets and sprites
79
- Calls → @rune/ui: HUD, inventory, menus, overlays
80
- Calls → @rune/backend: leaderboards, save data, player accounts, matchmaking
81
- Calls → @rune/analytics: player telemetry and session tracking
82
- Calls → @rune/ai-ml: NPC behavior, procedural content, cheat detection
83
- Called By ← cook (L1): when game development task detected
84
- Called By ← review (L2): when game code under review
85
- ```
86
-
87
- ## Tech Stack Support
88
-
89
- | Engine | Rendering | Physics | ECS |
90
- |--------|-----------|---------|-----|
91
- | Three.js | WebGL2 / WebGPU | Rapier.js (WASM) | bitECS |
92
- | React Three Fiber | Three.js (declarative) | @react-three/rapier | Custom |
93
- | PixiJS | WebGL2 (2D) | Matter.js | Custom |
94
- | Phaser 3 | WebGL / Canvas | Arcade / Matter | Built-in |
95
- | Babylon.js | WebGL2 / WebGPU | Havok (WASM) | Built-in |
96
-
97
- ## Constraints
98
-
99
- 1. MUST use fixed timestep for physics — variable timestep causes non-deterministic simulation.
100
- 2. MUST dispose all GPU resources (geometries, textures, materials) on scene teardown — GPU memory leaks crash tabs.
101
- 3. MUST NOT create objects inside the render loop — allocate outside, reuse inside.
102
- 4. MUST test on target minimum hardware (mobile GPU) not just development machine.
103
- 5. MUST use compressed asset formats (Draco for geometry, KTX2/Basis for textures) — raw assets cause unacceptable load times.
104
- 6. MUST use authoritative server model for multiplayer — never trust client position data.
105
- 7. MUST resume AudioContext on user gesture — browsers block autoplay audio.
106
- 8. MUST call `input.flush()` at end of each fixed tick — prevents justPressed persisting across frames.
107
-
108
- ## Sharp Edges
109
-
110
- | Failure Mode | Severity | Mitigation |
111
- |---|---|---|
112
- | Objects created in useFrame/render loop cause GC stutters at 60fps | CRITICAL | Pre-allocate all vectors, quaternions, matrices outside the loop; reuse with `.set()` |
113
- | GPU memory leak from undisposed textures/geometries (tab crashes after 5 minutes) | CRITICAL | Implement disposal manager; call `.dispose()` on every Three.js resource on unmount |
114
- | Physics spiral of death: update takes longer than frame, accumulator grows unbounded | HIGH | Cap accumulator at 250ms (skip frames); reduce physics complexity if consistent |
115
- | Shader compiles on first use causing frame drop (shader cache miss) | MEDIUM | Pre-warm shaders during loading screen; use `renderer.compile(scene, camera)` |
116
- | Asset loading blocks first frame (white screen for 5+ seconds) | HIGH | Implement progressive loading with preloader UI; prioritize visible assets |
117
- | Mobile GPU fails on desktop-quality shaders (WebGL context lost) | HIGH | Detect GPU tier with `detect-gpu`; provide shader LOD variants |
118
- | Multiplayer client trusts own position — speed hack trivial | CRITICAL | Server is authoritative; client sends inputs only, reconciles with server state |
119
- | AudioContext locked until user gesture — no music on load | MEDIUM | Resume AudioContext in first click/keydown handler; show muted indicator |
120
- | Gamepad axes not zeroed when gamepad disconnects | LOW | Set axes to 0 in gamepaddisconnected handler |
121
- | Input justPressed persists to next frame if flush() skipped | HIGH | Always flush at end of fixed update, not render |
122
-
123
- ## Done When
124
-
125
- - Scene renders at stable 60fps on target hardware
126
- - Physics simulation is deterministic with fixed timestep
127
- - All GPU resources properly disposed on cleanup
128
- - Assets compressed and preloaded with progress indicator
129
- - Game loop decouples update from render with interpolation
130
- - Multiplayer: server authoritative, client predicts + reconciles
131
- - Audio: spatial SFX + crossfade music, resumable after user gesture
132
- - Input: keyboard/mouse/gamepad/touch unified, buffered, rebindable
133
- - ECS: entities/components/systems cleanly separated, query-based
134
- - Particles: pooled, no GC spikes, emitter presets for common FX
135
- - Camera: smooth follow, dead zone, screen shake on impact
136
- - Scenes: transition with fade, preload assets before enter
137
- - Performance: quadtree spatial queries, frame budget monitoring active
138
- - Structured report emitted for each skill invoked
139
-
140
- ## Cost Profile
141
-
142
- ~10,000–20,000 tokens per full pack run (all skills). Individual skill: ~2,000–4,000 tokens. Sonnet default. Use haiku for asset detection scans and grep passes; sonnet for physics config, shader optimization, and multiplayer architecture; escalate to opus for full game architecture decisions spanning multiple systems.
1
+ ---
2
+ name: "@rune/gamedev"
3
+ description: Game development patterns — Three.js, WebGL, game loops, physics engines, asset pipelines, multiplayer, audio, input, ECS, particles, camera, and scene management.
4
+ metadata:
5
+ author: runedev
6
+ version: "0.2.0"
7
+ layer: L4
8
+ price: "$12"
9
+ target: Game developers
10
+ format: split
11
+ ---
12
+
13
+ # @rune/gamedev
14
+
15
+ ## Purpose
16
+
17
+ Web game development hits performance walls that traditional web apps never encounter: 60fps render loops that stutter on garbage collection, physics simulations that diverge between clients, shaders that work on desktop but fail on mobile GPUs, and asset loading that blocks the first frame for 10 seconds. This pack provides patterns for the full web game stack — rendering, simulation, physics, assets, multiplayer, audio, input, ECS, particles, camera, and scene management — each optimized for the unique constraints of real-time interactive applications running in a browser.
18
+
19
+ ## Triggers
20
+
21
+ - Auto-trigger: when `three`, `@react-three/fiber`, `pixi.js`, `phaser`, `cannon`, `rapier`, `*.glsl`, `*.wgsl` detected
22
+ - `/rune threejs-patterns` — audit or optimize Three.js scene
23
+ - `/rune webgl` — raw WebGL/shader development
24
+ - `/rune game-loops` — implement or audit game loop architecture
25
+ - `/rune physics-engine` — set up or optimize physics simulation
26
+ - `/rune asset-pipeline` — optimize asset loading and management
27
+ - `/rune multiplayer` — WebSocket game server and client prediction
28
+ - `/rune audio-system` — Web Audio API, spatial audio, SFX management
29
+ - `/rune input-system` — keyboard/mouse/gamepad/touch input handling
30
+ - `/rune ecs` — Entity Component System architecture
31
+ - `/rune particles` — GPU particle system with WebGL
32
+ - `/rune camera-system` — follow camera, screen shake, zoom
33
+ - `/rune scene-management` — scene transitions, preloading, serialization
34
+ - Called by `cook` (L1) when game development task detected
35
+
36
+ ## Skills Included
37
+
38
+ | Skill | Model | Description |
39
+ |-------|-------|-------------|
40
+ | [threejs-patterns](skills/threejs-patterns.md) | sonnet | Three.js scene, React Three Fiber, PBR materials, LOD, post-processing, instanced rendering, and disposal patterns. |
41
+ | [webgl](skills/webgl.md) | sonnet | Raw WebGL2, GLSL shaders, VAO buffer management, instanced rendering, and texture handling. |
42
+ | [game-loops](skills/game-loops.md) | sonnet | Fixed timestep with accumulator, interpolation for smooth rendering, decoupled input handler, and frame budget monitoring. |
43
+ | [physics-engine](skills/physics-engine.md) | sonnet | Rapier.js (WASM) setup with collision groups, sleep thresholds, event-driven collision callbacks, and raycasting. |
44
+ | [asset-pipeline](skills/asset-pipeline.md) | sonnet | glTF/Draco loading, KTX2 texture compression, typed asset manifest, preloader with progress tracking. |
45
+ | [multiplayer](skills/multiplayer.md) | sonnet | Authoritative WebSocket game server, client-side prediction, reconciliation, entity interpolation, and lag compensation. |
46
+ | [audio-system](skills/audio-system.md) | sonnet | Web Audio API AudioManager — spatial audio, music crossfade, SFX pooling, browser autoplay policy handling. |
47
+ | [input-system](skills/input-system.md) | sonnet | Unified keyboard/mouse/gamepad/touch input with action mapping, input buffering, coyote time, and virtual joystick. |
48
+ | [ecs](skills/ecs.md) | sonnet | Lightweight archetype-based ECS — dense component storage, query-based entity iteration, and pure system functions. |
49
+ | [particles](skills/particles.md) | sonnet | Object-pooled CPU particle system with WebGL instancing path for 10k+ particles and emitter presets. |
50
+ | [camera-system](skills/camera-system.md) | sonnet | 2D camera with smooth lerp follow, dead zone, screen shake decay, and zoom-to target. |
51
+ | [scene-management](skills/scene-management.md) | sonnet | Stack-based SceneManager with fade transitions, asset preloading before enter, and level JSON serialization. |
52
+
53
+ ## Common Workflows
54
+
55
+ | Workflow | Skills Involved | Typical Trigger |
56
+ |----------|----------------|----------------|
57
+ | 2D platformer bootstrap | game-loops → physics-engine → input-system → camera-system | new Phaser/PixiJS project |
58
+ | 3D world with NPCs | threejs-patterns → ecs → physics-engine → camera-system | Three.js/R3F project |
59
+ | Multiplayer action game | game-loops → multiplayer → physics-engine → input-system | real-time PvP feature |
60
+ | Mobile game port | asset-pipeline → input-system → camera-system → game-loops | add touch controls |
61
+ | VFX & atmosphere | particles → webgl → threejs-patterns → audio-system | visual polish sprint |
62
+ | Game level editor | scene-management → asset-pipeline → ecs → camera-system | tooling sprint |
63
+ | Performance audit | game-loops → webgl → particles → asset-pipeline | frame rate complaints |
64
+
65
+ ## Cross-Pack Connections
66
+
67
+ | Target Pack | Connection | Use Case |
68
+ |-------------|-----------|----------|
69
+ | **@rune/ui** | HUD components, inventory screens, pause menus, leaderboard overlays | Health bars, minimap, skill cooldowns, settings modal |
70
+ | **@rune/backend** | REST/WebSocket API for leaderboards, save data, player accounts, matchmaking | POST `/scores`, GET `/leaderboard`, save game state to DB |
71
+ | **@rune/analytics** | Player telemetry — session length, death locations, skill usage heatmaps | `analytics.track('player_died', { x, y, cause })` |
72
+ | **@rune/ai-ml** | NPC behavior trees, pathfinding ML, procedural content, cheat detection | A* pathfinding, trained NPC models, PCG level generation |
73
+
74
+ ## Connections
75
+
76
+ ```
77
+ Calls → perf (L2): frame budget and rendering performance audit
78
+ Calls → asset-creator (L3): generate placeholder assets and sprites
79
+ Calls → @rune/ui: HUD, inventory, menus, overlays
80
+ Calls → @rune/backend: leaderboards, save data, player accounts, matchmaking
81
+ Calls → @rune/analytics: player telemetry and session tracking
82
+ Calls → @rune/ai-ml: NPC behavior, procedural content, cheat detection
83
+ Called By ← cook (L1): when game development task detected
84
+ Called By ← review (L2): when game code under review
85
+ ```
86
+
87
+ ## Tech Stack Support
88
+
89
+ | Engine | Rendering | Physics | ECS |
90
+ |--------|-----------|---------|-----|
91
+ | Three.js | WebGL2 / WebGPU | Rapier.js (WASM) | bitECS |
92
+ | React Three Fiber | Three.js (declarative) | @react-three/rapier | Custom |
93
+ | PixiJS | WebGL2 (2D) | Matter.js | Custom |
94
+ | Phaser 3 | WebGL / Canvas | Arcade / Matter | Built-in |
95
+ | Babylon.js | WebGL2 / WebGPU | Havok (WASM) | Built-in |
96
+
97
+ ## Constraints
98
+
99
+ 1. MUST use fixed timestep for physics — variable timestep causes non-deterministic simulation.
100
+ 2. MUST dispose all GPU resources (geometries, textures, materials) on scene teardown — GPU memory leaks crash tabs.
101
+ 3. MUST NOT create objects inside the render loop — allocate outside, reuse inside.
102
+ 4. MUST test on target minimum hardware (mobile GPU) not just development machine.
103
+ 5. MUST use compressed asset formats (Draco for geometry, KTX2/Basis for textures) — raw assets cause unacceptable load times.
104
+ 6. MUST use authoritative server model for multiplayer — never trust client position data.
105
+ 7. MUST resume AudioContext on user gesture — browsers block autoplay audio.
106
+ 8. MUST call `input.flush()` at end of each fixed tick — prevents justPressed persisting across frames.
107
+
108
+ ## Sharp Edges
109
+
110
+ | Failure Mode | Severity | Mitigation |
111
+ |---|---|---|
112
+ | Objects created in useFrame/render loop cause GC stutters at 60fps | CRITICAL | Pre-allocate all vectors, quaternions, matrices outside the loop; reuse with `.set()` |
113
+ | GPU memory leak from undisposed textures/geometries (tab crashes after 5 minutes) | CRITICAL | Implement disposal manager; call `.dispose()` on every Three.js resource on unmount |
114
+ | Physics spiral of death: update takes longer than frame, accumulator grows unbounded | HIGH | Cap accumulator at 250ms (skip frames); reduce physics complexity if consistent |
115
+ | Shader compiles on first use causing frame drop (shader cache miss) | MEDIUM | Pre-warm shaders during loading screen; use `renderer.compile(scene, camera)` |
116
+ | Asset loading blocks first frame (white screen for 5+ seconds) | HIGH | Implement progressive loading with preloader UI; prioritize visible assets |
117
+ | Mobile GPU fails on desktop-quality shaders (WebGL context lost) | HIGH | Detect GPU tier with `detect-gpu`; provide shader LOD variants |
118
+ | Multiplayer client trusts own position — speed hack trivial | CRITICAL | Server is authoritative; client sends inputs only, reconciles with server state |
119
+ | AudioContext locked until user gesture — no music on load | MEDIUM | Resume AudioContext in first click/keydown handler; show muted indicator |
120
+ | Gamepad axes not zeroed when gamepad disconnects | LOW | Set axes to 0 in gamepaddisconnected handler |
121
+ | Input justPressed persists to next frame if flush() skipped | HIGH | Always flush at end of fixed update, not render |
122
+
123
+ ## Done When
124
+
125
+ - Scene renders at stable 60fps on target hardware
126
+ - Physics simulation is deterministic with fixed timestep
127
+ - All GPU resources properly disposed on cleanup
128
+ - Assets compressed and preloaded with progress indicator
129
+ - Game loop decouples update from render with interpolation
130
+ - Multiplayer: server authoritative, client predicts + reconciles
131
+ - Audio: spatial SFX + crossfade music, resumable after user gesture
132
+ - Input: keyboard/mouse/gamepad/touch unified, buffered, rebindable
133
+ - ECS: entities/components/systems cleanly separated, query-based
134
+ - Particles: pooled, no GC spikes, emitter presets for common FX
135
+ - Camera: smooth follow, dead zone, screen shake on impact
136
+ - Scenes: transition with fade, preload assets before enter
137
+ - Performance: quadtree spatial queries, frame budget monitoring active
138
+ - Structured report emitted for each skill invoked
139
+
140
+ ## Cost Profile
141
+
142
+ ~10,000–20,000 tokens per full pack run (all skills). Individual skill: ~2,000–4,000 tokens. Sonnet default. Use haiku for asset detection scans and grep passes; sonnet for physics config, shader optimization, and multiplayer architecture; escalate to opus for full game architecture decisions spanning multiple systems.
@@ -1,74 +1,74 @@
1
- ---
2
- name: "asset-pipeline"
3
- pack: "@rune/gamedev"
4
- description: "Game asset pipeline — glTF loading, texture compression, audio management, asset manifest, preloading."
5
- model: sonnet
6
- tools: [Read, Edit, Write, Grep, Glob, Bash]
7
- ---
8
-
9
- # asset-pipeline
10
-
11
- Game asset pipeline — glTF loading, texture compression, audio management, asset manifest, preloading.
12
-
13
- #### Workflow
14
-
15
- **Step 1 — Detect asset strategy**
16
- Use Glob to find asset files: `*.gltf`, `*.glb`, `*.ktx2`, `*.basis`, `*.png` in `assets/` or `public/`. Use Grep to find loaders: `GLTFLoader`, `TextureLoader`, `KTX2Loader`, `Howler`, `Audio`. Read the loading code to understand: preloading strategy, compression, and caching.
17
-
18
- **Step 2 — Audit asset efficiency**
19
- Check for: uncompressed textures (PNG/JPG instead of KTX2/Basis), glTF without Draco compression, no asset manifest (scattered inline paths), missing preloader (assets load mid-gameplay causing stutters), audio files in WAV format (use OGG/MP3), and no LOD variants for 3D models.
20
-
21
- **Step 3 — Emit asset pipeline**
22
- Emit: asset manifest with typed entries, preloader with progress tracking, glTF loader with Draco decoder, KTX2 texture loader, and audio manager with Howler.js.
23
-
24
- #### Example
25
-
26
- ```typescript
27
- // Asset manifest + preloader with progress tracking
28
- interface AssetManifest {
29
- models: Record<string, { url: string; draco?: boolean }>;
30
- textures: Record<string, { url: string; format: 'ktx2' | 'png' }>;
31
- audio: Record<string, { url: string; volume?: number; loop?: boolean }>;
32
- }
33
-
34
- const MANIFEST: AssetManifest = {
35
- models: {
36
- player: { url: '/assets/player.glb', draco: true },
37
- level1: { url: '/assets/level1.glb', draco: true },
38
- },
39
- textures: {
40
- terrain: { url: '/assets/terrain.ktx2', format: 'ktx2' },
41
- },
42
- audio: {
43
- bgm: { url: '/assets/bgm.ogg', volume: 0.5, loop: true },
44
- jump: { url: '/assets/jump.ogg', volume: 0.8 },
45
- },
46
- };
47
-
48
- class AssetLoader {
49
- private loaded = 0;
50
- private total = 0;
51
- private cache = new Map<string, unknown>();
52
-
53
- async loadAll(manifest: AssetManifest, onProgress: (pct: number) => void) {
54
- const entries = [
55
- ...Object.entries(manifest.models).map(([k, v]) => ({ key: k, ...v, type: 'model' })),
56
- ...Object.entries(manifest.textures).map(([k, v]) => ({ key: k, ...v, type: 'texture' })),
57
- ...Object.entries(manifest.audio).map(([k, v]) => ({ key: k, ...v, type: 'audio' })),
58
- ];
59
- this.total = entries.length;
60
-
61
- await Promise.all(entries.map(async (entry) => {
62
- await fetch(entry.url); // preload into browser cache
63
- this.loaded++;
64
- onProgress(this.loaded / this.total);
65
- }));
66
- }
67
-
68
- get<T>(key: string): T {
69
- const asset = this.cache.get(key);
70
- if (!asset) throw new Error(`Asset not loaded: ${key}`);
71
- return asset as T;
72
- }
73
- }
74
- ```
1
+ ---
2
+ name: "asset-pipeline"
3
+ pack: "@rune/gamedev"
4
+ description: "Game asset pipeline — glTF loading, texture compression, audio management, asset manifest, preloading."
5
+ model: sonnet
6
+ tools: [Read, Edit, Write, Grep, Glob, Bash]
7
+ ---
8
+
9
+ # asset-pipeline
10
+
11
+ Game asset pipeline — glTF loading, texture compression, audio management, asset manifest, preloading.
12
+
13
+ #### Workflow
14
+
15
+ **Step 1 — Detect asset strategy**
16
+ Use Glob to find asset files: `*.gltf`, `*.glb`, `*.ktx2`, `*.basis`, `*.png` in `assets/` or `public/`. Use Grep to find loaders: `GLTFLoader`, `TextureLoader`, `KTX2Loader`, `Howler`, `Audio`. Read the loading code to understand: preloading strategy, compression, and caching.
17
+
18
+ **Step 2 — Audit asset efficiency**
19
+ Check for: uncompressed textures (PNG/JPG instead of KTX2/Basis), glTF without Draco compression, no asset manifest (scattered inline paths), missing preloader (assets load mid-gameplay causing stutters), audio files in WAV format (use OGG/MP3), and no LOD variants for 3D models.
20
+
21
+ **Step 3 — Emit asset pipeline**
22
+ Emit: asset manifest with typed entries, preloader with progress tracking, glTF loader with Draco decoder, KTX2 texture loader, and audio manager with Howler.js.
23
+
24
+ #### Example
25
+
26
+ ```typescript
27
+ // Asset manifest + preloader with progress tracking
28
+ interface AssetManifest {
29
+ models: Record<string, { url: string; draco?: boolean }>;
30
+ textures: Record<string, { url: string; format: 'ktx2' | 'png' }>;
31
+ audio: Record<string, { url: string; volume?: number; loop?: boolean }>;
32
+ }
33
+
34
+ const MANIFEST: AssetManifest = {
35
+ models: {
36
+ player: { url: '/assets/player.glb', draco: true },
37
+ level1: { url: '/assets/level1.glb', draco: true },
38
+ },
39
+ textures: {
40
+ terrain: { url: '/assets/terrain.ktx2', format: 'ktx2' },
41
+ },
42
+ audio: {
43
+ bgm: { url: '/assets/bgm.ogg', volume: 0.5, loop: true },
44
+ jump: { url: '/assets/jump.ogg', volume: 0.8 },
45
+ },
46
+ };
47
+
48
+ class AssetLoader {
49
+ private loaded = 0;
50
+ private total = 0;
51
+ private cache = new Map<string, unknown>();
52
+
53
+ async loadAll(manifest: AssetManifest, onProgress: (pct: number) => void) {
54
+ const entries = [
55
+ ...Object.entries(manifest.models).map(([k, v]) => ({ key: k, ...v, type: 'model' })),
56
+ ...Object.entries(manifest.textures).map(([k, v]) => ({ key: k, ...v, type: 'texture' })),
57
+ ...Object.entries(manifest.audio).map(([k, v]) => ({ key: k, ...v, type: 'audio' })),
58
+ ];
59
+ this.total = entries.length;
60
+
61
+ await Promise.all(entries.map(async (entry) => {
62
+ await fetch(entry.url); // preload into browser cache
63
+ this.loaded++;
64
+ onProgress(this.loaded / this.total);
65
+ }));
66
+ }
67
+
68
+ get<T>(key: string): T {
69
+ const asset = this.cache.get(key);
70
+ if (!asset) throw new Error(`Asset not loaded: ${key}`);
71
+ return asset as T;
72
+ }
73
+ }
74
+ ```