@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
@@ -45,14 +45,14 @@ and that wins.
45
45
 
46
46
  | Setting | What it adds | Seen in |
47
47
  |---|---|---|
48
- | small | The GDD and one target frame of the moment that sells the game; the meta layer (stars, collection, a map of levels) planned with the mechanic, not after it. | Koi Out, Stitch Pop, Porcelain Panic, Dock Jam: a one-second mechanic, a meta layer, many levels. |
49
- | mid | A target frame per place or level, the story's beats as ids the game reports, progress saved per level or chapter, and a runbook of what proves each step. The plan is also a spec folder the game loads (`design/spec/`: every number in `tunables.json`, rooms and chapters as data with pars, slice first; `funtools spec init`, skill `funpixel-gdd`, references/spec-folder.md). | Dead Letter (`GAME.md`, `QUALITY_BAR.md`, design addenda per pass), The Last Good Robot (`RUNBOOK.md`, `runbook.json`), The Hot Gates. |
50
- | deep | A making-of log (`design/MAKING.md`: decision, numbers, lesson, one entry per lane). Show first: films or a proofs page the owner picks from, then build behind a flag, measure, merge. One lane per worktree. | Held Note (`design/MAKING.md`, `PERF.md`, frames at 0:10, 1:00, 2:00 as the definition of done), Pocket Crew, the Blue Freight plan. |
48
+ | small | The GDD and one target frame of the moment that sells the game; the meta layer (stars, collection, a map of levels) planned with the mechanic, not after it. | Four casual puzzle games: a one-second mechanic, a meta layer, many levels. |
49
+ | mid | A target frame per place or level, the story's beats as ids the game reports, progress saved per level or chapter, and a runbook of what proves each step. The plan is also a spec folder the game loads (`design/spec/`: every number in `tunables.json`, rooms and chapters as data with pars, slice first; `funtools spec init`, skill `funpixel-gdd`, references/spec-folder.md). | One game (`GAME.md`, `QUALITY_BAR.md`, design addenda per pass), another (`RUNBOOK.md`, `runbook.json`), a third. |
50
+ | deep | A making-of log (`design/MAKING.md`: decision, numbers, lesson, one entry per lane). Show first: films or a proofs page the owner picks from, then build behind a flag, measure, merge. One lane per worktree. | One game (`design/MAKING.md`, `PERF.md`, frames at 0:10, 1:00, 2:00 as the definition of done), another, and one game's plan. |
51
51
 
52
52
  Lanes at deep: `npx @funpixel/tools lanes plan` splits a build stage into lanes, each with a brief,
53
53
  its own paths, a spend cap, a time-box and a merge gate; `lanes merge` lands one only after a seat
54
54
  that did not build it passes it and the owner has picked between any candidates (`/fp:lanes`).
55
- Lane hygiene, from Held Note's builder. Use one worktree per lane, never `git stash` (it is
55
+ Lane hygiene, from one game's builder. Use one worktree per lane, never `git stash` (it is
56
56
  shared across worktrees), and never rewrite history. Never run two headless Blender jobs at once:
57
57
  their dialogs land on the owner's screen. A stale build fools a screenshot, so rebuild before every
58
58
  capture. The owner's screenshots become named before-frames.
@@ -61,17 +61,17 @@ capture. The owner's screenshots become named before-frames.
61
61
 
62
62
  | Setting | What it adds | Seen in |
63
63
  |---|---|---|
64
- | small | One palette in code (a `palette.ts` or the style tokens) and one verbatim style block every generation carries. | The Joydle slate's casual games. |
65
- | mid | Reference sheets before any art (`ref-*` in `assets/assets.json`). Several draws per item, the most on-palette one kept (`assets gen` scores each by hue against the palette and warns under 55%). Every provider original kept in `assets/raw/`, with a line per job in `assets/costs.jsonl`. Colour ownership: one colour, one meaning. | The Last Good Robot (`tools/luminance.mjs`, `contact-sheet.mjs`, `asset-coverage.mjs`), Dead Letter (`ASSETS.md`), the harness games' `forge.mjs` palette scoring. |
66
- | deep | Identity locks for every recurring design (GDD `## Identity lock`, skill `funpixel-gdd`). The 3D line: reference images, then the model, then the original kept with its request id and seed, then cleanup on the bench, then two tiers (phone and HD). Hard-surface pieces are rebuilt or baked from the high-poly onto clean geometry. A decimated AI mesh looks melted, and no shader fixes it. Materials are normalised in code and in the files. | Held Note (`sources/`, `design/assets.md`, models and models/hd), Pocket Crew (raw art kept with request ids and seeds), Blue Freight (seven redraws on-model at the first try once the sheets existed). |
64
+ | small | One palette in code (a `palette.ts` or the style tokens) and one verbatim style block every generation carries. | The studio's casual games. |
65
+ | mid | Reference sheets before any art (`ref-*` in `assets/assets.json`). Several draws per item, the most on-palette one kept (`assets gen` scores each by hue against the palette and warns under 55%). Every provider original kept in `assets/raw/`, with a line per job in `assets/costs.jsonl`. Colour ownership: one colour, one meaning. | One game (`tools/luminance.mjs`, `contact-sheet.mjs`, `asset-coverage.mjs`), another (`ASSETS.md`), the harness games' `forge.mjs` palette scoring. |
66
+ | deep | Identity locks for every recurring design (GDD `## Identity lock`, skill `funpixel-gdd`). The 3D line: reference images, then the model, then the original kept with its request id and seed, then cleanup on the bench, then two tiers (phone and HD). Hard-surface pieces are rebuilt or baked from the high-poly onto clean geometry. A decimated AI mesh looks melted, and no shader fixes it. Materials are normalised in code and in the files. | One game (`sources/`, `design/assets.md`, models and models/hd), another (raw art kept with request ids and seeds), a third (seven redraws on-model at the first try once the sheets existed). |
67
67
 
68
68
  ## Verify, the QA loop
69
69
 
70
70
  | Setting | What it adds | Seen in |
71
71
  |---|---|---|
72
72
  | small | Rules tests with a seed (same seed and inputs, same round), `verify`, `look --hud` at phone size, `feel`, and one blind phone player. | Every funtools starter ships the seed test. |
73
- | mid | Bots on several seeds through every level (`sim`, per-level curves; `rooms` for a spec folder's rooms, each against its par), a replay test, a boot test where storage throws (the starter's `test/platform.test.ts`), and fixed-framing before and after on every visual change: `capture --all` then `compare` at desktop 1280x720 and phone 844x390, plus a short film (`clip`). | The Last Good Robot (`src/test/sim.test.ts`, `platform.test.ts`, `tools/release-check.mjs`, `bless-check.mjs`), Dead Letter (`scripts/screen-audit.mjs`, `smoke.mjs`, audio pause tests), The Hot Gates (`src/test/`). |
74
- | deep | Blind phone players from the title, with no view jumps, as the gate a panel cannot replace (a wrong kit fact sank one version that panels passed). An interleaved A/B phone profile: 844x390 at 3x, CPU slowed four times, a fixed seed, reading p95, long frames and mid-play shader compiles (`profile --viewport phone --throttle 4 --seed 7 --compare`). Evidence per lane in the making-of log. | Held Note (`design/PERF.md`, `tools/profile.mjs`, `tools/compare.mjs`), Pocket Crew (a 3.7 s splash fooled the captures; the fixes were level design: practice zones, camera volumes, a landing ring). |
73
+ | mid | Bots on several seeds through every level (`sim`, per-level curves; `rooms` for a spec folder's rooms, each against its par), a replay test, a boot test where storage throws (the starter's `test/platform.test.ts`), and fixed-framing before and after on every visual change: `capture --all` then `compare` at desktop 1280x720 and phone 844x390, plus a short film (`clip`). | One game (`src/test/sim.test.ts`, `platform.test.ts`, `tools/release-check.mjs`, `bless-check.mjs`), another (`scripts/screen-audit.mjs`, `smoke.mjs`, audio pause tests), a third (`src/test/`). |
74
+ | deep | Blind phone players from the title, with no view jumps, as the gate a panel cannot replace (a wrong kit fact sank one version that panels passed). An interleaved A/B phone profile: 844x390 at 3x, CPU slowed four times, a fixed seed, reading p95, long frames and mid-play shader compiles (`profile --viewport phone --throttle 4 --seed 7 --compare`). Evidence per lane in the making-of log. | One game (`design/PERF.md`, `tools/profile.mjs`, `tools/compare.mjs`), another (a 3.7 s splash fooled the captures; the fixes were level design: practice zones, camera volumes, a landing ring). |
75
75
 
76
76
  ## One structure that has worked
77
77
 
@@ -79,10 +79,10 @@ Not required; the outcome is what checks read. The owner's deeper games split an
79
79
  `src/sim/` (fixed step, seeded, cloneable, so a save is a `structuredClone` and bots play whole
80
80
  chapters) from `src/view/` (the engine draws the sim and decides nothing) and `src/ui/` (Preact
81
81
  screens and HUD). Tests drive the sim with bots on several seeds. Every view lane can then prove the
82
- sim untouched. See The Last Good Robot, The Hot Gates and Held Note. The funtools starters keep the
82
+ sim untouched. The funtools starters keep the
83
83
  same split in small: `rules.ts` engine-free and seeded, `game.ts` drawing it.
84
84
 
85
- The 3D starter's quality tier follows the GPU, never `pointer: coarse` (Held Note
85
+ The 3D starter's quality tier follows the GPU, never `pointer: coarse` (one game's
86
86
  `src/view/device.ts`). A desktop window in touch emulation reports a coarse pointer and would get the
87
87
  phone's budget; the touch layout still follows the pointer.
88
88
 
@@ -1,7 +1,7 @@
1
1
  # What makes each section strong
2
2
 
3
- Distilled from the team's GDDs (The Last Good Robot, The Hot Gates) and five the owner wrote end
4
- to end on 28–29 September (Pocket Crew, a deep-sea horror, a kart racer, a frozen metroidvania, a
3
+ Distilled from two of the team's GDDs and five the owner wrote end
4
+ to end on 28–29 September (a crew platformer, a deep-sea horror, a kart racer, a frozen metroidvania, a
5
5
  marionette party game). Each row: what the strong version holds, what the thin version looks like,
6
6
  and the example that made the difference. `funtools gdd` looks for the evidence in the strong
7
7
  column; it cannot tell a good design from a long one, so use it as a checklist, not a grade.
@@ -18,7 +18,7 @@ The robot game's smile (a face flickers onto every defeated robot) and the Greek
18
18
  (the count over the army is health, weapon and story) are theses you can see. The owner's horror
19
19
  design adds a top-five table: the one reason each hit worked, and what a naive version of our game
20
20
  would lack. For each big choice, name the answer everyone reaches for first and the answer of someone
21
- merely avoiding it, then choose past both; write them down as "Ruled out: X · Y" (the Held Note: guns
21
+ merely avoiding it, then choose past both; write them down as "Ruled out: X · Y" (the horror game: guns
22
22
  and gore, then no combat at all, then a welder that cuts the enemies' limbs). A pillar with its **risk** beside it ("horror on a phone:
23
23
  risky, since a lit room and a small screen flatten fear; answered by a brightness step and sound
24
24
  drawn as arcs") is a
@@ -33,7 +33,7 @@ optimum named, and the rule that makes it lose (panic-firing pays nothing; weldi
33
33
  you out of gas). Thin: numbers with no reasons, or a loop with "and also" in it, which is two games.
34
34
  The numbers are targets until a test pins them; say so. Give each verb its **price** (weld a door:
35
35
  hold 1.5 s, 25 gas, and the room beyond is gone for good): a verb that costs nothing stops being a
36
- choice. Play one level's economy on paper before code, as a middling player would (the Held Note's
36
+ choice. Play one level's economy on paper before code, as a middling player would (the horror game's
37
37
  chapter 2 needed 187 gas across cuts, burns, a pin and a door, so it placed 1.3 × 187 = 243).
38
38
 
39
39
  ## Opening (the first minute)
@@ -57,7 +57,7 @@ in its tell at a time; never spawn in view; each kind debuts alone) are what mak
57
57
  Give each kind something it **takes** besides health (the resource, time, the route, a connection,
58
58
  your attention, your plan): a roster where every kind only takes health is one enemy in different
59
59
  coats. A tell stays honest when an enemy that chooses a target takes the nearest, never a random one,
60
- and online it adds the round trip (Break a Leg! uses 0.8 s against about 300 ms of phone lag).
60
+ and online it adds the round trip (the marionette party game uses 0.8 s against about 300 ms of phone lag).
61
61
 
62
62
  ## Look
63
63
 
@@ -66,7 +66,7 @@ colour for "you", one for "hurts", one for "you can touch this"); a font chosen
66
66
  asset economy (what is generated, what is built in code, how many); **five AD rules**, each
67
67
  checkable in one frame (a colour count, a size at which a thing reads, where grime may and may
68
68
  not live); and **target frames**: the key art plus four whole frames of the ladder's moments, each
69
- saying which claim it pins. Held Note's were timed to its ladder (0:10, 1:00, 2:00, 3:00, 5:00), so
69
+ saying which claim it pins. The horror game's were timed to its ladder (0:10, 1:00, 2:00, 3:00, 5:00), so
70
70
  captures of the same seconds could be laid beside them (skill `funpixel-art`).
71
71
  Thin: "stylised and colourful". The owner's docs keep the style words
72
72
  in one file and repeat them word for word in every prompt; reference sheets pin each recurring
@@ -113,7 +113,7 @@ controls) before any content; when time runs short, the dressing shrinks, never
113
113
 
114
114
  ## Requests against the pillars, and the pillar audit
115
115
 
116
- Held Note (the owner's deep-sea horror game, September 2026) was audited against its own GDD
116
+ The owner's deep-sea horror game (September 2026) was audited against its own GDD
117
117
  mid-build: an agent graded every beat on both platforms, about 6.6 of 10 against the plan. The
118
118
  lesson was that requests made mid-build can quietly break a pillar. "Add guns" broke "you have no
119
119
  gun", "make her faster" broke the one-canister economy (its chapter bots could no longer afford the
@@ -9,11 +9,11 @@ loads at build time.
9
9
 
10
10
  Our real games were built this way, and the GDK's games were not.
11
11
 
12
- - **Gallery Heist** was built against `design/gdd/spec/`, written before code. Its README set the
12
+ - **One heist game** was built against `design/gdd/spec/`, written before code. Its README set the
13
13
  order of reading. Its `tunables.json` held every number with an id, a default, a range, a unit,
14
14
  a why and the tests that pin it. It grew from 652 to 941 tunables while lanes built, because each
15
15
  lane wrote its numbers back. It had six rooms whose pars add up to an 18-minute night.
16
- - **Held Note** and **Pocket Crew** kept their levels as data with tested laws, and their bots
16
+ - **Two others** kept their levels as data with tested laws, and their bots
17
17
  finished every level on several seeds.
18
18
  - The GDK games were one screen and one GDD, with the numbers in a markdown table that nothing loaded.
19
19
 
@@ -110,7 +110,7 @@ near its par.
110
110
  `funtools spec lint` checks the folder against itself and the code, and records `.funtools/spec.json`.
111
111
  The GDD stage reads that record past the small tier. It checks:
112
112
 
113
- - the sections the tier needs (Gallery Heist's names count: `crew.md`, `fun-and-difficulty.md`, `sfx.md`);
113
+ - the sections the tier needs (the heist game's names count: `crew.md`, `fun-and-difficulty.md`, `sfx.md`);
114
114
  - every default inside its own range, ids used once, and the tests they name;
115
115
  - unknown ids in the code, the rooms or the spec files (a `P-TUNE-` proposal is a note);
116
116
  - tunables the code never reads, and a tunable's number still typed into `src/`;
@@ -1,9 +1,8 @@
1
1
  # The path, step by step
2
2
 
3
3
  The brief's path, step by step. This is the long form: what each step is for, the tool that helps,
4
- and the signal that says it is done. It is how the owner's best games were made (Held Note's
5
- `design/MAKING.md` writes it down end to end; Gallery Heist, Pocket Crew, The Last Good Robot and
6
- The Hot Gates ran the same way): a plan that is a contract, target frames that show what done
4
+ and the signal that says it is done. It is how the owner's best games were made (one game's
5
+ `design/MAKING.md` writes it down end to end; four others ran the same way): a plan that is a contract, target frames that show what done
7
6
  looks like, the sim first, assets generated and made to behave, and every round spent closing the
8
7
  gap between the game and its targets.
9
8
 
@@ -112,7 +111,7 @@ green throughout.
112
111
  game goes chapter by chapter (the GDD's `## Chapters`, the `chapters` stage): plan the chapter with
113
112
  the owner, make its target frames first, build it to them, show it, and open the next only on their
114
113
  yes (`note verdict chapter:<id> accept "<their words>"`). Fold a
115
- mid-build request back into the pillars before you build it: Held Note's "add guns", "make her
114
+ mid-build request back into the pillars before you build it: one game's "add guns", "make her
116
115
  faster" and "make maneuvers easier" each broke a stated rule until they were folded back.
117
116
  **Done when:** the content list is reached in play.
118
117
 
@@ -1,6 +1,6 @@
1
1
  # The world and its identities
2
2
 
3
- Blue Freight, one pitch (a courier walks a sleeping child across six moons), was planned twice on
3
+ One pitch (a courier walks a sleeping child across six moons), was planned twice on
4
4
  30 September 2026. The plan made through the kit had the better mechanics and story. The plan
5
5
  written by hand had the better world and held together: every place drawn, every recurring design
6
6
  the same in every picture. Its panel never complained of drift; the kit plan's panel named drift as
@@ -11,7 +11,7 @@ or a decline, a two-hour game gets all of it.
11
11
  ## Identity lock
12
12
 
13
13
  A game made of generated pictures drifts unless its designs are pinned. Across the first thirteen
14
- Blue Freight images the courier's hair, jacket and trousers changed from picture to picture, the
14
+ images the courier's hair, jacket and trousers changed from picture to picture, the
15
15
  ship was a different ship in each shot, and the walker robot was two robots. A studio fixes this
16
16
  with model sheets; so does the plan.
17
17
 
@@ -25,7 +25,7 @@ with model sheets; so does the plan.
25
25
  - **Every later picture names its sheets**: as input references where the image tool takes them,
26
26
  and always in words (the sheet's `pins`: "short dark jaw-length hair, a scar through one
27
27
  eyebrow, a patched burnt-orange flight jacket"). With the sheets and the block, seven of seven
28
- Blue Freight redraws came back on-model on the first try, for $0.30.
28
+ redraws came back on-model on the first try, for $0.30.
29
29
 
30
30
  ```markdown
31
31
  ## Identity lock
@@ -146,7 +146,7 @@ place and screen row carries three short cells: **Wow** (the one thing a player
146
146
  shares there), **Fun** (what they do there that feels good) and **Hook** (why they keep going: a
147
147
  question, a promise, a reward ahead). An empty cell is a place nobody will talk about.
148
148
 
149
- `## The hook` puts the first minutes on the clock with 2 to 4 wow moments. Blue Freight's plan
149
+ `## The hook` puts the first minutes on the clock with 2 to 4 wow moments. The courier game's plan
150
150
  (v0.8) named four: the title (the lounge window lights up and a sky whale drifts past), 0:42 (the
151
151
  hatch opens and the camera pulls back over the Dry Sea), 1:00 (the first searchlight sweeps the
152
152
  valley and the crabs scatter), and about 3:00 (moths settle on the cradle and the child hums).
@@ -2,12 +2,12 @@
2
2
 
3
3
  Not every idea is worth building, and not every idea fills the length the owner wants. Say so at the
4
4
  pitch, with numbers, before a single first-look picture is paid for. The owner asked for exactly this
5
- (4 Oct 2026): "If Wind Orchard is not a game to play 1.5 hours, challenge me; not every idea is worth
5
+ (4 Oct 2026): "If [this game] is not a game to play 1.5 hours, challenge me; not every idea is worth
6
6
  building; size the story and the game; also the best games in similar genres."
7
7
 
8
8
  ## Why
9
9
 
10
- Wind Orchard's GDD promised 30 minutes "in 5 chapters of 2 flights each, about 3 minutes each". Its
10
+ One game's GDD promised 30 minutes "in 5 chapters of 2 flights each, about 3 minutes each". Its
11
11
  own numbers said one flight is about 70 s and there are 10 flights: about 12 minutes of flight. Four
12
12
  areas whose frames look alike, three graft kinds, one character, no progression beyond a score. The
13
13
  genre's best that it cited hold one to three hours with a distinct place every 15–20 minutes. Nobody
@@ -63,10 +63,10 @@ and `greenlight lock` waits for their answer. Under the owner's own autonomy
63
63
  question again with that evidence. Short in content, never bare in look: build it in the game's own
64
64
  starter and camera and dress it with what the first look already made (title, how-to-play, the HUD
65
65
  on phone and desktop, one real place, the hero, the sounds and music, the core verb's juice). A grey
66
- page beside the game is not a prototype the owner can judge (Wind Orchard, 5 Oct: "this initial look
66
+ page beside the game is not a prototype the owner can judge (the same game, 5 Oct: "this initial look
67
67
  is worst of all I have seen").
68
68
 
69
- ## Wind Orchard, read
69
+ ## That game, read
70
70
 
71
71
  At the owner's 90 minutes: prove the core first (11.7 of 90 minutes; +2 places, a meta; recommended:
72
72
  the prototype). At 20 minutes: stretch (+9 minutes of play and a meta; recommended: shrink to the
@@ -50,7 +50,7 @@ games were phone layout: [references/phone-check.md](references/phone-check.md))
50
50
  6. **The gesture before the button.** Phone hits take the move on the play itself and give the
51
51
  freed screen to the board: a puzzle swipe or drag that previews where it goes (Threes, Two
52
52
  Dots), a maze swipe anywhere that queues the next turn (Pac-Man 256). A pad repeating the
53
- swipe reads as a desktop port (Floe, Riad Rush). Buttons earn a place where no gesture
53
+ swipe reads as a desktop port. Buttons earn a place where no gesture
54
54
  carries the action, or as an accessibility setting. `data-fpx-gesture="ArrowLeft …"` on the
55
55
  swiped or dragged element claims those keys (a lift that fires: `Space`) for key parity;
56
56
  on a phone `look --hud` reports `play_area_share` and `controls_duplicate_gesture`
@@ -100,8 +100,8 @@ A portrait block puzzle, fixing a phone report:
100
100
 
101
101
  - A rotate card over a blank screen, or none on a landscape game.
102
102
  - Trusting `safeArea.insets()` without the `--sai-*` bridge: zeros, and the HUD hugs the edge.
103
- - A toast per repeat: ×n badges heap over play (the Gesundheit `look --hud` found eight at once).
103
+ - A toast per repeat: ×n badges heap over play (one game's `look --hud` found eight at once).
104
104
  - A tip banner over the board: a ghost finger that swipes once and fades at the first move teaches
105
105
  by play.
106
106
  - A layer faded to opacity 0 but left in the tree: it still covers the play and still animates
107
- (Held Note's HUD read 41% until faded layers went `visibility: hidden`).
107
+ (one game's HUD read 41% until faded layers went `visibility: hidden`).
@@ -1,7 +1,7 @@
1
1
  # The HUD as data, and a real title
2
2
 
3
3
  Styled ad hoc, one CSS rule at a time, both surfaces drift to the default: a score top left, lives
4
- top right, a white sans-serif, a title that is a heading and a button. Dead Letter's bar names that
4
+ top right, a white sans-serif, a title that is a heading and a button. One game's bar names that
5
5
  layout as the mark of an unauthored game.
6
6
 
7
7
  ## The HUD is a list and a theme
@@ -44,9 +44,9 @@ export const HUD = [
44
44
  - **The data is this game's.** There is no preset to pick; a shared preset is how every game ends
45
45
  up with the same HUD.
46
46
 
47
- ## A 3D action HUD on a phone: what Held Note measured
47
+ ## A 3D action HUD on a phone: what one game measured
48
48
 
49
- Held Note (a three.js horror game, 29 Sep 2026) put what it could on the hero's model (collar
49
+ A three.js horror game (29 Sep 2026) put what it could on the hero's model (collar
50
50
  lights for health, a gas tube, a wrist dial) and kept on the glass only what the hands can do now:
51
51
  a contextual key bar on desktop (explore, fight, grab, hold with its progress), a thumb cluster on
52
52
  touch (a stick that appears under the thumb, a button whose word changes with the moment, a hold
@@ -117,7 +117,7 @@ Chromium at a phone size misses WebKit's own behaviour: audio that unlocks only
117
117
  Chrome and not in Safari. Each look below catches more and costs more; use each where it is cheapest.
118
118
 
119
119
  Safari's bars take about 160 px of an upright phone's height, and the 390x844 review frames have
120
- none: Plush Pop's basket filled 86% of the width in them and 60% on the owner's iPhone, because it
120
+ none: one game's basket filled 86% of the width in them and 60% on the owner's iPhone, because it
121
121
  was sized by the height. `look --hud --viewport phone` measures the play again on the page Safari
122
122
  leaves (390x684) and saves that frame beside its own (`hud-playing-phone-safari.png`);
123
123
  `capture --viewport phone --safari` shoots any view there (724x283 held sideways). Judge a phone
@@ -78,7 +78,7 @@ The JavaScript first guess matters: review browsers emulate touch through `match
78
78
  The hits of the genre give the phone's screen to the board and take the move on it: Threes and
79
79
  2048 slide on a swipe anywhere, Two Dots on a drag through the dots, Monument Valley on a tap in
80
80
  the world. The player's eyes stay on the board, and a pad under it costs a third of the screen
81
- (Floe's first phone build: a 5×5 board under half the screen, four arrows plus Undo, Restart and
81
+ (one ice puzzle's first phone build: a 5×5 board under half the screen, four arrows plus Undo, Restart and
82
82
  Hint panels in the bottom third, all repeating what the swipe already did).
83
83
 
84
84
  ```ts
@@ -75,21 +75,21 @@ Measure the inset on the picture (where the corner ornament ends), and read the
75
75
  smallest size: a corner that is larger than half the smallest plate squeezes. A button's pressed and
76
76
  disabled states can be the same picture filtered, or a second generation with the same reference.
77
77
 
78
- What the Fold Room proof ran into (30 Sep):
78
+ What the sandstone proof ran into (30 Sep):
79
79
  - `border-image` owns the border: it ignores `border-radius` (a round button under a plate rule
80
80
  turns square and loses its glow; give discs `border-image: none` and draw them as a medallion,
81
81
  a bevelled border and an inlaid centre) and `border-color` (a warning state that recolours the
82
- border does nothing; use a glow). Lantern Night hit the second.
82
+ border does nothing; use a glow). The lantern game hit the second.
83
83
  - A pale plate cannot carry the world's light colours: cyan, amber and magenta measured 1.3 to
84
84
  1.9:1 on sandstone. A dark inlay (a deep umber medallion behind the icon, 5.8 to 14:1) carries
85
85
  them and still reads as stone.
86
86
  - An ink derived to exactly 4.5:1 measured lower on the rendered frame (glyph edges blend):
87
- Lantern Night's small HUD numbers needed 5 to 5.5:1 on paper.
87
+ The lantern game's small HUD numbers needed 5 to 5.5:1 on paper.
88
88
  - A one-off class on a `button.primary` loses to `button.primary`'s own rule (element plus class
89
89
  outweighs a class): select it as `button.my-class`.
90
90
 
91
91
  The wordmark is generated alone on a plain field in the world's material, then keyed or cropped and
92
- placed as `<img src="/ui/wordmark.png" alt="Fold Room">`; its size comes from `clamp()` so it fits a
92
+ placed as `<img src="/ui/wordmark.png" alt="Game name">`; its size comes from `clamp()` so it fits a
93
93
  phone upright and sideways. Read every letter before using it; when a name will not come out right
94
94
  after one redraw, the display face with a carved treatment (below) is the honest fallback.
95
95
 
@@ -120,7 +120,7 @@ A hint drawn as the world's own object (a lit lamp, a snowflake, a paper crane)
120
120
  bulb. Put the set on one sheet at 24 and 48 px on the plate colour and compare it with the cast
121
121
  before the game uses it.
122
122
 
123
- ## Worked example 1: Fold Room, sandstone plaques
123
+ ## Worked example 1: a sandstone puzzle, plaques
124
124
 
125
125
  **Before** (R7, iPhone, landscape): the court is warm carved sandstone at sunset; the HUD is dark
126
126
  navy pills (`rgba(10, 13, 28, 0.82)`) with cyan outlines, `ui-rounded` system type and the
@@ -157,7 +157,7 @@ button.fold-start .arch-glow { animation: arch-glow 2.4s ease-in-out infinite; }
157
157
  The ink `#3a2618` on the plaque is 6.3:1, so the goal line reads on any wall. Colour still means
158
158
  what the rooms mean: a step's icon takes the tone of the light it names, on its umber inlay.
159
159
 
160
- **The title:** the court itself behind; "FOLD ROOM" as generated carved-sandstone lettering on a
160
+ **The title:** the court itself behind; the game's name as generated carved-sandstone lettering on a
161
161
  plaque (about a third of the width sideways, the upper band upright) with the caption carved in
162
162
  Cinzel under it; Play as "Step in", a small stone arch whose opening glows the fold's cyan, low in
163
163
  the thumb zone and clear of the real doorway; sound, help and settings as stone medallions.
@@ -165,7 +165,7 @@ the thumb zone and clear of the real doorway; sound, help and settings as stone
165
165
  in play; on the title, the wordmark in its own face. The busiest views came down from 26% HUD cover
166
166
  to 25%, and verify still passes 22 of 22.
167
167
 
168
- ## Worked example 2: Lantern Night, paper lanterns
168
+ ## Worked example 2: a lantern garden, paper lanterns
169
169
 
170
170
  **Before** (owner, iPhone, 30 Sep): a glowing wordmark, then a small dark board preview (about 40%
171
171
  of the width) floating in empty night sky, an orange Play pill, an outlined "Gardens" button and
@@ -205,7 +205,7 @@ under it, and sound, help and settings as small lantern icons in the top corner.
205
205
  goes; the garden itself is the preview.
206
206
 
207
207
  **After** (the proof, 30 Sep, four generations for $0.10): the title key art as the backdrop,
208
- "LANTERN NIGHT" lettered onto a string of lanterns (spelled right first time, keyed out), paper
208
+ the game's name lettered onto a string of lanterns (spelled right first time, keyed out), paper
209
209
  tag plates nine-sliced on the HUD, Shippori Mincho and Zen Maru Gothic. `look --hud` went from all
210
210
  system type, 9 of 10 dark plates and the scaffold's glyphs to none of the three; verify still
211
211
  passes. Left for the next round: the HUD tags sit too close to the goal line.
@@ -214,9 +214,9 @@ passes. Left for the next round: the HUD tags sit too close to the goal line.
214
214
 
215
215
  | World | Plate | Edge | Motion |
216
216
  |---|---|---|---|
217
- | Frosted ice (Floe) | pale teal gradient, 70% opaque, `backdrop-filter: blur(6px)` | a 1 px bright top rim, soft inner glow | slides in and frosts from the edge |
218
- | Carved wood (Riad Rush) | warm brown with a darker grain band | 3 px ink outline, a hard 3 px drop | drops and bounces once |
219
- | Plush and felt (Plush Pop) | soft pastel, `border-radius` 40% | a dashed stitch 4 px inside the edge | squashes on press |
217
+ | Frosted ice | pale teal gradient, 70% opaque, `backdrop-filter: blur(6px)` | a 1 px bright top rim, soft inner glow | slides in and frosts from the edge |
218
+ | Carved wood | warm brown with a darker grain band | 3 px ink outline, a hard 3 px drop | drops and bounces once |
219
+ | Plush and felt | soft pastel, `border-radius` 40% | a dashed stitch 4 px inside the edge | squashes on press |
220
220
 
221
221
  ## What not to do
222
222
 
@@ -1,26 +1,26 @@
1
1
  # Screens and HUD on a phone
2
2
 
3
- UI fit was the most frequent owner correction across the Unity games, and mobile UI passes took 3 rounds on The Hot Gates and 6 or more on Dawg Ball. The failure this skill prevents is an audit that reports 0 issues while the phone shows broken UI: Dawg Ball's capture audit of 144 shots passed, then the owner found overflowing cards on a phone.
3
+ UI fit was the most frequent owner correction across the Unity games, and mobile UI passes took 3 rounds on one game and 6 or more on another. The failure this skill prevents is an audit that reports 0 issues while the phone shows broken UI: one game's capture audit of 144 shots passed, then the owner found overflowing cards on a phone.
4
4
 
5
5
  ## Tools
6
6
 
7
- The studio's `com.joydle.core` package carries the UGUI helper kit, `UiKit` (funpixel-unity-game, `references/studio-packages.md`): a canvas scaled at 1170×2532, match 0.5; a `Safe` rect from `Screen.safeArea`; `Panel`, `Img`, `Text`, `Button` (with a pop), `Card`, `Dim` and `FitToContent`, with text and images that take no taps. Not shipped by the kit or the package: the Unity starter, these checks, a font builder and the per-game audit and capture scripts. "Partial" below means a version exists in one studio's games, not in the kit. Until the starter ships, write each check as an Edit Mode or Play Mode test in your own project, capture screens on a Simulator of your own (`funtools sim lease`, then `funtools sim shot <udid> --out shot.png` after a launch with a dev flag per screen; a landscape game comes back upright), and look at every shot yourself.
7
+ Not shipped by the kit: the Unity starter, these checks, a UGUI helper kit of your own (a canvas scaled at 1170×2532, match 0.5; one safe rect from `Screen.safeArea`; text and images that take no taps), a font builder and the per-game audit and capture scripts. "Partial" below means a version exists in one studio's games, not in the kit. Until the starter ships, write each check as an Edit Mode or Play Mode test in your own project, capture screens on a Simulator of your own (`funtools sim lease`, then `funtools sim shot <udid> --out shot.png` after a launch with a dev flag per screen; a landscape game comes back upright), and look at every shot yourself.
8
8
 
9
9
  | Check | Passes when | Status |
10
10
  |---|---|---|
11
- | `ui_audit` | 0 overflows against parent panel and visible art, siblings under 8 units apart, taps under 44 pt, or items outside the safe area | partial: Porcelain Panic (a `-uicheck` launch flag), Hot Gates and Dawg Ball (screen capture scripts) |
11
+ | `ui_audit` | 0 overflows against parent panel and visible art, siblings under 8 units apart, taps under 44 pt, or items outside the safe area | partial: one game (a `-uicheck` launch flag), two others (screen capture scripts) |
12
12
  | `raycast_ownership` | a raycast at each button's centre hits that button | proposed |
13
- | `screen_sheet` | N of N registered screens and states captured | partial: Hot Gates; Dawg Ball (a `-db-tour` flag that writes every menu to PNG); `funtools unity capture --all` shoots every registered view |
14
- | `touch_wording` | 0 keyboard or gamepad words in visible text | partial: Dead Letter's smoke run |
15
- | `frame_law` | player head and feet on screen, at least 9% of screen height, every journey step | partial: Pocket Crew |
16
- | `hud_occlusion` | 0% of frames where the hero's or boss's opaque bounds cross a HUD rect | partial: Dead Letter, a probe |
17
- | `drawn_vs_solid` | drawn mesh bounds against collider bounds within the baseline per category | partial: Pocket Crew |
13
+ | `screen_sheet` | N of N registered screens and states captured | partial: one game; another (a tour flag that writes every menu to PNG); `funtools unity capture --all` shoots every registered view |
14
+ | `touch_wording` | 0 keyboard or gamepad words in visible text | partial: one game's smoke run |
15
+ | `frame_law` | player head and feet on screen, at least 9% of screen height, every journey step | partial: one game |
16
+ | `hud_occlusion` | 0% of frames where the hero's or boss's opaque bounds cross a HUD rect | partial: one game, a probe |
17
+ | `drawn_vs_solid` | drawn mesh bounds against collider bounds within the baseline per category | partial: one game |
18
18
 
19
19
  Also proposed: a TMP SDF font builder (use TMP's Font Asset Creator) and `glyph_coverage` (every UI character exists in the static TMP atlas; `TMP_FontAsset.HasCharacters` in a test does it).
20
20
 
21
21
  ## Procedure
22
22
 
23
- 1. Build every screen in code with UGUI and TextMeshPro. `UiKit` scales with screen size at 1170×2532, match 0.5 (portrait); Hot Gates uses constant pixel size where 1 unit is 1 web CSS px, so a ported layout keeps its numbers.
23
+ 1. Build every screen in code with UGUI and TextMeshPro. Scale with screen size at 1170×2532, match 0.5 (portrait); one port uses constant pixel size where 1 unit is 1 web CSS px, so a ported layout keeps its numbers.
24
24
  2. Fix orientation per game (puzzle and idle portrait, action landscape) in an editor setup method (`PlayerSettings.defaultInterfaceOrientation`, run with `-executeMethod`) and check it: cloned settings came up wrong twice.
25
25
  3. Size controls from this table.
26
26
 
@@ -29,33 +29,33 @@ Also proposed: a TMP SDF font builder (use TMP's Font Asset Creator) and `glyph_
29
29
  | Any tap target | 44 pt or more |
30
30
  | Hero call to action | 64 pt, one per screen, in the thumb zone |
31
31
  | Buttons | primary 44 pt, secondary 36 pt, icon plus a 15–16 pt label |
32
- | Thumb action buttons | 72–80 pt (Hot Gates); 56 units with a 20 gap (Dawg Ball) |
32
+ | Thumb action buttons | 72–80 pt (one game); 56 units with a 20 gap (another) |
33
33
  | Body text | 16 pt or more, 12 pt hard floor; HUD numerals 40 pt |
34
34
  | HUD share of screen | 25% or less; one 44 pt top row |
35
35
  | Margins and spacing | 24 pt or more from safe edges; spacing only 4/8/12/16/24/32 |
36
36
 
37
- 4. Take safe areas from `Screen.safeArea` through one helper (`UiKit.Safe`, read once when the kit is made: rebuild it if the screen changes). In landscape the full inset (about 60 pt each side) read as too much padding. Scrap Riot's own helper clears only the rounded corner (radius 62 pt) on the top and bottom rows and applies the full inset only on the island's side, in the band at 32–68% of height. Centre a split or versus layout on the real screen, not on the lopsided safe area. `Screen.cutouts` allocates on every call, so read it when the screen changes.
37
+ 4. Take safe areas from `Screen.safeArea` through one helper (rebuild it if the screen changes). In landscape the full inset (about 60 pt each side) read as too much padding. One game's own helper clears only the rounded corner (radius 62 pt) on the top and bottom rows and applies the full inset only on the island's side, in the band at 32–68% of height. Centre a split or versus layout on the real screen, not on the lopsided safe area. `Screen.cutouts` allocates on every call, so read it when the screen changes.
38
38
  5. Stay in touch mode on iOS. `touch_wording` runs the regex `Press|Enter|Esc|WASD|Click|Keyboard` over visible text and expects 0 hits.
39
- One input path: the new Input System only. Pocket Crew lays an invisible full-screen graphic under the HUD to take touch; HUD buttons are not raycast targets, and the game asks the HUD for a hit with a 44 pt minimum box. `Gamepad.current` covers MFi, Xbox and PlayStation pads. A twin-stick game defers the system's edge gestures (`PlayerSettings.iOS.deferSystemGesturesMode`, top and bottom) and hides the home indicator. Reduce Motion follows the system setting through a native plugin in Scrap Riot and Pocket Crew; the others have only a manual "screen effects" setting.
40
- 6. Use full fonts and warm every glyph behind the title. A web subset lacked Ş Ğ İ; Nunito lacks ▶ ◀ ★. First-use glyph baking cost 183–266 ms in Dawg Ball against 17–20 ms once warm.
39
+ One input path: the new Input System only. One game lays an invisible full-screen graphic under the HUD to take touch; HUD buttons are not raycast targets, and the game asks the HUD for a hit with a 44 pt minimum box. `Gamepad.current` covers MFi, Xbox and PlayStation pads. A twin-stick game defers the system's edge gestures (`PlayerSettings.iOS.deferSystemGesturesMode`, top and bottom) and hides the home indicator. Reduce Motion follows the system setting through a native plugin in two games; the others have only a manual "screen effects" setting.
40
+ 6. Use full fonts and warm every glyph behind the title. A web subset lacked Ş Ğ İ; Nunito lacks ▶ ◀ ★. First-use glyph baking cost 183–266 ms in one game against 17–20 ms once warm.
41
41
  7. Give a label its own hit area: text stretched over its parent with raycast on takes the parent's taps.
42
42
  8. Capture every state, not only every screen: scroll positions, fresh and full saves, extreme values, 125% and 150% text, and every mode's end screen. Register each state with `FunpixelProbe.View(name, enter)` (`com.funpixel.probe`); `funtools unity capture --all` shoots them all, upright and without the development watermark.
43
43
  9. Run `ui_audit` at SE, Pro, Pro Max and 2000×920 (the owner's phone). It compares text with the parent panel and the visible art: text checked against its own box passed overlapping labels.
44
44
  10. After every UI change, rebuild the all-screens sheet with before, now and reference columns and the same file names, so an open viewer stays current. Then self-review each screen from 100% crops.
45
45
  11. For play screens, run `frame_law`, `hud_occlusion` and `drawn_vs_solid`.
46
- 12. Keep a mobile pass to size, depth, placement, copy and motion. Palette, fonts and art stay: on Hot Gates the owner said style and identity are kept.
46
+ 12. Keep a mobile pass to size, depth, placement, copy and motion. Palette, fonts and art stay: on one game the owner said style and identity are kept.
47
47
 
48
48
  ## Worked example
49
49
 
50
- Dawg Ball, a landscape port. The capture audit ran at 2868×1320 and 1334×750, took 144 shots and reported 0 issues. On a phone the owner found broken dog cards: the Pick screen overflowed at 2000×920, a shape the audit never ran. Every capture had been a Quick Match, so a stuck vs-Bot result screen shipped. The owner asked for all screens in a sheet twice. Steps 8 to 10 came out of it.
50
+ A landscape port. The capture audit ran at 2868×1320 and 1334×750, took 144 shots and reported 0 issues. On a phone the owner found broken dog cards: the Pick screen overflowed at 2000×920, a shape the audit never ran. Every capture had been a Quick Match, so a stuck vs-Bot result screen shipped. The owner asked for all screens in a sheet twice. Steps 8 to 10 came out of it.
51
51
 
52
52
  ## Common mistakes
53
53
 
54
- - Checking text against its own box. In Porcelain Panic `-uicheck` passed while the 'SHOTS' label sat on a shield rim drawn with `preserveAspect`.
55
- - Capturing only the top of a scrolling sheet. Scrap Riot's roster labels were broken from the first port until the owner found them on a phone.
56
- - A label stretched over its card. `UiKit.Text()` put the Restore label over the whole shop card; taps on products showed "Restoring purchases" in four games, until `UiKit` text stopped taking taps.
57
- - Keyboard wording: Dead Letter showed "Press Enter to continue" on the Simulator; Hot Gates captures said "A / D to steer".
58
- - Naive safe areas: Scrap Riot's HUD corners moved from 74 to 38–43 px.
59
- - UGUI geometry: `Slider` stretches fill and thumb to the row height, and stretch anchors plus a non-zero `sizeDelta` double the width. Pocket Crew's Photo pill sat over the paywall's Done and took its taps.
60
- - A player nobody can see. Pocket Crew's Tiny Pip drew at about 2% of screen height; Dead Letter's boss heads sat under the boss bar in 100% of frames.
61
- - Art without a matching collider: 42 Pocket Crew props had none.
54
+ - Checking text against its own box. In one game `-uicheck` passed while the 'SHOTS' label sat on a shield rim drawn with `preserveAspect`.
55
+ - Capturing only the top of a scrolling sheet. One game's roster labels were broken from the first port until the owner found them on a phone.
56
+ - A label stretched over its card. A shared text helper put the Restore label over the whole shop card; taps on products showed "Restoring purchases" in four games, until its text stopped taking taps.
57
+ - Keyboard wording: one game showed "Press Enter to continue" on the Simulator; another's captures said "A / D to steer".
58
+ - Naive safe areas: One game's HUD corners moved from 74 to 38–43 px.
59
+ - UGUI geometry: `Slider` stretches fill and thumb to the row height, and stretch anchors plus a non-zero `sizeDelta` double the width. One game's Photo pill sat over the paywall's Done and took its taps.
60
+ - A player nobody can see. One game's smallest hero drew at about 2% of screen height; another's boss heads sat under the boss bar in 100% of frames.
61
+ - Art without a matching collider: 42 props in one game had none.
@@ -34,7 +34,7 @@ For a store listing test or an A/B across ad networks, write `design/compose/ads
34
34
  ```json
35
35
  { "hooks": [{ "line": "Bugs don't pop. They sneeze.", "moment": "chain" }, { "line": "One puff, fifteen sneezes", "moment": "chain-desktop" }],
36
36
  "ctas": ["Play now", "Play free"], "lengths": [6, 15, 30], "aspects": ["9:16", "1:1", "16:9"],
37
- "end_card": { "title": "Gesundheit!", "tagline": "Sneeze them all" }, "max": 12 }
37
+ "end_card": { "title": "Achoo!", "tagline": "Sneeze them all" }, "max": 12 }
38
38
  ```
39
39
 
40
40
  - A hook's `moment` is a capture by name (`chain-desktop`, from `capture --all`) or a view (`chain`,
@@ -57,7 +57,7 @@ install. Image processing and browser tests belong to your tools, outside the ga
57
57
  **Local links.** `file:` and `link:` dependencies, and workspace links to a folder that is not in
58
58
  the upload, cannot resolve on the server. Depend on published versions.
59
59
 
60
- **An unpinned SDK.** `@funpixel/sdk` is pinned exactly (`"0.6.0"`); a caret range can resolve to a
60
+ **An unpinned SDK.** `@funpixel/sdk` is pinned exactly (`"0.7.0"`); a caret range can resolve to a
61
61
  different build on the server than on your machine.
62
62
 
63
63
  **Path case.** Your disk may treat `Hero.png` and `hero.png` as one file; the server and the
@@ -32,8 +32,8 @@ button are the person's.
32
32
  or You.
33
33
  - `npx @funpixel/tools check`, `verify` and `capture --all`: the build measured; `funtools doctor`'s
34
34
  iOS release block names a missing certificate, Xcode account or App Store Connect key.
35
- - Unity: `funtools unity run -- … -executeMethod Joydle.Core.Editor.BuildTools.TestFlight` with the
36
- studio package, then `xcodebuild archive` and `-exportArchive`; `funtools sim lease` and
35
+ - Unity: `funtools unity run -- … -executeMethod Setup.BuildTestFlight`, the game's own build
36
+ method, then `xcodebuild archive` and `-exportArchive`; `funtools sim lease` and
37
37
  `sim shot` for screenshots; `ffprobe` before any preview upload.
38
38
 
39
39
  ## The audit, for any store
@@ -65,7 +65,7 @@ build only from a clean main. Every policy fact carries the day it was read and
65
65
 
66
66
  ## Worked example
67
67
 
68
- Four Unity games for Google Play (Joydle, 8 Oct 2026): no Android build ever made, Unity IAP already
68
+ Four Unity games for Google Play (8 Oct 2026): no Android build ever made, Unity IAP already
69
69
  on Play Billing 9, analytics in all four while two listings said "no analytics". Verdict: none can
70
70
  upload today, none is blocked. A shared Android foundation first (an AAB pinned to API 36, one upload
71
71
  key, the AD_ID permission removed, one back handler), then 2–8 days per game; the screenshots
@@ -54,7 +54,7 @@ prints these steps in order with this column.
54
54
  | App Privacy | Console | From the SDK list; not in the public API (`asc web privacy` only on the person's session). |
55
55
  | Price and availability | Script: `asc pricing` | |
56
56
  | In-app purchases, prices | Script: `asc iap` | |
57
- | The first in-app purchase on the version | Console | Ticked onto the version; whether `asc` can attach it was not verified (Pocket Crew's was dropped when submitted by API alone). |
57
+ | The first in-app purchase on the version | Console | Ticked onto the version; whether `asc` can attach it was not verified (one game's was dropped when submitted by API alone). |
58
58
  | Review details | Script: `asc review` | Notes, contact, a way to the paid content. |
59
59
  | Validate | Script: `asc validate --strict`, `asc release stage --dry-run` | |
60
60
  | Submit for review | You | `--submit` only after the person's go-ahead. |
@@ -1,6 +1,6 @@
1
1
  # Google Play
2
2
 
3
- From Joydle's Google Play readiness audit (8 Oct 2026, four Unity games), with what changes for a
3
+ From a Google Play readiness audit (8 Oct 2026, four Unity games), with what changes for a
4
4
  web game. Policy facts were read on that day from Google Play Console Help and developer.android.com;
5
5
  read them again before the page is final.
6
6
 
@@ -75,7 +75,7 @@ Managed publishing on, so an approved release waits for a click. One game at a t
75
75
  account's first review can take 7 days or more. A staged rollout of 10–20%, then 100%, watching
76
76
  crash rate (under 1.09%) and ANR rate (under 0.47%) in Android vitals.
77
77
 
78
- ## Who does each step (Dead Letter, 8 Oct 2026)
78
+ ## Who does each step (one game, 8 Oct 2026)
79
79
 
80
80
  The first game went from its first Android build to Send for review in about 5 hours, but almost every
81
81
  console form was filled by an agent driving Chrome, because there was no Play API access. Set the API