@funpixel/tools 0.1.0 → 0.1.1

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 (784) hide show
  1. package/bench/handlers/bake_emissive.py +2 -2
  2. package/bench/handlers/decimate.py +2 -2
  3. package/bench/handlers/fracture.py +1 -1
  4. package/bench/handlers/normalize_transform.py +3 -3
  5. package/bench/handlers/render_views.py +2 -2
  6. package/bench/handlers/views.py +6 -6
  7. package/dist/cli.js +8 -9
  8. package/dist/commands/feedback.js +5 -5
  9. package/dist/commands/init.js +1 -1
  10. package/dist/direct/read.js +1 -1
  11. package/dist/doctor/unity-checks.js +5 -5
  12. package/dist/doctor/unity-history.js +17 -33
  13. package/dist/feedback/ab.js +0 -40
  14. package/dist/gen/unity.js +3 -3
  15. package/dist/mcp/server.js +2 -1
  16. package/dist/pipeline/pipeline.js +6 -6
  17. package/dist/playtest/moments.js +1 -1
  18. package/dist/playtest/report.js +1 -1
  19. package/dist/production/mirror.js +2 -2
  20. package/dist/sim/curve.js +3 -3
  21. package/dist/spec/scaffold.js +1 -1
  22. package/dist/studio/pitch.js +1 -1
  23. package/dist/unity/probe/install.js +1 -1
  24. package/dist/vendor/verify/src/page/actors.js +2 -2
  25. package/dist/vendor/verify/src/page/capture_view.js +2 -2
  26. package/dist/vendor/verify/src/page/dressing.js +1 -1
  27. package/dist/vendor/verify/src/page/frame_honesty.js +1 -1
  28. package/dist/vendor/verify/src/page/front_door.js +2 -2
  29. package/dist/vendor/verify/src/page/grounding.js +3 -3
  30. package/dist/vendor/verify/src/page/hud.js +3 -3
  31. package/dist/vendor/verify/src/page/layout.js +5 -5
  32. package/dist/vendor/verify/src/page/life_anim.js +6 -6
  33. package/dist/vendor/verify/src/page/mechanic_check.js +1 -1
  34. package/dist/vendor/verify/src/page/phone_check.js +2 -2
  35. package/dist/vendor/verify/src/page/recorder.js +2 -2
  36. package/dist/vendor/verify/src/page/surfaces.js +2 -2
  37. package/dist/vendor/verify/src/page/world_actors.js +3 -3
  38. package/package.json +2 -2
  39. package/plugins/README.md +16 -0
  40. package/plugins/claude/README.md +2 -3
  41. package/plugins/claude/agents/art-director.md +2 -2
  42. package/plugins/claude/commands/playtest.md +2 -2
  43. package/plugins/claude/hooks/brief.md +1 -1
  44. package/plugins/claude/hooks/guidance.json +1 -1
  45. package/plugins/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
  46. package/plugins/claude/hooks/vendor/studio/pitch.mjs +1 -1
  47. package/plugins/claude/skills/3d/references/bake-off.md +3 -3
  48. package/plugins/claude/skills/3d/references/characters.md +1 -1
  49. package/plugins/claude/skills/3d/references/hero-route.md +5 -5
  50. package/plugins/claude/skills/3d/references/level-spec.md +1 -1
  51. package/plugins/claude/skills/3d/references/levels.md +3 -3
  52. package/plugins/claude/skills/3d/references/light-and-places.md +3 -3
  53. package/plugins/claude/skills/3d/references/painted-target.md +7 -7
  54. package/plugins/claude/skills/3d/references/three-loading.md +4 -4
  55. package/plugins/claude/skills/3d/references/unity.md +13 -13
  56. package/plugins/claude/skills/art/references/animation.md +1 -1
  57. package/plugins/claude/skills/art/references/cast.md +3 -3
  58. package/plugins/claude/skills/art/references/effects.md +2 -2
  59. package/plugins/claude/skills/art/references/frames.md +6 -6
  60. package/plugins/claude/skills/art/references/judging-frames.md +8 -8
  61. package/plugins/claude/skills/art/references/look.md +4 -4
  62. package/plugins/claude/skills/art/references/pipeline.md +2 -2
  63. package/plugins/claude/skills/art/references/prompts.md +4 -4
  64. package/plugins/claude/skills/art/references/ui.md +15 -15
  65. package/plugins/claude/skills/art/references/unity.md +14 -14
  66. package/plugins/claude/skills/audio/references/adaptive-music.md +4 -4
  67. package/plugins/claude/skills/audio/references/engine.md +2 -2
  68. package/plugins/claude/skills/audio/references/measure.md +1 -1
  69. package/plugins/claude/skills/audio/references/unity.md +20 -19
  70. package/plugins/claude/skills/game-feel/SKILL.md +4 -4
  71. package/plugins/claude/skills/game-feel/references/contact.md +6 -6
  72. package/plugins/claude/skills/game-feel/references/unity.md +18 -23
  73. package/plugins/claude/skills/game-logic/SKILL.md +3 -3
  74. package/plugins/claude/skills/game-logic/references/balance.md +2 -2
  75. package/plugins/claude/skills/game-logic/references/depth.md +2 -2
  76. package/plugins/claude/skills/game-logic/references/escalation.md +5 -5
  77. package/plugins/claude/skills/game-logic/references/probes.md +10 -10
  78. package/plugins/claude/skills/game-logic/references/unity.md +28 -28
  79. package/plugins/claude/skills/game-spine/SKILL.md +1 -1
  80. package/plugins/claude/skills/game-spine/references/performance.md +2 -2
  81. package/plugins/claude/skills/game-spine/references/replay.md +11 -11
  82. package/plugins/claude/skills/game-spine/references/room-api.md +1 -1
  83. package/plugins/claude/skills/game-spine/references/sdk.md +1 -1
  84. package/plugins/claude/skills/gdd/SKILL.md +2 -2
  85. package/plugins/claude/skills/gdd/references/as-built.md +2 -2
  86. package/plugins/claude/skills/gdd/references/design-measures.md +2 -2
  87. package/plugins/claude/skills/gdd/references/design-note.md +1 -1
  88. package/plugins/claude/skills/gdd/references/first-look.md +1 -1
  89. package/plugins/claude/skills/gdd/references/floors.md +2 -2
  90. package/plugins/claude/skills/gdd/references/gameplay-contract.md +1 -1
  91. package/plugins/claude/skills/gdd/references/genre-puzzle.md +4 -4
  92. package/plugins/claude/skills/gdd/references/genre-racing.md +2 -2
  93. package/plugins/claude/skills/gdd/references/genre-rpg.md +2 -2
  94. package/plugins/claude/skills/gdd/references/genre-shooter.md +2 -2
  95. package/plugins/claude/skills/gdd/references/genre-survival.md +2 -2
  96. package/plugins/claude/skills/gdd/references/invent-first.md +3 -3
  97. package/plugins/claude/skills/gdd/references/level-and-fun.md +11 -11
  98. package/plugins/claude/skills/gdd/references/pages.md +2 -5
  99. package/plugins/claude/skills/gdd/references/plan-at-size.md +5 -5
  100. package/plugins/claude/skills/gdd/references/production-tiers.md +11 -11
  101. package/plugins/claude/skills/gdd/references/sections.md +7 -7
  102. package/plugins/claude/skills/gdd/references/spec-folder.md +3 -3
  103. package/plugins/claude/skills/gdd/references/the-path.md +3 -4
  104. package/plugins/claude/skills/gdd/references/world-and-identity.md +4 -4
  105. package/plugins/claude/skills/gdd/references/worth.md +4 -4
  106. package/plugins/claude/skills/mobile-ui/SKILL.md +3 -3
  107. package/plugins/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
  108. package/plugins/claude/skills/mobile-ui/references/phone-check.md +1 -1
  109. package/plugins/claude/skills/mobile-ui/references/recipes.md +1 -1
  110. package/plugins/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
  111. package/plugins/claude/skills/mobile-ui/references/unity.md +23 -23
  112. package/plugins/claude/skills/publishing/references/compose.md +1 -1
  113. package/plugins/claude/skills/publishing/references/server-build.md +1 -1
  114. package/plugins/claude/skills/store/SKILL.md +3 -3
  115. package/plugins/claude/skills/store/references/app-store.md +1 -1
  116. package/plugins/claude/skills/store/references/google-play.md +2 -2
  117. package/plugins/claude/skills/store/references/ios-release.md +19 -20
  118. package/plugins/claude/skills/store/references/money.md +2 -2
  119. package/plugins/claude/skills/store/references/purchases-and-review.md +18 -18
  120. package/plugins/claude/skills/store/references/readiness-page.md +1 -1
  121. package/plugins/claude/skills/store/references/readiness.md +3 -3
  122. package/plugins/claude/skills/store/references/unity-store.md +9 -12
  123. package/plugins/claude/skills/unity-game/SKILL.md +28 -35
  124. package/plugins/claude/skills/unity-game/references/agent-ops.md +9 -9
  125. package/plugins/claude/skills/unity-game/references/fixes.md +21 -21
  126. package/plugins/claude/skills/unity-game/references/from-a-web-game.md +17 -17
  127. package/plugins/claude/skills/unity-game/references/handing-off.md +4 -4
  128. package/plugins/claude/skills/unity-game/references/performance.md +10 -14
  129. package/plugins/claude/skills/unity-game/references/probe.md +4 -4
  130. package/plugins/claude/skills/unity-game/references/shared-mac.md +1 -1
  131. package/plugins/claude/skills/unity-game/references/traps.md +13 -14
  132. package/plugins/claude/skills/verifying/references/bar.md +1 -1
  133. package/plugins/claude/skills/verifying/references/fidelity.md +11 -11
  134. package/plugins/claude/skills/verifying/references/mobile-qa.md +10 -10
  135. package/plugins/claude/skills/verifying/references/playtest.md +14 -14
  136. package/plugins/claude/skills/verifying/references/unity.md +11 -11
  137. package/plugins/claude/skills/world-and-story/SKILL.md +1 -1
  138. package/plugins/claude/skills/world-and-story/references/atmosphere.md +4 -4
  139. package/plugins/claude/skills/world-and-story/references/living-world.md +2 -2
  140. package/plugins/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
  141. package/plugins/claude/skills/world-and-story/references/story-at-size.md +2 -2
  142. package/plugins/claude/skills/world-and-story/references/voice.md +1 -1
  143. package/plugins/codex/AGENTS.md +1 -1
  144. package/plugins/codex/README.md +1 -1
  145. package/plugins/codex/hooks/brief.md +1 -1
  146. package/plugins/codex/hooks/guidance.json +1 -1
  147. package/plugins/codex/hooks/host.md +1 -1
  148. package/plugins/codex/hooks/vendor/pipeline/pipeline.mjs +6 -6
  149. package/plugins/codex/hooks/vendor/studio/pitch.mjs +1 -1
  150. package/plugins/codex/skills/fp-art-director/SKILL.md +2 -2
  151. package/plugins/codex/skills/fp-art-director/references/codex.md +1 -1
  152. package/plugins/codex/skills/fp-audio-director/references/codex.md +1 -1
  153. package/plugins/codex/skills/fp-critic/references/codex.md +1 -1
  154. package/plugins/codex/skills/fp-lane/references/codex.md +1 -1
  155. package/plugins/codex/skills/fp-level-designer/references/codex.md +1 -1
  156. package/plugins/codex/skills/fp-mobile-qa-seat/references/codex.md +1 -1
  157. package/plugins/codex/skills/fp-player/references/codex.md +1 -1
  158. package/plugins/codex/skills/fp-playtest/SKILL.md +2 -2
  159. package/plugins/codex/skills/fp-qa-lead/references/codex.md +1 -1
  160. package/plugins/codex/skills/fp-studio/SKILL.md +1 -1
  161. package/plugins/codex/skills/funpixel-3d/references/bake-off.md +3 -3
  162. package/plugins/codex/skills/funpixel-3d/references/characters.md +1 -1
  163. package/plugins/codex/skills/funpixel-3d/references/hero-route.md +5 -5
  164. package/plugins/codex/skills/funpixel-3d/references/level-spec.md +1 -1
  165. package/plugins/codex/skills/funpixel-3d/references/levels.md +3 -3
  166. package/plugins/codex/skills/funpixel-3d/references/light-and-places.md +3 -3
  167. package/plugins/codex/skills/funpixel-3d/references/painted-target.md +7 -7
  168. package/plugins/codex/skills/funpixel-3d/references/three-loading.md +4 -4
  169. package/plugins/codex/skills/funpixel-3d/references/unity.md +13 -13
  170. package/plugins/codex/skills/funpixel-art/references/animation.md +1 -1
  171. package/plugins/codex/skills/funpixel-art/references/cast.md +3 -3
  172. package/plugins/codex/skills/funpixel-art/references/effects.md +2 -2
  173. package/plugins/codex/skills/funpixel-art/references/frames.md +6 -6
  174. package/plugins/codex/skills/funpixel-art/references/judging-frames.md +8 -8
  175. package/plugins/codex/skills/funpixel-art/references/look.md +4 -4
  176. package/plugins/codex/skills/funpixel-art/references/pipeline.md +2 -2
  177. package/plugins/codex/skills/funpixel-art/references/prompts.md +4 -4
  178. package/plugins/codex/skills/funpixel-art/references/ui.md +15 -15
  179. package/plugins/codex/skills/funpixel-art/references/unity.md +14 -14
  180. package/plugins/codex/skills/funpixel-audio/references/adaptive-music.md +4 -4
  181. package/plugins/codex/skills/funpixel-audio/references/engine.md +2 -2
  182. package/plugins/codex/skills/funpixel-audio/references/measure.md +1 -1
  183. package/plugins/codex/skills/funpixel-audio/references/unity.md +20 -19
  184. package/plugins/codex/skills/funpixel-game-feel/SKILL.md +4 -4
  185. package/plugins/codex/skills/funpixel-game-feel/references/contact.md +6 -6
  186. package/plugins/codex/skills/funpixel-game-feel/references/unity.md +18 -23
  187. package/plugins/codex/skills/funpixel-game-logic/SKILL.md +3 -3
  188. package/plugins/codex/skills/funpixel-game-logic/references/balance.md +2 -2
  189. package/plugins/codex/skills/funpixel-game-logic/references/depth.md +2 -2
  190. package/plugins/codex/skills/funpixel-game-logic/references/escalation.md +5 -5
  191. package/plugins/codex/skills/funpixel-game-logic/references/probes.md +10 -10
  192. package/plugins/codex/skills/funpixel-game-logic/references/unity.md +28 -28
  193. package/plugins/codex/skills/funpixel-game-spine/SKILL.md +1 -1
  194. package/plugins/codex/skills/funpixel-game-spine/references/performance.md +2 -2
  195. package/plugins/codex/skills/funpixel-game-spine/references/replay.md +11 -11
  196. package/plugins/codex/skills/funpixel-game-spine/references/room-api.md +1 -1
  197. package/plugins/codex/skills/funpixel-game-spine/references/sdk.md +1 -1
  198. package/plugins/codex/skills/funpixel-gdd/SKILL.md +2 -2
  199. package/plugins/codex/skills/funpixel-gdd/references/as-built.md +2 -2
  200. package/plugins/codex/skills/funpixel-gdd/references/design-measures.md +2 -2
  201. package/plugins/codex/skills/funpixel-gdd/references/design-note.md +1 -1
  202. package/plugins/codex/skills/funpixel-gdd/references/first-look.md +1 -1
  203. package/plugins/codex/skills/funpixel-gdd/references/floors.md +2 -2
  204. package/plugins/codex/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  205. package/plugins/codex/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  206. package/plugins/codex/skills/funpixel-gdd/references/genre-racing.md +2 -2
  207. package/plugins/codex/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  208. package/plugins/codex/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  209. package/plugins/codex/skills/funpixel-gdd/references/genre-survival.md +2 -2
  210. package/plugins/codex/skills/funpixel-gdd/references/invent-first.md +3 -3
  211. package/plugins/codex/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  212. package/plugins/codex/skills/funpixel-gdd/references/pages.md +2 -5
  213. package/plugins/codex/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  214. package/plugins/codex/skills/funpixel-gdd/references/production-tiers.md +11 -11
  215. package/plugins/codex/skills/funpixel-gdd/references/sections.md +7 -7
  216. package/plugins/codex/skills/funpixel-gdd/references/spec-folder.md +3 -3
  217. package/plugins/codex/skills/funpixel-gdd/references/the-path.md +3 -4
  218. package/plugins/codex/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  219. package/plugins/codex/skills/funpixel-gdd/references/worth.md +4 -4
  220. package/plugins/codex/skills/funpixel-mobile-ui/SKILL.md +3 -3
  221. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  222. package/plugins/codex/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  223. package/plugins/codex/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  224. package/plugins/codex/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  225. package/plugins/codex/skills/funpixel-mobile-ui/references/unity.md +23 -23
  226. package/plugins/codex/skills/funpixel-publish/references/compose.md +1 -1
  227. package/plugins/codex/skills/funpixel-publish/references/server-build.md +1 -1
  228. package/plugins/codex/skills/funpixel-store/SKILL.md +3 -3
  229. package/plugins/codex/skills/funpixel-store/references/app-store.md +1 -1
  230. package/plugins/codex/skills/funpixel-store/references/google-play.md +2 -2
  231. package/plugins/codex/skills/funpixel-store/references/ios-release.md +19 -20
  232. package/plugins/codex/skills/funpixel-store/references/money.md +2 -2
  233. package/plugins/codex/skills/funpixel-store/references/purchases-and-review.md +18 -18
  234. package/plugins/codex/skills/funpixel-store/references/readiness-page.md +1 -1
  235. package/plugins/codex/skills/funpixel-store/references/readiness.md +3 -3
  236. package/plugins/codex/skills/funpixel-store/references/unity-store.md +9 -12
  237. package/plugins/codex/skills/funpixel-unity-game/SKILL.md +28 -35
  238. package/plugins/codex/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  239. package/plugins/codex/skills/funpixel-unity-game/references/fixes.md +21 -21
  240. package/plugins/codex/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  241. package/plugins/codex/skills/funpixel-unity-game/references/handing-off.md +4 -4
  242. package/plugins/codex/skills/funpixel-unity-game/references/performance.md +10 -14
  243. package/plugins/codex/skills/funpixel-unity-game/references/probe.md +4 -4
  244. package/plugins/codex/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  245. package/plugins/codex/skills/funpixel-unity-game/references/traps.md +13 -14
  246. package/plugins/codex/skills/funpixel-verify/references/bar.md +1 -1
  247. package/plugins/codex/skills/funpixel-verify/references/fidelity.md +11 -11
  248. package/plugins/codex/skills/funpixel-verify/references/mobile-qa.md +10 -10
  249. package/plugins/codex/skills/funpixel-verify/references/playtest.md +14 -14
  250. package/plugins/codex/skills/funpixel-verify/references/unity.md +11 -11
  251. package/plugins/codex/skills/funpixel-world-and-story/SKILL.md +1 -1
  252. package/plugins/codex/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  253. package/plugins/codex/skills/funpixel-world-and-story/references/living-world.md +2 -2
  254. package/plugins/codex/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  255. package/plugins/codex/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  256. package/plugins/codex/skills/funpixel-world-and-story/references/voice.md +1 -1
  257. package/plugins/cursor/README.md +1 -1
  258. package/plugins/cursor/agents/art-director.md +2 -2
  259. package/plugins/cursor/commands/playtest.md +2 -2
  260. package/plugins/cursor/hooks/brief.md +1 -1
  261. package/plugins/cursor/hooks/guidance.json +1 -1
  262. package/plugins/cursor/hooks/vendor/pipeline/pipeline.mjs +6 -6
  263. package/plugins/cursor/hooks/vendor/studio/pitch.mjs +1 -1
  264. package/plugins/cursor/rules/funpixel-brief.mdc +1 -1
  265. package/plugins/cursor/skills/funpixel-3d/references/bake-off.md +3 -3
  266. package/plugins/cursor/skills/funpixel-3d/references/characters.md +1 -1
  267. package/plugins/cursor/skills/funpixel-3d/references/hero-route.md +5 -5
  268. package/plugins/cursor/skills/funpixel-3d/references/level-spec.md +1 -1
  269. package/plugins/cursor/skills/funpixel-3d/references/levels.md +3 -3
  270. package/plugins/cursor/skills/funpixel-3d/references/light-and-places.md +3 -3
  271. package/plugins/cursor/skills/funpixel-3d/references/painted-target.md +7 -7
  272. package/plugins/cursor/skills/funpixel-3d/references/three-loading.md +4 -4
  273. package/plugins/cursor/skills/funpixel-3d/references/unity.md +13 -13
  274. package/plugins/cursor/skills/funpixel-art/references/animation.md +1 -1
  275. package/plugins/cursor/skills/funpixel-art/references/cast.md +3 -3
  276. package/plugins/cursor/skills/funpixel-art/references/effects.md +2 -2
  277. package/plugins/cursor/skills/funpixel-art/references/frames.md +6 -6
  278. package/plugins/cursor/skills/funpixel-art/references/judging-frames.md +8 -8
  279. package/plugins/cursor/skills/funpixel-art/references/look.md +4 -4
  280. package/plugins/cursor/skills/funpixel-art/references/pipeline.md +2 -2
  281. package/plugins/cursor/skills/funpixel-art/references/prompts.md +4 -4
  282. package/plugins/cursor/skills/funpixel-art/references/ui.md +15 -15
  283. package/plugins/cursor/skills/funpixel-art/references/unity.md +14 -14
  284. package/plugins/cursor/skills/funpixel-audio/references/adaptive-music.md +4 -4
  285. package/plugins/cursor/skills/funpixel-audio/references/engine.md +2 -2
  286. package/plugins/cursor/skills/funpixel-audio/references/measure.md +1 -1
  287. package/plugins/cursor/skills/funpixel-audio/references/unity.md +20 -19
  288. package/plugins/cursor/skills/funpixel-game-feel/SKILL.md +4 -4
  289. package/plugins/cursor/skills/funpixel-game-feel/references/contact.md +6 -6
  290. package/plugins/cursor/skills/funpixel-game-feel/references/unity.md +18 -23
  291. package/plugins/cursor/skills/funpixel-game-logic/SKILL.md +3 -3
  292. package/plugins/cursor/skills/funpixel-game-logic/references/balance.md +2 -2
  293. package/plugins/cursor/skills/funpixel-game-logic/references/depth.md +2 -2
  294. package/plugins/cursor/skills/funpixel-game-logic/references/escalation.md +5 -5
  295. package/plugins/cursor/skills/funpixel-game-logic/references/probes.md +10 -10
  296. package/plugins/cursor/skills/funpixel-game-logic/references/unity.md +28 -28
  297. package/plugins/cursor/skills/funpixel-game-spine/SKILL.md +1 -1
  298. package/plugins/cursor/skills/funpixel-game-spine/references/performance.md +2 -2
  299. package/plugins/cursor/skills/funpixel-game-spine/references/replay.md +11 -11
  300. package/plugins/cursor/skills/funpixel-game-spine/references/room-api.md +1 -1
  301. package/plugins/cursor/skills/funpixel-game-spine/references/sdk.md +1 -1
  302. package/plugins/cursor/skills/funpixel-gdd/SKILL.md +2 -2
  303. package/plugins/cursor/skills/funpixel-gdd/references/as-built.md +2 -2
  304. package/plugins/cursor/skills/funpixel-gdd/references/design-measures.md +2 -2
  305. package/plugins/cursor/skills/funpixel-gdd/references/design-note.md +1 -1
  306. package/plugins/cursor/skills/funpixel-gdd/references/first-look.md +1 -1
  307. package/plugins/cursor/skills/funpixel-gdd/references/floors.md +2 -2
  308. package/plugins/cursor/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  309. package/plugins/cursor/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  310. package/plugins/cursor/skills/funpixel-gdd/references/genre-racing.md +2 -2
  311. package/plugins/cursor/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  312. package/plugins/cursor/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  313. package/plugins/cursor/skills/funpixel-gdd/references/genre-survival.md +2 -2
  314. package/plugins/cursor/skills/funpixel-gdd/references/invent-first.md +3 -3
  315. package/plugins/cursor/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  316. package/plugins/cursor/skills/funpixel-gdd/references/pages.md +2 -5
  317. package/plugins/cursor/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  318. package/plugins/cursor/skills/funpixel-gdd/references/production-tiers.md +11 -11
  319. package/plugins/cursor/skills/funpixel-gdd/references/sections.md +7 -7
  320. package/plugins/cursor/skills/funpixel-gdd/references/spec-folder.md +3 -3
  321. package/plugins/cursor/skills/funpixel-gdd/references/the-path.md +3 -4
  322. package/plugins/cursor/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  323. package/plugins/cursor/skills/funpixel-gdd/references/worth.md +4 -4
  324. package/plugins/cursor/skills/funpixel-mobile-ui/SKILL.md +3 -3
  325. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  326. package/plugins/cursor/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  327. package/plugins/cursor/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  328. package/plugins/cursor/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  329. package/plugins/cursor/skills/funpixel-mobile-ui/references/unity.md +23 -23
  330. package/plugins/cursor/skills/funpixel-publish/references/compose.md +1 -1
  331. package/plugins/cursor/skills/funpixel-publish/references/server-build.md +1 -1
  332. package/plugins/cursor/skills/funpixel-store/SKILL.md +3 -3
  333. package/plugins/cursor/skills/funpixel-store/references/app-store.md +1 -1
  334. package/plugins/cursor/skills/funpixel-store/references/google-play.md +2 -2
  335. package/plugins/cursor/skills/funpixel-store/references/ios-release.md +19 -20
  336. package/plugins/cursor/skills/funpixel-store/references/money.md +2 -2
  337. package/plugins/cursor/skills/funpixel-store/references/purchases-and-review.md +18 -18
  338. package/plugins/cursor/skills/funpixel-store/references/readiness-page.md +1 -1
  339. package/plugins/cursor/skills/funpixel-store/references/readiness.md +3 -3
  340. package/plugins/cursor/skills/funpixel-store/references/unity-store.md +9 -12
  341. package/plugins/cursor/skills/funpixel-unity-game/SKILL.md +28 -35
  342. package/plugins/cursor/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  343. package/plugins/cursor/skills/funpixel-unity-game/references/fixes.md +21 -21
  344. package/plugins/cursor/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  345. package/plugins/cursor/skills/funpixel-unity-game/references/handing-off.md +4 -4
  346. package/plugins/cursor/skills/funpixel-unity-game/references/performance.md +10 -14
  347. package/plugins/cursor/skills/funpixel-unity-game/references/probe.md +4 -4
  348. package/plugins/cursor/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  349. package/plugins/cursor/skills/funpixel-unity-game/references/traps.md +13 -14
  350. package/plugins/cursor/skills/funpixel-verify/references/bar.md +1 -1
  351. package/plugins/cursor/skills/funpixel-verify/references/fidelity.md +11 -11
  352. package/plugins/cursor/skills/funpixel-verify/references/mobile-qa.md +10 -10
  353. package/plugins/cursor/skills/funpixel-verify/references/playtest.md +14 -14
  354. package/plugins/cursor/skills/funpixel-verify/references/unity.md +11 -11
  355. package/plugins/cursor/skills/funpixel-world-and-story/SKILL.md +1 -1
  356. package/plugins/cursor/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  357. package/plugins/cursor/skills/funpixel-world-and-story/references/living-world.md +2 -2
  358. package/plugins/cursor/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  359. package/plugins/cursor/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  360. package/plugins/cursor/skills/funpixel-world-and-story/references/voice.md +1 -1
  361. package/plugins/kiro/AGENTS.md +1 -1
  362. package/plugins/kiro/README.md +1 -1
  363. package/plugins/kiro/hooks/brief.md +1 -1
  364. package/plugins/kiro/hooks/guidance.json +1 -1
  365. package/plugins/kiro/hooks/vendor/pipeline/pipeline.mjs +6 -6
  366. package/plugins/kiro/hooks/vendor/studio/pitch.mjs +1 -1
  367. package/plugins/kiro/skills/fp-art-director/SKILL.md +2 -2
  368. package/plugins/kiro/skills/fp-playtest/SKILL.md +2 -2
  369. package/plugins/kiro/skills/funpixel-3d/references/bake-off.md +3 -3
  370. package/plugins/kiro/skills/funpixel-3d/references/characters.md +1 -1
  371. package/plugins/kiro/skills/funpixel-3d/references/hero-route.md +5 -5
  372. package/plugins/kiro/skills/funpixel-3d/references/level-spec.md +1 -1
  373. package/plugins/kiro/skills/funpixel-3d/references/levels.md +3 -3
  374. package/plugins/kiro/skills/funpixel-3d/references/light-and-places.md +3 -3
  375. package/plugins/kiro/skills/funpixel-3d/references/painted-target.md +7 -7
  376. package/plugins/kiro/skills/funpixel-3d/references/three-loading.md +4 -4
  377. package/plugins/kiro/skills/funpixel-3d/references/unity.md +13 -13
  378. package/plugins/kiro/skills/funpixel-art/references/animation.md +1 -1
  379. package/plugins/kiro/skills/funpixel-art/references/cast.md +3 -3
  380. package/plugins/kiro/skills/funpixel-art/references/effects.md +2 -2
  381. package/plugins/kiro/skills/funpixel-art/references/frames.md +6 -6
  382. package/plugins/kiro/skills/funpixel-art/references/judging-frames.md +8 -8
  383. package/plugins/kiro/skills/funpixel-art/references/look.md +4 -4
  384. package/plugins/kiro/skills/funpixel-art/references/pipeline.md +2 -2
  385. package/plugins/kiro/skills/funpixel-art/references/prompts.md +4 -4
  386. package/plugins/kiro/skills/funpixel-art/references/ui.md +15 -15
  387. package/plugins/kiro/skills/funpixel-art/references/unity.md +14 -14
  388. package/plugins/kiro/skills/funpixel-audio/references/adaptive-music.md +4 -4
  389. package/plugins/kiro/skills/funpixel-audio/references/engine.md +2 -2
  390. package/plugins/kiro/skills/funpixel-audio/references/measure.md +1 -1
  391. package/plugins/kiro/skills/funpixel-audio/references/unity.md +20 -19
  392. package/plugins/kiro/skills/funpixel-game-feel/SKILL.md +4 -4
  393. package/plugins/kiro/skills/funpixel-game-feel/references/contact.md +6 -6
  394. package/plugins/kiro/skills/funpixel-game-feel/references/unity.md +18 -23
  395. package/plugins/kiro/skills/funpixel-game-logic/SKILL.md +3 -3
  396. package/plugins/kiro/skills/funpixel-game-logic/references/balance.md +2 -2
  397. package/plugins/kiro/skills/funpixel-game-logic/references/depth.md +2 -2
  398. package/plugins/kiro/skills/funpixel-game-logic/references/escalation.md +5 -5
  399. package/plugins/kiro/skills/funpixel-game-logic/references/probes.md +10 -10
  400. package/plugins/kiro/skills/funpixel-game-logic/references/unity.md +28 -28
  401. package/plugins/kiro/skills/funpixel-game-spine/SKILL.md +1 -1
  402. package/plugins/kiro/skills/funpixel-game-spine/references/performance.md +2 -2
  403. package/plugins/kiro/skills/funpixel-game-spine/references/replay.md +11 -11
  404. package/plugins/kiro/skills/funpixel-game-spine/references/room-api.md +1 -1
  405. package/plugins/kiro/skills/funpixel-game-spine/references/sdk.md +1 -1
  406. package/plugins/kiro/skills/funpixel-gdd/SKILL.md +2 -2
  407. package/plugins/kiro/skills/funpixel-gdd/references/as-built.md +2 -2
  408. package/plugins/kiro/skills/funpixel-gdd/references/design-measures.md +2 -2
  409. package/plugins/kiro/skills/funpixel-gdd/references/design-note.md +1 -1
  410. package/plugins/kiro/skills/funpixel-gdd/references/first-look.md +1 -1
  411. package/plugins/kiro/skills/funpixel-gdd/references/floors.md +2 -2
  412. package/plugins/kiro/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  413. package/plugins/kiro/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  414. package/plugins/kiro/skills/funpixel-gdd/references/genre-racing.md +2 -2
  415. package/plugins/kiro/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  416. package/plugins/kiro/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  417. package/plugins/kiro/skills/funpixel-gdd/references/genre-survival.md +2 -2
  418. package/plugins/kiro/skills/funpixel-gdd/references/invent-first.md +3 -3
  419. package/plugins/kiro/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  420. package/plugins/kiro/skills/funpixel-gdd/references/pages.md +2 -5
  421. package/plugins/kiro/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  422. package/plugins/kiro/skills/funpixel-gdd/references/production-tiers.md +11 -11
  423. package/plugins/kiro/skills/funpixel-gdd/references/sections.md +7 -7
  424. package/plugins/kiro/skills/funpixel-gdd/references/spec-folder.md +3 -3
  425. package/plugins/kiro/skills/funpixel-gdd/references/the-path.md +3 -4
  426. package/plugins/kiro/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  427. package/plugins/kiro/skills/funpixel-gdd/references/worth.md +4 -4
  428. package/plugins/kiro/skills/funpixel-mobile-ui/SKILL.md +3 -3
  429. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  430. package/plugins/kiro/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  431. package/plugins/kiro/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  432. package/plugins/kiro/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  433. package/plugins/kiro/skills/funpixel-mobile-ui/references/unity.md +23 -23
  434. package/plugins/kiro/skills/funpixel-publish/references/compose.md +1 -1
  435. package/plugins/kiro/skills/funpixel-publish/references/server-build.md +1 -1
  436. package/plugins/kiro/skills/funpixel-store/SKILL.md +3 -3
  437. package/plugins/kiro/skills/funpixel-store/references/app-store.md +1 -1
  438. package/plugins/kiro/skills/funpixel-store/references/google-play.md +2 -2
  439. package/plugins/kiro/skills/funpixel-store/references/ios-release.md +19 -20
  440. package/plugins/kiro/skills/funpixel-store/references/money.md +2 -2
  441. package/plugins/kiro/skills/funpixel-store/references/purchases-and-review.md +18 -18
  442. package/plugins/kiro/skills/funpixel-store/references/readiness-page.md +1 -1
  443. package/plugins/kiro/skills/funpixel-store/references/readiness.md +3 -3
  444. package/plugins/kiro/skills/funpixel-store/references/unity-store.md +9 -12
  445. package/plugins/kiro/skills/funpixel-unity-game/SKILL.md +28 -35
  446. package/plugins/kiro/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  447. package/plugins/kiro/skills/funpixel-unity-game/references/fixes.md +21 -21
  448. package/plugins/kiro/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  449. package/plugins/kiro/skills/funpixel-unity-game/references/handing-off.md +4 -4
  450. package/plugins/kiro/skills/funpixel-unity-game/references/performance.md +10 -14
  451. package/plugins/kiro/skills/funpixel-unity-game/references/probe.md +4 -4
  452. package/plugins/kiro/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  453. package/plugins/kiro/skills/funpixel-unity-game/references/traps.md +13 -14
  454. package/plugins/kiro/skills/funpixel-verify/references/bar.md +1 -1
  455. package/plugins/kiro/skills/funpixel-verify/references/fidelity.md +11 -11
  456. package/plugins/kiro/skills/funpixel-verify/references/mobile-qa.md +10 -10
  457. package/plugins/kiro/skills/funpixel-verify/references/playtest.md +14 -14
  458. package/plugins/kiro/skills/funpixel-verify/references/unity.md +11 -11
  459. package/plugins/kiro/skills/funpixel-world-and-story/SKILL.md +1 -1
  460. package/plugins/kiro/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  461. package/plugins/kiro/skills/funpixel-world-and-story/references/living-world.md +2 -2
  462. package/plugins/kiro/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  463. package/plugins/kiro/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  464. package/plugins/kiro/skills/funpixel-world-and-story/references/voice.md +1 -1
  465. package/plugins/robin/README.md +1 -1
  466. package/plugins/robin/claude/README.md +2 -3
  467. package/plugins/robin/claude/agents/art-director.md +2 -2
  468. package/plugins/robin/claude/commands/playtest.md +2 -2
  469. package/plugins/robin/claude/hooks/brief.md +1 -1
  470. package/plugins/robin/claude/hooks/guidance.json +1 -1
  471. package/plugins/robin/claude/hooks/vendor/pipeline/pipeline.mjs +6 -6
  472. package/plugins/robin/claude/hooks/vendor/studio/pitch.mjs +1 -1
  473. package/plugins/robin/claude/skills/3d/references/bake-off.md +3 -3
  474. package/plugins/robin/claude/skills/3d/references/characters.md +1 -1
  475. package/plugins/robin/claude/skills/3d/references/hero-route.md +5 -5
  476. package/plugins/robin/claude/skills/3d/references/level-spec.md +1 -1
  477. package/plugins/robin/claude/skills/3d/references/levels.md +3 -3
  478. package/plugins/robin/claude/skills/3d/references/light-and-places.md +3 -3
  479. package/plugins/robin/claude/skills/3d/references/painted-target.md +7 -7
  480. package/plugins/robin/claude/skills/3d/references/three-loading.md +4 -4
  481. package/plugins/robin/claude/skills/3d/references/unity.md +13 -13
  482. package/plugins/robin/claude/skills/art/references/animation.md +1 -1
  483. package/plugins/robin/claude/skills/art/references/cast.md +3 -3
  484. package/plugins/robin/claude/skills/art/references/effects.md +2 -2
  485. package/plugins/robin/claude/skills/art/references/frames.md +6 -6
  486. package/plugins/robin/claude/skills/art/references/judging-frames.md +8 -8
  487. package/plugins/robin/claude/skills/art/references/look.md +4 -4
  488. package/plugins/robin/claude/skills/art/references/pipeline.md +2 -2
  489. package/plugins/robin/claude/skills/art/references/prompts.md +4 -4
  490. package/plugins/robin/claude/skills/art/references/ui.md +15 -15
  491. package/plugins/robin/claude/skills/art/references/unity.md +14 -14
  492. package/plugins/robin/claude/skills/audio/references/adaptive-music.md +4 -4
  493. package/plugins/robin/claude/skills/audio/references/engine.md +2 -2
  494. package/plugins/robin/claude/skills/audio/references/measure.md +1 -1
  495. package/plugins/robin/claude/skills/audio/references/unity.md +20 -19
  496. package/plugins/robin/claude/skills/game-feel/SKILL.md +4 -4
  497. package/plugins/robin/claude/skills/game-feel/references/contact.md +6 -6
  498. package/plugins/robin/claude/skills/game-feel/references/unity.md +18 -23
  499. package/plugins/robin/claude/skills/game-logic/SKILL.md +3 -3
  500. package/plugins/robin/claude/skills/game-logic/references/balance.md +2 -2
  501. package/plugins/robin/claude/skills/game-logic/references/depth.md +2 -2
  502. package/plugins/robin/claude/skills/game-logic/references/escalation.md +5 -5
  503. package/plugins/robin/claude/skills/game-logic/references/probes.md +10 -10
  504. package/plugins/robin/claude/skills/game-logic/references/unity.md +28 -28
  505. package/plugins/robin/claude/skills/game-spine/SKILL.md +1 -1
  506. package/plugins/robin/claude/skills/game-spine/references/performance.md +2 -2
  507. package/plugins/robin/claude/skills/game-spine/references/replay.md +11 -11
  508. package/plugins/robin/claude/skills/game-spine/references/room-api.md +1 -1
  509. package/plugins/robin/claude/skills/game-spine/references/sdk.md +1 -1
  510. package/plugins/robin/claude/skills/gdd/SKILL.md +2 -2
  511. package/plugins/robin/claude/skills/gdd/references/as-built.md +2 -2
  512. package/plugins/robin/claude/skills/gdd/references/design-measures.md +2 -2
  513. package/plugins/robin/claude/skills/gdd/references/design-note.md +1 -1
  514. package/plugins/robin/claude/skills/gdd/references/first-look.md +1 -1
  515. package/plugins/robin/claude/skills/gdd/references/floors.md +2 -2
  516. package/plugins/robin/claude/skills/gdd/references/gameplay-contract.md +1 -1
  517. package/plugins/robin/claude/skills/gdd/references/genre-puzzle.md +4 -4
  518. package/plugins/robin/claude/skills/gdd/references/genre-racing.md +2 -2
  519. package/plugins/robin/claude/skills/gdd/references/genre-rpg.md +2 -2
  520. package/plugins/robin/claude/skills/gdd/references/genre-shooter.md +2 -2
  521. package/plugins/robin/claude/skills/gdd/references/genre-survival.md +2 -2
  522. package/plugins/robin/claude/skills/gdd/references/invent-first.md +3 -3
  523. package/plugins/robin/claude/skills/gdd/references/level-and-fun.md +11 -11
  524. package/plugins/robin/claude/skills/gdd/references/pages.md +2 -5
  525. package/plugins/robin/claude/skills/gdd/references/plan-at-size.md +5 -5
  526. package/plugins/robin/claude/skills/gdd/references/production-tiers.md +11 -11
  527. package/plugins/robin/claude/skills/gdd/references/sections.md +7 -7
  528. package/plugins/robin/claude/skills/gdd/references/spec-folder.md +3 -3
  529. package/plugins/robin/claude/skills/gdd/references/the-path.md +3 -4
  530. package/plugins/robin/claude/skills/gdd/references/world-and-identity.md +4 -4
  531. package/plugins/robin/claude/skills/gdd/references/worth.md +4 -4
  532. package/plugins/robin/claude/skills/mobile-ui/SKILL.md +3 -3
  533. package/plugins/robin/claude/skills/mobile-ui/references/hud-and-title.md +3 -3
  534. package/plugins/robin/claude/skills/mobile-ui/references/phone-check.md +1 -1
  535. package/plugins/robin/claude/skills/mobile-ui/references/recipes.md +1 -1
  536. package/plugins/robin/claude/skills/mobile-ui/references/restyle-ui.md +11 -11
  537. package/plugins/robin/claude/skills/mobile-ui/references/unity.md +23 -23
  538. package/plugins/robin/claude/skills/publishing/references/compose.md +1 -1
  539. package/plugins/robin/claude/skills/publishing/references/server-build.md +1 -1
  540. package/plugins/robin/claude/skills/store/SKILL.md +3 -3
  541. package/plugins/robin/claude/skills/store/references/app-store.md +1 -1
  542. package/plugins/robin/claude/skills/store/references/google-play.md +2 -2
  543. package/plugins/robin/claude/skills/store/references/ios-release.md +19 -20
  544. package/plugins/robin/claude/skills/store/references/money.md +2 -2
  545. package/plugins/robin/claude/skills/store/references/purchases-and-review.md +18 -18
  546. package/plugins/robin/claude/skills/store/references/readiness-page.md +1 -1
  547. package/plugins/robin/claude/skills/store/references/readiness.md +3 -3
  548. package/plugins/robin/claude/skills/store/references/unity-store.md +9 -12
  549. package/plugins/robin/claude/skills/unity-game/SKILL.md +28 -35
  550. package/plugins/robin/claude/skills/unity-game/references/agent-ops.md +9 -9
  551. package/plugins/robin/claude/skills/unity-game/references/fixes.md +21 -21
  552. package/plugins/robin/claude/skills/unity-game/references/from-a-web-game.md +17 -17
  553. package/plugins/robin/claude/skills/unity-game/references/handing-off.md +4 -4
  554. package/plugins/robin/claude/skills/unity-game/references/performance.md +10 -14
  555. package/plugins/robin/claude/skills/unity-game/references/probe.md +4 -4
  556. package/plugins/robin/claude/skills/unity-game/references/shared-mac.md +1 -1
  557. package/plugins/robin/claude/skills/unity-game/references/traps.md +13 -14
  558. package/plugins/robin/claude/skills/verifying/references/bar.md +1 -1
  559. package/plugins/robin/claude/skills/verifying/references/fidelity.md +11 -11
  560. package/plugins/robin/claude/skills/verifying/references/mobile-qa.md +10 -10
  561. package/plugins/robin/claude/skills/verifying/references/playtest.md +14 -14
  562. package/plugins/robin/claude/skills/verifying/references/unity.md +11 -11
  563. package/plugins/robin/claude/skills/world-and-story/SKILL.md +1 -1
  564. package/plugins/robin/claude/skills/world-and-story/references/atmosphere.md +4 -4
  565. package/plugins/robin/claude/skills/world-and-story/references/living-world.md +2 -2
  566. package/plugins/robin/claude/skills/world-and-story/references/opening-and-chapters.md +1 -1
  567. package/plugins/robin/claude/skills/world-and-story/references/story-at-size.md +2 -2
  568. package/plugins/robin/claude/skills/world-and-story/references/voice.md +1 -1
  569. package/plugins/robin/skills/fp-playtest/SKILL.md +2 -2
  570. package/plugins/robin/skills/funpixel-3d/references/bake-off.md +3 -3
  571. package/plugins/robin/skills/funpixel-3d/references/characters.md +1 -1
  572. package/plugins/robin/skills/funpixel-3d/references/hero-route.md +5 -5
  573. package/plugins/robin/skills/funpixel-3d/references/level-spec.md +1 -1
  574. package/plugins/robin/skills/funpixel-3d/references/levels.md +3 -3
  575. package/plugins/robin/skills/funpixel-3d/references/light-and-places.md +3 -3
  576. package/plugins/robin/skills/funpixel-3d/references/painted-target.md +7 -7
  577. package/plugins/robin/skills/funpixel-3d/references/three-loading.md +4 -4
  578. package/plugins/robin/skills/funpixel-3d/references/unity.md +13 -13
  579. package/plugins/robin/skills/funpixel-art/references/animation.md +1 -1
  580. package/plugins/robin/skills/funpixel-art/references/cast.md +3 -3
  581. package/plugins/robin/skills/funpixel-art/references/effects.md +2 -2
  582. package/plugins/robin/skills/funpixel-art/references/frames.md +6 -6
  583. package/plugins/robin/skills/funpixel-art/references/judging-frames.md +8 -8
  584. package/plugins/robin/skills/funpixel-art/references/look.md +4 -4
  585. package/plugins/robin/skills/funpixel-art/references/pipeline.md +2 -2
  586. package/plugins/robin/skills/funpixel-art/references/prompts.md +4 -4
  587. package/plugins/robin/skills/funpixel-art/references/ui.md +15 -15
  588. package/plugins/robin/skills/funpixel-art/references/unity.md +14 -14
  589. package/plugins/robin/skills/funpixel-audio/references/adaptive-music.md +4 -4
  590. package/plugins/robin/skills/funpixel-audio/references/engine.md +2 -2
  591. package/plugins/robin/skills/funpixel-audio/references/measure.md +1 -1
  592. package/plugins/robin/skills/funpixel-audio/references/unity.md +20 -19
  593. package/plugins/robin/skills/funpixel-brief/SKILL.md +1 -1
  594. package/plugins/robin/skills/funpixel-game-feel/SKILL.md +4 -4
  595. package/plugins/robin/skills/funpixel-game-feel/references/contact.md +6 -6
  596. package/plugins/robin/skills/funpixel-game-feel/references/unity.md +18 -23
  597. package/plugins/robin/skills/funpixel-game-logic/SKILL.md +3 -3
  598. package/plugins/robin/skills/funpixel-game-logic/references/balance.md +2 -2
  599. package/plugins/robin/skills/funpixel-game-logic/references/depth.md +2 -2
  600. package/plugins/robin/skills/funpixel-game-logic/references/escalation.md +5 -5
  601. package/plugins/robin/skills/funpixel-game-logic/references/probes.md +10 -10
  602. package/plugins/robin/skills/funpixel-game-logic/references/unity.md +28 -28
  603. package/plugins/robin/skills/funpixel-game-spine/SKILL.md +1 -1
  604. package/plugins/robin/skills/funpixel-game-spine/references/performance.md +2 -2
  605. package/plugins/robin/skills/funpixel-game-spine/references/replay.md +11 -11
  606. package/plugins/robin/skills/funpixel-game-spine/references/room-api.md +1 -1
  607. package/plugins/robin/skills/funpixel-game-spine/references/sdk.md +1 -1
  608. package/plugins/robin/skills/funpixel-gdd/SKILL.md +2 -2
  609. package/plugins/robin/skills/funpixel-gdd/references/as-built.md +2 -2
  610. package/plugins/robin/skills/funpixel-gdd/references/design-measures.md +2 -2
  611. package/plugins/robin/skills/funpixel-gdd/references/design-note.md +1 -1
  612. package/plugins/robin/skills/funpixel-gdd/references/first-look.md +1 -1
  613. package/plugins/robin/skills/funpixel-gdd/references/floors.md +2 -2
  614. package/plugins/robin/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  615. package/plugins/robin/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  616. package/plugins/robin/skills/funpixel-gdd/references/genre-racing.md +2 -2
  617. package/plugins/robin/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  618. package/plugins/robin/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  619. package/plugins/robin/skills/funpixel-gdd/references/genre-survival.md +2 -2
  620. package/plugins/robin/skills/funpixel-gdd/references/invent-first.md +3 -3
  621. package/plugins/robin/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  622. package/plugins/robin/skills/funpixel-gdd/references/pages.md +2 -5
  623. package/plugins/robin/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  624. package/plugins/robin/skills/funpixel-gdd/references/production-tiers.md +11 -11
  625. package/plugins/robin/skills/funpixel-gdd/references/sections.md +7 -7
  626. package/plugins/robin/skills/funpixel-gdd/references/spec-folder.md +3 -3
  627. package/plugins/robin/skills/funpixel-gdd/references/the-path.md +3 -4
  628. package/plugins/robin/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  629. package/plugins/robin/skills/funpixel-gdd/references/worth.md +4 -4
  630. package/plugins/robin/skills/funpixel-mobile-ui/SKILL.md +3 -3
  631. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  632. package/plugins/robin/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  633. package/plugins/robin/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  634. package/plugins/robin/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  635. package/plugins/robin/skills/funpixel-mobile-ui/references/unity.md +23 -23
  636. package/plugins/robin/skills/funpixel-publish/references/compose.md +1 -1
  637. package/plugins/robin/skills/funpixel-publish/references/server-build.md +1 -1
  638. package/plugins/robin/skills/funpixel-store/SKILL.md +3 -3
  639. package/plugins/robin/skills/funpixel-store/references/app-store.md +1 -1
  640. package/plugins/robin/skills/funpixel-store/references/google-play.md +2 -2
  641. package/plugins/robin/skills/funpixel-store/references/ios-release.md +19 -20
  642. package/plugins/robin/skills/funpixel-store/references/money.md +2 -2
  643. package/plugins/robin/skills/funpixel-store/references/purchases-and-review.md +18 -18
  644. package/plugins/robin/skills/funpixel-store/references/readiness-page.md +1 -1
  645. package/plugins/robin/skills/funpixel-store/references/readiness.md +3 -3
  646. package/plugins/robin/skills/funpixel-store/references/unity-store.md +9 -12
  647. package/plugins/robin/skills/funpixel-unity-game/SKILL.md +28 -35
  648. package/plugins/robin/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  649. package/plugins/robin/skills/funpixel-unity-game/references/fixes.md +21 -21
  650. package/plugins/robin/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  651. package/plugins/robin/skills/funpixel-unity-game/references/handing-off.md +4 -4
  652. package/plugins/robin/skills/funpixel-unity-game/references/performance.md +10 -14
  653. package/plugins/robin/skills/funpixel-unity-game/references/probe.md +4 -4
  654. package/plugins/robin/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  655. package/plugins/robin/skills/funpixel-unity-game/references/traps.md +13 -14
  656. package/plugins/robin/skills/funpixel-verify/references/bar.md +1 -1
  657. package/plugins/robin/skills/funpixel-verify/references/fidelity.md +11 -11
  658. package/plugins/robin/skills/funpixel-verify/references/mobile-qa.md +10 -10
  659. package/plugins/robin/skills/funpixel-verify/references/playtest.md +14 -14
  660. package/plugins/robin/skills/funpixel-verify/references/unity.md +11 -11
  661. package/plugins/robin/skills/funpixel-world-and-story/SKILL.md +1 -1
  662. package/plugins/robin/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  663. package/plugins/robin/skills/funpixel-world-and-story/references/living-world.md +2 -2
  664. package/plugins/robin/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  665. package/plugins/robin/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  666. package/plugins/robin/skills/funpixel-world-and-story/references/voice.md +1 -1
  667. package/templates/common/.agents/skills/funpixel-3d/references/bake-off.md +3 -3
  668. package/templates/common/.agents/skills/funpixel-3d/references/characters.md +1 -1
  669. package/templates/common/.agents/skills/funpixel-3d/references/hero-route.md +5 -5
  670. package/templates/common/.agents/skills/funpixel-3d/references/level-spec.md +1 -1
  671. package/templates/common/.agents/skills/funpixel-3d/references/levels.md +3 -3
  672. package/templates/common/.agents/skills/funpixel-3d/references/light-and-places.md +3 -3
  673. package/templates/common/.agents/skills/funpixel-3d/references/painted-target.md +7 -7
  674. package/templates/common/.agents/skills/funpixel-3d/references/three-loading.md +4 -4
  675. package/templates/common/.agents/skills/funpixel-3d/references/unity.md +13 -13
  676. package/templates/common/.agents/skills/funpixel-art/references/animation.md +1 -1
  677. package/templates/common/.agents/skills/funpixel-art/references/cast.md +3 -3
  678. package/templates/common/.agents/skills/funpixel-art/references/effects.md +2 -2
  679. package/templates/common/.agents/skills/funpixel-art/references/frames.md +6 -6
  680. package/templates/common/.agents/skills/funpixel-art/references/judging-frames.md +8 -8
  681. package/templates/common/.agents/skills/funpixel-art/references/look.md +4 -4
  682. package/templates/common/.agents/skills/funpixel-art/references/pipeline.md +2 -2
  683. package/templates/common/.agents/skills/funpixel-art/references/prompts.md +4 -4
  684. package/templates/common/.agents/skills/funpixel-art/references/ui.md +15 -15
  685. package/templates/common/.agents/skills/funpixel-art/references/unity.md +14 -14
  686. package/templates/common/.agents/skills/funpixel-audio/references/adaptive-music.md +4 -4
  687. package/templates/common/.agents/skills/funpixel-audio/references/engine.md +2 -2
  688. package/templates/common/.agents/skills/funpixel-audio/references/measure.md +1 -1
  689. package/templates/common/.agents/skills/funpixel-audio/references/unity.md +20 -19
  690. package/templates/common/.agents/skills/funpixel-game-feel/SKILL.md +4 -4
  691. package/templates/common/.agents/skills/funpixel-game-feel/references/contact.md +6 -6
  692. package/templates/common/.agents/skills/funpixel-game-feel/references/unity.md +18 -23
  693. package/templates/common/.agents/skills/funpixel-game-logic/SKILL.md +3 -3
  694. package/templates/common/.agents/skills/funpixel-game-logic/references/balance.md +2 -2
  695. package/templates/common/.agents/skills/funpixel-game-logic/references/depth.md +2 -2
  696. package/templates/common/.agents/skills/funpixel-game-logic/references/escalation.md +5 -5
  697. package/templates/common/.agents/skills/funpixel-game-logic/references/probes.md +10 -10
  698. package/templates/common/.agents/skills/funpixel-game-logic/references/unity.md +28 -28
  699. package/templates/common/.agents/skills/funpixel-game-spine/SKILL.md +1 -1
  700. package/templates/common/.agents/skills/funpixel-game-spine/references/performance.md +2 -2
  701. package/templates/common/.agents/skills/funpixel-game-spine/references/replay.md +11 -11
  702. package/templates/common/.agents/skills/funpixel-game-spine/references/room-api.md +1 -1
  703. package/templates/common/.agents/skills/funpixel-game-spine/references/sdk.md +1 -1
  704. package/templates/common/.agents/skills/funpixel-gdd/SKILL.md +2 -2
  705. package/templates/common/.agents/skills/funpixel-gdd/references/as-built.md +2 -2
  706. package/templates/common/.agents/skills/funpixel-gdd/references/design-measures.md +2 -2
  707. package/templates/common/.agents/skills/funpixel-gdd/references/design-note.md +1 -1
  708. package/templates/common/.agents/skills/funpixel-gdd/references/first-look.md +1 -1
  709. package/templates/common/.agents/skills/funpixel-gdd/references/floors.md +2 -2
  710. package/templates/common/.agents/skills/funpixel-gdd/references/gameplay-contract.md +1 -1
  711. package/templates/common/.agents/skills/funpixel-gdd/references/genre-puzzle.md +4 -4
  712. package/templates/common/.agents/skills/funpixel-gdd/references/genre-racing.md +2 -2
  713. package/templates/common/.agents/skills/funpixel-gdd/references/genre-rpg.md +2 -2
  714. package/templates/common/.agents/skills/funpixel-gdd/references/genre-shooter.md +2 -2
  715. package/templates/common/.agents/skills/funpixel-gdd/references/genre-survival.md +2 -2
  716. package/templates/common/.agents/skills/funpixel-gdd/references/invent-first.md +3 -3
  717. package/templates/common/.agents/skills/funpixel-gdd/references/level-and-fun.md +11 -11
  718. package/templates/common/.agents/skills/funpixel-gdd/references/pages.md +2 -5
  719. package/templates/common/.agents/skills/funpixel-gdd/references/plan-at-size.md +5 -5
  720. package/templates/common/.agents/skills/funpixel-gdd/references/production-tiers.md +11 -11
  721. package/templates/common/.agents/skills/funpixel-gdd/references/sections.md +7 -7
  722. package/templates/common/.agents/skills/funpixel-gdd/references/spec-folder.md +3 -3
  723. package/templates/common/.agents/skills/funpixel-gdd/references/the-path.md +3 -4
  724. package/templates/common/.agents/skills/funpixel-gdd/references/world-and-identity.md +4 -4
  725. package/templates/common/.agents/skills/funpixel-gdd/references/worth.md +4 -4
  726. package/templates/common/.agents/skills/funpixel-mobile-ui/SKILL.md +3 -3
  727. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-and-title.md +3 -3
  728. package/templates/common/.agents/skills/funpixel-mobile-ui/references/phone-check.md +1 -1
  729. package/templates/common/.agents/skills/funpixel-mobile-ui/references/recipes.md +1 -1
  730. package/templates/common/.agents/skills/funpixel-mobile-ui/references/restyle-ui.md +11 -11
  731. package/templates/common/.agents/skills/funpixel-mobile-ui/references/unity.md +23 -23
  732. package/templates/common/.agents/skills/funpixel-publish/references/compose.md +1 -1
  733. package/templates/common/.agents/skills/funpixel-publish/references/server-build.md +1 -1
  734. package/templates/common/.agents/skills/funpixel-store/SKILL.md +3 -3
  735. package/templates/common/.agents/skills/funpixel-store/references/app-store.md +1 -1
  736. package/templates/common/.agents/skills/funpixel-store/references/google-play.md +2 -2
  737. package/templates/common/.agents/skills/funpixel-store/references/ios-release.md +19 -20
  738. package/templates/common/.agents/skills/funpixel-store/references/money.md +2 -2
  739. package/templates/common/.agents/skills/funpixel-store/references/purchases-and-review.md +18 -18
  740. package/templates/common/.agents/skills/funpixel-store/references/readiness-page.md +1 -1
  741. package/templates/common/.agents/skills/funpixel-store/references/readiness.md +3 -3
  742. package/templates/common/.agents/skills/funpixel-store/references/unity-store.md +9 -12
  743. package/templates/common/.agents/skills/funpixel-unity-game/SKILL.md +28 -35
  744. package/templates/common/.agents/skills/funpixel-unity-game/references/agent-ops.md +9 -9
  745. package/templates/common/.agents/skills/funpixel-unity-game/references/fixes.md +21 -21
  746. package/templates/common/.agents/skills/funpixel-unity-game/references/from-a-web-game.md +17 -17
  747. package/templates/common/.agents/skills/funpixel-unity-game/references/handing-off.md +4 -4
  748. package/templates/common/.agents/skills/funpixel-unity-game/references/performance.md +10 -14
  749. package/templates/common/.agents/skills/funpixel-unity-game/references/probe.md +4 -4
  750. package/templates/common/.agents/skills/funpixel-unity-game/references/shared-mac.md +1 -1
  751. package/templates/common/.agents/skills/funpixel-unity-game/references/traps.md +13 -14
  752. package/templates/common/.agents/skills/funpixel-verify/references/bar.md +1 -1
  753. package/templates/common/.agents/skills/funpixel-verify/references/fidelity.md +11 -11
  754. package/templates/common/.agents/skills/funpixel-verify/references/mobile-qa.md +10 -10
  755. package/templates/common/.agents/skills/funpixel-verify/references/playtest.md +14 -14
  756. package/templates/common/.agents/skills/funpixel-verify/references/unity.md +11 -11
  757. package/templates/common/.agents/skills/funpixel-world-and-story/SKILL.md +1 -1
  758. package/templates/common/.agents/skills/funpixel-world-and-story/references/atmosphere.md +4 -4
  759. package/templates/common/.agents/skills/funpixel-world-and-story/references/living-world.md +2 -2
  760. package/templates/common/.agents/skills/funpixel-world-and-story/references/opening-and-chapters.md +1 -1
  761. package/templates/common/.agents/skills/funpixel-world-and-story/references/story-at-size.md +2 -2
  762. package/templates/common/.agents/skills/funpixel-world-and-story/references/voice.md +1 -1
  763. package/templates/common/AGENTS.md +1 -1
  764. package/templates/common/src/platform.ts +1 -1
  765. package/templates/common/src/probe-human.ts +3 -3
  766. package/templates/common/src/save.ts +1 -1
  767. package/templates/common/test/platform.test.ts +1 -1
  768. package/templates/three-world/src/budget.ts +1 -1
  769. package/templates/three-world/src/cutouts.ts +2 -2
  770. package/templates/three-world/src/game.ts +1 -1
  771. package/templates/three-world/src/models.ts +1 -1
  772. package/unity/com.funpixel.probe/Runtime/Player/Args.cs +1 -1
  773. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs +2 -2
  774. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs +2 -2
  775. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs +1 -2
  776. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs +2 -2
  777. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs +1 -1
  778. package/plugins/claude/skills/unity-game/references/studio-packages.md +0 -127
  779. package/plugins/codex/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  780. package/plugins/cursor/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  781. package/plugins/kiro/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  782. package/plugins/robin/claude/skills/unity-game/references/studio-packages.md +0 -127
  783. package/plugins/robin/skills/funpixel-unity-game/references/studio-packages.md +0 -127
  784. package/templates/common/.agents/skills/funpixel-unity-game/references/studio-packages.md +0 -127
@@ -71,7 +71,7 @@ export function productionMirror(dir) {
71
71
  const making = read(join(dir, 'design', 'MAKING.md'));
72
72
  const entries = (making.match(/^## /gm) ?? []).length;
73
73
  if (!making)
74
- add('warn', 'direct', 'no design/MAKING.md', 'the making-of log: per lane, the decision, its numbers and the lesson (Held Note design/MAKING.md)');
74
+ add('warn', 'direct', 'no design/MAKING.md', 'the making-of log: per lane, the decision, its numbers and the lesson');
75
75
  else if (entries <= 1)
76
76
  add('note', 'direct', 'design/MAKING.md has no lane entry yet', 'write one when a lane lands: decision, numbers, lesson');
77
77
  if (gdd && !/^## Identity lock/m.test(gdd))
@@ -84,7 +84,7 @@ export function makingLog(name, date) {
84
84
 
85
85
  A running log, one entry per lane when it lands: what was decided, the numbers that decided it, and the lesson
86
86
  for the next lane. Before/after frames at fixed framing (desktop 1280x720, phone 844x390) beside each entry.
87
- The model is Held Note's design/MAKING.md. Stays private (/design/ is in .harnessignore).
87
+ Stays private (/design/ is in .harnessignore).
88
88
 
89
89
  ## ${date} · Lane 0: the plan
90
90
 
package/dist/sim/curve.js CHANGED
@@ -23,7 +23,7 @@ export function judgeCurve(cohorts) {
23
23
  const measured = ['naive', 'novice', 'skilled'].map((r) => byRole(cohorts, r)).filter((c) => !!c && split(c));
24
24
  const played = cohorts.filter((c) => c.seeds > 0);
25
25
  if (played.length && played.every((c) => c.lost === 0) && played.some((c) => c.seconds >= LOSABLE_SECONDS)) {
26
- out.push({ id: 'losable', state: 'warn', says: `no run was lost by any of ${played.length} players over ${played[0].seeds} seeds (${played.map((c) => c.policy).join(', ')}): a run cannot be lost`, next: 'a puzzle or a toy on purpose? say so in the design doc and to the player; else a threat, a clock or a resource that can end a run (Sunhop, 30 Sep)' });
26
+ out.push({ id: 'losable', state: 'warn', says: `no run was lost by any of ${played.length} players over ${played[0].seeds} seeds (${played.map((c) => c.policy).join(', ')}): a run cannot be lost`, next: 'a puzzle or a toy on purpose? say so in the design doc and to the player; else a threat, a clock or a resource that can end a run' });
27
27
  }
28
28
  if (!measured.length) {
29
29
  out.push({ id: 'curve', state: 'not measured', says: skilled?.levels?.length ? 'the probe keeps when levels were reached but not who cleared or lost them (an older src/probe-kit.ts: funtools upgrade parks the new one)' : 'no level(run) in test/probes.ts: the difficulty curve per level, stage or wave was never split', next: 'add level(run) to the probe game (the level, stage or wave number) so sim splits clear rate, loss rate and time per level' });
@@ -39,7 +39,7 @@ export function judgeCurve(cohorts) {
39
39
  const s = at(skilled, lv), h = at(human, lv);
40
40
  const sClear = s && s.reached ? share(s.cleared, s.reached) : null, hClear = h && h.reached ? share(h.cleared, h.reached) : null;
41
41
  if (sClear !== null && hClear !== null && sClear >= 0.5 && hClear < HUMAN_SHARE * sClear) {
42
- out.push({ id: `wall:${lv}`, state: 'warn', says: `level ${lv} is a wall for people: the skilled bot clears it on ${pct(sClear)} of seeds at 60 decisions a second, but ${pct(hClear)} at ${human.human.hz} a second with ${human.human.reactMs} ms to react`, next: 'the level asks for superhuman input (Saltwake\'s Dusk Cup, 30 Sep): longer warnings, a wider window, fewer inputs per second, or a slower rival' });
42
+ out.push({ id: `wall:${lv}`, state: 'warn', says: `level ${lv} is a wall for people: the skilled bot clears it on ${pct(sClear)} of seeds at 60 decisions a second, but ${pct(hClear)} at ${human.human.hz} a second with ${human.human.reactMs} ms to react`, next: 'the level asks for superhuman input (one race, 30 Sep): longer warnings, a wider window, fewer inputs per second, or a slower rival' });
43
43
  }
44
44
  else if ((hClear ?? sClear) !== null && (hClear ?? sClear) < WALL_SHARE && ((h ?? s).lost ?? 0) > 0 && lv !== levels.at(-1)) {
45
45
  const who = h ? `the skilled player at ${human.human.hz} decisions a second` : 'the skilled bot';
@@ -117,6 +117,6 @@ export function judgeReach(cohorts, claimed, where = 'the design doc') {
117
117
  if (won && top >= claimed)
118
118
  return { id: 'reach', state: 'ok', says: `the skilled bot plays through all ${claimed} areas ${where} claims` };
119
119
  if (top <= claimed / 2)
120
- return { id: 'reach', state: 'warn', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}`, next: 'play reaches much less than the plan claims (Floe claimed 8 worlds, play reached 2): build and wire what the plan names, lower the claim, or fix the wall that stops the bot' };
120
+ return { id: 'reach', state: 'warn', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}`, next: 'play reaches much less than the plan claims (one game claimed 8 worlds, play reached 2): build and wire what the plan names, lower the claim, or fix the wall that stops the bot' };
121
121
  return { id: 'reach', state: 'note', says: `${where} claims ${claimed} areas or levels; the skilled bot reaches ${top}${won ? '' : ' and never wins'}` };
122
122
  }
@@ -403,7 +403,7 @@ This folder is what a building agent works from (the ${o.tier} tier of the plan,
403
403
 
404
404
  The data files live here, outside the Unity project, so the design and the game read one copy:
405
405
  - an Editor step copies \`tunables.json\` and \`rooms.json\` into \`${o.copy}/\` (TextAssets the game reads at start);
406
- - an EditMode test fails when a copy differs from this folder, so a change made here and not carried over is a red test, not a silent drift (Floe Jam's tunables changed in design/ while its Unity copy did not);
406
+ - an EditMode test fails when a copy differs from this folder, so a change made here and not carried over is a red test, not a silent drift (one game's tunables changed in design/ while its Unity copy did not);
407
407
  - edit this folder, never the copy.
408
408
 
409
409
  ## Slice first
@@ -50,7 +50,7 @@ export const CATALOGUE = [
50
50
  { id: 'cutscenes', label: 'Cutscenes', why: 'one earned cinematic (the ending, a reveal), skippable', cost: '$1–3 each, plus a scene to stage' },
51
51
  { id: 'photo', label: 'Photo mode', why: 'players share the wow moments; the share card carries the game', cost: 'a free camera, a frame and a share sheet: about a day' },
52
52
  { id: 'multiplayer', label: 'Multiplayer', why: 'friends in one room through the relay', cost: 'doubles the test work; the host owns the world state' },
53
- { id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (Blue Freight, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
53
+ { id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (one game, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
54
54
  { id: 'none', label: 'None', why: 'everything goes into the core' },
55
55
  ],
56
56
  },
@@ -13,7 +13,7 @@ export function kitPackage(env = process.env, here = dirname(fileURLToPath(impor
13
13
  export function reference(project, o) {
14
14
  if (o.git) {
15
15
  if (!o.ref)
16
- return { error: '--git needs --ref <tag or commit>: an unpinned git package changes under the project (koi-out tracks #main)' };
16
+ return { error: '--git needs --ref <tag or commit>: an unpinned git package changes under the project (one game tracked #main)' };
17
17
  const sep = o.git.includes('?') ? '&' : '?';
18
18
  return `${o.git}${o.git.includes('path=') ? '' : `${sep}path=/funpixel-mono/libs/unity/${PACKAGE}`}#${o.ref}`;
19
19
  }
@@ -9,7 +9,7 @@
9
9
  // Three only: an actor must be SEEN to be measured. Rays go from the camera to
10
10
  // its centre and to 0.6 m either side of it (camera right and up) against every
11
11
  // other drawn, opaque mesh; when all five are blocked (behind a wall, a shut
12
- // door) or off screen, it goes in `hidden`, not in `actors` — Held Note: all 8
12
+ // door) or off screen, it goes in `hidden`, not in `actors` — one game: all 8
13
13
  // threats measured were behind walls, so their ΔE measured the walls.
14
14
  //
15
15
  // Who plays a role, most specific first, decided per role:
@@ -17,7 +17,7 @@
17
17
  // that starts with the role (player-ines, threat-walker-3). Once
18
18
  // any node in the scene, shown or not, carries a role's tag, only
19
19
  // tagged nodes play that role, so a prop named hazard_barrier is
20
- // scenery (Held Note: the usual words measured it as the threat)
20
+ // scenery (one game: the usual words measured it as the threat)
21
21
  // declared — the caller's pattern (funpixel.json "actors", --player/--threats)
22
22
  // words — the usual words (player|hero|avatar; enemy|threat|hazard|…)
23
23
  // `matched` says per role which of the three picked, and the node names it
@@ -24,8 +24,8 @@
24
24
  // The phone's safe area is EMULATED before the view is entered, for every look
25
25
  // but a bare listing (view null, no hold, no freeze): headless Chromium reports
26
26
  // every env(safe-area-inset-*) as 0, so a game that pads with env() hugged the
27
- // edge in the picture while audit-screens measured it against a notch (Riad
28
- // Rush, Sunhop). The page's env(safe-area-inset-*) now resolves to the insets,
27
+ // edge in the picture while audit-screens measured it against a notch (two
28
+ // games). The page's env(safe-area-inset-*) now resolves to the insets,
29
29
  // in its stylesheets, its inline styles and those it adds later, and a resize
30
30
  // is sent so a game that reads them again lays out again. capture and
31
31
  // audit-screens (local and hosted) share this one emulation.
@@ -1,5 +1,5 @@
1
1
  // How dressed is the play (lane V2, the Silt bar's S7: "dressing density with a clear road"; Silt's
2
- // chapter one carries 42k instanced flowers, Saltwake and Sunhop "read as shapes"): the small things of a
2
+ // chapter one carries 42k instanced flowers, two of our games "read as shapes"): the small things of a
3
3
  // Three scene counted per area round the player, by role, beside what they cost a frame.
4
4
  //
5
5
  // A thing is one instance of an InstancedMesh, or a mesh that is small (footprint under `max_size`,
@@ -1,5 +1,5 @@
1
1
  // Is this frame play, or a loading or splash screen? A capture that lands on a splash must never
2
- // count as a moment (Pocket Crew: captures fooled by a 3.7 s splash; Blue Freight 1 Oct: shots of a
2
+ // count as a moment (one game: captures fooled by a 3.7 s splash; another, 1 Oct: shots of a
3
3
  // loading card scored as the moment). Three signs, each read only when the page offers it:
4
4
  // state — __FPX_STATE__()'s screen / phase / view / mode names a splash, a loader or a boot
5
5
  // dom — a shown element named splash / loading / loader / preload / boot covering ≥ 40% of the page
@@ -40,9 +40,9 @@ async (a) => {
40
40
 
41
41
  // Seen by a player: laid out, on the screen, and hidden by neither itself nor
42
42
  // an ancestor. Opacity multiplies down the tree and visibility inherits, so a
43
- // faded screen's children are faded too (Held Note: a chapter card at
43
+ // faded screen's children are faded too (one game: a chapter card at
44
44
  // opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
45
- // every play view; Fold Room: a label inside a faded-out button).
45
+ // every play view; another: a label inside a faded-out button).
46
46
  // checkVisibility answers where the browser has it; the
47
47
  // walk up the ancestors is the fallback, and also catches a stack of
48
48
  // part-faded layers that multiplies to nothing.
@@ -1,11 +1,11 @@
1
- // Is everything big standing on the ground (owner, 2 Oct, Blue Freight round 4: "the spacecraft must
1
+ // Is everything big standing on the ground (owner, 2 Oct, one game's round 4: "the spacecraft must
2
2
  // not stay in the air if it's landed" — the walk said "floating: none" because it only read actors).
3
3
  // For the large props and the vehicles of a Three scene: where each one touches down (the lowest
4
4
  // vertices of its mesh, cell by cell under it, or the bottom corners of its box), read by a vertical ray
5
5
  // against the SURFACES under it, and how far it is above (hovering) or below (sunk) the nearest one. A
6
6
  // thing resting on another (a stacked container) is held, not hovering.
7
7
  //
8
- // The surfaces (lane J4, Blue Freight round 5: a deck, a ramp, its railing and the gantry's trestles read
8
+ // The surfaces (lane J4, one game's round 5: a deck, a ramp, its railing and the gantry's trestles read
9
9
  // "sunk" against the crater floor under them, and the landed ship "41 m over a drop" beside its pad):
10
10
  // terrain meshes named ground, terrain, floor, road… (the `ground` regex)
11
11
  // supports built things people stand on: a mesh named deck, pad, platform, ramp, bridge, pier, dock,
@@ -430,7 +430,7 @@
430
430
  const hoverGap = verdict === 'hovering' && known.length ? Math.min(...known) : null;
431
431
  // Touching down cell by cell: the gap where it is nearest a surface (a sloped railing is not "−3.6 m" at its centre).
432
432
  const nearGap = t.mesh && known.length ? known.reduce((m, v) => (Math.abs(v) < Math.abs(m) ? v : m), known[0]) : null;
433
- // Where it is off and by how much (Lantern Night: "a distance and not which corner or what tolerance").
433
+ // Where it is off and by how much (one game: "a distance and not which corner or what tolerance").
434
434
  let lo = -1, hi = -1, deep = -1;
435
435
  gaps.forEach((q, i) => {
436
436
  if (q.gap !== null) { if (lo < 0 || q.gap < gaps[lo].gap) lo = i; if (hi < 0 || q.gap > gaps[hi].gap) hi = i; }
@@ -49,7 +49,7 @@ async (a) => {
49
49
  const alpha = p.length >= 3 ? (p[3] === undefined ? 1 : p[3]) : 0;
50
50
  const image = (s.backgroundImage && s.backgroundImage !== 'none') || (s.borderImageSource && s.borderImageSource !== 'none');
51
51
  if (alpha <= 0.05 && !image) return null;
52
- // drawn: a picture (url()) dresses it, not only a gradient: a gradient clipped to system text is still system text (Floe R4's title).
52
+ // drawn: a picture (url()) dresses it, not only a gradient: a gradient clipped to system text is still system text (one game's round-4 title).
53
53
  const drawn = /url\(/.test(`${s.backgroundImage} ${s.borderImageSource}`);
54
54
  return { rgb: alpha > 0.05 ? [p[0], p[1], p[2]].map(Math.round) : null, alpha: Math.round(alpha * 100) / 100, image: !!image, drawn };
55
55
  };
@@ -64,9 +64,9 @@ async (a) => {
64
64
  };
65
65
  // Seen by a player: laid out, on the screen, and hidden by neither itself nor
66
66
  // an ancestor. Opacity multiplies down the tree and visibility inherits, so a
67
- // faded screen's children are faded too (Held Note: a chapter card at
67
+ // faded screen's children are faded too (one game: a chapter card at
68
68
  // opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
69
- // every play view; Fold Room: a label inside a faded-out button).
69
+ // every play view; another: a label inside a faded-out button).
70
70
  // checkVisibility answers where the browser has it; the
71
71
  // walk up the ancestors is the fallback, and also catches a stack of
72
72
  // part-faded layers that multiplies to nothing.
@@ -31,12 +31,12 @@
31
31
  // counts when both are hit there (clip-path and rounded
32
32
  // corners respected) and both paint there (a background, an
33
33
  // image's opaque pixel, a glyph line), so four clip-path
34
- // wedges of a d-pad whose boxes cross do not overlap (Riad Rush);
34
+ // wedges of a d-pad whose boxes cross do not overlap;
35
35
  // nor do one widget's layers (absolute siblings in a parent
36
36
  // that clips them, no control, no text: a meter's fill and trail)
37
37
  // clipped — HUD, controls or text cut by the viewport edge: { name, side };
38
38
  // not what a scroll container (or the page) scrolls to on that
39
- // side: below-the-fold content is reached by scrolling (Floe);
39
+ // side: below-the-fold content is reached by scrolling;
40
40
  // and a control cut by what it sits in (a clip-path, overflow
41
41
  // hidden, a mask), under 80% of it shown: { name, side: 'clip',
42
42
  // shown (%), by (the ancestor) } — its own shape set aside
@@ -50,9 +50,9 @@ async (a) => {
50
50
  const HIT = 'button, a[href], [role="button"], [data-fpx-touch], input, select';
51
51
  // Seen by a player: laid out, on the screen, and hidden by neither itself nor
52
52
  // an ancestor. Opacity multiplies down the tree and visibility inherits, so a
53
- // faded screen's children are faded too (Held Note: a chapter card at
53
+ // faded screen's children are faded too (one game: a chapter card at
54
54
  // opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
55
- // every play view; Fold Room: a label inside a faded-out button).
55
+ // every play view; another: a label inside a faded-out button).
56
56
  // checkVisibility answers where the browser has it; the
57
57
  // walk up the ancestors is the fallback, and also catches a stack of
58
58
  // part-faded layers that multiplies to nothing.
@@ -297,7 +297,7 @@ async (a) => {
297
297
  const inset = Object.keys(e).find((k) => safe[k] > 0 && e[k] < safe[k] - 1 && !scrollsTo(el, k));
298
298
  if (inset) add(unsafe, { name: nameOf(el), side: inset });
299
299
  }
300
- // A control cut by an ancestor (Kite Run, 9 Oct: a clip-path on the end card's paper tag cut its
300
+ // A control cut by an ancestor (one game, 9 Oct: a clip-path on the end card's paper tag cut its
301
301
  // "Title" button half off on a tall card, and every check passed it): points over the part of the
302
302
  // control on the screen are hit-tested with its OWN clip-path and corners set aside (its shape is
303
303
  // its design), so a point that misses it was cut by something it sits in (a clip-path, overflow
@@ -1,4 +1,4 @@
1
- // Motion is not animation (owner, 1 Oct, Blue Freight: "static people, static creatures; what is
1
+ // Motion is not animation (owner, 1 Oct, one game: "static people, static creatures; what is
2
2
  // animated is unlike living, just stone moves"). A sampler installed in the page watches the people,
3
3
  // creatures and the player and tells, per actor, whether anything INSIDE it changed: its picture (a
4
4
  // texture, a sheet frame, a UV offset), its bones, its morph weights, its vertices, or the pose of
@@ -10,7 +10,7 @@
10
10
  // near than with the player far (a crab that always bobs changes at one rate everywhere; one that
11
11
  // scatters when the player comes changes more near). Counted per actor, not per change.
12
12
  //
13
- // Moving through space is not animating in place (Blue Freight round 3: 28 townsfolk animated IN
13
+ // Moving through space is not animating in place (one game's round 3: 28 townsfolk animated IN
14
14
  // PLACE, none walked anywhere): each actor says how far it travelled, and a crowd that never travels
15
15
  // is named. A crowd that wears the hero's face (the same geometry or texture as the player: rig
16
16
  // clones of the hero) and a crowd of one look are named too. Flyers (contract `flies`/`flying`, or a
@@ -25,8 +25,8 @@
25
25
  // shader cannot be read from the scene: declare it in the actors contract (`deform: true`). Mirroring
26
26
  // (scale.x sign) and opacity or tint pulses are never animation.
27
27
  //
28
- // A CODE-DRAWN shape (a Pixi Graphics cleared and drawn again each frame: Kite Run's gulls flap and its
29
- // tail streams that way) is read by what it draws: the drawing's size and its paths' points measured from
28
+ // A CODE-DRAWN shape (a Pixi Graphics cleared and drawn again each frame: one game's gulls flap and its
29
+ // kite's tail streams that way) is read by what it draws: the drawing's size and its paths' points measured from
30
30
  // the drawing's own corner, so the same shape drawn at a new place is motion and a shape drawn
31
31
  // differently is animation. A Pixi mesh is read by its vertices. What the sampler cannot read inside (a
32
32
  // filter, a shader material, a drawing it cannot parse) makes an actor `unseen` when nothing else changed:
@@ -262,7 +262,7 @@
262
262
  return t ? `${t.uuid}:${t.offset ? `${t.offset.x.toFixed(3)},${t.offset.y.toFixed(3)}` : ''}:${t.repeat ? `${t.repeat.x.toFixed(3)},${t.repeat.y.toFixed(3)}` : ''}` : '';
263
263
  };
264
264
  // A code-drawn Pixi shape (Graphics, redrawn each frame: a gull's wings, a streaming tail, a paper sail that
265
- // bellies; Kite Run, 9 Oct) is read by what it draws, not by a picture: its drawing's size and every path's
265
+ // bellies; one game, 9 Oct) is read by what it draws, not by a picture: its drawing's size and every path's
266
266
  // points measured from the drawing's own corner, so a shape drawn again at a new place reads the same (that
267
267
  // is motion) and a shape drawn differently reads as changed (that is animation). Pixi v8 (context
268
268
  // instructions), v7 (geometry.graphicsData); null when neither can be read.
@@ -420,7 +420,7 @@
420
420
  if (pixi && (o.alpha ?? 1) <= 0.01) return;
421
421
  const name = o.label || o.name || '';
422
422
  const role = roleOf(name);
423
- // A node named like a creature that holds the player (Kite Run: the "kite" container around the player's
423
+ // A node named like a creature that holds the player (one game: the "kite" container around the player's
424
424
  // sail, a kite also being a flyer's word) is not an actor: the player inside it is looked for.
425
425
  if (role && !(role !== 'player' && playerBelow(o))) {
426
426
  found.push([o, role, name]);
@@ -85,7 +85,7 @@ async (a) => {
85
85
  if (app && app.stage && typeof app.stage.getChildByLabel === 'function') {
86
86
  const s = app.stage.getChildByLabel(subject, true);
87
87
  if (s && typeof s.getGlobalPosition === 'function') {
88
- // A container whose children move (Kite Run: "kite" stays at 0,0 while its sail flies) is
88
+ // A container whose children move (one game: a "kite" container stays at 0,0 while its sail flies) is
89
89
  // where its drawing is: the centre of its world bounds. A leaf is where its position is.
90
90
  if (Array.isArray(s.children) && s.children.length && typeof s.getBounds === 'function') {
91
91
  try {
@@ -27,9 +27,9 @@ async (a) => {
27
27
 
28
28
  // Seen by a player: laid out, on the screen, and hidden by neither itself nor
29
29
  // an ancestor. Opacity multiplies down the tree and visibility inherits, so a
30
- // faded screen's children are faded too (Held Note: a chapter card at
30
+ // faded screen's children are faded too (one game: a chapter card at
31
31
  // opacity 0 counted as HUD all chapter, a hidden title's text was flagged in
32
- // every play view; Fold Room: a label inside a faded-out button).
32
+ // every play view; another: a label inside a faded-out button).
33
33
  // checkVisibility answers where the browser has it; the
34
34
  // walk up the ancestors is the fallback, and also catches a stack of
35
35
  // part-faded layers that multiplies to nothing.
@@ -1,5 +1,5 @@
1
- // A real-time film of the play camera: MediaRecorder on the game's canvas stream (the GDK Blue
2
- // Freight build had to hand-write one to show a walk; screenshots every few hundred ms are not a
1
+ // A real-time film of the play camera: MediaRecorder on the game's canvas stream (one GDK
2
+ // build had to hand-write one to show a walk; screenshots every few hundred ms are not a
3
3
  // film, and a frozen clock is not real time). Records what the canvas draws at the game's own pace;
4
4
  // DOM over the canvas (the HUD) is not in it. Read-only to the game.
5
5
  //
@@ -1,4 +1,4 @@
1
- // What each part of the frame is made of (owner, 2 Oct, Blue Freight round 4: "the environment
1
+ // What each part of the frame is made of (owner, 2 Oct, one game's round 4: "the environment
2
2
  // still has boxes, must be fixed" — flat-colour containers beside one painted building, big
3
3
  // flat-shaded slabs filling the foreground). A coarse software raster of the Three scene from the
4
4
  // play camera: every cell of a grid over the canvas gets the NEAREST triangle under its centre, so
@@ -33,7 +33,7 @@
33
33
  // color, textures } }]
34
34
  // tris_read, capped
35
35
  // figures — the people and creatures of the actors contract (kind person|creature, by their `node`) built as a
36
- // handful of boxes, whatever their size on screen (lane J4, Blue Freight r5: Marit and the hound were four
36
+ // handful of boxes, whatever their size on screen (lane J4, one game's r5: a herder and the hound were four
37
37
  // and seven flat boxes, too small on screen for the area read): [{ id, kind, node, meshes, boxes (how many
38
38
  // are cuboids: a BoxGeometry, or eight corners and axis-aligned faces), verts, on (in front of the camera) }]
39
39
  (a) => {
@@ -1,5 +1,5 @@
1
1
  // Where every actor of the world stands, how big it is and where it lands on screen (owner, 1 Oct,
2
- // Blue Freight: "lots of misplaces, collisions"; "we don't play and verify the environment is right
2
+ // one game: "lots of misplaces, collisions"; "we don't play and verify the environment is right
3
3
  // and well built"). Read by `funtools walk` each tick (clipping, floating, scale, blocked paths) and
4
4
  // by `funtools framing` (each actor's box on screen and its height share, so a camera can be set to
5
5
  // a target's framing without rebuild-and-shoot rounds). Read-only.
@@ -11,7 +11,7 @@
11
11
  // feet), grounded?, flies?, solid? (default true), state?, node? (the scene node's name) }
12
12
  // Without it, a Three scene is read instead: named nodes matching the kind words below, boxed from
13
13
  // their meshes and sprites as posed now; ground is then not observed.
14
- // More shapes are read as the same contract (Blue Freight round 3, the owner's build answered a bare
14
+ // More shapes are read as the same contract (one game's round 3, the owner's build answered a bare
15
15
  // array with the species in `kind` and no `type`): a bare array or an { id: actor } map; a species or
16
16
  // role word in `kind` (crab, townsfolk, npc, drone) read into person | creature | machine with the
17
17
  // word kept as `type`; no `type` = `species` | `role` | the id without its number; `flying` = `flies`;
@@ -115,7 +115,7 @@ async (a) => {
115
115
  }
116
116
 
117
117
  // --- the scene fallback: named nodes, boxed as posed now -------------------
118
- // The box is the actor's OWN model (Lantern Night, 7 Oct: the hero read 0% tall and counted what it carried):
118
+ // The box is the actor's OWN model (one game, 7 Oct: the hero read 0% tall and counted what it carried):
119
119
  // a node under a person, creature or machine named as a prop (a crate on a cart) is its own prop, and in a
120
120
  // rigged model the body is what the skeleton moves, so a static mesh under it (a lantern in a hand) is carried.
121
121
  // A skinned mesh is boxed from its vertices through its bones: its geometry's box is the bind pose, and a
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@funpixel/tools",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "private": false,
5
- "description": "funtools — the Funpixel CLI: init, dev, doctor, upgrade, smoke, verify, pack, login and publish.",
5
+ "description": "funtools \u2014 the Funpixel CLI: init, dev, doctor, upgrade, smoke, verify, pack, login and publish.",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "type": "module",
8
8
  "bin": {
@@ -0,0 +1,16 @@
1
+ # Funpixel GDK
2
+
3
+ Skills, agents and hooks that help your coding agent make, check and publish browser games with Funpixel.
4
+
5
+ | Agent | Install |
6
+ |---|---|
7
+ | Claude Code | `npx @funpixel/tools setup --host claude` (the marketplace and the install, from the npm package) |
8
+ | Cursor | from the Cursor marketplace, or see [cursor/README.md](cursor/README.md) |
9
+ | Codex | enable `fp` from your marketplace; see [codex/README.md](codex/README.md) |
10
+ | Kiro CLI | see [kiro/README.md](kiro/README.md) |
11
+
12
+ Every agent also needs funtools, the kit's CLI: `npm i -g @funpixel/tools`, then `funtools login`.
13
+
14
+ Docs: https://docs.funpixel.ai · Licence: [LICENSE](LICENSE) · Notices: [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)
15
+
16
+ This repository is built from Funpixel's source and published as is: changes made here are replaced by the next release.
@@ -3,8 +3,7 @@
3
3
  Use Funpixel asset tools, game skills and optional studio workflows in your agent. Build, verify and publish browser games with advisory hooks and project-controlled review.
4
4
 
5
5
  ```
6
- claude plugin marketplace add <this repository>
7
- claude plugin install fp@funpixel
6
+ npx @funpixel/tools setup --host claude # adds the marketplace from the npm package and installs fp@funpixel
8
7
  funtools login # the plugin's MCP is `funtools mcp`, which signs in with this
9
8
  ```
10
9
 
@@ -12,4 +11,4 @@ Needs funtools: `npm i -g @funpixel/tools` (the kit's CLI; `npx @funpixel/tools
12
11
 
13
12
  Commands: `/fp:first-look`, `/fp:flow`, `/fp:lanes`, `/fp:mobile-qa`, `/fp:new`, `/fp:playtest`, `/fp:publish`, `/fp:smoke-build`, `/fp:verify`.
14
13
 
15
- Generated by `funpixel-mono/gdk` (`npm run build`); edit the source there, never this copy.
14
+ This folder is built from Funpixel's source and published as is: changes made here are replaced by the next release.
@@ -22,8 +22,8 @@ whole-game target creation belongs to an unresolved or new-game direction.
22
22
  comfort (match the targets' quality, not their density), and framing numbers left to the owner
23
23
  (`fp:art`, references/judging-frames.md).
24
24
  3. **Generated assets.** The words live in `assets/style.json`: the medium sentence, the palette
25
- roles, one isolation clause per asset family. Sets drift when each prompt is free text (The Last
26
- Good Robot shipped a whole family at 0% chroma), so a new asset changes the subject or the
25
+ roles, one isolation clause per asset family. Sets drift when each prompt is free text (one game
26
+ shipped a whole family at 0% chroma), so a new asset changes the subject or the
27
27
  repair and keeps the rest of the words.
28
28
  4. **Asset specs.** Before generation, list the assets this task needs and settle the choices that
29
29
  change the result. For each: family, role size, the reference it uses, the one-line prompt
@@ -21,7 +21,7 @@ person: it changes nothing in the game, and its steps are suggestions they pick
21
21
  seat. Each prompt carries those numbers as facts F1, F2, … to read before the frames (Scenario's
22
22
  numbers first, then eyes); the report says which facts each seat cited.
23
23
  4. Run every seat now, in parallel in the foreground (a background seat answered after a session
24
- had already ended, Lantern Night S3), each as a fresh agent given only the contents of its prompt
24
+ had already ended, in one game's third session), each as a fresh agent given only the contents of its prompt
25
25
  file: one per `seats/<name>.md`, per `versus/<name>.md` and `fidelity/fidelity.md` when printed (and `fidelity/ui.md` from step 5), each a general-purpose
26
26
  agent (the `critic` agent's own format would override the prompt's), and the `player` agent with
27
27
  `player.md` at phone size. The Mobile QA seat (`mobile/mobile-qa.md`, the `mobile-qa` agent: is
@@ -45,7 +45,7 @@ person: it changes nothing in the game, and its steps are suggestions they pick
45
45
  (`.funtools/playtest/history.json`: panel axes, the experience bar, the blind player, minutes of
46
46
  real play, fidelity per moment and the AD lines, every round), with each drop marked. When it
47
47
  opens with "Look at the captures first", open those frames before trusting any score: a view
48
- that never reached its beat is scored as the wrong game (Held Note scored 4.9 on views stuck at
48
+ that never reached its beat is scored as the wrong game (one game scored 4.9 on views stuck at
49
49
  the opening shot, 6.55 once they reached their beats). A thing on the list that is lost is a
50
50
  regression: the report leads with it and exits 1, the flow makes putting it back the round's first
51
51
  step, and only the owner takes an item off (`playtest keep --drop K<n> --by owner "<their words>"`).
@@ -87,7 +87,7 @@ the demo with your game (`rules.ts`, `session.ts`, `game.ts`, `feel.ts`, `hud.ts
87
87
  paths, an environment map (they render flat grey without one), and `mixer.update(dt)` every frame.
88
88
  - Pixi: every display object gets a `.label`; `window.__PIXI_APP__ = app` after `app.init()`.
89
89
  - Room codes, share codes and seeds carry `data-funpixel-selectable` (else they cannot be copied).
90
- - `@funpixel/sdk` is pinned exactly (`"0.6.0"`). Import the root only for `setupGameResize`;
90
+ - `@funpixel/sdk` is pinned exactly (`"0.7.0"`). Import the root only for `setupGameResize`;
91
91
  everything else from a subpath. Multiplayer is `Room.autoJoin(getGameKey(), …)`, never a raw
92
92
  WebSocket (skill `fp:game-spine`).
93
93
  - A performance fix changes how a frame is made (pooling, atlases, instancing), never what it shows.
@@ -1,3 +1,3 @@
1
1
  {
2
- "hash": "ec92c635aaac1cab"
2
+ "hash": "47443d9a284e95f9"
3
3
  }
@@ -16,7 +16,7 @@ export const PANEL_DEFAULT = 7.3;
16
16
  export const CATALOGUE = {
17
17
  pitch: {
18
18
  title: 'Invent and pitch',
19
- why: 'a game whose answers are generic loses to one that invented something (Gallery Heist A/B, 3 of 3 seats)',
19
+ why: 'a game whose answers are generic loses to one that invented something (an A/B, 3 of 3 seats)',
20
20
  gates: [{ kind: 'gdd', headings: ['The invention'] }, { kind: 'studio' }, { kind: 'worth' }],
21
21
  rules: [
22
22
  'Answer the six forcing questions for THIS game in the GDD\'s `## The invention`: what the core object means, why the verb exists in this world, who wants what (names), what the twist costs, the one system that lives, what only this game has. A generic answer means the idea is not there yet.',
@@ -71,20 +71,20 @@ export const CATALOGUE = {
71
71
  },
72
72
  'first-look': {
73
73
  title: 'First look',
74
- why: 'identity drifts between frames unless it is locked first (Blue Freight: 7 of 7 redraws on-model with reference sheets)',
74
+ why: 'identity drifts between frames unless it is locked first (one game: 7 of 7 redraws on-model with reference sheets)',
75
75
  gates: [{ kind: 'refs', min: 1 }, { kind: 'targets', min: 4 }, { kind: 'kit' }, { kind: 'set' }],
76
76
  rules: [
77
77
  `The whole game, not a few frames (owner, 4 Oct, asked twice): key art; every screen (the title as the play world, pause, the end; past small settings, results, a level select); the HUD on the phone and the desktop; a frame per place, each tied to a story beat; a living-world sheet; an animation board; a juice board; the sound list; the fun page. \`${T} firstlook\` lists what is missing; places and the living world only for a world game.`,
78
78
  'Reference sheets (identity lock) BEFORE moment frames; every recurring design drawn with its references and one verbatim style block.',
79
79
  'A target frame per hook moment at the play framing (desktop 1280x720, phone held sideways 852x393).',
80
- `The world's kit beside the hero: sheets of its made parts (structures, ground, props, the living cast), cut into pieces before the slice (\`${T} cut\`); the slice is built from them, never from plain shapes (a fresh Blue Freight build shipped code-drawn primitives until the owner's note).`,
80
+ `The world's kit beside the hero: sheets of its made parts (structures, ground, props, the living cast), cut into pieces before the slice (\`${T} cut\`); the slice is built from them, never from plain shapes (a fresh build shipped code-drawn primitives until the owner's note).`,
81
81
  'A picture of every place; no two places alike in shape, material, era and light.',
82
82
  'The HUD mockup drawn over a target frame.',
83
83
  ],
84
84
  },
85
85
  'core-test': {
86
86
  title: 'Core test (A1): the game bites',
87
- why: 'both Blue Freight builds spent their rounds on looks and the challenge never bit ("no challenges at all")',
87
+ why: 'both builds of one game spent their rounds on looks and the challenge never bit ("no challenges at all")',
88
88
  gates: [{ kind: 'tests' }, { kind: 'sim' }],
89
89
  rules: [
90
90
  `The GDD's named bots play the REAL level (\`${T} sim\`): an engine-free, fixed-step, seeded sim, plus a replay test.`,
@@ -119,7 +119,7 @@ export const CATALOGUE = {
119
119
  },
120
120
  expand: {
121
121
  title: 'Expand, room by room',
122
- why: 'our real games are 10 to 18 minutes of designed play, grown room by room from a slice that passed (Gallery Heist: "nothing in Rooms 2-6 starts until the slice passes its gates")',
122
+ why: 'our real games are 10 to 18 minutes of designed play, grown room by room from a slice that passed (one plan: "nothing in Rooms 2-6 starts until the slice passes its gates")',
123
123
  gates: [{ kind: 'rooms' }],
124
124
  rules: [
125
125
  `Slice first: a room is opened for building only once the room before it passes (\`${T} rooms open <id>\`); the owner alone releases one early (\`--by owner\`).`,
@@ -162,7 +162,7 @@ export const CATALOGUE = {
162
162
  },
163
163
  'blind-play': {
164
164
  title: 'Blind play from the title',
165
- why: 'blind players from the title found the blockers no panel could (Held Note)',
165
+ why: 'blind players from the title found the blockers no panel could',
166
166
  gates: [{ kind: 'play' }, { kind: 'sim' }],
167
167
  rules: [
168
168
  `A blind player from the title, no instructions (\`${T} play\`): a stall counts as blocking.`,
@@ -51,7 +51,7 @@ export const CATALOGUE = [
51
51
  { id: 'cutscenes', label: 'Cutscenes', why: 'one earned cinematic (the ending, a reveal), skippable', cost: '$1–3 each, plus a scene to stage' },
52
52
  { id: 'photo', label: 'Photo mode', why: 'players share the wow moments; the share card carries the game', cost: 'a free camera, a frame and a share sheet: about a day' },
53
53
  { id: 'multiplayer', label: 'Multiplayer', why: 'friends in one room through the relay', cost: 'doubles the test work; the host owns the world state' },
54
- { id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (Blue Freight, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
54
+ { id: 'two-takes', label: 'Two takes', why: 'for a deep game: two parallel builds of the same locked plan, each winning different areas (one the environment, one the dynamics); `funtools compare-takes` plays both from the title and writes a best-of-both table, and the mix beats both (one game, 3 rounds)', cost: 'twice the build sessions, plus a merge round' },
55
55
  { id: 'none', label: 'None', why: 'everything goes into the core' },
56
56
  ],
57
57
  },
@@ -1,7 +1,7 @@
1
1
  # The model bake-off: several candidates, one judged against the master
2
2
 
3
- Held Note tried its hero three ways (three providers' takes of the same front picture) and picked
4
- from turntable sheets; Gallery Heist made two to four models of each crew member before one held.
3
+ One game tried its hero three ways (three providers' takes of the same front picture) and picked
4
+ from turntable sheets; another made two to four models of each crew member before one held.
5
5
  A model is the most expensive asset a game makes, and the first one is rarely the keeper. The
6
6
  bake-off makes the choice cheap to see and puts it on record.
7
7
 
@@ -41,7 +41,7 @@ never before (step 5 of the skill).
41
41
 
42
42
  ## What it showed on real files
43
43
 
44
- On Held Note's own models, rendered by the bench: each prop's model was ranked first against its own
44
+ On the first game's own models, rendered by the bench: each prop's model was ranked first against its own
45
45
  reference picture, by 0.03 to 0.13 over the next (crate, door, lockers, canister, bell); the three
46
46
  providers' takes of the hero scored within 0.03 of each other, and well above any prop. The team
47
47
  kept the Rodin take for reasons a silhouette cannot see (triangle budget, separable limbs). That is
@@ -44,7 +44,7 @@ pins up to 8 colours. It changes the paint, not the shape: a knight is not a res
44
44
 
45
45
  ## When the game poses its own skeleton
46
46
 
47
- Held Note (a three.js horror game, 29 Sep 2026) posed a code skeleton from its sim every frame, and
47
+ A three.js horror game (29 Sep 2026) posed a code skeleton from its sim every frame, and
48
48
  its enemies lose limbs, so neither the library nor an auto-rig fit: their bones carry their own
49
49
  names, rolls and rest rotations, and none splits a body for severing. What it did instead, run in
50
50
  local Blender:
@@ -4,10 +4,10 @@ The default path for every hero of a 3D game: the player, the rivals, the bosses
4
4
  prop the player stares at. A choice the person locked (a code-built toy style, a budget of zero
5
5
  credits, a library character) overrides it. Environment and background may stay procedural.
6
6
 
7
- Why it exists: Saltwake, a phone racer, was offered `generate_3d_model` in three creator rounds
7
+ Why it exists: a phone racer was offered `generate_3d_model` in three creator rounds
8
8
  and never called it. Its boats and world were boxes, cones and extrusions; stills of tidy
9
9
  primitives read as a style, and the blind panel scored the look above 7 while the owner saw "a
10
- shapes game". Fold Room, rooms of code geometry, reached 7.28 against Monument Valley 2's 8.60.
10
+ shapes game". Another game, rooms of code geometry, reached 7.28 against Monument Valley 2's 8.60.
11
11
 
12
12
  ## Declared, proven, or named
13
13
 
@@ -40,7 +40,7 @@ numbered fact. Three honest states for a code-built hero:
40
40
  ([levels.md](levels.md)): 300K triangles on Meshy 7.1 (the default engine, 2048 px maps,
41
41
  about 160 credits), 500K faces and 4096 px PNG maps with `engine: "hunyuan"` (about 135), or
42
42
  500K triangles and 4096 px PBR maps with `engine: "rodin"` (about 240; the hard-surface take:
43
- Held Note kept Rodin's crate, door, lockers and bell). A rigged hero stays `standard`, and
43
+ one game kept Rodin's crate, door, lockers and bell). A rigged hero stays `standard`, and
44
44
  never Rodin (it has no rig).
45
45
 
46
46
  Rodin 2.5 (`engine: "rodin"`) runs only when named and never falls back: static only (with
@@ -51,12 +51,12 @@ numbered fact. Three honest states for a code-built hero:
51
51
  `raw: true`: the engine's file untouched (the optimized copy clamps maps to 1024 px), then
52
52
  cut it to the device yourself. `npx @funpixel/tools gen model3d --image-asset front.png
53
53
  --back-asset back.png --style hero --engine hunyuan --raw` does all of it from the CLI.
54
- **Fidelity against the views** (dont-die's Corer, 10 Oct 2026, `npx @funpixel/tools fidelity`):
54
+ **Fidelity against the views** (one game's hero, 10 Oct 2026, `npx @funpixel/tools fidelity`):
55
55
  from one view the model is a slab whose end views score ~46%; four views (front, back, both
56
56
  ends) fix the depth. Projecting the views onto the mesh was the largest single gain (a profile
57
57
  84 → 91%), and generation plus projection plateaued near 73% (Hunyuan from four views 72.8%,
58
58
  Meshy hero 73.3%: Meshy keeps profiles sharper, Hunyuan the ends). Check the views agree
59
- first: `fidelity` names views no one object can match (the Corer's drawings drew the drum two
59
+ first: `fidelity` names views no one object can match (the hero's drawings drew the drum two
60
60
  sizes, which capped even a hand-built mesh at ~74%). For 95% (reached, 95.0% mean), the studio
61
61
  order: block the shape in Blender from primitives measured off the views (6.4K faces); render
62
62
  the plain mesh in four orthographic views; `gen edit` each render into a paintover in the house
@@ -93,7 +93,7 @@ A heist in a two-room cottage with a garden:
93
93
  ## Common mistakes
94
94
 
95
95
  - Colliding against the art: a character snags on every table leg and falls through foliage.
96
- - Colliders for the hero but not the camera: Held Note's shoulder camera entered walls six
96
+ - Colliders for the hero but not the camera: one game's shoulder camera entered walls six
97
97
  times in one blind phone run and lost her; cast it against the walls and planes at the kit's faces.
98
98
  - Dressing before walking the blockout: every prop moved twice.
99
99
  - A marker the code asks for that the spec never declared.