@funpixel/tools 0.0.0-stage → 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 (2414) hide show
  1. package/LICENSE +115 -0
  2. package/NOTICE +28 -0
  3. package/README.md +110 -2
  4. package/bench/LICENSE +674 -0
  5. package/bench/README.md +10 -0
  6. package/bench/entrypoint.py +94 -0
  7. package/bench/handlers/__init__.py +53 -0
  8. package/bench/handlers/apply_skin.py +192 -0
  9. package/bench/handlers/apply_texture.py +195 -0
  10. package/bench/handlers/audit_clips.py +351 -0
  11. package/bench/handlers/author_clips.py +297 -0
  12. package/bench/handlers/author_motion.py +298 -0
  13. package/bench/handlers/bake_emissive.py +136 -0
  14. package/bench/handlers/build_level.py +395 -0
  15. package/bench/handlers/decimate.py +220 -0
  16. package/bench/handlers/fit_rig.py +273 -0
  17. package/bench/handlers/fracture.py +233 -0
  18. package/bench/handlers/humanoid.py +119 -0
  19. package/bench/handlers/inspect.py +212 -0
  20. package/bench/handlers/level_check.py +68 -0
  21. package/bench/handlers/level_geo.py +150 -0
  22. package/bench/handlers/level_proof.py +117 -0
  23. package/bench/handlers/level_props.py +135 -0
  24. package/bench/handlers/lod.py +83 -0
  25. package/bench/handlers/merge_clips.py +122 -0
  26. package/bench/handlers/mirror_limb.py +336 -0
  27. package/bench/handlers/motion_specs.json +11 -0
  28. package/bench/handlers/normalize_materials.py +182 -0
  29. package/bench/handlers/normalize_transform.py +174 -0
  30. package/bench/handlers/prune_clips.py +141 -0
  31. package/bench/handlers/raster.py +98 -0
  32. package/bench/handlers/render.py +239 -0
  33. package/bench/handlers/render_views.py +101 -0
  34. package/bench/handlers/retarget_clips.py +185 -0
  35. package/bench/handlers/scene.py +311 -0
  36. package/bench/handlers/sheet.py +118 -0
  37. package/bench/handlers/texels.py +176 -0
  38. package/bench/handlers/views.py +232 -0
  39. package/dist/api/generated/openapi.js +1 -0
  40. package/dist/api/http.js +71 -0
  41. package/dist/api/jobs.js +94 -0
  42. package/dist/assets/bakeoff.js +61 -0
  43. package/dist/assets/counts.js +60 -0
  44. package/dist/assets/gen.js +230 -0
  45. package/dist/assets/lock.js +77 -0
  46. package/dist/assets/manifest.js +236 -0
  47. package/dist/assets/palette-fit.js +99 -0
  48. package/dist/assets/pixelart.js +192 -0
  49. package/dist/assets/pixels.js +131 -0
  50. package/dist/assets/plan.js +169 -0
  51. package/dist/assets/process.js +209 -0
  52. package/dist/assets/script.js +194 -0
  53. package/dist/assets/steps.js +294 -0
  54. package/dist/bin.js +8 -0
  55. package/dist/board/board.js +99 -0
  56. package/dist/cast/library.js +102 -0
  57. package/dist/cast/measure.js +222 -0
  58. package/dist/cli.js +2917 -0
  59. package/dist/clip/clip.js +83 -0
  60. package/dist/commands/account.js +158 -0
  61. package/dist/commands/assets-pixels.js +106 -0
  62. package/dist/commands/assets.js +473 -0
  63. package/dist/commands/beats.js +77 -0
  64. package/dist/commands/board.js +162 -0
  65. package/dist/commands/boxes.js +89 -0
  66. package/dist/commands/capture-all.js +92 -0
  67. package/dist/commands/cast.js +84 -0
  68. package/dist/commands/character.js +58 -0
  69. package/dist/commands/check.js +404 -0
  70. package/dist/commands/clip.js +112 -0
  71. package/dist/commands/compare-takes.js +204 -0
  72. package/dist/commands/compare-target.js +149 -0
  73. package/dist/commands/compare.js +117 -0
  74. package/dist/commands/compose-variations.js +202 -0
  75. package/dist/commands/compose.js +163 -0
  76. package/dist/commands/cut.js +13 -0
  77. package/dist/commands/decide.js +90 -0
  78. package/dist/commands/depth.js +171 -0
  79. package/dist/commands/dev.js +138 -0
  80. package/dist/commands/directions.js +106 -0
  81. package/dist/commands/doctor.js +281 -0
  82. package/dist/commands/export.js +88 -0
  83. package/dist/commands/feedback.js +496 -0
  84. package/dist/commands/feel.js +144 -0
  85. package/dist/commands/fidelity.js +95 -0
  86. package/dist/commands/find.js +116 -0
  87. package/dist/commands/firstlook.js +138 -0
  88. package/dist/commands/flow.js +600 -0
  89. package/dist/commands/framing.js +53 -0
  90. package/dist/commands/gdd.js +227 -0
  91. package/dist/commands/gen.js +512 -0
  92. package/dist/commands/greenlight.js +148 -0
  93. package/dist/commands/hook.js +171 -0
  94. package/dist/commands/init.js +234 -0
  95. package/dist/commands/inspect.js +161 -0
  96. package/dist/commands/job.js +41 -0
  97. package/dist/commands/jobs.js +87 -0
  98. package/dist/commands/journal.js +58 -0
  99. package/dist/commands/journey.js +228 -0
  100. package/dist/commands/judge.js +191 -0
  101. package/dist/commands/lanes.js +571 -0
  102. package/dist/commands/lessons.js +74 -0
  103. package/dist/commands/life.js +134 -0
  104. package/dist/commands/login.js +134 -0
  105. package/dist/commands/look-3d.js +105 -0
  106. package/dist/commands/look-fit.js +116 -0
  107. package/dist/commands/look-hud.js +180 -0
  108. package/dist/commands/look-read.js +162 -0
  109. package/dist/commands/look-sheet.js +152 -0
  110. package/dist/commands/look-theme.js +136 -0
  111. package/dist/commands/look.js +373 -0
  112. package/dist/commands/loop.js +112 -0
  113. package/dist/commands/loudness.js +69 -0
  114. package/dist/commands/mobile-qa.js +119 -0
  115. package/dist/commands/model.js +256 -0
  116. package/dist/commands/models.js +93 -0
  117. package/dist/commands/motion.js +305 -0
  118. package/dist/commands/next.js +72 -0
  119. package/dist/commands/note.js +294 -0
  120. package/dist/commands/optimize.js +212 -0
  121. package/dist/commands/owner.js +109 -0
  122. package/dist/commands/pack.js +66 -0
  123. package/dist/commands/parts.js +635 -0
  124. package/dist/commands/phone.js +398 -0
  125. package/dist/commands/pick.js +146 -0
  126. package/dist/commands/pitch.js +205 -0
  127. package/dist/commands/places.js +89 -0
  128. package/dist/commands/play.js +368 -0
  129. package/dist/commands/playable.js +51 -0
  130. package/dist/commands/playtest.js +262 -0
  131. package/dist/commands/profile.js +292 -0
  132. package/dist/commands/progress.js +537 -0
  133. package/dist/commands/publish.js +165 -0
  134. package/dist/commands/reach.js +72 -0
  135. package/dist/commands/reel.js +177 -0
  136. package/dist/commands/review.js +112 -0
  137. package/dist/commands/rooms.js +180 -0
  138. package/dist/commands/schema.js +29 -0
  139. package/dist/commands/score.js +326 -0
  140. package/dist/commands/serve.js +67 -0
  141. package/dist/commands/setup.js +254 -0
  142. package/dist/commands/sim.js +179 -0
  143. package/dist/commands/simulator.js +154 -0
  144. package/dist/commands/smoke-build.js +305 -0
  145. package/dist/commands/smoke.js +37 -0
  146. package/dist/commands/spec.js +114 -0
  147. package/dist/commands/store.js +154 -0
  148. package/dist/commands/test.js +104 -0
  149. package/dist/commands/trailer.js +255 -0
  150. package/dist/commands/unity-editor.js +322 -0
  151. package/dist/commands/unity-player.js +672 -0
  152. package/dist/commands/unity.js +198 -0
  153. package/dist/commands/upgrade.js +186 -0
  154. package/dist/commands/variety.js +108 -0
  155. package/dist/commands/verify.js +293 -0
  156. package/dist/commands/walk.js +449 -0
  157. package/dist/commands/widen.js +133 -0
  158. package/dist/commands/world.js +175 -0
  159. package/dist/commands/wow.js +143 -0
  160. package/dist/commands/zero.js +71 -0
  161. package/dist/compose/adsheet.js +61 -0
  162. package/dist/compose/contract.js +248 -0
  163. package/dist/compose/facts.js +81 -0
  164. package/dist/compose/hyperframes.js +102 -0
  165. package/dist/compose/page.js +216 -0
  166. package/dist/compose/probe.js +160 -0
  167. package/dist/compose/run.js +170 -0
  168. package/dist/compose/sheet.js +92 -0
  169. package/dist/compose/starters.js +247 -0
  170. package/dist/compose/variations.js +203 -0
  171. package/dist/criteria.js +35 -0
  172. package/dist/depth/experience.js +61 -0
  173. package/dist/depth/fill.js +102 -0
  174. package/dist/depth/inventory.js +161 -0
  175. package/dist/depth/pacing.js +173 -0
  176. package/dist/depth/story.js +97 -0
  177. package/dist/dev/devtools.js +119 -0
  178. package/dist/dev/hold.js +46 -0
  179. package/dist/dev/lan.js +15 -0
  180. package/dist/dev/open.js +30 -0
  181. package/dist/dev/qr.js +124 -0
  182. package/dist/devtools/LICENSES/pixi.js.LICENSE +21 -0
  183. package/dist/devtools/LICENSES/preact.LICENSE +21 -0
  184. package/dist/devtools/LICENSES/source-map-js.LICENSE +28 -0
  185. package/dist/devtools/LICENSES/three.LICENSE +21 -0
  186. package/dist/devtools/inspector/funpixel-inspector.pixi.min.js +1 -0
  187. package/dist/devtools/inspector/funpixel-inspector.threejs.min.js +1 -0
  188. package/dist/devtools/inspector/hooked-engines/pixi.min.js +8 -0
  189. package/dist/devtools/inspector/hooked-engines/preact.min.js +1 -0
  190. package/dist/devtools/inspector/hooked-engines/threejs.min.js +12 -0
  191. package/dist/devtools/kapture/funpixel-kapture.min.js +1 -0
  192. package/dist/devtools/profiler/funpixel-profiler.pixi.min.js +1 -0
  193. package/dist/devtools/profiler/funpixel-profiler.threejs.min.js +1 -0
  194. package/dist/direct/moves.js +234 -0
  195. package/dist/direct/read.js +59 -0
  196. package/dist/direct/round.js +80 -0
  197. package/dist/doctor/host.js +245 -0
  198. package/dist/doctor/unity-checks.js +380 -0
  199. package/dist/doctor/unity-history.js +589 -0
  200. package/dist/doctor/unity-host.js +160 -0
  201. package/dist/doctor/unity-import-rules.js +874 -0
  202. package/dist/doctor/unity-meta.js +225 -0
  203. package/dist/doctor/unity-project.js +297 -0
  204. package/dist/doctor/unity.js +171 -0
  205. package/dist/export/export.js +165 -0
  206. package/dist/export/metadata.js +25 -0
  207. package/dist/export/runtime.js +119 -0
  208. package/dist/export/scan.js +78 -0
  209. package/dist/export/select.js +193 -0
  210. package/dist/export/strip.js +42 -0
  211. package/dist/feedback/ab.js +55 -0
  212. package/dist/feedback/auto.js +44 -0
  213. package/dist/feedback/learn.js +255 -0
  214. package/dist/feedback/measure.js +49 -0
  215. package/dist/feedback/page.js +66 -0
  216. package/dist/feel/feedback.js +85 -0
  217. package/dist/feel/judge.js +420 -0
  218. package/dist/feel/run.js +185 -0
  219. package/dist/feel/spec.js +124 -0
  220. package/dist/feel/sweep.js +156 -0
  221. package/dist/fidelity/consistency.js +205 -0
  222. package/dist/fidelity/match.js +675 -0
  223. package/dist/fidelity/run.js +107 -0
  224. package/dist/find/keywords.js +97 -0
  225. package/dist/find/names.js +45 -0
  226. package/dist/find/route.js +59 -0
  227. package/dist/firstlook/quality.js +261 -0
  228. package/dist/firstlook/render.js +111 -0
  229. package/dist/firstlook/set.js +218 -0
  230. package/dist/flow/flow.js +455 -0
  231. package/dist/flow/look.js +139 -0
  232. package/dist/frame/behaviour.js +53 -0
  233. package/dist/frame/clock.js +117 -0
  234. package/dist/frame/contract.js +111 -0
  235. package/dist/frame/genre.js +65 -0
  236. package/dist/frame/idle.js +58 -0
  237. package/dist/frame/opening.js +171 -0
  238. package/dist/frames/loop.js +52 -0
  239. package/dist/frames/sheet.js +69 -0
  240. package/dist/gdd/book.js +483 -0
  241. package/dist/gdd/chapters.js +71 -0
  242. package/dist/gdd/design.js +135 -0
  243. package/dist/gdd/doc.js +32 -0
  244. package/dist/gdd/levelmap.js +428 -0
  245. package/dist/gdd/measures.js +477 -0
  246. package/dist/gdd/page.js +111 -0
  247. package/dist/gdd/rubric.js +250 -0
  248. package/dist/gdd/size.js +83 -0
  249. package/dist/gdd/tiers.js +148 -0
  250. package/dist/gdd/world.js +98 -0
  251. package/dist/gdd/worth.js +507 -0
  252. package/dist/gen/kinds.js +451 -0
  253. package/dist/gen/local/doctor.js +25 -0
  254. package/dist/gen/local/index.js +3 -0
  255. package/dist/gen/local/kokoro.js +334 -0
  256. package/dist/gen/local/master.js +248 -0
  257. package/dist/gen/local/provider.js +65 -0
  258. package/dist/gen/local/voice-rules.js +156 -0
  259. package/dist/gen/models.generated.js +469 -0
  260. package/dist/gen/models.js +53 -0
  261. package/dist/gen/prompt-lint.js +35 -0
  262. package/dist/gen/record.js +73 -0
  263. package/dist/gen/save.js +101 -0
  264. package/dist/gen/title.js +55 -0
  265. package/dist/gen/unity.js +334 -0
  266. package/dist/goals/goals.js +204 -0
  267. package/dist/goals/run.js +90 -0
  268. package/dist/greenlight/ambition.js +42 -0
  269. package/dist/greenlight/bible.js +138 -0
  270. package/dist/greenlight/lock.js +48 -0
  271. package/dist/greenlight/match.js +19 -0
  272. package/dist/greenlight/md.js +82 -0
  273. package/dist/greenlight/page.js +100 -0
  274. package/dist/greenlight/pitches.js +66 -0
  275. package/dist/greenlight/worth.js +90 -0
  276. package/dist/guidance.js +24 -0
  277. package/dist/init/bare.js +114 -0
  278. package/dist/init/git.js +56 -0
  279. package/dist/init/starter.js +166 -0
  280. package/dist/init/starters.js +179 -0
  281. package/dist/inspect/describe.js +125 -0
  282. package/dist/inspect/devserver.js +40 -0
  283. package/dist/journey/diff.js +74 -0
  284. package/dist/journey/from-round.js +44 -0
  285. package/dist/journey/record.js +76 -0
  286. package/dist/journey/run.js +139 -0
  287. package/dist/journey/script.js +223 -0
  288. package/dist/judge/common.js +60 -0
  289. package/dist/judge/identity.js +68 -0
  290. package/dist/judge/sources.js +37 -0
  291. package/dist/judge/structure.js +59 -0
  292. package/dist/keys/device.js +145 -0
  293. package/dist/keys/store.js +167 -0
  294. package/dist/lanes/fence.js +108 -0
  295. package/dist/lanes/gate.js +123 -0
  296. package/dist/lanes/lanes.js +355 -0
  297. package/dist/lanes/union.js +62 -0
  298. package/dist/lanes/where.js +49 -0
  299. package/dist/lessons/motifs.js +97 -0
  300. package/dist/lessons/store.js +56 -0
  301. package/dist/look/anim.js +206 -0
  302. package/dist/look/boxes.js +209 -0
  303. package/dist/look/dressing.js +24 -0
  304. package/dist/look/feedback.js +50 -0
  305. package/dist/look/fit.js +123 -0
  306. package/dist/look/held.js +92 -0
  307. package/dist/look/hook.js +169 -0
  308. package/dist/look/hud.js +189 -0
  309. package/dist/look/image-io.js +50 -0
  310. package/dist/look/life.js +96 -0
  311. package/dist/look/light.js +42 -0
  312. package/dist/look/look.js +85 -0
  313. package/dist/look/loops.js +108 -0
  314. package/dist/look/made-of.js +242 -0
  315. package/dist/look/moments.js +32 -0
  316. package/dist/look/motion.js +44 -0
  317. package/dist/look/phone-play.js +142 -0
  318. package/dist/look/player.js +32 -0
  319. package/dist/look/png.js +117 -0
  320. package/dist/look/readability.js +100 -0
  321. package/dist/look/roles.js +109 -0
  322. package/dist/look/sheet.js +104 -0
  323. package/dist/look/theme.js +278 -0
  324. package/dist/look/touch.js +129 -0
  325. package/dist/look/ui-style.js +102 -0
  326. package/dist/machine/procs.js +117 -0
  327. package/dist/managed.js +15 -0
  328. package/dist/mcp/hosted.js +174 -0
  329. package/dist/mcp/models.generated.js +538 -0
  330. package/dist/mcp/models.js +35 -0
  331. package/dist/mcp/server.js +330 -0
  332. package/dist/memory/decisions.js +138 -0
  333. package/dist/memory/journal.js +108 -0
  334. package/dist/model/bench.js +83 -0
  335. package/dist/model/blender.js +106 -0
  336. package/dist/model/clips.js +34 -0
  337. package/dist/model/finalize.js +33 -0
  338. package/dist/motion/checks.js +173 -0
  339. package/dist/motion/contract.js +177 -0
  340. package/dist/motion/encode.js +37 -0
  341. package/dist/motion/render.js +167 -0
  342. package/dist/motion/starter.js +54 -0
  343. package/dist/optimize/check.js +29 -0
  344. package/dist/optimize/helper.js +80 -0
  345. package/dist/owner/bar.js +285 -0
  346. package/dist/owner/match.js +105 -0
  347. package/dist/pack/build.js +97 -0
  348. package/dist/pack/deps.js +28 -0
  349. package/dist/pack/leaks.js +77 -0
  350. package/dist/pack/limits.js +51 -0
  351. package/dist/pack/report.js +35 -0
  352. package/dist/phone/baguette.js +139 -0
  353. package/dist/phone/listen.js +65 -0
  354. package/dist/pipeline/pipeline.js +929 -0
  355. package/dist/plan/actions.js +18 -0
  356. package/dist/plan/notes.js +15 -0
  357. package/dist/play/clock.js +40 -0
  358. package/dist/play/condition.js +45 -0
  359. package/dist/play/frames.js +60 -0
  360. package/dist/play/input.js +118 -0
  361. package/dist/play/pointer.js +21 -0
  362. package/dist/play/report.js +124 -0
  363. package/dist/play/server.js +274 -0
  364. package/dist/play/session.js +231 -0
  365. package/dist/play/steps.js +192 -0
  366. package/dist/playable/build.js +90 -0
  367. package/dist/playable/cta.js +88 -0
  368. package/dist/playable/networks.js +33 -0
  369. package/dist/playable/scan.js +46 -0
  370. package/dist/playtest/after-round.js +60 -0
  371. package/dist/playtest/assemble.js +168 -0
  372. package/dist/playtest/experience-run.js +69 -0
  373. package/dist/playtest/experience.js +77 -0
  374. package/dist/playtest/facts.js +90 -0
  375. package/dist/playtest/fidelity.js +179 -0
  376. package/dist/playtest/history.js +115 -0
  377. package/dist/playtest/hits.js +48 -0
  378. package/dist/playtest/hosted.js +98 -0
  379. package/dist/playtest/keep.js +110 -0
  380. package/dist/playtest/ledger.js +77 -0
  381. package/dist/playtest/length.js +113 -0
  382. package/dist/playtest/measure.js +181 -0
  383. package/dist/playtest/mobile-qa.js +391 -0
  384. package/dist/playtest/mockups.js +198 -0
  385. package/dist/playtest/moments.js +28 -0
  386. package/dist/playtest/prepare.js +162 -0
  387. package/dist/playtest/rank.js +184 -0
  388. package/dist/playtest/report.js +209 -0
  389. package/dist/playtest/route.js +139 -0
  390. package/dist/playtest/seats.js +128 -0
  391. package/dist/playtest/sheet.js +38 -0
  392. package/dist/playtest/stop.js +54 -0
  393. package/dist/playtest/stuck.js +47 -0
  394. package/dist/production/contract.js +61 -0
  395. package/dist/production/mirror.js +96 -0
  396. package/dist/production/tier.js +66 -0
  397. package/dist/profile/compare.js +171 -0
  398. package/dist/progress/answers.js +35 -0
  399. package/dist/progress/holds.js +106 -0
  400. package/dist/progress/notify.js +25 -0
  401. package/dist/progress/progress.js +300 -0
  402. package/dist/publish/build.js +54 -0
  403. package/dist/publish/folder.js +106 -0
  404. package/dist/publish/funpixel.js +96 -0
  405. package/dist/publish/hosts.js +48 -0
  406. package/dist/reach/envelope.js +111 -0
  407. package/dist/reach/load.js +84 -0
  408. package/dist/reach/side.js +320 -0
  409. package/dist/reach/spec3d.js +338 -0
  410. package/dist/reach/tiles.js +163 -0
  411. package/dist/reel/encode.js +34 -0
  412. package/dist/reel/tour.js +81 -0
  413. package/dist/relay/bots.js +62 -0
  414. package/dist/relay/bridge.js +54 -0
  415. package/dist/relay/local.js +82 -0
  416. package/dist/relay/redis.js +40 -0
  417. package/dist/review/audio.js +72 -0
  418. package/dist/review/ledger.js +60 -0
  419. package/dist/review/media.js +114 -0
  420. package/dist/review/model.js +348 -0
  421. package/dist/review/picture.js +113 -0
  422. package/dist/review/specs.js +134 -0
  423. package/dist/review/video.js +248 -0
  424. package/dist/schema/game.js +308 -0
  425. package/dist/score/comfort.js +79 -0
  426. package/dist/score/light.js +62 -0
  427. package/dist/score/measure.js +386 -0
  428. package/dist/score/vision.js +59 -0
  429. package/dist/serve/webgl.js +415 -0
  430. package/dist/setup/lsp.js +42 -0
  431. package/dist/sim/curve.js +122 -0
  432. package/dist/sim/judge.js +240 -0
  433. package/dist/sim/skeleton.js +65 -0
  434. package/dist/simulator/lease.js +159 -0
  435. package/dist/simulator/orient.js +57 -0
  436. package/dist/simulator/screen.js +113 -0
  437. package/dist/simulator/simctl.js +79 -0
  438. package/dist/smoke/art.js +20 -0
  439. package/dist/smoke/checks.js +165 -0
  440. package/dist/smoke/logic.js +73 -0
  441. package/dist/smoke/orphans.js +78 -0
  442. package/dist/smoke/palette.js +16 -0
  443. package/dist/smoke/sources.js +36 -0
  444. package/dist/sound/beats.js +95 -0
  445. package/dist/sound/loudness.js +94 -0
  446. package/dist/spec/extract.js +123 -0
  447. package/dist/spec/lint.js +261 -0
  448. package/dist/spec/presets.js +30 -0
  449. package/dist/spec/rooms.js +188 -0
  450. package/dist/spec/scaffold.js +457 -0
  451. package/dist/spec/sections.js +16 -0
  452. package/dist/spec/tunables.js +74 -0
  453. package/dist/stage/harnessignore.js +90 -0
  454. package/dist/stage/stage.js +57 -0
  455. package/dist/stage/tar.js +41 -0
  456. package/dist/status/board.js +172 -0
  457. package/dist/status/file.js +112 -0
  458. package/dist/status/inbox.js +55 -0
  459. package/dist/status/status.js +311 -0
  460. package/dist/store/answers.js +47 -0
  461. package/dist/store/doctor.js +120 -0
  462. package/dist/store/images.js +65 -0
  463. package/dist/store/init.js +101 -0
  464. package/dist/store/lint.js +392 -0
  465. package/dist/store/plan.js +133 -0
  466. package/dist/store/sdks.js +107 -0
  467. package/dist/studio/forks.js +93 -0
  468. package/dist/studio/pitch.js +294 -0
  469. package/dist/studio/widen.js +212 -0
  470. package/dist/suite/node-run.js +81 -0
  471. package/dist/suite/test-types.js +71 -0
  472. package/dist/trailer/assemble.js +90 -0
  473. package/dist/trailer/beats.js +74 -0
  474. package/dist/trailer/cards.js +77 -0
  475. package/dist/trailer/cues.js +78 -0
  476. package/dist/trailer/cut.js +49 -0
  477. package/dist/trailer/find.js +33 -0
  478. package/dist/trailer/mix.js +109 -0
  479. package/dist/trailer/placement.js +30 -0
  480. package/dist/types.js +1 -0
  481. package/dist/ui.js +79 -0
  482. package/dist/unity/bridge.js +251 -0
  483. package/dist/unity/disk.js +666 -0
  484. package/dist/unity/editor.js +471 -0
  485. package/dist/unity/gc.js +140 -0
  486. package/dist/unity/mcp-stdio.js +141 -0
  487. package/dist/unity/probe/budgets.js +84 -0
  488. package/dist/unity/probe/client.js +93 -0
  489. package/dist/unity/probe/install.js +118 -0
  490. package/dist/unity/probe/player.js +255 -0
  491. package/dist/unity/probe/report.js +102 -0
  492. package/dist/unity/probe/script.js +225 -0
  493. package/dist/unity/queue.js +353 -0
  494. package/dist/unity/run.js +172 -0
  495. package/dist/update.js +111 -0
  496. package/dist/variety/compare.js +104 -0
  497. package/dist/variety/places.js +109 -0
  498. package/dist/variety/profile.js +127 -0
  499. package/dist/vendor/verify/README.md +19 -0
  500. package/dist/vendor/verify/package.json +14 -0
  501. package/dist/vendor/verify/src/index.d.ts +105 -0
  502. package/dist/vendor/verify/src/index.js +78 -0
  503. package/dist/vendor/verify/src/init/preview_shim.js +63 -0
  504. package/dist/vendor/verify/src/page/actors.js +258 -0
  505. package/dist/vendor/verify/src/page/audio.js +106 -0
  506. package/dist/vendor/verify/src/page/audio_cues.js +141 -0
  507. package/dist/vendor/verify/src/page/audio_files.js +56 -0
  508. package/dist/vendor/verify/src/page/bot_sweep.js +72 -0
  509. package/dist/vendor/verify/src/page/capture_view.js +164 -0
  510. package/dist/vendor/verify/src/page/context_loss_listener.js +23 -0
  511. package/dist/vendor/verify/src/page/dressing.js +106 -0
  512. package/dist/vendor/verify/src/page/enter_view.js +33 -0
  513. package/dist/vendor/verify/src/page/feel.js +126 -0
  514. package/dist/vendor/verify/src/page/feel_sweep.js +75 -0
  515. package/dist/vendor/verify/src/page/first_paint.js +54 -0
  516. package/dist/vendor/verify/src/page/fonts.js +50 -0
  517. package/dist/vendor/verify/src/page/frame_honesty.js +44 -0
  518. package/dist/vendor/verify/src/page/front_door.js +197 -0
  519. package/dist/vendor/verify/src/page/grounding.js +448 -0
  520. package/dist/vendor/verify/src/page/hooks.js +74 -0
  521. package/dist/vendor/verify/src/page/hud.js +261 -0
  522. package/dist/vendor/verify/src/page/inventory.js +15 -0
  523. package/dist/vendor/verify/src/page/layout.js +378 -0
  524. package/dist/vendor/verify/src/page/levels.js +40 -0
  525. package/dist/vendor/verify/src/page/life.js +123 -0
  526. package/dist/vendor/verify/src/page/life_anim.js +501 -0
  527. package/dist/vendor/verify/src/page/made_of.js +83 -0
  528. package/dist/vendor/verify/src/page/mechanic_check.js +272 -0
  529. package/dist/vendor/verify/src/page/moments.js +36 -0
  530. package/dist/vendor/verify/src/page/motion.js +139 -0
  531. package/dist/vendor/verify/src/page/perf.js +255 -0
  532. package/dist/vendor/verify/src/page/phone_check.js +229 -0
  533. package/dist/vendor/verify/src/page/play.js +117 -0
  534. package/dist/vendor/verify/src/page/play_act.js +164 -0
  535. package/dist/vendor/verify/src/page/preview.js +33 -0
  536. package/dist/vendor/verify/src/page/recorder.js +54 -0
  537. package/dist/vendor/verify/src/page/render_health.js +83 -0
  538. package/dist/vendor/verify/src/page/renderer.js +75 -0
  539. package/dist/vendor/verify/src/page/scene.js +222 -0
  540. package/dist/vendor/verify/src/page/self_test.js +25 -0
  541. package/dist/vendor/verify/src/page/step_clock.js +247 -0
  542. package/dist/vendor/verify/src/page/surfaces.js +261 -0
  543. package/dist/vendor/verify/src/page/world_actors.js +264 -0
  544. package/dist/verify/browser.js +245 -0
  545. package/dist/verify/console.js +34 -0
  546. package/dist/verify/fingerprint.js +72 -0
  547. package/dist/verify/gpu.js +33 -0
  548. package/dist/verify/health.js +172 -0
  549. package/dist/verify/hooks.js +34 -0
  550. package/dist/verify/judge.js +303 -0
  551. package/dist/verify/players.js +123 -0
  552. package/dist/verify/probe.js +236 -0
  553. package/dist/verify/reads.js +32 -0
  554. package/dist/verify/run.js +56 -0
  555. package/dist/verify/serve.js +36 -0
  556. package/dist/walk/film.js +37 -0
  557. package/dist/walk/judge.js +287 -0
  558. package/dist/walk/routes.js +199 -0
  559. package/dist/walk/world.js +292 -0
  560. package/dist/world/brief.js +86 -0
  561. package/dist/world/check.js +254 -0
  562. package/dist/world/forge.js +542 -0
  563. package/dist/world/format.js +40 -0
  564. package/dist/world/variety.js +59 -0
  565. package/dist/wow/catalogue.js +86 -0
  566. package/dist/wow/picks.js +74 -0
  567. package/package.json +51 -4
  568. package/panel/asset-identity.md +61 -0
  569. package/panel/asset-structure.md +55 -0
  570. package/panel/blockers.md +47 -0
  571. package/panel/brief.md +89 -0
  572. package/panel/clip.md +54 -0
  573. package/panel/experience-personas.json +4 -0
  574. package/panel/experience.md +96 -0
  575. package/panel/fidelity-ui.md +74 -0
  576. package/panel/fidelity.md +83 -0
  577. package/panel/greenlight-pitch.md +69 -0
  578. package/panel/greenlight.md +87 -0
  579. package/panel/mobile-qa.md +128 -0
  580. package/panel/personas.json +6 -0
  581. package/panel/reference-match.md +12 -0
  582. package/panel/versus.md +31 -0
  583. package/plugins/.agents/plugins/marketplace.json +18 -0
  584. package/plugins/.claude-plugin/marketplace.json +17 -0
  585. package/plugins/.cursor-plugin/marketplace.json +13 -0
  586. package/plugins/LICENSE +115 -0
  587. package/plugins/README.md +16 -0
  588. package/plugins/THIRD_PARTY_NOTICES.md +75 -0
  589. package/plugins/claude/.claude-plugin/plugin.json +19 -0
  590. package/plugins/claude/.mcp.json +10 -0
  591. package/plugins/claude/LICENSE +115 -0
  592. package/plugins/claude/README.md +14 -0
  593. package/plugins/claude/THIRD_PARTY_NOTICES.md +75 -0
  594. package/plugins/claude/agents/art-director.md +54 -0
  595. package/plugins/claude/agents/audio-director.md +51 -0
  596. package/plugins/claude/agents/critic.md +113 -0
  597. package/plugins/claude/agents/lane.md +38 -0
  598. package/plugins/claude/agents/level-designer.md +45 -0
  599. package/plugins/claude/agents/mobile-qa.md +71 -0
  600. package/plugins/claude/agents/player.md +144 -0
  601. package/plugins/claude/agents/qa-lead.md +52 -0
  602. package/plugins/claude/commands/first-look.md +59 -0
  603. package/plugins/claude/commands/flow.md +50 -0
  604. package/plugins/claude/commands/lanes.md +38 -0
  605. package/plugins/claude/commands/mobile-qa.md +28 -0
  606. package/plugins/claude/commands/new.md +94 -0
  607. package/plugins/claude/commands/playtest.md +66 -0
  608. package/plugins/claude/commands/publish.md +23 -0
  609. package/plugins/claude/commands/smoke-build.md +25 -0
  610. package/plugins/claude/commands/verify.md +20 -0
  611. package/plugins/claude/hooks/brief.md +135 -0
  612. package/plugins/claude/hooks/critic-receipts.mjs +86 -0
  613. package/plugins/claude/hooks/durable.mjs +56 -0
  614. package/plugins/claude/hooks/fence.mjs +30 -0
  615. package/plugins/claude/hooks/floors.mjs +181 -0
  616. package/plugins/claude/hooks/flow.mjs +154 -0
  617. package/plugins/claude/hooks/front-door.mjs +68 -0
  618. package/plugins/claude/hooks/guidance.json +3 -0
  619. package/plugins/claude/hooks/hints.mjs +183 -0
  620. package/plugins/claude/hooks/hooks.json +62 -0
  621. package/plugins/claude/hooks/lib.mjs +362 -0
  622. package/plugins/claude/hooks/memory.mjs +92 -0
  623. package/plugins/claude/hooks/mobile-qa.mjs +43 -0
  624. package/plugins/claude/hooks/note.mjs +63 -0
  625. package/plugins/claude/hooks/nudge.mjs +98 -0
  626. package/plugins/claude/hooks/pipeline.mjs +207 -0
  627. package/plugins/claude/hooks/prompt.mjs +51 -0
  628. package/plugins/claude/hooks/quality.mjs +310 -0
  629. package/plugins/claude/hooks/reach.mjs +93 -0
  630. package/plugins/claude/hooks/scope.mjs +44 -0
  631. package/plugins/claude/hooks/session-log.mjs +101 -0
  632. package/plugins/claude/hooks/session-start.mjs +194 -0
  633. package/plugins/claude/hooks/skill-names.json +19 -0
  634. package/plugins/claude/hooks/stop-gate.mjs +303 -0
  635. package/plugins/claude/hooks/vendor/direct/round.mjs +81 -0
  636. package/plugins/claude/hooks/vendor/find/names.mjs +46 -0
  637. package/plugins/claude/hooks/vendor/firstlook/set.mjs +219 -0
  638. package/plugins/claude/hooks/vendor/flow/flow.mjs +456 -0
  639. package/plugins/claude/hooks/vendor/flow/look.mjs +140 -0
  640. package/plugins/claude/hooks/vendor/gdd/book.mjs +484 -0
  641. package/plugins/claude/hooks/vendor/gdd/chapters.mjs +72 -0
  642. package/plugins/claude/hooks/vendor/gdd/doc.mjs +33 -0
  643. package/plugins/claude/hooks/vendor/gdd/levelmap.mjs +429 -0
  644. package/plugins/claude/hooks/vendor/gdd/rubric.mjs +251 -0
  645. package/plugins/claude/hooks/vendor/gdd/worth.mjs +508 -0
  646. package/plugins/claude/hooks/vendor/lanes/fence.mjs +109 -0
  647. package/plugins/claude/hooks/vendor/lanes/lanes.mjs +356 -0
  648. package/plugins/claude/hooks/vendor/lanes/union.mjs +63 -0
  649. package/plugins/claude/hooks/vendor/lessons/motifs.mjs +98 -0
  650. package/plugins/claude/hooks/vendor/lessons/store.mjs +57 -0
  651. package/plugins/claude/hooks/vendor/look/made-of.mjs +243 -0
  652. package/plugins/claude/hooks/vendor/look/roles.mjs +110 -0
  653. package/plugins/claude/hooks/vendor/memory/decisions.mjs +139 -0
  654. package/plugins/claude/hooks/vendor/memory/journal.mjs +109 -0
  655. package/plugins/claude/hooks/vendor/owner/bar.mjs +286 -0
  656. package/plugins/claude/hooks/vendor/pipeline/pipeline.mjs +930 -0
  657. package/plugins/claude/hooks/vendor/playtest/keep.mjs +111 -0
  658. package/plugins/claude/hooks/vendor/playtest/stuck.mjs +48 -0
  659. package/plugins/claude/hooks/vendor/progress/holds.mjs +107 -0
  660. package/plugins/claude/hooks/vendor/progress/progress.mjs +301 -0
  661. package/plugins/claude/hooks/vendor/sim/judge.mjs +241 -0
  662. package/plugins/claude/hooks/vendor/spec/rooms.mjs +189 -0
  663. package/plugins/claude/hooks/vendor/spec/tunables.mjs +75 -0
  664. package/plugins/claude/hooks/vendor/stage/harnessignore.mjs +91 -0
  665. package/plugins/claude/hooks/vendor/stage/stage.mjs +58 -0
  666. package/plugins/claude/hooks/vendor/status/board.mjs +173 -0
  667. package/plugins/claude/hooks/vendor/status/file.mjs +113 -0
  668. package/plugins/claude/hooks/vendor/studio/forks.mjs +94 -0
  669. package/plugins/claude/hooks/vendor/studio/pitch.mjs +295 -0
  670. package/plugins/claude/hooks/vendor/verify/fingerprint.mjs +73 -0
  671. package/plugins/claude/hooks/vendor/verify/reads.mjs +33 -0
  672. package/plugins/claude/hooks/vendor/wow/picks.mjs +75 -0
  673. package/plugins/claude/skills/3d/SKILL.md +89 -0
  674. package/plugins/claude/skills/3d/references/bake-off.md +48 -0
  675. package/plugins/claude/skills/3d/references/bench.md +103 -0
  676. package/plugins/claude/skills/3d/references/budgets.md +48 -0
  677. package/plugins/claude/skills/3d/references/characters.md +67 -0
  678. package/plugins/claude/skills/3d/references/concept-image.md +47 -0
  679. package/plugins/claude/skills/3d/references/engine-targets.md +31 -0
  680. package/plugins/claude/skills/3d/references/hero-route.md +104 -0
  681. package/plugins/claude/skills/3d/references/level-spec.md +109 -0
  682. package/plugins/claude/skills/3d/references/levels.md +84 -0
  683. package/plugins/claude/skills/3d/references/light-and-places.md +141 -0
  684. package/plugins/claude/skills/3d/references/models.md +111 -0
  685. package/plugins/claude/skills/3d/references/painted-target.md +184 -0
  686. package/plugins/claude/skills/3d/references/reading.md +41 -0
  687. package/plugins/claude/skills/3d/references/skin.md +85 -0
  688. package/plugins/claude/skills/3d/references/skyboxes.md +65 -0
  689. package/plugins/claude/skills/3d/references/textures.md +71 -0
  690. package/plugins/claude/skills/3d/references/three-loading.md +199 -0
  691. package/plugins/claude/skills/3d/references/unity.md +78 -0
  692. package/plugins/claude/skills/art/SKILL.md +104 -0
  693. package/plugins/claude/skills/art/references/2d-assets.md +108 -0
  694. package/plugins/claude/skills/art/references/animation.md +126 -0
  695. package/plugins/claude/skills/art/references/cast.md +73 -0
  696. package/plugins/claude/skills/art/references/characters.md +49 -0
  697. package/plugins/claude/skills/art/references/cost.md +107 -0
  698. package/plugins/claude/skills/art/references/effects.md +85 -0
  699. package/plugins/claude/skills/art/references/frames.md +87 -0
  700. package/plugins/claude/skills/art/references/judging-frames.md +64 -0
  701. package/plugins/claude/skills/art/references/look.md +102 -0
  702. package/plugins/claude/skills/art/references/measure.md +119 -0
  703. package/plugins/claude/skills/art/references/pipeline.md +185 -0
  704. package/plugins/claude/skills/art/references/pixi.md +277 -0
  705. package/plugins/claude/skills/art/references/planes.md +27 -0
  706. package/plugins/claude/skills/art/references/prompts.md +171 -0
  707. package/plugins/claude/skills/art/references/sheets.md +141 -0
  708. package/plugins/claude/skills/art/references/style-file.md +39 -0
  709. package/plugins/claude/skills/art/references/three.md +232 -0
  710. package/plugins/claude/skills/art/references/ui.md +163 -0
  711. package/plugins/claude/skills/art/references/unity.md +78 -0
  712. package/plugins/claude/skills/art/references/wiring.md +41 -0
  713. package/plugins/claude/skills/audio/SKILL.md +92 -0
  714. package/plugins/claude/skills/audio/references/adaptive-music.md +204 -0
  715. package/plugins/claude/skills/audio/references/engine.md +78 -0
  716. package/plugins/claude/skills/audio/references/measure.md +101 -0
  717. package/plugins/claude/skills/audio/references/unity.md +74 -0
  718. package/plugins/claude/skills/feedback/SKILL.md +120 -0
  719. package/plugins/claude/skills/feedback/references/memory.md +99 -0
  720. package/plugins/claude/skills/game-feel/SKILL.md +104 -0
  721. package/plugins/claude/skills/game-feel/references/contact.md +110 -0
  722. package/plugins/claude/skills/game-feel/references/measure.md +125 -0
  723. package/plugins/claude/skills/game-feel/references/motion.md +134 -0
  724. package/plugins/claude/skills/game-feel/references/payoffs.md +35 -0
  725. package/plugins/claude/skills/game-feel/references/recipes.md +107 -0
  726. package/plugins/claude/skills/game-feel/references/unity.md +73 -0
  727. package/plugins/claude/skills/game-logic/SKILL.md +113 -0
  728. package/plugins/claude/skills/game-logic/references/balance.md +88 -0
  729. package/plugins/claude/skills/game-logic/references/content-at-scale.md +147 -0
  730. package/plugins/claude/skills/game-logic/references/depth.md +89 -0
  731. package/plugins/claude/skills/game-logic/references/escalation.md +41 -0
  732. package/plugins/claude/skills/game-logic/references/levels.md +61 -0
  733. package/plugins/claude/skills/game-logic/references/probes.md +122 -0
  734. package/plugins/claude/skills/game-logic/references/unity.md +108 -0
  735. package/plugins/claude/skills/game-spine/SKILL.md +118 -0
  736. package/plugins/claude/skills/game-spine/references/camera.md +94 -0
  737. package/plugins/claude/skills/game-spine/references/multiplayer.md +101 -0
  738. package/plugins/claude/skills/game-spine/references/patterns.md +103 -0
  739. package/plugins/claude/skills/game-spine/references/performance.md +96 -0
  740. package/plugins/claude/skills/game-spine/references/pixi.md +26 -0
  741. package/plugins/claude/skills/game-spine/references/replay.md +102 -0
  742. package/plugins/claude/skills/game-spine/references/room-api.md +63 -0
  743. package/plugins/claude/skills/game-spine/references/room-modes.md +40 -0
  744. package/plugins/claude/skills/game-spine/references/sdk.md +114 -0
  745. package/plugins/claude/skills/game-spine/references/three.md +62 -0
  746. package/plugins/claude/skills/gdd/SKILL.md +116 -0
  747. package/plugins/claude/skills/gdd/references/as-built.md +40 -0
  748. package/plugins/claude/skills/gdd/references/design-measures.md +24 -0
  749. package/plugins/claude/skills/gdd/references/design-note.md +88 -0
  750. package/plugins/claude/skills/gdd/references/experience.md +92 -0
  751. package/plugins/claude/skills/gdd/references/first-look.md +226 -0
  752. package/plugins/claude/skills/gdd/references/floors.md +62 -0
  753. package/plugins/claude/skills/gdd/references/frame.md +75 -0
  754. package/plugins/claude/skills/gdd/references/gameplay-contract.md +81 -0
  755. package/plugins/claude/skills/gdd/references/gdd-template.md +417 -0
  756. package/plugins/claude/skills/gdd/references/genre-card.md +109 -0
  757. package/plugins/claude/skills/gdd/references/genre-platformer.md +159 -0
  758. package/plugins/claude/skills/gdd/references/genre-puzzle.md +145 -0
  759. package/plugins/claude/skills/gdd/references/genre-racing.md +137 -0
  760. package/plugins/claude/skills/gdd/references/genre-rpg.md +125 -0
  761. package/plugins/claude/skills/gdd/references/genre-shooter.md +128 -0
  762. package/plugins/claude/skills/gdd/references/genre-simulation.md +112 -0
  763. package/plugins/claude/skills/gdd/references/genre-strategy.md +116 -0
  764. package/plugins/claude/skills/gdd/references/genre-survival.md +122 -0
  765. package/plugins/claude/skills/gdd/references/in-the-loop.md +106 -0
  766. package/plugins/claude/skills/gdd/references/invent-first.md +131 -0
  767. package/plugins/claude/skills/gdd/references/level-and-fun.md +112 -0
  768. package/plugins/claude/skills/gdd/references/pages.md +47 -0
  769. package/plugins/claude/skills/gdd/references/plan-at-size.md +140 -0
  770. package/plugins/claude/skills/gdd/references/production-tiers.md +117 -0
  771. package/plugins/claude/skills/gdd/references/sections.md +148 -0
  772. package/plugins/claude/skills/gdd/references/spec-folder.md +131 -0
  773. package/plugins/claude/skills/gdd/references/start.md +110 -0
  774. package/plugins/claude/skills/gdd/references/starters.md +175 -0
  775. package/plugins/claude/skills/gdd/references/the-path.md +133 -0
  776. package/plugins/claude/skills/gdd/references/track.md +29 -0
  777. package/plugins/claude/skills/gdd/references/world-and-identity.md +165 -0
  778. package/plugins/claude/skills/gdd/references/worth.md +74 -0
  779. package/plugins/claude/skills/mobile-ui/SKILL.md +107 -0
  780. package/plugins/claude/skills/mobile-ui/references/contrast.md +123 -0
  781. package/plugins/claude/skills/mobile-ui/references/hud-and-title.md +108 -0
  782. package/plugins/claude/skills/mobile-ui/references/hud-genres.md +124 -0
  783. package/plugins/claude/skills/mobile-ui/references/phone-check.md +156 -0
  784. package/plugins/claude/skills/mobile-ui/references/recipes.md +279 -0
  785. package/plugins/claude/skills/mobile-ui/references/restyle-ui.md +229 -0
  786. package/plugins/claude/skills/mobile-ui/references/unity.md +61 -0
  787. package/plugins/claude/skills/publishing/SKILL.md +109 -0
  788. package/plugins/claude/skills/publishing/references/compose.md +113 -0
  789. package/plugins/claude/skills/publishing/references/motion.md +120 -0
  790. package/plugins/claude/skills/publishing/references/networks.md +75 -0
  791. package/plugins/claude/skills/publishing/references/other-hosts.md +65 -0
  792. package/plugins/claude/skills/publishing/references/playable-ad.md +90 -0
  793. package/plugins/claude/skills/publishing/references/server-build.md +85 -0
  794. package/plugins/claude/skills/publishing/references/store-shots.md +85 -0
  795. package/plugins/claude/skills/publishing/references/trailer.md +55 -0
  796. package/plugins/claude/skills/publishing/references/what-ships.md +30 -0
  797. package/plugins/claude/skills/store/SKILL.md +81 -0
  798. package/plugins/claude/skills/store/references/app-store.md +73 -0
  799. package/plugins/claude/skills/store/references/google-play.md +141 -0
  800. package/plugins/claude/skills/store/references/ios-release.md +63 -0
  801. package/plugins/claude/skills/store/references/money.md +66 -0
  802. package/plugins/claude/skills/store/references/purchases-and-review.md +74 -0
  803. package/plugins/claude/skills/store/references/readiness-page.md +24 -0
  804. package/plugins/claude/skills/store/references/readiness.md +107 -0
  805. package/plugins/claude/skills/store/references/steam.md +38 -0
  806. package/plugins/claude/skills/store/references/unity-store.md +55 -0
  807. package/plugins/claude/skills/store/references/web-portals.md +43 -0
  808. package/plugins/claude/skills/unity-game/SKILL.md +103 -0
  809. package/plugins/claude/skills/unity-game/references/agent-ops.md +54 -0
  810. package/plugins/claude/skills/unity-game/references/fixes.md +40 -0
  811. package/plugins/claude/skills/unity-game/references/from-a-web-game.md +108 -0
  812. package/plugins/claude/skills/unity-game/references/handing-off.md +42 -0
  813. package/plugins/claude/skills/unity-game/references/performance.md +59 -0
  814. package/plugins/claude/skills/unity-game/references/probe.md +80 -0
  815. package/plugins/claude/skills/unity-game/references/shared-mac.md +121 -0
  816. package/plugins/claude/skills/unity-game/references/traps.md +108 -0
  817. package/plugins/claude/skills/verifying/SKILL.md +109 -0
  818. package/plugins/claude/skills/verifying/references/actors.md +94 -0
  819. package/plugins/claude/skills/verifying/references/bar.md +62 -0
  820. package/plugins/claude/skills/verifying/references/checks.md +69 -0
  821. package/plugins/claude/skills/verifying/references/experience.md +67 -0
  822. package/plugins/claude/skills/verifying/references/eyes.md +54 -0
  823. package/plugins/claude/skills/verifying/references/fidelity.md +126 -0
  824. package/plugins/claude/skills/verifying/references/hit-bar.md +31 -0
  825. package/plugins/claude/skills/verifying/references/journeys.md +77 -0
  826. package/plugins/claude/skills/verifying/references/mobile-qa.md +123 -0
  827. package/plugins/claude/skills/verifying/references/playtest.md +161 -0
  828. package/plugins/claude/skills/verifying/references/review.md +105 -0
  829. package/plugins/claude/skills/verifying/references/rubric.md +67 -0
  830. package/plugins/claude/skills/verifying/references/scenes.md +49 -0
  831. package/plugins/claude/skills/verifying/references/unity.md +60 -0
  832. package/plugins/claude/skills/world-and-story/SKILL.md +99 -0
  833. package/plugins/claude/skills/world-and-story/references/atmosphere.md +208 -0
  834. package/plugins/claude/skills/world-and-story/references/forged-world.md +79 -0
  835. package/plugins/claude/skills/world-and-story/references/living-world.md +237 -0
  836. package/plugins/claude/skills/world-and-story/references/opening-and-chapters.md +215 -0
  837. package/plugins/claude/skills/world-and-story/references/shelf.md +80 -0
  838. package/plugins/claude/skills/world-and-story/references/story-at-size.md +159 -0
  839. package/plugins/claude/skills/world-and-story/references/voice.md +175 -0
  840. package/plugins/claude/skills/world-and-story/references/world-kit.md +154 -0
  841. package/plugins/codex/.codex-plugin/plugin.json +27 -0
  842. package/plugins/codex/.mcp.json +7 -0
  843. package/plugins/codex/AGENTS.md +135 -0
  844. package/plugins/codex/LICENSE +115 -0
  845. package/plugins/codex/README.md +17 -0
  846. package/plugins/codex/THIRD_PARTY_NOTICES.md +75 -0
  847. package/plugins/codex/hooks/brief.md +135 -0
  848. package/plugins/codex/hooks/codex-critic.mjs +15 -0
  849. package/plugins/codex/hooks/critic-receipts.mjs +86 -0
  850. package/plugins/codex/hooks/durable.mjs +56 -0
  851. package/plugins/codex/hooks/fence.mjs +30 -0
  852. package/plugins/codex/hooks/floors.mjs +181 -0
  853. package/plugins/codex/hooks/flow.mjs +154 -0
  854. package/plugins/codex/hooks/front-door.mjs +68 -0
  855. package/plugins/codex/hooks/guidance.json +3 -0
  856. package/plugins/codex/hooks/hints.mjs +183 -0
  857. package/plugins/codex/hooks/hooks.json +59 -0
  858. package/plugins/codex/hooks/host.md +54 -0
  859. package/plugins/codex/hooks/lib.mjs +362 -0
  860. package/plugins/codex/hooks/memory.mjs +92 -0
  861. package/plugins/codex/hooks/mobile-qa.mjs +43 -0
  862. package/plugins/codex/hooks/note.mjs +63 -0
  863. package/plugins/codex/hooks/nudge.mjs +98 -0
  864. package/plugins/codex/hooks/pipeline.mjs +207 -0
  865. package/plugins/codex/hooks/prompt.mjs +51 -0
  866. package/plugins/codex/hooks/quality.mjs +310 -0
  867. package/plugins/codex/hooks/reach.mjs +93 -0
  868. package/plugins/codex/hooks/scope.mjs +44 -0
  869. package/plugins/codex/hooks/session-log.mjs +101 -0
  870. package/plugins/codex/hooks/session-start.mjs +194 -0
  871. package/plugins/codex/hooks/stop-gate.mjs +303 -0
  872. package/plugins/codex/hooks/vendor/direct/round.mjs +81 -0
  873. package/plugins/codex/hooks/vendor/find/names.mjs +46 -0
  874. package/plugins/codex/hooks/vendor/firstlook/set.mjs +219 -0
  875. package/plugins/codex/hooks/vendor/flow/flow.mjs +456 -0
  876. package/plugins/codex/hooks/vendor/flow/look.mjs +140 -0
  877. package/plugins/codex/hooks/vendor/gdd/book.mjs +484 -0
  878. package/plugins/codex/hooks/vendor/gdd/chapters.mjs +72 -0
  879. package/plugins/codex/hooks/vendor/gdd/doc.mjs +33 -0
  880. package/plugins/codex/hooks/vendor/gdd/levelmap.mjs +429 -0
  881. package/plugins/codex/hooks/vendor/gdd/rubric.mjs +251 -0
  882. package/plugins/codex/hooks/vendor/gdd/worth.mjs +508 -0
  883. package/plugins/codex/hooks/vendor/lanes/fence.mjs +109 -0
  884. package/plugins/codex/hooks/vendor/lanes/lanes.mjs +356 -0
  885. package/plugins/codex/hooks/vendor/lanes/union.mjs +63 -0
  886. package/plugins/codex/hooks/vendor/lessons/motifs.mjs +98 -0
  887. package/plugins/codex/hooks/vendor/lessons/store.mjs +57 -0
  888. package/plugins/codex/hooks/vendor/look/made-of.mjs +243 -0
  889. package/plugins/codex/hooks/vendor/look/roles.mjs +110 -0
  890. package/plugins/codex/hooks/vendor/memory/decisions.mjs +139 -0
  891. package/plugins/codex/hooks/vendor/memory/journal.mjs +109 -0
  892. package/plugins/codex/hooks/vendor/owner/bar.mjs +286 -0
  893. package/plugins/codex/hooks/vendor/pipeline/pipeline.mjs +930 -0
  894. package/plugins/codex/hooks/vendor/playtest/keep.mjs +111 -0
  895. package/plugins/codex/hooks/vendor/playtest/stuck.mjs +48 -0
  896. package/plugins/codex/hooks/vendor/progress/holds.mjs +107 -0
  897. package/plugins/codex/hooks/vendor/progress/progress.mjs +301 -0
  898. package/plugins/codex/hooks/vendor/sim/judge.mjs +241 -0
  899. package/plugins/codex/hooks/vendor/spec/rooms.mjs +189 -0
  900. package/plugins/codex/hooks/vendor/spec/tunables.mjs +75 -0
  901. package/plugins/codex/hooks/vendor/stage/harnessignore.mjs +91 -0
  902. package/plugins/codex/hooks/vendor/stage/stage.mjs +58 -0
  903. package/plugins/codex/hooks/vendor/status/board.mjs +173 -0
  904. package/plugins/codex/hooks/vendor/status/file.mjs +113 -0
  905. package/plugins/codex/hooks/vendor/studio/forks.mjs +94 -0
  906. package/plugins/codex/hooks/vendor/studio/pitch.mjs +295 -0
  907. package/plugins/codex/hooks/vendor/verify/fingerprint.mjs +73 -0
  908. package/plugins/codex/hooks/vendor/verify/reads.mjs +33 -0
  909. package/plugins/codex/hooks/vendor/wow/picks.mjs +75 -0
  910. package/plugins/codex/mcp.json +9 -0
  911. package/plugins/codex/plugin.json +26 -0
  912. package/plugins/codex/skills/fp-art-director/SKILL.md +58 -0
  913. package/plugins/codex/skills/fp-art-director/agents/openai.yaml +12 -0
  914. package/plugins/codex/skills/fp-art-director/references/codex.md +54 -0
  915. package/plugins/codex/skills/fp-audio-director/SKILL.md +55 -0
  916. package/plugins/codex/skills/fp-audio-director/agents/openai.yaml +12 -0
  917. package/plugins/codex/skills/fp-audio-director/references/codex.md +54 -0
  918. package/plugins/codex/skills/fp-critic/SKILL.md +117 -0
  919. package/plugins/codex/skills/fp-critic/agents/openai.yaml +12 -0
  920. package/plugins/codex/skills/fp-critic/references/codex.md +54 -0
  921. package/plugins/codex/skills/fp-first-look/SKILL.md +59 -0
  922. package/plugins/codex/skills/fp-first-look/agents/openai.yaml +12 -0
  923. package/plugins/codex/skills/fp-flow/SKILL.md +50 -0
  924. package/plugins/codex/skills/fp-flow/agents/openai.yaml +12 -0
  925. package/plugins/codex/skills/fp-lane/SKILL.md +41 -0
  926. package/plugins/codex/skills/fp-lane/agents/openai.yaml +12 -0
  927. package/plugins/codex/skills/fp-lane/references/codex.md +54 -0
  928. package/plugins/codex/skills/fp-lanes/SKILL.md +38 -0
  929. package/plugins/codex/skills/fp-lanes/agents/openai.yaml +12 -0
  930. package/plugins/codex/skills/fp-level-designer/SKILL.md +49 -0
  931. package/plugins/codex/skills/fp-level-designer/agents/openai.yaml +12 -0
  932. package/plugins/codex/skills/fp-level-designer/references/codex.md +54 -0
  933. package/plugins/codex/skills/fp-mobile-qa/SKILL.md +28 -0
  934. package/plugins/codex/skills/fp-mobile-qa/agents/openai.yaml +12 -0
  935. package/plugins/codex/skills/fp-mobile-qa-seat/SKILL.md +74 -0
  936. package/plugins/codex/skills/fp-mobile-qa-seat/agents/openai.yaml +12 -0
  937. package/plugins/codex/skills/fp-mobile-qa-seat/references/codex.md +54 -0
  938. package/plugins/codex/skills/fp-new/SKILL.md +94 -0
  939. package/plugins/codex/skills/fp-new/agents/openai.yaml +12 -0
  940. package/plugins/codex/skills/fp-player/SKILL.md +147 -0
  941. package/plugins/codex/skills/fp-player/agents/openai.yaml +12 -0
  942. package/plugins/codex/skills/fp-player/references/codex.md +54 -0
  943. package/plugins/codex/skills/fp-playtest/SKILL.md +66 -0
  944. package/plugins/codex/skills/fp-playtest/agents/openai.yaml +12 -0
  945. package/plugins/codex/skills/fp-publish/SKILL.md +23 -0
  946. package/plugins/codex/skills/fp-publish/agents/openai.yaml +12 -0
  947. package/plugins/codex/skills/fp-qa-lead/SKILL.md +56 -0
  948. package/plugins/codex/skills/fp-qa-lead/agents/openai.yaml +12 -0
  949. package/plugins/codex/skills/fp-qa-lead/references/codex.md +54 -0
  950. package/plugins/codex/skills/fp-smoke-build/SKILL.md +25 -0
  951. package/plugins/codex/skills/fp-smoke-build/agents/openai.yaml +12 -0
  952. package/plugins/codex/skills/fp-studio/SKILL.md +59 -0
  953. package/plugins/codex/skills/fp-studio/agents/openai.yaml +12 -0
  954. package/plugins/codex/skills/fp-verify/SKILL.md +20 -0
  955. package/plugins/codex/skills/fp-verify/agents/openai.yaml +12 -0
  956. package/plugins/codex/skills/funpixel-3d/SKILL.md +89 -0
  957. package/plugins/codex/skills/funpixel-3d/agents/openai.yaml +12 -0
  958. package/plugins/codex/skills/funpixel-3d/references/bake-off.md +48 -0
  959. package/plugins/codex/skills/funpixel-3d/references/bench.md +103 -0
  960. package/plugins/codex/skills/funpixel-3d/references/budgets.md +48 -0
  961. package/plugins/codex/skills/funpixel-3d/references/characters.md +67 -0
  962. package/plugins/codex/skills/funpixel-3d/references/concept-image.md +47 -0
  963. package/plugins/codex/skills/funpixel-3d/references/engine-targets.md +31 -0
  964. package/plugins/codex/skills/funpixel-3d/references/hero-route.md +104 -0
  965. package/plugins/codex/skills/funpixel-3d/references/level-spec.md +109 -0
  966. package/plugins/codex/skills/funpixel-3d/references/levels.md +84 -0
  967. package/plugins/codex/skills/funpixel-3d/references/light-and-places.md +141 -0
  968. package/plugins/codex/skills/funpixel-3d/references/models.md +111 -0
  969. package/plugins/codex/skills/funpixel-3d/references/painted-target.md +184 -0
  970. package/plugins/codex/skills/funpixel-3d/references/reading.md +41 -0
  971. package/plugins/codex/skills/funpixel-3d/references/skin.md +85 -0
  972. package/plugins/codex/skills/funpixel-3d/references/skyboxes.md +65 -0
  973. package/plugins/codex/skills/funpixel-3d/references/textures.md +71 -0
  974. package/plugins/codex/skills/funpixel-3d/references/three-loading.md +199 -0
  975. package/plugins/codex/skills/funpixel-3d/references/unity.md +78 -0
  976. package/plugins/codex/skills/funpixel-art/SKILL.md +104 -0
  977. package/plugins/codex/skills/funpixel-art/agents/openai.yaml +12 -0
  978. package/plugins/codex/skills/funpixel-art/references/2d-assets.md +108 -0
  979. package/plugins/codex/skills/funpixel-art/references/animation.md +126 -0
  980. package/plugins/codex/skills/funpixel-art/references/cast.md +73 -0
  981. package/plugins/codex/skills/funpixel-art/references/characters.md +49 -0
  982. package/plugins/codex/skills/funpixel-art/references/cost.md +107 -0
  983. package/plugins/codex/skills/funpixel-art/references/effects.md +85 -0
  984. package/plugins/codex/skills/funpixel-art/references/frames.md +87 -0
  985. package/plugins/codex/skills/funpixel-art/references/judging-frames.md +64 -0
  986. package/plugins/codex/skills/funpixel-art/references/look.md +102 -0
  987. package/plugins/codex/skills/funpixel-art/references/measure.md +119 -0
  988. package/plugins/codex/skills/funpixel-art/references/pipeline.md +185 -0
  989. package/plugins/codex/skills/funpixel-art/references/pixi.md +277 -0
  990. package/plugins/codex/skills/funpixel-art/references/planes.md +27 -0
  991. package/plugins/codex/skills/funpixel-art/references/prompts.md +171 -0
  992. package/plugins/codex/skills/funpixel-art/references/sheets.md +141 -0
  993. package/plugins/codex/skills/funpixel-art/references/style-file.md +39 -0
  994. package/plugins/codex/skills/funpixel-art/references/three.md +232 -0
  995. package/plugins/codex/skills/funpixel-art/references/ui.md +163 -0
  996. package/plugins/codex/skills/funpixel-art/references/unity.md +78 -0
  997. package/plugins/codex/skills/funpixel-art/references/wiring.md +41 -0
  998. package/plugins/codex/skills/funpixel-audio/SKILL.md +92 -0
  999. package/plugins/codex/skills/funpixel-audio/agents/openai.yaml +12 -0
  1000. package/plugins/codex/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1001. package/plugins/codex/skills/funpixel-audio/references/engine.md +78 -0
  1002. package/plugins/codex/skills/funpixel-audio/references/measure.md +101 -0
  1003. package/plugins/codex/skills/funpixel-audio/references/unity.md +74 -0
  1004. package/plugins/codex/skills/funpixel-feedback/SKILL.md +120 -0
  1005. package/plugins/codex/skills/funpixel-feedback/agents/openai.yaml +12 -0
  1006. package/plugins/codex/skills/funpixel-feedback/references/memory.md +99 -0
  1007. package/plugins/codex/skills/funpixel-game-feel/SKILL.md +104 -0
  1008. package/plugins/codex/skills/funpixel-game-feel/agents/openai.yaml +12 -0
  1009. package/plugins/codex/skills/funpixel-game-feel/references/contact.md +110 -0
  1010. package/plugins/codex/skills/funpixel-game-feel/references/measure.md +125 -0
  1011. package/plugins/codex/skills/funpixel-game-feel/references/motion.md +134 -0
  1012. package/plugins/codex/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1013. package/plugins/codex/skills/funpixel-game-feel/references/recipes.md +107 -0
  1014. package/plugins/codex/skills/funpixel-game-feel/references/unity.md +73 -0
  1015. package/plugins/codex/skills/funpixel-game-logic/SKILL.md +113 -0
  1016. package/plugins/codex/skills/funpixel-game-logic/agents/openai.yaml +12 -0
  1017. package/plugins/codex/skills/funpixel-game-logic/references/balance.md +88 -0
  1018. package/plugins/codex/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1019. package/plugins/codex/skills/funpixel-game-logic/references/depth.md +89 -0
  1020. package/plugins/codex/skills/funpixel-game-logic/references/escalation.md +41 -0
  1021. package/plugins/codex/skills/funpixel-game-logic/references/levels.md +61 -0
  1022. package/plugins/codex/skills/funpixel-game-logic/references/probes.md +122 -0
  1023. package/plugins/codex/skills/funpixel-game-logic/references/unity.md +108 -0
  1024. package/plugins/codex/skills/funpixel-game-spine/SKILL.md +118 -0
  1025. package/plugins/codex/skills/funpixel-game-spine/agents/openai.yaml +12 -0
  1026. package/plugins/codex/skills/funpixel-game-spine/references/camera.md +94 -0
  1027. package/plugins/codex/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1028. package/plugins/codex/skills/funpixel-game-spine/references/patterns.md +103 -0
  1029. package/plugins/codex/skills/funpixel-game-spine/references/performance.md +96 -0
  1030. package/plugins/codex/skills/funpixel-game-spine/references/pixi.md +26 -0
  1031. package/plugins/codex/skills/funpixel-game-spine/references/replay.md +102 -0
  1032. package/plugins/codex/skills/funpixel-game-spine/references/room-api.md +63 -0
  1033. package/plugins/codex/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1034. package/plugins/codex/skills/funpixel-game-spine/references/sdk.md +114 -0
  1035. package/plugins/codex/skills/funpixel-game-spine/references/three.md +62 -0
  1036. package/plugins/codex/skills/funpixel-gdd/SKILL.md +116 -0
  1037. package/plugins/codex/skills/funpixel-gdd/agents/openai.yaml +12 -0
  1038. package/plugins/codex/skills/funpixel-gdd/references/as-built.md +40 -0
  1039. package/plugins/codex/skills/funpixel-gdd/references/design-measures.md +24 -0
  1040. package/plugins/codex/skills/funpixel-gdd/references/design-note.md +88 -0
  1041. package/plugins/codex/skills/funpixel-gdd/references/experience.md +92 -0
  1042. package/plugins/codex/skills/funpixel-gdd/references/first-look.md +226 -0
  1043. package/plugins/codex/skills/funpixel-gdd/references/floors.md +62 -0
  1044. package/plugins/codex/skills/funpixel-gdd/references/frame.md +75 -0
  1045. package/plugins/codex/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1046. package/plugins/codex/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1047. package/plugins/codex/skills/funpixel-gdd/references/genre-card.md +109 -0
  1048. package/plugins/codex/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1049. package/plugins/codex/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1050. package/plugins/codex/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1051. package/plugins/codex/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1052. package/plugins/codex/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1053. package/plugins/codex/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1054. package/plugins/codex/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1055. package/plugins/codex/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1056. package/plugins/codex/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1057. package/plugins/codex/skills/funpixel-gdd/references/invent-first.md +131 -0
  1058. package/plugins/codex/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1059. package/plugins/codex/skills/funpixel-gdd/references/pages.md +47 -0
  1060. package/plugins/codex/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1061. package/plugins/codex/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1062. package/plugins/codex/skills/funpixel-gdd/references/sections.md +148 -0
  1063. package/plugins/codex/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1064. package/plugins/codex/skills/funpixel-gdd/references/start.md +110 -0
  1065. package/plugins/codex/skills/funpixel-gdd/references/starters.md +175 -0
  1066. package/plugins/codex/skills/funpixel-gdd/references/the-path.md +133 -0
  1067. package/plugins/codex/skills/funpixel-gdd/references/track.md +29 -0
  1068. package/plugins/codex/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1069. package/plugins/codex/skills/funpixel-gdd/references/worth.md +74 -0
  1070. package/plugins/codex/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1071. package/plugins/codex/skills/funpixel-mobile-ui/agents/openai.yaml +12 -0
  1072. package/plugins/codex/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1073. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1074. package/plugins/codex/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1075. package/plugins/codex/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1076. package/plugins/codex/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1077. package/plugins/codex/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1078. package/plugins/codex/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1079. package/plugins/codex/skills/funpixel-publish/SKILL.md +109 -0
  1080. package/plugins/codex/skills/funpixel-publish/agents/openai.yaml +12 -0
  1081. package/plugins/codex/skills/funpixel-publish/references/compose.md +113 -0
  1082. package/plugins/codex/skills/funpixel-publish/references/motion.md +120 -0
  1083. package/plugins/codex/skills/funpixel-publish/references/networks.md +75 -0
  1084. package/plugins/codex/skills/funpixel-publish/references/other-hosts.md +65 -0
  1085. package/plugins/codex/skills/funpixel-publish/references/playable-ad.md +90 -0
  1086. package/plugins/codex/skills/funpixel-publish/references/server-build.md +85 -0
  1087. package/plugins/codex/skills/funpixel-publish/references/store-shots.md +85 -0
  1088. package/plugins/codex/skills/funpixel-publish/references/trailer.md +55 -0
  1089. package/plugins/codex/skills/funpixel-publish/references/what-ships.md +30 -0
  1090. package/plugins/codex/skills/funpixel-store/SKILL.md +81 -0
  1091. package/plugins/codex/skills/funpixel-store/agents/openai.yaml +12 -0
  1092. package/plugins/codex/skills/funpixel-store/references/app-store.md +73 -0
  1093. package/plugins/codex/skills/funpixel-store/references/google-play.md +141 -0
  1094. package/plugins/codex/skills/funpixel-store/references/ios-release.md +63 -0
  1095. package/plugins/codex/skills/funpixel-store/references/money.md +66 -0
  1096. package/plugins/codex/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1097. package/plugins/codex/skills/funpixel-store/references/readiness-page.md +24 -0
  1098. package/plugins/codex/skills/funpixel-store/references/readiness.md +107 -0
  1099. package/plugins/codex/skills/funpixel-store/references/steam.md +38 -0
  1100. package/plugins/codex/skills/funpixel-store/references/unity-store.md +55 -0
  1101. package/plugins/codex/skills/funpixel-store/references/web-portals.md +43 -0
  1102. package/plugins/codex/skills/funpixel-unity-game/SKILL.md +103 -0
  1103. package/plugins/codex/skills/funpixel-unity-game/agents/openai.yaml +12 -0
  1104. package/plugins/codex/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1105. package/plugins/codex/skills/funpixel-unity-game/references/fixes.md +40 -0
  1106. package/plugins/codex/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1107. package/plugins/codex/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1108. package/plugins/codex/skills/funpixel-unity-game/references/performance.md +59 -0
  1109. package/plugins/codex/skills/funpixel-unity-game/references/probe.md +80 -0
  1110. package/plugins/codex/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1111. package/plugins/codex/skills/funpixel-unity-game/references/traps.md +108 -0
  1112. package/plugins/codex/skills/funpixel-verify/SKILL.md +109 -0
  1113. package/plugins/codex/skills/funpixel-verify/agents/openai.yaml +12 -0
  1114. package/plugins/codex/skills/funpixel-verify/references/actors.md +94 -0
  1115. package/plugins/codex/skills/funpixel-verify/references/bar.md +62 -0
  1116. package/plugins/codex/skills/funpixel-verify/references/checks.md +69 -0
  1117. package/plugins/codex/skills/funpixel-verify/references/experience.md +67 -0
  1118. package/plugins/codex/skills/funpixel-verify/references/eyes.md +54 -0
  1119. package/plugins/codex/skills/funpixel-verify/references/fidelity.md +126 -0
  1120. package/plugins/codex/skills/funpixel-verify/references/hit-bar.md +31 -0
  1121. package/plugins/codex/skills/funpixel-verify/references/journeys.md +77 -0
  1122. package/plugins/codex/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1123. package/plugins/codex/skills/funpixel-verify/references/playtest.md +161 -0
  1124. package/plugins/codex/skills/funpixel-verify/references/review.md +105 -0
  1125. package/plugins/codex/skills/funpixel-verify/references/rubric.md +67 -0
  1126. package/plugins/codex/skills/funpixel-verify/references/scenes.md +49 -0
  1127. package/plugins/codex/skills/funpixel-verify/references/unity.md +60 -0
  1128. package/plugins/codex/skills/funpixel-world-and-story/SKILL.md +99 -0
  1129. package/plugins/codex/skills/funpixel-world-and-story/agents/openai.yaml +12 -0
  1130. package/plugins/codex/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1131. package/plugins/codex/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1132. package/plugins/codex/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1133. package/plugins/codex/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1134. package/plugins/codex/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1135. package/plugins/codex/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1136. package/plugins/codex/skills/funpixel-world-and-story/references/voice.md +175 -0
  1137. package/plugins/codex/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1138. package/plugins/cursor/.cursor-plugin/plugin.json +26 -0
  1139. package/plugins/cursor/LICENSE +115 -0
  1140. package/plugins/cursor/README.md +13 -0
  1141. package/plugins/cursor/THIRD_PARTY_NOTICES.md +75 -0
  1142. package/plugins/cursor/agents/art-director.md +54 -0
  1143. package/plugins/cursor/agents/audio-director.md +51 -0
  1144. package/plugins/cursor/agents/critic.md +113 -0
  1145. package/plugins/cursor/agents/lane.md +37 -0
  1146. package/plugins/cursor/agents/level-designer.md +45 -0
  1147. package/plugins/cursor/agents/mobile-qa.md +70 -0
  1148. package/plugins/cursor/agents/player.md +143 -0
  1149. package/plugins/cursor/agents/qa-lead.md +52 -0
  1150. package/plugins/cursor/commands/first-look.md +59 -0
  1151. package/plugins/cursor/commands/flow.md +50 -0
  1152. package/plugins/cursor/commands/lanes.md +38 -0
  1153. package/plugins/cursor/commands/mobile-qa.md +28 -0
  1154. package/plugins/cursor/commands/new.md +94 -0
  1155. package/plugins/cursor/commands/playtest.md +66 -0
  1156. package/plugins/cursor/commands/publish.md +23 -0
  1157. package/plugins/cursor/commands/smoke-build.md +25 -0
  1158. package/plugins/cursor/commands/verify.md +20 -0
  1159. package/plugins/cursor/hooks/brief.md +135 -0
  1160. package/plugins/cursor/hooks/critic-receipts.mjs +86 -0
  1161. package/plugins/cursor/hooks/durable.mjs +56 -0
  1162. package/plugins/cursor/hooks/fence.mjs +30 -0
  1163. package/plugins/cursor/hooks/floors.mjs +181 -0
  1164. package/plugins/cursor/hooks/flow.mjs +154 -0
  1165. package/plugins/cursor/hooks/front-door.mjs +68 -0
  1166. package/plugins/cursor/hooks/guidance.json +3 -0
  1167. package/plugins/cursor/hooks/hints.mjs +183 -0
  1168. package/plugins/cursor/hooks/hooks.json +26 -0
  1169. package/plugins/cursor/hooks/lib.mjs +362 -0
  1170. package/plugins/cursor/hooks/memory.mjs +92 -0
  1171. package/plugins/cursor/hooks/mobile-qa.mjs +43 -0
  1172. package/plugins/cursor/hooks/note.mjs +63 -0
  1173. package/plugins/cursor/hooks/nudge.mjs +98 -0
  1174. package/plugins/cursor/hooks/pipeline.mjs +207 -0
  1175. package/plugins/cursor/hooks/prompt.mjs +51 -0
  1176. package/plugins/cursor/hooks/quality.mjs +310 -0
  1177. package/plugins/cursor/hooks/reach.mjs +93 -0
  1178. package/plugins/cursor/hooks/scope.mjs +44 -0
  1179. package/plugins/cursor/hooks/session-log.mjs +101 -0
  1180. package/plugins/cursor/hooks/session-start.mjs +194 -0
  1181. package/plugins/cursor/hooks/stop-gate.mjs +303 -0
  1182. package/plugins/cursor/hooks/vendor/direct/round.mjs +81 -0
  1183. package/plugins/cursor/hooks/vendor/find/names.mjs +46 -0
  1184. package/plugins/cursor/hooks/vendor/firstlook/set.mjs +219 -0
  1185. package/plugins/cursor/hooks/vendor/flow/flow.mjs +456 -0
  1186. package/plugins/cursor/hooks/vendor/flow/look.mjs +140 -0
  1187. package/plugins/cursor/hooks/vendor/gdd/book.mjs +484 -0
  1188. package/plugins/cursor/hooks/vendor/gdd/chapters.mjs +72 -0
  1189. package/plugins/cursor/hooks/vendor/gdd/doc.mjs +33 -0
  1190. package/plugins/cursor/hooks/vendor/gdd/levelmap.mjs +429 -0
  1191. package/plugins/cursor/hooks/vendor/gdd/rubric.mjs +251 -0
  1192. package/plugins/cursor/hooks/vendor/gdd/worth.mjs +508 -0
  1193. package/plugins/cursor/hooks/vendor/lanes/fence.mjs +109 -0
  1194. package/plugins/cursor/hooks/vendor/lanes/lanes.mjs +356 -0
  1195. package/plugins/cursor/hooks/vendor/lanes/union.mjs +63 -0
  1196. package/plugins/cursor/hooks/vendor/lessons/motifs.mjs +98 -0
  1197. package/plugins/cursor/hooks/vendor/lessons/store.mjs +57 -0
  1198. package/plugins/cursor/hooks/vendor/look/made-of.mjs +243 -0
  1199. package/plugins/cursor/hooks/vendor/look/roles.mjs +110 -0
  1200. package/plugins/cursor/hooks/vendor/memory/decisions.mjs +139 -0
  1201. package/plugins/cursor/hooks/vendor/memory/journal.mjs +109 -0
  1202. package/plugins/cursor/hooks/vendor/owner/bar.mjs +286 -0
  1203. package/plugins/cursor/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1204. package/plugins/cursor/hooks/vendor/playtest/keep.mjs +111 -0
  1205. package/plugins/cursor/hooks/vendor/playtest/stuck.mjs +48 -0
  1206. package/plugins/cursor/hooks/vendor/progress/holds.mjs +107 -0
  1207. package/plugins/cursor/hooks/vendor/progress/progress.mjs +301 -0
  1208. package/plugins/cursor/hooks/vendor/sim/judge.mjs +241 -0
  1209. package/plugins/cursor/hooks/vendor/spec/rooms.mjs +189 -0
  1210. package/plugins/cursor/hooks/vendor/spec/tunables.mjs +75 -0
  1211. package/plugins/cursor/hooks/vendor/stage/harnessignore.mjs +91 -0
  1212. package/plugins/cursor/hooks/vendor/stage/stage.mjs +58 -0
  1213. package/plugins/cursor/hooks/vendor/status/board.mjs +173 -0
  1214. package/plugins/cursor/hooks/vendor/status/file.mjs +113 -0
  1215. package/plugins/cursor/hooks/vendor/studio/forks.mjs +94 -0
  1216. package/plugins/cursor/hooks/vendor/studio/pitch.mjs +295 -0
  1217. package/plugins/cursor/hooks/vendor/verify/fingerprint.mjs +73 -0
  1218. package/plugins/cursor/hooks/vendor/verify/reads.mjs +33 -0
  1219. package/plugins/cursor/hooks/vendor/wow/picks.mjs +75 -0
  1220. package/plugins/cursor/mcp.json +10 -0
  1221. package/plugins/cursor/rules/funpixel-brief.mdc +141 -0
  1222. package/plugins/cursor/skills/funpixel-3d/SKILL.md +89 -0
  1223. package/plugins/cursor/skills/funpixel-3d/references/bake-off.md +48 -0
  1224. package/plugins/cursor/skills/funpixel-3d/references/bench.md +103 -0
  1225. package/plugins/cursor/skills/funpixel-3d/references/budgets.md +48 -0
  1226. package/plugins/cursor/skills/funpixel-3d/references/characters.md +67 -0
  1227. package/plugins/cursor/skills/funpixel-3d/references/concept-image.md +47 -0
  1228. package/plugins/cursor/skills/funpixel-3d/references/engine-targets.md +31 -0
  1229. package/plugins/cursor/skills/funpixel-3d/references/hero-route.md +104 -0
  1230. package/plugins/cursor/skills/funpixel-3d/references/level-spec.md +109 -0
  1231. package/plugins/cursor/skills/funpixel-3d/references/levels.md +84 -0
  1232. package/plugins/cursor/skills/funpixel-3d/references/light-and-places.md +141 -0
  1233. package/plugins/cursor/skills/funpixel-3d/references/models.md +111 -0
  1234. package/plugins/cursor/skills/funpixel-3d/references/painted-target.md +184 -0
  1235. package/plugins/cursor/skills/funpixel-3d/references/reading.md +41 -0
  1236. package/plugins/cursor/skills/funpixel-3d/references/skin.md +85 -0
  1237. package/plugins/cursor/skills/funpixel-3d/references/skyboxes.md +65 -0
  1238. package/plugins/cursor/skills/funpixel-3d/references/textures.md +71 -0
  1239. package/plugins/cursor/skills/funpixel-3d/references/three-loading.md +199 -0
  1240. package/plugins/cursor/skills/funpixel-3d/references/unity.md +78 -0
  1241. package/plugins/cursor/skills/funpixel-art/SKILL.md +104 -0
  1242. package/plugins/cursor/skills/funpixel-art/references/2d-assets.md +108 -0
  1243. package/plugins/cursor/skills/funpixel-art/references/animation.md +126 -0
  1244. package/plugins/cursor/skills/funpixel-art/references/cast.md +73 -0
  1245. package/plugins/cursor/skills/funpixel-art/references/characters.md +49 -0
  1246. package/plugins/cursor/skills/funpixel-art/references/cost.md +107 -0
  1247. package/plugins/cursor/skills/funpixel-art/references/effects.md +85 -0
  1248. package/plugins/cursor/skills/funpixel-art/references/frames.md +87 -0
  1249. package/plugins/cursor/skills/funpixel-art/references/judging-frames.md +64 -0
  1250. package/plugins/cursor/skills/funpixel-art/references/look.md +102 -0
  1251. package/plugins/cursor/skills/funpixel-art/references/measure.md +119 -0
  1252. package/plugins/cursor/skills/funpixel-art/references/pipeline.md +185 -0
  1253. package/plugins/cursor/skills/funpixel-art/references/pixi.md +277 -0
  1254. package/plugins/cursor/skills/funpixel-art/references/planes.md +27 -0
  1255. package/plugins/cursor/skills/funpixel-art/references/prompts.md +171 -0
  1256. package/plugins/cursor/skills/funpixel-art/references/sheets.md +141 -0
  1257. package/plugins/cursor/skills/funpixel-art/references/style-file.md +39 -0
  1258. package/plugins/cursor/skills/funpixel-art/references/three.md +232 -0
  1259. package/plugins/cursor/skills/funpixel-art/references/ui.md +163 -0
  1260. package/plugins/cursor/skills/funpixel-art/references/unity.md +78 -0
  1261. package/plugins/cursor/skills/funpixel-art/references/wiring.md +41 -0
  1262. package/plugins/cursor/skills/funpixel-audio/SKILL.md +92 -0
  1263. package/plugins/cursor/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1264. package/plugins/cursor/skills/funpixel-audio/references/engine.md +78 -0
  1265. package/plugins/cursor/skills/funpixel-audio/references/measure.md +101 -0
  1266. package/plugins/cursor/skills/funpixel-audio/references/unity.md +74 -0
  1267. package/plugins/cursor/skills/funpixel-feedback/SKILL.md +120 -0
  1268. package/plugins/cursor/skills/funpixel-feedback/references/memory.md +99 -0
  1269. package/plugins/cursor/skills/funpixel-game-feel/SKILL.md +104 -0
  1270. package/plugins/cursor/skills/funpixel-game-feel/references/contact.md +110 -0
  1271. package/plugins/cursor/skills/funpixel-game-feel/references/measure.md +125 -0
  1272. package/plugins/cursor/skills/funpixel-game-feel/references/motion.md +134 -0
  1273. package/plugins/cursor/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1274. package/plugins/cursor/skills/funpixel-game-feel/references/recipes.md +107 -0
  1275. package/plugins/cursor/skills/funpixel-game-feel/references/unity.md +73 -0
  1276. package/plugins/cursor/skills/funpixel-game-logic/SKILL.md +113 -0
  1277. package/plugins/cursor/skills/funpixel-game-logic/references/balance.md +88 -0
  1278. package/plugins/cursor/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1279. package/plugins/cursor/skills/funpixel-game-logic/references/depth.md +89 -0
  1280. package/plugins/cursor/skills/funpixel-game-logic/references/escalation.md +41 -0
  1281. package/plugins/cursor/skills/funpixel-game-logic/references/levels.md +61 -0
  1282. package/plugins/cursor/skills/funpixel-game-logic/references/probes.md +122 -0
  1283. package/plugins/cursor/skills/funpixel-game-logic/references/unity.md +108 -0
  1284. package/plugins/cursor/skills/funpixel-game-spine/SKILL.md +118 -0
  1285. package/plugins/cursor/skills/funpixel-game-spine/references/camera.md +94 -0
  1286. package/plugins/cursor/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1287. package/plugins/cursor/skills/funpixel-game-spine/references/patterns.md +103 -0
  1288. package/plugins/cursor/skills/funpixel-game-spine/references/performance.md +96 -0
  1289. package/plugins/cursor/skills/funpixel-game-spine/references/pixi.md +26 -0
  1290. package/plugins/cursor/skills/funpixel-game-spine/references/replay.md +102 -0
  1291. package/plugins/cursor/skills/funpixel-game-spine/references/room-api.md +63 -0
  1292. package/plugins/cursor/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1293. package/plugins/cursor/skills/funpixel-game-spine/references/sdk.md +114 -0
  1294. package/plugins/cursor/skills/funpixel-game-spine/references/three.md +62 -0
  1295. package/plugins/cursor/skills/funpixel-gdd/SKILL.md +116 -0
  1296. package/plugins/cursor/skills/funpixel-gdd/references/as-built.md +40 -0
  1297. package/plugins/cursor/skills/funpixel-gdd/references/design-measures.md +24 -0
  1298. package/plugins/cursor/skills/funpixel-gdd/references/design-note.md +88 -0
  1299. package/plugins/cursor/skills/funpixel-gdd/references/experience.md +92 -0
  1300. package/plugins/cursor/skills/funpixel-gdd/references/first-look.md +226 -0
  1301. package/plugins/cursor/skills/funpixel-gdd/references/floors.md +62 -0
  1302. package/plugins/cursor/skills/funpixel-gdd/references/frame.md +75 -0
  1303. package/plugins/cursor/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1304. package/plugins/cursor/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1305. package/plugins/cursor/skills/funpixel-gdd/references/genre-card.md +109 -0
  1306. package/plugins/cursor/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1307. package/plugins/cursor/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1308. package/plugins/cursor/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1309. package/plugins/cursor/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1310. package/plugins/cursor/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1311. package/plugins/cursor/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1312. package/plugins/cursor/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1313. package/plugins/cursor/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1314. package/plugins/cursor/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1315. package/plugins/cursor/skills/funpixel-gdd/references/invent-first.md +131 -0
  1316. package/plugins/cursor/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1317. package/plugins/cursor/skills/funpixel-gdd/references/pages.md +47 -0
  1318. package/plugins/cursor/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1319. package/plugins/cursor/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1320. package/plugins/cursor/skills/funpixel-gdd/references/sections.md +148 -0
  1321. package/plugins/cursor/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1322. package/plugins/cursor/skills/funpixel-gdd/references/start.md +110 -0
  1323. package/plugins/cursor/skills/funpixel-gdd/references/starters.md +175 -0
  1324. package/plugins/cursor/skills/funpixel-gdd/references/the-path.md +133 -0
  1325. package/plugins/cursor/skills/funpixel-gdd/references/track.md +29 -0
  1326. package/plugins/cursor/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1327. package/plugins/cursor/skills/funpixel-gdd/references/worth.md +74 -0
  1328. package/plugins/cursor/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1329. package/plugins/cursor/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1330. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1331. package/plugins/cursor/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1332. package/plugins/cursor/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1333. package/plugins/cursor/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1334. package/plugins/cursor/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1335. package/plugins/cursor/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1336. package/plugins/cursor/skills/funpixel-publish/SKILL.md +109 -0
  1337. package/plugins/cursor/skills/funpixel-publish/references/compose.md +113 -0
  1338. package/plugins/cursor/skills/funpixel-publish/references/motion.md +120 -0
  1339. package/plugins/cursor/skills/funpixel-publish/references/networks.md +75 -0
  1340. package/plugins/cursor/skills/funpixel-publish/references/other-hosts.md +65 -0
  1341. package/plugins/cursor/skills/funpixel-publish/references/playable-ad.md +90 -0
  1342. package/plugins/cursor/skills/funpixel-publish/references/server-build.md +85 -0
  1343. package/plugins/cursor/skills/funpixel-publish/references/store-shots.md +85 -0
  1344. package/plugins/cursor/skills/funpixel-publish/references/trailer.md +55 -0
  1345. package/plugins/cursor/skills/funpixel-publish/references/what-ships.md +30 -0
  1346. package/plugins/cursor/skills/funpixel-store/SKILL.md +81 -0
  1347. package/plugins/cursor/skills/funpixel-store/references/app-store.md +73 -0
  1348. package/plugins/cursor/skills/funpixel-store/references/google-play.md +141 -0
  1349. package/plugins/cursor/skills/funpixel-store/references/ios-release.md +63 -0
  1350. package/plugins/cursor/skills/funpixel-store/references/money.md +66 -0
  1351. package/plugins/cursor/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1352. package/plugins/cursor/skills/funpixel-store/references/readiness-page.md +24 -0
  1353. package/plugins/cursor/skills/funpixel-store/references/readiness.md +107 -0
  1354. package/plugins/cursor/skills/funpixel-store/references/steam.md +38 -0
  1355. package/plugins/cursor/skills/funpixel-store/references/unity-store.md +55 -0
  1356. package/plugins/cursor/skills/funpixel-store/references/web-portals.md +43 -0
  1357. package/plugins/cursor/skills/funpixel-unity-game/SKILL.md +103 -0
  1358. package/plugins/cursor/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1359. package/plugins/cursor/skills/funpixel-unity-game/references/fixes.md +40 -0
  1360. package/plugins/cursor/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1361. package/plugins/cursor/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1362. package/plugins/cursor/skills/funpixel-unity-game/references/performance.md +59 -0
  1363. package/plugins/cursor/skills/funpixel-unity-game/references/probe.md +80 -0
  1364. package/plugins/cursor/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1365. package/plugins/cursor/skills/funpixel-unity-game/references/traps.md +108 -0
  1366. package/plugins/cursor/skills/funpixel-verify/SKILL.md +109 -0
  1367. package/plugins/cursor/skills/funpixel-verify/references/actors.md +94 -0
  1368. package/plugins/cursor/skills/funpixel-verify/references/bar.md +62 -0
  1369. package/plugins/cursor/skills/funpixel-verify/references/checks.md +69 -0
  1370. package/plugins/cursor/skills/funpixel-verify/references/experience.md +67 -0
  1371. package/plugins/cursor/skills/funpixel-verify/references/eyes.md +54 -0
  1372. package/plugins/cursor/skills/funpixel-verify/references/fidelity.md +126 -0
  1373. package/plugins/cursor/skills/funpixel-verify/references/hit-bar.md +31 -0
  1374. package/plugins/cursor/skills/funpixel-verify/references/journeys.md +77 -0
  1375. package/plugins/cursor/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1376. package/plugins/cursor/skills/funpixel-verify/references/playtest.md +161 -0
  1377. package/plugins/cursor/skills/funpixel-verify/references/review.md +105 -0
  1378. package/plugins/cursor/skills/funpixel-verify/references/rubric.md +67 -0
  1379. package/plugins/cursor/skills/funpixel-verify/references/scenes.md +49 -0
  1380. package/plugins/cursor/skills/funpixel-verify/references/unity.md +60 -0
  1381. package/plugins/cursor/skills/funpixel-world-and-story/SKILL.md +99 -0
  1382. package/plugins/cursor/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1383. package/plugins/cursor/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1384. package/plugins/cursor/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1385. package/plugins/cursor/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1386. package/plugins/cursor/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1387. package/plugins/cursor/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1388. package/plugins/cursor/skills/funpixel-world-and-story/references/voice.md +175 -0
  1389. package/plugins/cursor/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1390. package/plugins/kiro/AGENTS.md +135 -0
  1391. package/plugins/kiro/LICENSE +115 -0
  1392. package/plugins/kiro/README.md +17 -0
  1393. package/plugins/kiro/THIRD_PARTY_NOTICES.md +75 -0
  1394. package/plugins/kiro/agent.template.json +45 -0
  1395. package/plugins/kiro/hooks/brief.md +135 -0
  1396. package/plugins/kiro/hooks/critic-receipts.mjs +86 -0
  1397. package/plugins/kiro/hooks/durable.mjs +56 -0
  1398. package/plugins/kiro/hooks/fence.mjs +30 -0
  1399. package/plugins/kiro/hooks/floors.mjs +181 -0
  1400. package/plugins/kiro/hooks/flow.mjs +154 -0
  1401. package/plugins/kiro/hooks/front-door.mjs +68 -0
  1402. package/plugins/kiro/hooks/guidance.json +3 -0
  1403. package/plugins/kiro/hooks/hints.mjs +183 -0
  1404. package/plugins/kiro/hooks/host.md +43 -0
  1405. package/plugins/kiro/hooks/kiro-prompt.mjs +26 -0
  1406. package/plugins/kiro/hooks/lib.mjs +362 -0
  1407. package/plugins/kiro/hooks/memory.mjs +92 -0
  1408. package/plugins/kiro/hooks/mobile-qa.mjs +43 -0
  1409. package/plugins/kiro/hooks/note.mjs +63 -0
  1410. package/plugins/kiro/hooks/nudge.mjs +98 -0
  1411. package/plugins/kiro/hooks/pipeline.mjs +207 -0
  1412. package/plugins/kiro/hooks/prompt.mjs +51 -0
  1413. package/plugins/kiro/hooks/quality.mjs +310 -0
  1414. package/plugins/kiro/hooks/reach.mjs +93 -0
  1415. package/plugins/kiro/hooks/scope.mjs +44 -0
  1416. package/plugins/kiro/hooks/session-log.mjs +101 -0
  1417. package/plugins/kiro/hooks/session-start.mjs +194 -0
  1418. package/plugins/kiro/hooks/stop-gate.mjs +303 -0
  1419. package/plugins/kiro/hooks/vendor/direct/round.mjs +81 -0
  1420. package/plugins/kiro/hooks/vendor/find/names.mjs +46 -0
  1421. package/plugins/kiro/hooks/vendor/firstlook/set.mjs +219 -0
  1422. package/plugins/kiro/hooks/vendor/flow/flow.mjs +456 -0
  1423. package/plugins/kiro/hooks/vendor/flow/look.mjs +140 -0
  1424. package/plugins/kiro/hooks/vendor/gdd/book.mjs +484 -0
  1425. package/plugins/kiro/hooks/vendor/gdd/chapters.mjs +72 -0
  1426. package/plugins/kiro/hooks/vendor/gdd/doc.mjs +33 -0
  1427. package/plugins/kiro/hooks/vendor/gdd/levelmap.mjs +429 -0
  1428. package/plugins/kiro/hooks/vendor/gdd/rubric.mjs +251 -0
  1429. package/plugins/kiro/hooks/vendor/gdd/worth.mjs +508 -0
  1430. package/plugins/kiro/hooks/vendor/lanes/fence.mjs +109 -0
  1431. package/plugins/kiro/hooks/vendor/lanes/lanes.mjs +356 -0
  1432. package/plugins/kiro/hooks/vendor/lanes/union.mjs +63 -0
  1433. package/plugins/kiro/hooks/vendor/lessons/motifs.mjs +98 -0
  1434. package/plugins/kiro/hooks/vendor/lessons/store.mjs +57 -0
  1435. package/plugins/kiro/hooks/vendor/look/made-of.mjs +243 -0
  1436. package/plugins/kiro/hooks/vendor/look/roles.mjs +110 -0
  1437. package/plugins/kiro/hooks/vendor/memory/decisions.mjs +139 -0
  1438. package/plugins/kiro/hooks/vendor/memory/journal.mjs +109 -0
  1439. package/plugins/kiro/hooks/vendor/owner/bar.mjs +286 -0
  1440. package/plugins/kiro/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1441. package/plugins/kiro/hooks/vendor/playtest/keep.mjs +111 -0
  1442. package/plugins/kiro/hooks/vendor/playtest/stuck.mjs +48 -0
  1443. package/plugins/kiro/hooks/vendor/progress/holds.mjs +107 -0
  1444. package/plugins/kiro/hooks/vendor/progress/progress.mjs +301 -0
  1445. package/plugins/kiro/hooks/vendor/sim/judge.mjs +241 -0
  1446. package/plugins/kiro/hooks/vendor/spec/rooms.mjs +189 -0
  1447. package/plugins/kiro/hooks/vendor/spec/tunables.mjs +75 -0
  1448. package/plugins/kiro/hooks/vendor/stage/harnessignore.mjs +91 -0
  1449. package/plugins/kiro/hooks/vendor/stage/stage.mjs +58 -0
  1450. package/plugins/kiro/hooks/vendor/status/board.mjs +173 -0
  1451. package/plugins/kiro/hooks/vendor/status/file.mjs +113 -0
  1452. package/plugins/kiro/hooks/vendor/studio/forks.mjs +94 -0
  1453. package/plugins/kiro/hooks/vendor/studio/pitch.mjs +295 -0
  1454. package/plugins/kiro/hooks/vendor/verify/fingerprint.mjs +73 -0
  1455. package/plugins/kiro/hooks/vendor/verify/reads.mjs +33 -0
  1456. package/plugins/kiro/hooks/vendor/wow/picks.mjs +75 -0
  1457. package/plugins/kiro/install.mjs +37 -0
  1458. package/plugins/kiro/skills/fp-art-director/SKILL.md +58 -0
  1459. package/plugins/kiro/skills/fp-art-director/references/kiro.md +43 -0
  1460. package/plugins/kiro/skills/fp-audio-director/SKILL.md +55 -0
  1461. package/plugins/kiro/skills/fp-audio-director/references/kiro.md +43 -0
  1462. package/plugins/kiro/skills/fp-critic/SKILL.md +117 -0
  1463. package/plugins/kiro/skills/fp-critic/references/kiro.md +43 -0
  1464. package/plugins/kiro/skills/fp-first-look/SKILL.md +61 -0
  1465. package/plugins/kiro/skills/fp-flow/SKILL.md +52 -0
  1466. package/plugins/kiro/skills/fp-lane/SKILL.md +41 -0
  1467. package/plugins/kiro/skills/fp-lane/references/kiro.md +43 -0
  1468. package/plugins/kiro/skills/fp-lanes/SKILL.md +40 -0
  1469. package/plugins/kiro/skills/fp-level-designer/SKILL.md +49 -0
  1470. package/plugins/kiro/skills/fp-level-designer/references/kiro.md +43 -0
  1471. package/plugins/kiro/skills/fp-mobile-qa/SKILL.md +30 -0
  1472. package/plugins/kiro/skills/fp-mobile-qa-seat/SKILL.md +74 -0
  1473. package/plugins/kiro/skills/fp-mobile-qa-seat/references/kiro.md +43 -0
  1474. package/plugins/kiro/skills/fp-new/SKILL.md +96 -0
  1475. package/plugins/kiro/skills/fp-player/SKILL.md +147 -0
  1476. package/plugins/kiro/skills/fp-player/references/kiro.md +43 -0
  1477. package/plugins/kiro/skills/fp-playtest/SKILL.md +68 -0
  1478. package/plugins/kiro/skills/fp-publish/SKILL.md +25 -0
  1479. package/plugins/kiro/skills/fp-qa-lead/SKILL.md +56 -0
  1480. package/plugins/kiro/skills/fp-qa-lead/references/kiro.md +43 -0
  1481. package/plugins/kiro/skills/fp-smoke-build/SKILL.md +27 -0
  1482. package/plugins/kiro/skills/fp-studio/SKILL.md +48 -0
  1483. package/plugins/kiro/skills/fp-verify/SKILL.md +22 -0
  1484. package/plugins/kiro/skills/funpixel-3d/SKILL.md +89 -0
  1485. package/plugins/kiro/skills/funpixel-3d/references/bake-off.md +48 -0
  1486. package/plugins/kiro/skills/funpixel-3d/references/bench.md +103 -0
  1487. package/plugins/kiro/skills/funpixel-3d/references/budgets.md +48 -0
  1488. package/plugins/kiro/skills/funpixel-3d/references/characters.md +67 -0
  1489. package/plugins/kiro/skills/funpixel-3d/references/concept-image.md +47 -0
  1490. package/plugins/kiro/skills/funpixel-3d/references/engine-targets.md +31 -0
  1491. package/plugins/kiro/skills/funpixel-3d/references/hero-route.md +104 -0
  1492. package/plugins/kiro/skills/funpixel-3d/references/level-spec.md +109 -0
  1493. package/plugins/kiro/skills/funpixel-3d/references/levels.md +84 -0
  1494. package/plugins/kiro/skills/funpixel-3d/references/light-and-places.md +141 -0
  1495. package/plugins/kiro/skills/funpixel-3d/references/models.md +111 -0
  1496. package/plugins/kiro/skills/funpixel-3d/references/painted-target.md +184 -0
  1497. package/plugins/kiro/skills/funpixel-3d/references/reading.md +41 -0
  1498. package/plugins/kiro/skills/funpixel-3d/references/skin.md +85 -0
  1499. package/plugins/kiro/skills/funpixel-3d/references/skyboxes.md +65 -0
  1500. package/plugins/kiro/skills/funpixel-3d/references/textures.md +71 -0
  1501. package/plugins/kiro/skills/funpixel-3d/references/three-loading.md +199 -0
  1502. package/plugins/kiro/skills/funpixel-3d/references/unity.md +78 -0
  1503. package/plugins/kiro/skills/funpixel-art/SKILL.md +104 -0
  1504. package/plugins/kiro/skills/funpixel-art/references/2d-assets.md +108 -0
  1505. package/plugins/kiro/skills/funpixel-art/references/animation.md +126 -0
  1506. package/plugins/kiro/skills/funpixel-art/references/cast.md +73 -0
  1507. package/plugins/kiro/skills/funpixel-art/references/characters.md +49 -0
  1508. package/plugins/kiro/skills/funpixel-art/references/cost.md +107 -0
  1509. package/plugins/kiro/skills/funpixel-art/references/effects.md +85 -0
  1510. package/plugins/kiro/skills/funpixel-art/references/frames.md +87 -0
  1511. package/plugins/kiro/skills/funpixel-art/references/judging-frames.md +64 -0
  1512. package/plugins/kiro/skills/funpixel-art/references/look.md +102 -0
  1513. package/plugins/kiro/skills/funpixel-art/references/measure.md +119 -0
  1514. package/plugins/kiro/skills/funpixel-art/references/pipeline.md +185 -0
  1515. package/plugins/kiro/skills/funpixel-art/references/pixi.md +277 -0
  1516. package/plugins/kiro/skills/funpixel-art/references/planes.md +27 -0
  1517. package/plugins/kiro/skills/funpixel-art/references/prompts.md +171 -0
  1518. package/plugins/kiro/skills/funpixel-art/references/sheets.md +141 -0
  1519. package/plugins/kiro/skills/funpixel-art/references/style-file.md +39 -0
  1520. package/plugins/kiro/skills/funpixel-art/references/three.md +232 -0
  1521. package/plugins/kiro/skills/funpixel-art/references/ui.md +163 -0
  1522. package/plugins/kiro/skills/funpixel-art/references/unity.md +78 -0
  1523. package/plugins/kiro/skills/funpixel-art/references/wiring.md +41 -0
  1524. package/plugins/kiro/skills/funpixel-audio/SKILL.md +92 -0
  1525. package/plugins/kiro/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1526. package/plugins/kiro/skills/funpixel-audio/references/engine.md +78 -0
  1527. package/plugins/kiro/skills/funpixel-audio/references/measure.md +101 -0
  1528. package/plugins/kiro/skills/funpixel-audio/references/unity.md +74 -0
  1529. package/plugins/kiro/skills/funpixel-feedback/SKILL.md +120 -0
  1530. package/plugins/kiro/skills/funpixel-feedback/references/memory.md +99 -0
  1531. package/plugins/kiro/skills/funpixel-game-feel/SKILL.md +104 -0
  1532. package/plugins/kiro/skills/funpixel-game-feel/references/contact.md +110 -0
  1533. package/plugins/kiro/skills/funpixel-game-feel/references/measure.md +125 -0
  1534. package/plugins/kiro/skills/funpixel-game-feel/references/motion.md +134 -0
  1535. package/plugins/kiro/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1536. package/plugins/kiro/skills/funpixel-game-feel/references/recipes.md +107 -0
  1537. package/plugins/kiro/skills/funpixel-game-feel/references/unity.md +73 -0
  1538. package/plugins/kiro/skills/funpixel-game-logic/SKILL.md +113 -0
  1539. package/plugins/kiro/skills/funpixel-game-logic/references/balance.md +88 -0
  1540. package/plugins/kiro/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1541. package/plugins/kiro/skills/funpixel-game-logic/references/depth.md +89 -0
  1542. package/plugins/kiro/skills/funpixel-game-logic/references/escalation.md +41 -0
  1543. package/plugins/kiro/skills/funpixel-game-logic/references/levels.md +61 -0
  1544. package/plugins/kiro/skills/funpixel-game-logic/references/probes.md +122 -0
  1545. package/plugins/kiro/skills/funpixel-game-logic/references/unity.md +108 -0
  1546. package/plugins/kiro/skills/funpixel-game-spine/SKILL.md +118 -0
  1547. package/plugins/kiro/skills/funpixel-game-spine/references/camera.md +94 -0
  1548. package/plugins/kiro/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1549. package/plugins/kiro/skills/funpixel-game-spine/references/patterns.md +103 -0
  1550. package/plugins/kiro/skills/funpixel-game-spine/references/performance.md +96 -0
  1551. package/plugins/kiro/skills/funpixel-game-spine/references/pixi.md +26 -0
  1552. package/plugins/kiro/skills/funpixel-game-spine/references/replay.md +102 -0
  1553. package/plugins/kiro/skills/funpixel-game-spine/references/room-api.md +63 -0
  1554. package/plugins/kiro/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1555. package/plugins/kiro/skills/funpixel-game-spine/references/sdk.md +114 -0
  1556. package/plugins/kiro/skills/funpixel-game-spine/references/three.md +62 -0
  1557. package/plugins/kiro/skills/funpixel-gdd/SKILL.md +116 -0
  1558. package/plugins/kiro/skills/funpixel-gdd/references/as-built.md +40 -0
  1559. package/plugins/kiro/skills/funpixel-gdd/references/design-measures.md +24 -0
  1560. package/plugins/kiro/skills/funpixel-gdd/references/design-note.md +88 -0
  1561. package/plugins/kiro/skills/funpixel-gdd/references/experience.md +92 -0
  1562. package/plugins/kiro/skills/funpixel-gdd/references/first-look.md +226 -0
  1563. package/plugins/kiro/skills/funpixel-gdd/references/floors.md +62 -0
  1564. package/plugins/kiro/skills/funpixel-gdd/references/frame.md +75 -0
  1565. package/plugins/kiro/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  1566. package/plugins/kiro/skills/funpixel-gdd/references/gdd-template.md +417 -0
  1567. package/plugins/kiro/skills/funpixel-gdd/references/genre-card.md +109 -0
  1568. package/plugins/kiro/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  1569. package/plugins/kiro/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  1570. package/plugins/kiro/skills/funpixel-gdd/references/genre-racing.md +137 -0
  1571. package/plugins/kiro/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  1572. package/plugins/kiro/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  1573. package/plugins/kiro/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  1574. package/plugins/kiro/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  1575. package/plugins/kiro/skills/funpixel-gdd/references/genre-survival.md +122 -0
  1576. package/plugins/kiro/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  1577. package/plugins/kiro/skills/funpixel-gdd/references/invent-first.md +131 -0
  1578. package/plugins/kiro/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  1579. package/plugins/kiro/skills/funpixel-gdd/references/pages.md +47 -0
  1580. package/plugins/kiro/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  1581. package/plugins/kiro/skills/funpixel-gdd/references/production-tiers.md +117 -0
  1582. package/plugins/kiro/skills/funpixel-gdd/references/sections.md +148 -0
  1583. package/plugins/kiro/skills/funpixel-gdd/references/spec-folder.md +131 -0
  1584. package/plugins/kiro/skills/funpixel-gdd/references/start.md +110 -0
  1585. package/plugins/kiro/skills/funpixel-gdd/references/starters.md +175 -0
  1586. package/plugins/kiro/skills/funpixel-gdd/references/the-path.md +133 -0
  1587. package/plugins/kiro/skills/funpixel-gdd/references/track.md +29 -0
  1588. package/plugins/kiro/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  1589. package/plugins/kiro/skills/funpixel-gdd/references/worth.md +74 -0
  1590. package/plugins/kiro/skills/funpixel-mobile-ui/SKILL.md +107 -0
  1591. package/plugins/kiro/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  1592. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  1593. package/plugins/kiro/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  1594. package/plugins/kiro/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  1595. package/plugins/kiro/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  1596. package/plugins/kiro/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  1597. package/plugins/kiro/skills/funpixel-mobile-ui/references/unity.md +61 -0
  1598. package/plugins/kiro/skills/funpixel-publish/SKILL.md +109 -0
  1599. package/plugins/kiro/skills/funpixel-publish/references/compose.md +113 -0
  1600. package/plugins/kiro/skills/funpixel-publish/references/motion.md +120 -0
  1601. package/plugins/kiro/skills/funpixel-publish/references/networks.md +75 -0
  1602. package/plugins/kiro/skills/funpixel-publish/references/other-hosts.md +65 -0
  1603. package/plugins/kiro/skills/funpixel-publish/references/playable-ad.md +90 -0
  1604. package/plugins/kiro/skills/funpixel-publish/references/server-build.md +85 -0
  1605. package/plugins/kiro/skills/funpixel-publish/references/store-shots.md +85 -0
  1606. package/plugins/kiro/skills/funpixel-publish/references/trailer.md +55 -0
  1607. package/plugins/kiro/skills/funpixel-publish/references/what-ships.md +30 -0
  1608. package/plugins/kiro/skills/funpixel-store/SKILL.md +81 -0
  1609. package/plugins/kiro/skills/funpixel-store/references/app-store.md +73 -0
  1610. package/plugins/kiro/skills/funpixel-store/references/google-play.md +141 -0
  1611. package/plugins/kiro/skills/funpixel-store/references/ios-release.md +63 -0
  1612. package/plugins/kiro/skills/funpixel-store/references/money.md +66 -0
  1613. package/plugins/kiro/skills/funpixel-store/references/purchases-and-review.md +74 -0
  1614. package/plugins/kiro/skills/funpixel-store/references/readiness-page.md +24 -0
  1615. package/plugins/kiro/skills/funpixel-store/references/readiness.md +107 -0
  1616. package/plugins/kiro/skills/funpixel-store/references/steam.md +38 -0
  1617. package/plugins/kiro/skills/funpixel-store/references/unity-store.md +55 -0
  1618. package/plugins/kiro/skills/funpixel-store/references/web-portals.md +43 -0
  1619. package/plugins/kiro/skills/funpixel-unity-game/SKILL.md +103 -0
  1620. package/plugins/kiro/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  1621. package/plugins/kiro/skills/funpixel-unity-game/references/fixes.md +40 -0
  1622. package/plugins/kiro/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  1623. package/plugins/kiro/skills/funpixel-unity-game/references/handing-off.md +42 -0
  1624. package/plugins/kiro/skills/funpixel-unity-game/references/performance.md +59 -0
  1625. package/plugins/kiro/skills/funpixel-unity-game/references/probe.md +80 -0
  1626. package/plugins/kiro/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  1627. package/plugins/kiro/skills/funpixel-unity-game/references/traps.md +108 -0
  1628. package/plugins/kiro/skills/funpixel-verify/SKILL.md +109 -0
  1629. package/plugins/kiro/skills/funpixel-verify/references/actors.md +94 -0
  1630. package/plugins/kiro/skills/funpixel-verify/references/bar.md +62 -0
  1631. package/plugins/kiro/skills/funpixel-verify/references/checks.md +69 -0
  1632. package/plugins/kiro/skills/funpixel-verify/references/experience.md +67 -0
  1633. package/plugins/kiro/skills/funpixel-verify/references/eyes.md +54 -0
  1634. package/plugins/kiro/skills/funpixel-verify/references/fidelity.md +126 -0
  1635. package/plugins/kiro/skills/funpixel-verify/references/hit-bar.md +31 -0
  1636. package/plugins/kiro/skills/funpixel-verify/references/journeys.md +77 -0
  1637. package/plugins/kiro/skills/funpixel-verify/references/mobile-qa.md +123 -0
  1638. package/plugins/kiro/skills/funpixel-verify/references/playtest.md +161 -0
  1639. package/plugins/kiro/skills/funpixel-verify/references/review.md +105 -0
  1640. package/plugins/kiro/skills/funpixel-verify/references/rubric.md +67 -0
  1641. package/plugins/kiro/skills/funpixel-verify/references/scenes.md +49 -0
  1642. package/plugins/kiro/skills/funpixel-verify/references/unity.md +60 -0
  1643. package/plugins/kiro/skills/funpixel-world-and-story/SKILL.md +99 -0
  1644. package/plugins/kiro/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  1645. package/plugins/kiro/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  1646. package/plugins/kiro/skills/funpixel-world-and-story/references/living-world.md +237 -0
  1647. package/plugins/kiro/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  1648. package/plugins/kiro/skills/funpixel-world-and-story/references/shelf.md +80 -0
  1649. package/plugins/kiro/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  1650. package/plugins/kiro/skills/funpixel-world-and-story/references/voice.md +175 -0
  1651. package/plugins/kiro/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  1652. package/plugins/robin/LICENSE +115 -0
  1653. package/plugins/robin/README.md +27 -0
  1654. package/plugins/robin/THIRD_PARTY_NOTICES.md +75 -0
  1655. package/plugins/robin/claude/.claude-plugin/plugin.json +19 -0
  1656. package/plugins/robin/claude/.mcp.json +10 -0
  1657. package/plugins/robin/claude/LICENSE +115 -0
  1658. package/plugins/robin/claude/README.md +14 -0
  1659. package/plugins/robin/claude/THIRD_PARTY_NOTICES.md +75 -0
  1660. package/plugins/robin/claude/agents/art-director.md +54 -0
  1661. package/plugins/robin/claude/agents/audio-director.md +51 -0
  1662. package/plugins/robin/claude/agents/critic.md +113 -0
  1663. package/plugins/robin/claude/agents/lane.md +38 -0
  1664. package/plugins/robin/claude/agents/level-designer.md +45 -0
  1665. package/plugins/robin/claude/agents/mobile-qa.md +71 -0
  1666. package/plugins/robin/claude/agents/player.md +144 -0
  1667. package/plugins/robin/claude/agents/qa-lead.md +52 -0
  1668. package/plugins/robin/claude/commands/first-look.md +59 -0
  1669. package/plugins/robin/claude/commands/flow.md +50 -0
  1670. package/plugins/robin/claude/commands/lanes.md +38 -0
  1671. package/plugins/robin/claude/commands/mobile-qa.md +28 -0
  1672. package/plugins/robin/claude/commands/new.md +94 -0
  1673. package/plugins/robin/claude/commands/playtest.md +66 -0
  1674. package/plugins/robin/claude/commands/publish.md +23 -0
  1675. package/plugins/robin/claude/commands/smoke-build.md +25 -0
  1676. package/plugins/robin/claude/commands/verify.md +20 -0
  1677. package/plugins/robin/claude/hooks/brief.md +135 -0
  1678. package/plugins/robin/claude/hooks/critic-receipts.mjs +86 -0
  1679. package/plugins/robin/claude/hooks/durable.mjs +56 -0
  1680. package/plugins/robin/claude/hooks/fence.mjs +30 -0
  1681. package/plugins/robin/claude/hooks/floors.mjs +181 -0
  1682. package/plugins/robin/claude/hooks/flow.mjs +154 -0
  1683. package/plugins/robin/claude/hooks/front-door.mjs +68 -0
  1684. package/plugins/robin/claude/hooks/guidance.json +3 -0
  1685. package/plugins/robin/claude/hooks/hints.mjs +183 -0
  1686. package/plugins/robin/claude/hooks/hooks.json +62 -0
  1687. package/plugins/robin/claude/hooks/lib.mjs +362 -0
  1688. package/plugins/robin/claude/hooks/memory.mjs +92 -0
  1689. package/plugins/robin/claude/hooks/mobile-qa.mjs +43 -0
  1690. package/plugins/robin/claude/hooks/note.mjs +63 -0
  1691. package/plugins/robin/claude/hooks/nudge.mjs +98 -0
  1692. package/plugins/robin/claude/hooks/pipeline.mjs +207 -0
  1693. package/plugins/robin/claude/hooks/prompt.mjs +51 -0
  1694. package/plugins/robin/claude/hooks/quality.mjs +310 -0
  1695. package/plugins/robin/claude/hooks/reach.mjs +93 -0
  1696. package/plugins/robin/claude/hooks/scope.mjs +44 -0
  1697. package/plugins/robin/claude/hooks/session-log.mjs +101 -0
  1698. package/plugins/robin/claude/hooks/session-start.mjs +194 -0
  1699. package/plugins/robin/claude/hooks/skill-names.json +19 -0
  1700. package/plugins/robin/claude/hooks/stop-gate.mjs +303 -0
  1701. package/plugins/robin/claude/hooks/vendor/direct/round.mjs +81 -0
  1702. package/plugins/robin/claude/hooks/vendor/find/names.mjs +46 -0
  1703. package/plugins/robin/claude/hooks/vendor/firstlook/set.mjs +219 -0
  1704. package/plugins/robin/claude/hooks/vendor/flow/flow.mjs +456 -0
  1705. package/plugins/robin/claude/hooks/vendor/flow/look.mjs +140 -0
  1706. package/plugins/robin/claude/hooks/vendor/gdd/book.mjs +484 -0
  1707. package/plugins/robin/claude/hooks/vendor/gdd/chapters.mjs +72 -0
  1708. package/plugins/robin/claude/hooks/vendor/gdd/doc.mjs +33 -0
  1709. package/plugins/robin/claude/hooks/vendor/gdd/levelmap.mjs +429 -0
  1710. package/plugins/robin/claude/hooks/vendor/gdd/rubric.mjs +251 -0
  1711. package/plugins/robin/claude/hooks/vendor/gdd/worth.mjs +508 -0
  1712. package/plugins/robin/claude/hooks/vendor/lanes/fence.mjs +109 -0
  1713. package/plugins/robin/claude/hooks/vendor/lanes/lanes.mjs +356 -0
  1714. package/plugins/robin/claude/hooks/vendor/lanes/union.mjs +63 -0
  1715. package/plugins/robin/claude/hooks/vendor/lessons/motifs.mjs +98 -0
  1716. package/plugins/robin/claude/hooks/vendor/lessons/store.mjs +57 -0
  1717. package/plugins/robin/claude/hooks/vendor/look/made-of.mjs +243 -0
  1718. package/plugins/robin/claude/hooks/vendor/look/roles.mjs +110 -0
  1719. package/plugins/robin/claude/hooks/vendor/memory/decisions.mjs +139 -0
  1720. package/plugins/robin/claude/hooks/vendor/memory/journal.mjs +109 -0
  1721. package/plugins/robin/claude/hooks/vendor/owner/bar.mjs +286 -0
  1722. package/plugins/robin/claude/hooks/vendor/pipeline/pipeline.mjs +930 -0
  1723. package/plugins/robin/claude/hooks/vendor/playtest/keep.mjs +111 -0
  1724. package/plugins/robin/claude/hooks/vendor/playtest/stuck.mjs +48 -0
  1725. package/plugins/robin/claude/hooks/vendor/progress/holds.mjs +107 -0
  1726. package/plugins/robin/claude/hooks/vendor/progress/progress.mjs +301 -0
  1727. package/plugins/robin/claude/hooks/vendor/sim/judge.mjs +241 -0
  1728. package/plugins/robin/claude/hooks/vendor/spec/rooms.mjs +189 -0
  1729. package/plugins/robin/claude/hooks/vendor/spec/tunables.mjs +75 -0
  1730. package/plugins/robin/claude/hooks/vendor/stage/harnessignore.mjs +91 -0
  1731. package/plugins/robin/claude/hooks/vendor/stage/stage.mjs +58 -0
  1732. package/plugins/robin/claude/hooks/vendor/status/board.mjs +173 -0
  1733. package/plugins/robin/claude/hooks/vendor/status/file.mjs +113 -0
  1734. package/plugins/robin/claude/hooks/vendor/studio/forks.mjs +94 -0
  1735. package/plugins/robin/claude/hooks/vendor/studio/pitch.mjs +295 -0
  1736. package/plugins/robin/claude/hooks/vendor/verify/fingerprint.mjs +73 -0
  1737. package/plugins/robin/claude/hooks/vendor/verify/reads.mjs +33 -0
  1738. package/plugins/robin/claude/hooks/vendor/wow/picks.mjs +75 -0
  1739. package/plugins/robin/claude/skills/3d/SKILL.md +89 -0
  1740. package/plugins/robin/claude/skills/3d/references/bake-off.md +48 -0
  1741. package/plugins/robin/claude/skills/3d/references/bench.md +103 -0
  1742. package/plugins/robin/claude/skills/3d/references/budgets.md +48 -0
  1743. package/plugins/robin/claude/skills/3d/references/characters.md +67 -0
  1744. package/plugins/robin/claude/skills/3d/references/concept-image.md +47 -0
  1745. package/plugins/robin/claude/skills/3d/references/engine-targets.md +31 -0
  1746. package/plugins/robin/claude/skills/3d/references/hero-route.md +104 -0
  1747. package/plugins/robin/claude/skills/3d/references/level-spec.md +109 -0
  1748. package/plugins/robin/claude/skills/3d/references/levels.md +84 -0
  1749. package/plugins/robin/claude/skills/3d/references/light-and-places.md +141 -0
  1750. package/plugins/robin/claude/skills/3d/references/models.md +111 -0
  1751. package/plugins/robin/claude/skills/3d/references/painted-target.md +184 -0
  1752. package/plugins/robin/claude/skills/3d/references/reading.md +41 -0
  1753. package/plugins/robin/claude/skills/3d/references/skin.md +85 -0
  1754. package/plugins/robin/claude/skills/3d/references/skyboxes.md +65 -0
  1755. package/plugins/robin/claude/skills/3d/references/textures.md +71 -0
  1756. package/plugins/robin/claude/skills/3d/references/three-loading.md +199 -0
  1757. package/plugins/robin/claude/skills/3d/references/unity.md +78 -0
  1758. package/plugins/robin/claude/skills/art/SKILL.md +104 -0
  1759. package/plugins/robin/claude/skills/art/references/2d-assets.md +108 -0
  1760. package/plugins/robin/claude/skills/art/references/animation.md +126 -0
  1761. package/plugins/robin/claude/skills/art/references/cast.md +73 -0
  1762. package/plugins/robin/claude/skills/art/references/characters.md +49 -0
  1763. package/plugins/robin/claude/skills/art/references/cost.md +107 -0
  1764. package/plugins/robin/claude/skills/art/references/effects.md +85 -0
  1765. package/plugins/robin/claude/skills/art/references/frames.md +87 -0
  1766. package/plugins/robin/claude/skills/art/references/judging-frames.md +64 -0
  1767. package/plugins/robin/claude/skills/art/references/look.md +102 -0
  1768. package/plugins/robin/claude/skills/art/references/measure.md +119 -0
  1769. package/plugins/robin/claude/skills/art/references/pipeline.md +185 -0
  1770. package/plugins/robin/claude/skills/art/references/pixi.md +277 -0
  1771. package/plugins/robin/claude/skills/art/references/planes.md +27 -0
  1772. package/plugins/robin/claude/skills/art/references/prompts.md +171 -0
  1773. package/plugins/robin/claude/skills/art/references/sheets.md +141 -0
  1774. package/plugins/robin/claude/skills/art/references/style-file.md +39 -0
  1775. package/plugins/robin/claude/skills/art/references/three.md +232 -0
  1776. package/plugins/robin/claude/skills/art/references/ui.md +163 -0
  1777. package/plugins/robin/claude/skills/art/references/unity.md +78 -0
  1778. package/plugins/robin/claude/skills/art/references/wiring.md +41 -0
  1779. package/plugins/robin/claude/skills/audio/SKILL.md +92 -0
  1780. package/plugins/robin/claude/skills/audio/references/adaptive-music.md +204 -0
  1781. package/plugins/robin/claude/skills/audio/references/engine.md +78 -0
  1782. package/plugins/robin/claude/skills/audio/references/measure.md +101 -0
  1783. package/plugins/robin/claude/skills/audio/references/unity.md +74 -0
  1784. package/plugins/robin/claude/skills/feedback/SKILL.md +120 -0
  1785. package/plugins/robin/claude/skills/feedback/references/memory.md +99 -0
  1786. package/plugins/robin/claude/skills/game-feel/SKILL.md +104 -0
  1787. package/plugins/robin/claude/skills/game-feel/references/contact.md +110 -0
  1788. package/plugins/robin/claude/skills/game-feel/references/measure.md +125 -0
  1789. package/plugins/robin/claude/skills/game-feel/references/motion.md +134 -0
  1790. package/plugins/robin/claude/skills/game-feel/references/payoffs.md +35 -0
  1791. package/plugins/robin/claude/skills/game-feel/references/recipes.md +107 -0
  1792. package/plugins/robin/claude/skills/game-feel/references/unity.md +73 -0
  1793. package/plugins/robin/claude/skills/game-logic/SKILL.md +113 -0
  1794. package/plugins/robin/claude/skills/game-logic/references/balance.md +88 -0
  1795. package/plugins/robin/claude/skills/game-logic/references/content-at-scale.md +147 -0
  1796. package/plugins/robin/claude/skills/game-logic/references/depth.md +89 -0
  1797. package/plugins/robin/claude/skills/game-logic/references/escalation.md +41 -0
  1798. package/plugins/robin/claude/skills/game-logic/references/levels.md +61 -0
  1799. package/plugins/robin/claude/skills/game-logic/references/probes.md +122 -0
  1800. package/plugins/robin/claude/skills/game-logic/references/unity.md +108 -0
  1801. package/plugins/robin/claude/skills/game-spine/SKILL.md +118 -0
  1802. package/plugins/robin/claude/skills/game-spine/references/camera.md +94 -0
  1803. package/plugins/robin/claude/skills/game-spine/references/multiplayer.md +101 -0
  1804. package/plugins/robin/claude/skills/game-spine/references/patterns.md +103 -0
  1805. package/plugins/robin/claude/skills/game-spine/references/performance.md +96 -0
  1806. package/plugins/robin/claude/skills/game-spine/references/pixi.md +26 -0
  1807. package/plugins/robin/claude/skills/game-spine/references/replay.md +102 -0
  1808. package/plugins/robin/claude/skills/game-spine/references/room-api.md +63 -0
  1809. package/plugins/robin/claude/skills/game-spine/references/room-modes.md +40 -0
  1810. package/plugins/robin/claude/skills/game-spine/references/sdk.md +114 -0
  1811. package/plugins/robin/claude/skills/game-spine/references/three.md +62 -0
  1812. package/plugins/robin/claude/skills/gdd/SKILL.md +116 -0
  1813. package/plugins/robin/claude/skills/gdd/references/as-built.md +40 -0
  1814. package/plugins/robin/claude/skills/gdd/references/design-measures.md +24 -0
  1815. package/plugins/robin/claude/skills/gdd/references/design-note.md +88 -0
  1816. package/plugins/robin/claude/skills/gdd/references/experience.md +92 -0
  1817. package/plugins/robin/claude/skills/gdd/references/first-look.md +226 -0
  1818. package/plugins/robin/claude/skills/gdd/references/floors.md +62 -0
  1819. package/plugins/robin/claude/skills/gdd/references/frame.md +75 -0
  1820. package/plugins/robin/claude/skills/gdd/references/gameplay-contract.md +81 -0
  1821. package/plugins/robin/claude/skills/gdd/references/gdd-template.md +417 -0
  1822. package/plugins/robin/claude/skills/gdd/references/genre-card.md +109 -0
  1823. package/plugins/robin/claude/skills/gdd/references/genre-platformer.md +159 -0
  1824. package/plugins/robin/claude/skills/gdd/references/genre-puzzle.md +145 -0
  1825. package/plugins/robin/claude/skills/gdd/references/genre-racing.md +137 -0
  1826. package/plugins/robin/claude/skills/gdd/references/genre-rpg.md +125 -0
  1827. package/plugins/robin/claude/skills/gdd/references/genre-shooter.md +128 -0
  1828. package/plugins/robin/claude/skills/gdd/references/genre-simulation.md +112 -0
  1829. package/plugins/robin/claude/skills/gdd/references/genre-strategy.md +116 -0
  1830. package/plugins/robin/claude/skills/gdd/references/genre-survival.md +122 -0
  1831. package/plugins/robin/claude/skills/gdd/references/in-the-loop.md +106 -0
  1832. package/plugins/robin/claude/skills/gdd/references/invent-first.md +131 -0
  1833. package/plugins/robin/claude/skills/gdd/references/level-and-fun.md +112 -0
  1834. package/plugins/robin/claude/skills/gdd/references/pages.md +47 -0
  1835. package/plugins/robin/claude/skills/gdd/references/plan-at-size.md +140 -0
  1836. package/plugins/robin/claude/skills/gdd/references/production-tiers.md +117 -0
  1837. package/plugins/robin/claude/skills/gdd/references/sections.md +148 -0
  1838. package/plugins/robin/claude/skills/gdd/references/spec-folder.md +131 -0
  1839. package/plugins/robin/claude/skills/gdd/references/start.md +110 -0
  1840. package/plugins/robin/claude/skills/gdd/references/starters.md +175 -0
  1841. package/plugins/robin/claude/skills/gdd/references/the-path.md +133 -0
  1842. package/plugins/robin/claude/skills/gdd/references/track.md +29 -0
  1843. package/plugins/robin/claude/skills/gdd/references/world-and-identity.md +165 -0
  1844. package/plugins/robin/claude/skills/gdd/references/worth.md +74 -0
  1845. package/plugins/robin/claude/skills/mobile-ui/SKILL.md +107 -0
  1846. package/plugins/robin/claude/skills/mobile-ui/references/contrast.md +123 -0
  1847. package/plugins/robin/claude/skills/mobile-ui/references/hud-and-title.md +108 -0
  1848. package/plugins/robin/claude/skills/mobile-ui/references/hud-genres.md +124 -0
  1849. package/plugins/robin/claude/skills/mobile-ui/references/phone-check.md +156 -0
  1850. package/plugins/robin/claude/skills/mobile-ui/references/recipes.md +279 -0
  1851. package/plugins/robin/claude/skills/mobile-ui/references/restyle-ui.md +229 -0
  1852. package/plugins/robin/claude/skills/mobile-ui/references/unity.md +61 -0
  1853. package/plugins/robin/claude/skills/publishing/SKILL.md +109 -0
  1854. package/plugins/robin/claude/skills/publishing/references/compose.md +113 -0
  1855. package/plugins/robin/claude/skills/publishing/references/motion.md +120 -0
  1856. package/plugins/robin/claude/skills/publishing/references/networks.md +75 -0
  1857. package/plugins/robin/claude/skills/publishing/references/other-hosts.md +65 -0
  1858. package/plugins/robin/claude/skills/publishing/references/playable-ad.md +90 -0
  1859. package/plugins/robin/claude/skills/publishing/references/server-build.md +85 -0
  1860. package/plugins/robin/claude/skills/publishing/references/store-shots.md +85 -0
  1861. package/plugins/robin/claude/skills/publishing/references/trailer.md +55 -0
  1862. package/plugins/robin/claude/skills/publishing/references/what-ships.md +30 -0
  1863. package/plugins/robin/claude/skills/store/SKILL.md +81 -0
  1864. package/plugins/robin/claude/skills/store/references/app-store.md +73 -0
  1865. package/plugins/robin/claude/skills/store/references/google-play.md +141 -0
  1866. package/plugins/robin/claude/skills/store/references/ios-release.md +63 -0
  1867. package/plugins/robin/claude/skills/store/references/money.md +66 -0
  1868. package/plugins/robin/claude/skills/store/references/purchases-and-review.md +74 -0
  1869. package/plugins/robin/claude/skills/store/references/readiness-page.md +24 -0
  1870. package/plugins/robin/claude/skills/store/references/readiness.md +107 -0
  1871. package/plugins/robin/claude/skills/store/references/steam.md +38 -0
  1872. package/plugins/robin/claude/skills/store/references/unity-store.md +55 -0
  1873. package/plugins/robin/claude/skills/store/references/web-portals.md +43 -0
  1874. package/plugins/robin/claude/skills/unity-game/SKILL.md +103 -0
  1875. package/plugins/robin/claude/skills/unity-game/references/agent-ops.md +54 -0
  1876. package/plugins/robin/claude/skills/unity-game/references/fixes.md +40 -0
  1877. package/plugins/robin/claude/skills/unity-game/references/from-a-web-game.md +108 -0
  1878. package/plugins/robin/claude/skills/unity-game/references/handing-off.md +42 -0
  1879. package/plugins/robin/claude/skills/unity-game/references/performance.md +59 -0
  1880. package/plugins/robin/claude/skills/unity-game/references/probe.md +80 -0
  1881. package/plugins/robin/claude/skills/unity-game/references/shared-mac.md +121 -0
  1882. package/plugins/robin/claude/skills/unity-game/references/traps.md +108 -0
  1883. package/plugins/robin/claude/skills/verifying/SKILL.md +109 -0
  1884. package/plugins/robin/claude/skills/verifying/references/actors.md +94 -0
  1885. package/plugins/robin/claude/skills/verifying/references/bar.md +62 -0
  1886. package/plugins/robin/claude/skills/verifying/references/checks.md +69 -0
  1887. package/plugins/robin/claude/skills/verifying/references/experience.md +67 -0
  1888. package/plugins/robin/claude/skills/verifying/references/eyes.md +54 -0
  1889. package/plugins/robin/claude/skills/verifying/references/fidelity.md +126 -0
  1890. package/plugins/robin/claude/skills/verifying/references/hit-bar.md +31 -0
  1891. package/plugins/robin/claude/skills/verifying/references/journeys.md +77 -0
  1892. package/plugins/robin/claude/skills/verifying/references/mobile-qa.md +123 -0
  1893. package/plugins/robin/claude/skills/verifying/references/playtest.md +161 -0
  1894. package/plugins/robin/claude/skills/verifying/references/review.md +105 -0
  1895. package/plugins/robin/claude/skills/verifying/references/rubric.md +67 -0
  1896. package/plugins/robin/claude/skills/verifying/references/scenes.md +49 -0
  1897. package/plugins/robin/claude/skills/verifying/references/unity.md +60 -0
  1898. package/plugins/robin/claude/skills/world-and-story/SKILL.md +99 -0
  1899. package/plugins/robin/claude/skills/world-and-story/references/atmosphere.md +208 -0
  1900. package/plugins/robin/claude/skills/world-and-story/references/forged-world.md +79 -0
  1901. package/plugins/robin/claude/skills/world-and-story/references/living-world.md +237 -0
  1902. package/plugins/robin/claude/skills/world-and-story/references/opening-and-chapters.md +215 -0
  1903. package/plugins/robin/claude/skills/world-and-story/references/shelf.md +80 -0
  1904. package/plugins/robin/claude/skills/world-and-story/references/story-at-size.md +159 -0
  1905. package/plugins/robin/claude/skills/world-and-story/references/voice.md +175 -0
  1906. package/plugins/robin/claude/skills/world-and-story/references/world-kit.md +154 -0
  1907. package/plugins/robin/mcp-servers.json +25 -0
  1908. package/plugins/robin/plugin.json +20 -0
  1909. package/plugins/robin/skills/fp-first-look/SKILL.md +59 -0
  1910. package/plugins/robin/skills/fp-flow/SKILL.md +50 -0
  1911. package/plugins/robin/skills/fp-lanes/SKILL.md +38 -0
  1912. package/plugins/robin/skills/fp-mobile-qa/SKILL.md +28 -0
  1913. package/plugins/robin/skills/fp-new/SKILL.md +94 -0
  1914. package/plugins/robin/skills/fp-playtest/SKILL.md +66 -0
  1915. package/plugins/robin/skills/fp-publish/SKILL.md +23 -0
  1916. package/plugins/robin/skills/fp-smoke-build/SKILL.md +25 -0
  1917. package/plugins/robin/skills/fp-verify/SKILL.md +20 -0
  1918. package/plugins/robin/skills/funpixel-3d/SKILL.md +89 -0
  1919. package/plugins/robin/skills/funpixel-3d/references/bake-off.md +48 -0
  1920. package/plugins/robin/skills/funpixel-3d/references/bench.md +103 -0
  1921. package/plugins/robin/skills/funpixel-3d/references/budgets.md +48 -0
  1922. package/plugins/robin/skills/funpixel-3d/references/characters.md +67 -0
  1923. package/plugins/robin/skills/funpixel-3d/references/concept-image.md +47 -0
  1924. package/plugins/robin/skills/funpixel-3d/references/engine-targets.md +31 -0
  1925. package/plugins/robin/skills/funpixel-3d/references/hero-route.md +104 -0
  1926. package/plugins/robin/skills/funpixel-3d/references/level-spec.md +109 -0
  1927. package/plugins/robin/skills/funpixel-3d/references/levels.md +84 -0
  1928. package/plugins/robin/skills/funpixel-3d/references/light-and-places.md +141 -0
  1929. package/plugins/robin/skills/funpixel-3d/references/models.md +111 -0
  1930. package/plugins/robin/skills/funpixel-3d/references/painted-target.md +184 -0
  1931. package/plugins/robin/skills/funpixel-3d/references/reading.md +41 -0
  1932. package/plugins/robin/skills/funpixel-3d/references/skin.md +85 -0
  1933. package/plugins/robin/skills/funpixel-3d/references/skyboxes.md +65 -0
  1934. package/plugins/robin/skills/funpixel-3d/references/textures.md +71 -0
  1935. package/plugins/robin/skills/funpixel-3d/references/three-loading.md +199 -0
  1936. package/plugins/robin/skills/funpixel-3d/references/unity.md +78 -0
  1937. package/plugins/robin/skills/funpixel-art/SKILL.md +104 -0
  1938. package/plugins/robin/skills/funpixel-art/references/2d-assets.md +108 -0
  1939. package/plugins/robin/skills/funpixel-art/references/animation.md +126 -0
  1940. package/plugins/robin/skills/funpixel-art/references/cast.md +73 -0
  1941. package/plugins/robin/skills/funpixel-art/references/characters.md +49 -0
  1942. package/plugins/robin/skills/funpixel-art/references/cost.md +107 -0
  1943. package/plugins/robin/skills/funpixel-art/references/effects.md +85 -0
  1944. package/plugins/robin/skills/funpixel-art/references/frames.md +87 -0
  1945. package/plugins/robin/skills/funpixel-art/references/judging-frames.md +64 -0
  1946. package/plugins/robin/skills/funpixel-art/references/look.md +102 -0
  1947. package/plugins/robin/skills/funpixel-art/references/measure.md +119 -0
  1948. package/plugins/robin/skills/funpixel-art/references/pipeline.md +185 -0
  1949. package/plugins/robin/skills/funpixel-art/references/pixi.md +277 -0
  1950. package/plugins/robin/skills/funpixel-art/references/planes.md +27 -0
  1951. package/plugins/robin/skills/funpixel-art/references/prompts.md +171 -0
  1952. package/plugins/robin/skills/funpixel-art/references/sheets.md +141 -0
  1953. package/plugins/robin/skills/funpixel-art/references/style-file.md +39 -0
  1954. package/plugins/robin/skills/funpixel-art/references/three.md +232 -0
  1955. package/plugins/robin/skills/funpixel-art/references/ui.md +163 -0
  1956. package/plugins/robin/skills/funpixel-art/references/unity.md +78 -0
  1957. package/plugins/robin/skills/funpixel-art/references/wiring.md +41 -0
  1958. package/plugins/robin/skills/funpixel-audio/SKILL.md +92 -0
  1959. package/plugins/robin/skills/funpixel-audio/references/adaptive-music.md +204 -0
  1960. package/plugins/robin/skills/funpixel-audio/references/engine.md +78 -0
  1961. package/plugins/robin/skills/funpixel-audio/references/measure.md +101 -0
  1962. package/plugins/robin/skills/funpixel-audio/references/unity.md +74 -0
  1963. package/plugins/robin/skills/funpixel-brief/SKILL.md +163 -0
  1964. package/plugins/robin/skills/funpixel-feedback/SKILL.md +120 -0
  1965. package/plugins/robin/skills/funpixel-feedback/references/memory.md +99 -0
  1966. package/plugins/robin/skills/funpixel-game-feel/SKILL.md +104 -0
  1967. package/plugins/robin/skills/funpixel-game-feel/references/contact.md +110 -0
  1968. package/plugins/robin/skills/funpixel-game-feel/references/measure.md +125 -0
  1969. package/plugins/robin/skills/funpixel-game-feel/references/motion.md +134 -0
  1970. package/plugins/robin/skills/funpixel-game-feel/references/payoffs.md +35 -0
  1971. package/plugins/robin/skills/funpixel-game-feel/references/recipes.md +107 -0
  1972. package/plugins/robin/skills/funpixel-game-feel/references/unity.md +73 -0
  1973. package/plugins/robin/skills/funpixel-game-logic/SKILL.md +113 -0
  1974. package/plugins/robin/skills/funpixel-game-logic/references/balance.md +88 -0
  1975. package/plugins/robin/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  1976. package/plugins/robin/skills/funpixel-game-logic/references/depth.md +89 -0
  1977. package/plugins/robin/skills/funpixel-game-logic/references/escalation.md +41 -0
  1978. package/plugins/robin/skills/funpixel-game-logic/references/levels.md +61 -0
  1979. package/plugins/robin/skills/funpixel-game-logic/references/probes.md +122 -0
  1980. package/plugins/robin/skills/funpixel-game-logic/references/unity.md +108 -0
  1981. package/plugins/robin/skills/funpixel-game-spine/SKILL.md +118 -0
  1982. package/plugins/robin/skills/funpixel-game-spine/references/camera.md +94 -0
  1983. package/plugins/robin/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  1984. package/plugins/robin/skills/funpixel-game-spine/references/patterns.md +103 -0
  1985. package/plugins/robin/skills/funpixel-game-spine/references/performance.md +96 -0
  1986. package/plugins/robin/skills/funpixel-game-spine/references/pixi.md +26 -0
  1987. package/plugins/robin/skills/funpixel-game-spine/references/replay.md +102 -0
  1988. package/plugins/robin/skills/funpixel-game-spine/references/room-api.md +63 -0
  1989. package/plugins/robin/skills/funpixel-game-spine/references/room-modes.md +40 -0
  1990. package/plugins/robin/skills/funpixel-game-spine/references/sdk.md +114 -0
  1991. package/plugins/robin/skills/funpixel-game-spine/references/three.md +62 -0
  1992. package/plugins/robin/skills/funpixel-gdd/SKILL.md +116 -0
  1993. package/plugins/robin/skills/funpixel-gdd/references/as-built.md +40 -0
  1994. package/plugins/robin/skills/funpixel-gdd/references/design-measures.md +24 -0
  1995. package/plugins/robin/skills/funpixel-gdd/references/design-note.md +88 -0
  1996. package/plugins/robin/skills/funpixel-gdd/references/experience.md +92 -0
  1997. package/plugins/robin/skills/funpixel-gdd/references/first-look.md +226 -0
  1998. package/plugins/robin/skills/funpixel-gdd/references/floors.md +62 -0
  1999. package/plugins/robin/skills/funpixel-gdd/references/frame.md +75 -0
  2000. package/plugins/robin/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  2001. package/plugins/robin/skills/funpixel-gdd/references/gdd-template.md +417 -0
  2002. package/plugins/robin/skills/funpixel-gdd/references/genre-card.md +109 -0
  2003. package/plugins/robin/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  2004. package/plugins/robin/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  2005. package/plugins/robin/skills/funpixel-gdd/references/genre-racing.md +137 -0
  2006. package/plugins/robin/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  2007. package/plugins/robin/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  2008. package/plugins/robin/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  2009. package/plugins/robin/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  2010. package/plugins/robin/skills/funpixel-gdd/references/genre-survival.md +122 -0
  2011. package/plugins/robin/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  2012. package/plugins/robin/skills/funpixel-gdd/references/invent-first.md +131 -0
  2013. package/plugins/robin/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  2014. package/plugins/robin/skills/funpixel-gdd/references/pages.md +47 -0
  2015. package/plugins/robin/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  2016. package/plugins/robin/skills/funpixel-gdd/references/production-tiers.md +117 -0
  2017. package/plugins/robin/skills/funpixel-gdd/references/sections.md +148 -0
  2018. package/plugins/robin/skills/funpixel-gdd/references/spec-folder.md +131 -0
  2019. package/plugins/robin/skills/funpixel-gdd/references/start.md +110 -0
  2020. package/plugins/robin/skills/funpixel-gdd/references/starters.md +175 -0
  2021. package/plugins/robin/skills/funpixel-gdd/references/the-path.md +133 -0
  2022. package/plugins/robin/skills/funpixel-gdd/references/track.md +29 -0
  2023. package/plugins/robin/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  2024. package/plugins/robin/skills/funpixel-gdd/references/worth.md +74 -0
  2025. package/plugins/robin/skills/funpixel-mobile-ui/SKILL.md +107 -0
  2026. package/plugins/robin/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  2027. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  2028. package/plugins/robin/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  2029. package/plugins/robin/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  2030. package/plugins/robin/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  2031. package/plugins/robin/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  2032. package/plugins/robin/skills/funpixel-mobile-ui/references/unity.md +61 -0
  2033. package/plugins/robin/skills/funpixel-publish/SKILL.md +109 -0
  2034. package/plugins/robin/skills/funpixel-publish/references/compose.md +113 -0
  2035. package/plugins/robin/skills/funpixel-publish/references/motion.md +120 -0
  2036. package/plugins/robin/skills/funpixel-publish/references/networks.md +75 -0
  2037. package/plugins/robin/skills/funpixel-publish/references/other-hosts.md +65 -0
  2038. package/plugins/robin/skills/funpixel-publish/references/playable-ad.md +90 -0
  2039. package/plugins/robin/skills/funpixel-publish/references/server-build.md +85 -0
  2040. package/plugins/robin/skills/funpixel-publish/references/store-shots.md +85 -0
  2041. package/plugins/robin/skills/funpixel-publish/references/trailer.md +55 -0
  2042. package/plugins/robin/skills/funpixel-publish/references/what-ships.md +30 -0
  2043. package/plugins/robin/skills/funpixel-store/SKILL.md +81 -0
  2044. package/plugins/robin/skills/funpixel-store/references/app-store.md +73 -0
  2045. package/plugins/robin/skills/funpixel-store/references/google-play.md +141 -0
  2046. package/plugins/robin/skills/funpixel-store/references/ios-release.md +63 -0
  2047. package/plugins/robin/skills/funpixel-store/references/money.md +66 -0
  2048. package/plugins/robin/skills/funpixel-store/references/purchases-and-review.md +74 -0
  2049. package/plugins/robin/skills/funpixel-store/references/readiness-page.md +24 -0
  2050. package/plugins/robin/skills/funpixel-store/references/readiness.md +107 -0
  2051. package/plugins/robin/skills/funpixel-store/references/steam.md +38 -0
  2052. package/plugins/robin/skills/funpixel-store/references/unity-store.md +55 -0
  2053. package/plugins/robin/skills/funpixel-store/references/web-portals.md +43 -0
  2054. package/plugins/robin/skills/funpixel-unity-game/SKILL.md +103 -0
  2055. package/plugins/robin/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  2056. package/plugins/robin/skills/funpixel-unity-game/references/fixes.md +40 -0
  2057. package/plugins/robin/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  2058. package/plugins/robin/skills/funpixel-unity-game/references/handing-off.md +42 -0
  2059. package/plugins/robin/skills/funpixel-unity-game/references/performance.md +59 -0
  2060. package/plugins/robin/skills/funpixel-unity-game/references/probe.md +80 -0
  2061. package/plugins/robin/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  2062. package/plugins/robin/skills/funpixel-unity-game/references/traps.md +108 -0
  2063. package/plugins/robin/skills/funpixel-verify/SKILL.md +109 -0
  2064. package/plugins/robin/skills/funpixel-verify/references/actors.md +94 -0
  2065. package/plugins/robin/skills/funpixel-verify/references/bar.md +62 -0
  2066. package/plugins/robin/skills/funpixel-verify/references/checks.md +69 -0
  2067. package/plugins/robin/skills/funpixel-verify/references/experience.md +67 -0
  2068. package/plugins/robin/skills/funpixel-verify/references/eyes.md +54 -0
  2069. package/plugins/robin/skills/funpixel-verify/references/fidelity.md +126 -0
  2070. package/plugins/robin/skills/funpixel-verify/references/hit-bar.md +31 -0
  2071. package/plugins/robin/skills/funpixel-verify/references/journeys.md +77 -0
  2072. package/plugins/robin/skills/funpixel-verify/references/mobile-qa.md +123 -0
  2073. package/plugins/robin/skills/funpixel-verify/references/playtest.md +161 -0
  2074. package/plugins/robin/skills/funpixel-verify/references/review.md +105 -0
  2075. package/plugins/robin/skills/funpixel-verify/references/rubric.md +67 -0
  2076. package/plugins/robin/skills/funpixel-verify/references/scenes.md +49 -0
  2077. package/plugins/robin/skills/funpixel-verify/references/unity.md +60 -0
  2078. package/plugins/robin/skills/funpixel-world-and-story/SKILL.md +99 -0
  2079. package/plugins/robin/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  2080. package/plugins/robin/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  2081. package/plugins/robin/skills/funpixel-world-and-story/references/living-world.md +237 -0
  2082. package/plugins/robin/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  2083. package/plugins/robin/skills/funpixel-world-and-story/references/shelf.md +80 -0
  2084. package/plugins/robin/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  2085. package/plugins/robin/skills/funpixel-world-and-story/references/voice.md +175 -0
  2086. package/plugins/robin/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  2087. package/templates/common/.agents/skills/funpixel-3d/SKILL.md +89 -0
  2088. package/templates/common/.agents/skills/funpixel-3d/references/bake-off.md +48 -0
  2089. package/templates/common/.agents/skills/funpixel-3d/references/bench.md +103 -0
  2090. package/templates/common/.agents/skills/funpixel-3d/references/budgets.md +48 -0
  2091. package/templates/common/.agents/skills/funpixel-3d/references/characters.md +67 -0
  2092. package/templates/common/.agents/skills/funpixel-3d/references/concept-image.md +47 -0
  2093. package/templates/common/.agents/skills/funpixel-3d/references/engine-targets.md +31 -0
  2094. package/templates/common/.agents/skills/funpixel-3d/references/hero-route.md +104 -0
  2095. package/templates/common/.agents/skills/funpixel-3d/references/level-spec.md +109 -0
  2096. package/templates/common/.agents/skills/funpixel-3d/references/levels.md +84 -0
  2097. package/templates/common/.agents/skills/funpixel-3d/references/light-and-places.md +141 -0
  2098. package/templates/common/.agents/skills/funpixel-3d/references/models.md +111 -0
  2099. package/templates/common/.agents/skills/funpixel-3d/references/painted-target.md +184 -0
  2100. package/templates/common/.agents/skills/funpixel-3d/references/reading.md +41 -0
  2101. package/templates/common/.agents/skills/funpixel-3d/references/skin.md +85 -0
  2102. package/templates/common/.agents/skills/funpixel-3d/references/skyboxes.md +65 -0
  2103. package/templates/common/.agents/skills/funpixel-3d/references/textures.md +71 -0
  2104. package/templates/common/.agents/skills/funpixel-3d/references/three-loading.md +199 -0
  2105. package/templates/common/.agents/skills/funpixel-3d/references/unity.md +78 -0
  2106. package/templates/common/.agents/skills/funpixel-art/SKILL.md +104 -0
  2107. package/templates/common/.agents/skills/funpixel-art/references/2d-assets.md +108 -0
  2108. package/templates/common/.agents/skills/funpixel-art/references/animation.md +126 -0
  2109. package/templates/common/.agents/skills/funpixel-art/references/cast.md +73 -0
  2110. package/templates/common/.agents/skills/funpixel-art/references/characters.md +49 -0
  2111. package/templates/common/.agents/skills/funpixel-art/references/cost.md +107 -0
  2112. package/templates/common/.agents/skills/funpixel-art/references/effects.md +85 -0
  2113. package/templates/common/.agents/skills/funpixel-art/references/frames.md +87 -0
  2114. package/templates/common/.agents/skills/funpixel-art/references/judging-frames.md +64 -0
  2115. package/templates/common/.agents/skills/funpixel-art/references/look.md +102 -0
  2116. package/templates/common/.agents/skills/funpixel-art/references/measure.md +119 -0
  2117. package/templates/common/.agents/skills/funpixel-art/references/pipeline.md +185 -0
  2118. package/templates/common/.agents/skills/funpixel-art/references/pixi.md +277 -0
  2119. package/templates/common/.agents/skills/funpixel-art/references/planes.md +27 -0
  2120. package/templates/common/.agents/skills/funpixel-art/references/prompts.md +171 -0
  2121. package/templates/common/.agents/skills/funpixel-art/references/sheets.md +141 -0
  2122. package/templates/common/.agents/skills/funpixel-art/references/style-file.md +39 -0
  2123. package/templates/common/.agents/skills/funpixel-art/references/three.md +232 -0
  2124. package/templates/common/.agents/skills/funpixel-art/references/ui.md +163 -0
  2125. package/templates/common/.agents/skills/funpixel-art/references/unity.md +78 -0
  2126. package/templates/common/.agents/skills/funpixel-art/references/wiring.md +41 -0
  2127. package/templates/common/.agents/skills/funpixel-audio/SKILL.md +92 -0
  2128. package/templates/common/.agents/skills/funpixel-audio/references/adaptive-music.md +204 -0
  2129. package/templates/common/.agents/skills/funpixel-audio/references/engine.md +78 -0
  2130. package/templates/common/.agents/skills/funpixel-audio/references/measure.md +101 -0
  2131. package/templates/common/.agents/skills/funpixel-audio/references/unity.md +74 -0
  2132. package/templates/common/.agents/skills/funpixel-feedback/SKILL.md +120 -0
  2133. package/templates/common/.agents/skills/funpixel-feedback/references/memory.md +99 -0
  2134. package/templates/common/.agents/skills/funpixel-game-feel/SKILL.md +104 -0
  2135. package/templates/common/.agents/skills/funpixel-game-feel/references/contact.md +110 -0
  2136. package/templates/common/.agents/skills/funpixel-game-feel/references/measure.md +125 -0
  2137. package/templates/common/.agents/skills/funpixel-game-feel/references/motion.md +134 -0
  2138. package/templates/common/.agents/skills/funpixel-game-feel/references/payoffs.md +35 -0
  2139. package/templates/common/.agents/skills/funpixel-game-feel/references/recipes.md +107 -0
  2140. package/templates/common/.agents/skills/funpixel-game-feel/references/unity.md +73 -0
  2141. package/templates/common/.agents/skills/funpixel-game-logic/SKILL.md +113 -0
  2142. package/templates/common/.agents/skills/funpixel-game-logic/references/balance.md +88 -0
  2143. package/templates/common/.agents/skills/funpixel-game-logic/references/content-at-scale.md +147 -0
  2144. package/templates/common/.agents/skills/funpixel-game-logic/references/depth.md +89 -0
  2145. package/templates/common/.agents/skills/funpixel-game-logic/references/escalation.md +41 -0
  2146. package/templates/common/.agents/skills/funpixel-game-logic/references/levels.md +61 -0
  2147. package/templates/common/.agents/skills/funpixel-game-logic/references/probes.md +122 -0
  2148. package/templates/common/.agents/skills/funpixel-game-logic/references/unity.md +108 -0
  2149. package/templates/common/.agents/skills/funpixel-game-spine/SKILL.md +118 -0
  2150. package/templates/common/.agents/skills/funpixel-game-spine/references/camera.md +94 -0
  2151. package/templates/common/.agents/skills/funpixel-game-spine/references/multiplayer.md +101 -0
  2152. package/templates/common/.agents/skills/funpixel-game-spine/references/patterns.md +103 -0
  2153. package/templates/common/.agents/skills/funpixel-game-spine/references/performance.md +96 -0
  2154. package/templates/common/.agents/skills/funpixel-game-spine/references/pixi.md +26 -0
  2155. package/templates/common/.agents/skills/funpixel-game-spine/references/replay.md +102 -0
  2156. package/templates/common/.agents/skills/funpixel-game-spine/references/room-api.md +63 -0
  2157. package/templates/common/.agents/skills/funpixel-game-spine/references/room-modes.md +40 -0
  2158. package/templates/common/.agents/skills/funpixel-game-spine/references/sdk.md +114 -0
  2159. package/templates/common/.agents/skills/funpixel-game-spine/references/three.md +62 -0
  2160. package/templates/common/.agents/skills/funpixel-gdd/SKILL.md +116 -0
  2161. package/templates/common/.agents/skills/funpixel-gdd/references/as-built.md +40 -0
  2162. package/templates/common/.agents/skills/funpixel-gdd/references/design-measures.md +24 -0
  2163. package/templates/common/.agents/skills/funpixel-gdd/references/design-note.md +88 -0
  2164. package/templates/common/.agents/skills/funpixel-gdd/references/experience.md +92 -0
  2165. package/templates/common/.agents/skills/funpixel-gdd/references/first-look.md +226 -0
  2166. package/templates/common/.agents/skills/funpixel-gdd/references/floors.md +62 -0
  2167. package/templates/common/.agents/skills/funpixel-gdd/references/frame.md +75 -0
  2168. package/templates/common/.agents/skills/funpixel-gdd/references/gameplay-contract.md +81 -0
  2169. package/templates/common/.agents/skills/funpixel-gdd/references/gdd-template.md +417 -0
  2170. package/templates/common/.agents/skills/funpixel-gdd/references/genre-card.md +109 -0
  2171. package/templates/common/.agents/skills/funpixel-gdd/references/genre-platformer.md +159 -0
  2172. package/templates/common/.agents/skills/funpixel-gdd/references/genre-puzzle.md +145 -0
  2173. package/templates/common/.agents/skills/funpixel-gdd/references/genre-racing.md +137 -0
  2174. package/templates/common/.agents/skills/funpixel-gdd/references/genre-rpg.md +125 -0
  2175. package/templates/common/.agents/skills/funpixel-gdd/references/genre-shooter.md +128 -0
  2176. package/templates/common/.agents/skills/funpixel-gdd/references/genre-simulation.md +112 -0
  2177. package/templates/common/.agents/skills/funpixel-gdd/references/genre-strategy.md +116 -0
  2178. package/templates/common/.agents/skills/funpixel-gdd/references/genre-survival.md +122 -0
  2179. package/templates/common/.agents/skills/funpixel-gdd/references/in-the-loop.md +106 -0
  2180. package/templates/common/.agents/skills/funpixel-gdd/references/invent-first.md +131 -0
  2181. package/templates/common/.agents/skills/funpixel-gdd/references/level-and-fun.md +112 -0
  2182. package/templates/common/.agents/skills/funpixel-gdd/references/pages.md +47 -0
  2183. package/templates/common/.agents/skills/funpixel-gdd/references/plan-at-size.md +140 -0
  2184. package/templates/common/.agents/skills/funpixel-gdd/references/production-tiers.md +117 -0
  2185. package/templates/common/.agents/skills/funpixel-gdd/references/sections.md +148 -0
  2186. package/templates/common/.agents/skills/funpixel-gdd/references/spec-folder.md +131 -0
  2187. package/templates/common/.agents/skills/funpixel-gdd/references/start.md +110 -0
  2188. package/templates/common/.agents/skills/funpixel-gdd/references/starters.md +175 -0
  2189. package/templates/common/.agents/skills/funpixel-gdd/references/the-path.md +133 -0
  2190. package/templates/common/.agents/skills/funpixel-gdd/references/track.md +29 -0
  2191. package/templates/common/.agents/skills/funpixel-gdd/references/world-and-identity.md +165 -0
  2192. package/templates/common/.agents/skills/funpixel-gdd/references/worth.md +74 -0
  2193. package/templates/common/.agents/skills/funpixel-mobile-ui/SKILL.md +107 -0
  2194. package/templates/common/.agents/skills/funpixel-mobile-ui/references/contrast.md +123 -0
  2195. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-and-title.md +108 -0
  2196. package/templates/common/.agents/skills/funpixel-mobile-ui/references/hud-genres.md +124 -0
  2197. package/templates/common/.agents/skills/funpixel-mobile-ui/references/phone-check.md +156 -0
  2198. package/templates/common/.agents/skills/funpixel-mobile-ui/references/recipes.md +279 -0
  2199. package/templates/common/.agents/skills/funpixel-mobile-ui/references/restyle-ui.md +229 -0
  2200. package/templates/common/.agents/skills/funpixel-mobile-ui/references/unity.md +61 -0
  2201. package/templates/common/.agents/skills/funpixel-publish/SKILL.md +109 -0
  2202. package/templates/common/.agents/skills/funpixel-publish/references/compose.md +113 -0
  2203. package/templates/common/.agents/skills/funpixel-publish/references/motion.md +120 -0
  2204. package/templates/common/.agents/skills/funpixel-publish/references/networks.md +75 -0
  2205. package/templates/common/.agents/skills/funpixel-publish/references/other-hosts.md +65 -0
  2206. package/templates/common/.agents/skills/funpixel-publish/references/playable-ad.md +90 -0
  2207. package/templates/common/.agents/skills/funpixel-publish/references/server-build.md +85 -0
  2208. package/templates/common/.agents/skills/funpixel-publish/references/store-shots.md +85 -0
  2209. package/templates/common/.agents/skills/funpixel-publish/references/trailer.md +55 -0
  2210. package/templates/common/.agents/skills/funpixel-publish/references/what-ships.md +30 -0
  2211. package/templates/common/.agents/skills/funpixel-store/SKILL.md +81 -0
  2212. package/templates/common/.agents/skills/funpixel-store/references/app-store.md +73 -0
  2213. package/templates/common/.agents/skills/funpixel-store/references/google-play.md +141 -0
  2214. package/templates/common/.agents/skills/funpixel-store/references/ios-release.md +63 -0
  2215. package/templates/common/.agents/skills/funpixel-store/references/money.md +66 -0
  2216. package/templates/common/.agents/skills/funpixel-store/references/purchases-and-review.md +74 -0
  2217. package/templates/common/.agents/skills/funpixel-store/references/readiness-page.md +24 -0
  2218. package/templates/common/.agents/skills/funpixel-store/references/readiness.md +107 -0
  2219. package/templates/common/.agents/skills/funpixel-store/references/steam.md +38 -0
  2220. package/templates/common/.agents/skills/funpixel-store/references/unity-store.md +55 -0
  2221. package/templates/common/.agents/skills/funpixel-store/references/web-portals.md +43 -0
  2222. package/templates/common/.agents/skills/funpixel-unity-game/SKILL.md +103 -0
  2223. package/templates/common/.agents/skills/funpixel-unity-game/references/agent-ops.md +54 -0
  2224. package/templates/common/.agents/skills/funpixel-unity-game/references/fixes.md +40 -0
  2225. package/templates/common/.agents/skills/funpixel-unity-game/references/from-a-web-game.md +108 -0
  2226. package/templates/common/.agents/skills/funpixel-unity-game/references/handing-off.md +42 -0
  2227. package/templates/common/.agents/skills/funpixel-unity-game/references/performance.md +59 -0
  2228. package/templates/common/.agents/skills/funpixel-unity-game/references/probe.md +80 -0
  2229. package/templates/common/.agents/skills/funpixel-unity-game/references/shared-mac.md +121 -0
  2230. package/templates/common/.agents/skills/funpixel-unity-game/references/traps.md +108 -0
  2231. package/templates/common/.agents/skills/funpixel-verify/SKILL.md +109 -0
  2232. package/templates/common/.agents/skills/funpixel-verify/references/actors.md +94 -0
  2233. package/templates/common/.agents/skills/funpixel-verify/references/bar.md +62 -0
  2234. package/templates/common/.agents/skills/funpixel-verify/references/checks.md +69 -0
  2235. package/templates/common/.agents/skills/funpixel-verify/references/experience.md +67 -0
  2236. package/templates/common/.agents/skills/funpixel-verify/references/eyes.md +54 -0
  2237. package/templates/common/.agents/skills/funpixel-verify/references/fidelity.md +126 -0
  2238. package/templates/common/.agents/skills/funpixel-verify/references/hit-bar.md +31 -0
  2239. package/templates/common/.agents/skills/funpixel-verify/references/journeys.md +77 -0
  2240. package/templates/common/.agents/skills/funpixel-verify/references/mobile-qa.md +123 -0
  2241. package/templates/common/.agents/skills/funpixel-verify/references/playtest.md +161 -0
  2242. package/templates/common/.agents/skills/funpixel-verify/references/review.md +105 -0
  2243. package/templates/common/.agents/skills/funpixel-verify/references/rubric.md +67 -0
  2244. package/templates/common/.agents/skills/funpixel-verify/references/scenes.md +49 -0
  2245. package/templates/common/.agents/skills/funpixel-verify/references/unity.md +60 -0
  2246. package/templates/common/.agents/skills/funpixel-world-and-story/SKILL.md +99 -0
  2247. package/templates/common/.agents/skills/funpixel-world-and-story/references/atmosphere.md +208 -0
  2248. package/templates/common/.agents/skills/funpixel-world-and-story/references/forged-world.md +79 -0
  2249. package/templates/common/.agents/skills/funpixel-world-and-story/references/living-world.md +237 -0
  2250. package/templates/common/.agents/skills/funpixel-world-and-story/references/opening-and-chapters.md +215 -0
  2251. package/templates/common/.agents/skills/funpixel-world-and-story/references/shelf.md +80 -0
  2252. package/templates/common/.agents/skills/funpixel-world-and-story/references/story-at-size.md +159 -0
  2253. package/templates/common/.agents/skills/funpixel-world-and-story/references/voice.md +175 -0
  2254. package/templates/common/.agents/skills/funpixel-world-and-story/references/world-kit.md +154 -0
  2255. package/templates/common/.claude/settings.json +3 -0
  2256. package/templates/common/.harnessignore +28 -0
  2257. package/templates/common/AGENTS.md +135 -0
  2258. package/templates/common/CLAUDE.md +1 -0
  2259. package/templates/common/assets/assets.example.json +9 -0
  2260. package/templates/common/index.html +13 -0
  2261. package/templates/common/src/art/files.mjs +27 -0
  2262. package/templates/common/src/assets.ts +62 -0
  2263. package/templates/common/src/beat.ts +50 -0
  2264. package/templates/common/src/characters.ts +54 -0
  2265. package/templates/common/src/expose.ts +63 -0
  2266. package/templates/common/src/feel.ts +78 -0
  2267. package/templates/common/src/fpx-hooks.ts +46 -0
  2268. package/templates/common/src/frame.ts +63 -0
  2269. package/templates/common/src/grade.ts +47 -0
  2270. package/templates/common/src/hud-kit.css +29 -0
  2271. package/templates/common/src/hud-kit.tsx +85 -0
  2272. package/templates/common/src/hud.tsx +55 -0
  2273. package/templates/common/src/icons.tsx +35 -0
  2274. package/templates/common/src/input.ts +70 -0
  2275. package/templates/common/src/juice.ts +92 -0
  2276. package/templates/common/src/levels.ts +43 -0
  2277. package/templates/common/src/living.ts +91 -0
  2278. package/templates/common/src/look.json +19 -0
  2279. package/templates/common/src/look.ts +54 -0
  2280. package/templates/common/src/main.tsx +31 -0
  2281. package/templates/common/src/markers.ts +60 -0
  2282. package/templates/common/src/motion-sample.ts +71 -0
  2283. package/templates/common/src/motion.ts +92 -0
  2284. package/templates/common/src/pin.ts +32 -0
  2285. package/templates/common/src/platform.ts +67 -0
  2286. package/templates/common/src/pose.ts +22 -0
  2287. package/templates/common/src/probe-human.ts +29 -0
  2288. package/templates/common/src/probe-kit.ts +99 -0
  2289. package/templates/common/src/rules.ts +99 -0
  2290. package/templates/common/src/save.ts +21 -0
  2291. package/templates/common/src/screens.css +34 -0
  2292. package/templates/common/src/screens.tsx +95 -0
  2293. package/templates/common/src/selftests.ts +22 -0
  2294. package/templates/common/src/session.ts +99 -0
  2295. package/templates/common/src/sound.ts +85 -0
  2296. package/templates/common/src/splash-funpixel/OFL.txt +94 -0
  2297. package/templates/common/src/splash-funpixel/card.css +18 -0
  2298. package/templates/common/src/splash-funpixel/card.tsx +22 -0
  2299. package/templates/common/src/splash.css +15 -0
  2300. package/templates/common/src/splash.tsx +86 -0
  2301. package/templates/common/src/store.ts +68 -0
  2302. package/templates/common/src/strike.ts +82 -0
  2303. package/templates/common/src/styles.css +81 -0
  2304. package/templates/common/src/toasts.ts +75 -0
  2305. package/templates/common/src/world.ts +91 -0
  2306. package/templates/common/test/feel.json +36 -0
  2307. package/templates/common/test/platform.test.ts +42 -0
  2308. package/templates/common/test/probes.ts +72 -0
  2309. package/templates/common/test/rules.test.ts +88 -0
  2310. package/templates/common/tsconfig.json +16 -0
  2311. package/templates/common/vite.config.ts +6 -0
  2312. package/templates/pixi/src/character.ts +63 -0
  2313. package/templates/pixi/src/game.ts +99 -0
  2314. package/templates/pixi/src/world-hud.ts +16 -0
  2315. package/templates/spec/common/src/chapters.ts +97 -0
  2316. package/templates/spec/common/src/levels.ts +68 -0
  2317. package/templates/spec/common/src/probe-rooms.ts +63 -0
  2318. package/templates/spec/common/src/room-map.tsx +30 -0
  2319. package/templates/spec/common/src/tune.ts +93 -0
  2320. package/templates/spec/common/test/rooms.test.ts +59 -0
  2321. package/templates/spec/common/test/rooms.ts +53 -0
  2322. package/templates/spec/three-world/test/rooms.ts +54 -0
  2323. package/templates/three/src/character.ts +65 -0
  2324. package/templates/three/src/game.ts +99 -0
  2325. package/templates/three/src/world-hud.ts +22 -0
  2326. package/templates/three-world/src/bot.ts +43 -0
  2327. package/templates/three-world/src/budget.ts +73 -0
  2328. package/templates/three-world/src/camera-rig.ts +99 -0
  2329. package/templates/three-world/src/controls.tsx +49 -0
  2330. package/templates/three-world/src/cutout-atlas.ts +26 -0
  2331. package/templates/three-world/src/cutout-math.ts +47 -0
  2332. package/templates/three-world/src/cutouts.ts +99 -0
  2333. package/templates/three-world/src/dressing-math.ts +98 -0
  2334. package/templates/three-world/src/dressing.ts +84 -0
  2335. package/templates/three-world/src/expose.ts +82 -0
  2336. package/templates/three-world/src/feel.ts +79 -0
  2337. package/templates/three-world/src/game.ts +99 -0
  2338. package/templates/three-world/src/hud.tsx +44 -0
  2339. package/templates/three-world/src/icons.tsx +36 -0
  2340. package/templates/three-world/src/input.ts +73 -0
  2341. package/templates/three-world/src/juice.ts +91 -0
  2342. package/templates/three-world/src/layout.ts +73 -0
  2343. package/templates/three-world/src/light-math.ts +78 -0
  2344. package/templates/three-world/src/light.ts +77 -0
  2345. package/templates/three-world/src/look.json +30 -0
  2346. package/templates/three-world/src/main.tsx +38 -0
  2347. package/templates/three-world/src/models.ts +62 -0
  2348. package/templates/three-world/src/palette.ts +21 -0
  2349. package/templates/three-world/src/places.json +50 -0
  2350. package/templates/three-world/src/places.ts +56 -0
  2351. package/templates/three-world/src/pose.ts +22 -0
  2352. package/templates/three-world/src/post.ts +47 -0
  2353. package/templates/three-world/src/rest-math.ts +29 -0
  2354. package/templates/three-world/src/rules.ts +89 -0
  2355. package/templates/three-world/src/screens.css +45 -0
  2356. package/templates/three-world/src/screens.tsx +96 -0
  2357. package/templates/three-world/src/selftests.ts +25 -0
  2358. package/templates/three-world/src/session.ts +99 -0
  2359. package/templates/three-world/src/shots.ts +59 -0
  2360. package/templates/three-world/src/sky.ts +48 -0
  2361. package/templates/three-world/src/stage.ts +83 -0
  2362. package/templates/three-world/src/styles.css +95 -0
  2363. package/templates/three-world/src/surfaces.ts +55 -0
  2364. package/templates/three-world/src/world.ts +70 -0
  2365. package/templates/three-world/test/feel.json +29 -0
  2366. package/templates/three-world/test/probes.ts +65 -0
  2367. package/templates/three-world/test/resolve.mjs +13 -0
  2368. package/templates/three-world/test/rules.test.ts +81 -0
  2369. package/unity/com.funpixel.probe/Editor/Funpixel.Probe.Editor.asmdef +16 -0
  2370. package/unity/com.funpixel.probe/Editor/Funpixel.Probe.Editor.asmdef.meta +7 -0
  2371. package/unity/com.funpixel.probe/Editor/ProbeBuild.cs +97 -0
  2372. package/unity/com.funpixel.probe/Editor/ProbeBuild.cs.meta +11 -0
  2373. package/unity/com.funpixel.probe/Editor/ReleaseGuard.cs +23 -0
  2374. package/unity/com.funpixel.probe/Editor/ReleaseGuard.cs.meta +11 -0
  2375. package/unity/com.funpixel.probe/Editor.meta +8 -0
  2376. package/unity/com.funpixel.probe/Runtime/Api/Funpixel.Probe.asmdef +14 -0
  2377. package/unity/com.funpixel.probe/Runtime/Api/Funpixel.Probe.asmdef.meta +7 -0
  2378. package/unity/com.funpixel.probe/Runtime/Api/FunpixelProbe.cs +146 -0
  2379. package/unity/com.funpixel.probe/Runtime/Api/FunpixelProbe.cs.meta +11 -0
  2380. package/unity/com.funpixel.probe/Runtime/Api.meta +8 -0
  2381. package/unity/com.funpixel.probe/Runtime/Player/Args.cs +87 -0
  2382. package/unity/com.funpixel.probe/Runtime/Player/Args.cs.meta +11 -0
  2383. package/unity/com.funpixel.probe/Runtime/Player/Boot.cs +67 -0
  2384. package/unity/com.funpixel.probe/Runtime/Player/Boot.cs.meta +11 -0
  2385. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs +559 -0
  2386. package/unity/com.funpixel.probe/Runtime/Player/Bridge.cs.meta +11 -0
  2387. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs +145 -0
  2388. package/unity/com.funpixel.probe/Runtime/Player/Capture.cs.meta +11 -0
  2389. package/unity/com.funpixel.probe/Runtime/Player/Funpixel.Probe.Player.asmdef +32 -0
  2390. package/unity/com.funpixel.probe/Runtime/Player/Funpixel.Probe.Player.asmdef.meta +7 -0
  2391. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs +127 -0
  2392. package/unity/com.funpixel.probe/Runtime/Player/Inject.cs.meta +11 -0
  2393. package/unity/com.funpixel.probe/Runtime/Player/Json.cs +246 -0
  2394. package/unity/com.funpixel.probe/Runtime/Player/Json.cs.meta +11 -0
  2395. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs +194 -0
  2396. package/unity/com.funpixel.probe/Runtime/Player/Probe.cs.meta +11 -0
  2397. package/unity/com.funpixel.probe/Runtime/Player/Stats.cs +266 -0
  2398. package/unity/com.funpixel.probe/Runtime/Player/Stats.cs.meta +11 -0
  2399. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs +134 -0
  2400. package/unity/com.funpixel.probe/Runtime/Player/UiTargets.cs.meta +11 -0
  2401. package/unity/com.funpixel.probe/Runtime/Player.meta +8 -0
  2402. package/unity/com.funpixel.probe/Runtime/link.xml +7 -0
  2403. package/unity/com.funpixel.probe/Runtime/link.xml.meta +7 -0
  2404. package/unity/com.funpixel.probe/Runtime.meta +8 -0
  2405. package/unity/com.funpixel.probe/Tests/Editor/Funpixel.Probe.Tests.asmdef +25 -0
  2406. package/unity/com.funpixel.probe/Tests/Editor/Funpixel.Probe.Tests.asmdef.meta +7 -0
  2407. package/unity/com.funpixel.probe/Tests/Editor/StatsTests.cs +147 -0
  2408. package/unity/com.funpixel.probe/Tests/Editor/StatsTests.cs.meta +11 -0
  2409. package/unity/com.funpixel.probe/Tests/Editor/WireTests.cs +86 -0
  2410. package/unity/com.funpixel.probe/Tests/Editor/WireTests.cs.meta +11 -0
  2411. package/unity/com.funpixel.probe/Tests/Editor.meta +8 -0
  2412. package/unity/com.funpixel.probe/Tests.meta +8 -0
  2413. package/unity/com.funpixel.probe/package.json +14 -0
  2414. package/unity/com.funpixel.probe/package.json.meta +7 -0
@@ -0,0 +1,166 @@
1
+ import { sectionsForLine, sizeTemplate } from "../gdd/tiers.js";
2
+ export const CARD_WORDS = {
3
+ card: ['card', 'cards', 'deck', 'decks', 'deckbuilder', 'deck-builder', 'solitaire', 'poker', 'blackjack', 'tarot', 'hand of cards'],
4
+ platformer: ['platformer', 'platform', 'platforms', 'jump', 'jumps', 'jumping', 'climb', 'climber', 'climbing', 'metroidvania', 'side-scroller', 'sidescroller', 'maze', 'mazes', 'ghosts', 'pac-man', 'wall-jump', 'ledge'],
5
+ puzzle: ['puzzle', 'puzzles', 'match-3', 'match three', 'merge', 'merging', 'sokoban', 'tiles', 'blocks', 'sliding', 'slide', 'logic', 'riddle', 'riddles', 'word', 'words', 'jigsaw', 'sort', 'sorting', 'nonogram', 'sudoku', 'levels that get harder'],
6
+ racing: ['race', 'races', 'racing', 'racer', 'kart', 'karts', 'car', 'cars', 'drift', 'drifting', 'lap', 'laps', 'track', 'driving', 'drive', 'motorbike', 'rally'],
7
+ rpg: ['rpg', 'quest', 'quests', 'dungeon', 'dungeons', 'loot', 'sword', 'knight', 'wizard', 'mage', 'party', 'roguelike', 'adventure', 'hero', 'heroes', 'inventory', 'level up'],
8
+ shooter: ['shoot', 'shooter', 'shooting', 'shmup', 'shoot-em-up', 'bullet', 'bullets', 'gun', 'guns', 'blaster', 'laser', 'lasers', 'asteroids', 'invaders', 'twin-stick', 'turret', 'aim', 'fps'],
9
+ simulation: ['sim', 'simulation', 'farm', 'farming', 'garden', 'gardening', 'tycoon', 'manage', 'management', 'shop', 'cafe', 'restaurant', 'town', 'city', 'cozy', 'pet', 'pets', 'aquarium', 'bakery'],
10
+ strategy: ['strategy', 'tower defense', 'tower defence', 'rts', 'tactics', 'tactical', 'army', 'armies', 'turn-based', 'chess', 'siege', 'conquer', 'territory', 'lanes', 'units', 'kingdom'],
11
+ survival: ['survive', 'survival', 'survivor', 'survivors', 'horde', 'hordes', 'zombie', 'zombies', 'waves', 'wave', 'crafting', 'craft', 'hunger', 'bullet heaven', 'last stand', 'swarm'],
12
+ };
13
+ export const WEAK_WORDS = new Set([
14
+ 'drift', 'drifting', 'drive', 'driving', 'track', 'car', 'cars',
15
+ 'platform', 'platforms', 'jump', 'jumps', 'jumping', 'climb', 'climber', 'climbing', 'maze', 'mazes', 'ledge', 'ghosts',
16
+ 'tiles', 'blocks', 'sliding', 'slide', 'logic', 'word', 'words', 'sort', 'sorting',
17
+ 'party', 'adventure', 'hero', 'heroes', 'sword', 'knight', 'loot', 'quest', 'quests',
18
+ 'aim', 'bullet', 'bullets', 'laser', 'lasers', 'gun', 'guns', 'turret',
19
+ 'manage', 'shop', 'cafe', 'town', 'city', 'garden', 'gardening', 'pet', 'pets',
20
+ 'army', 'armies', 'lanes', 'units', 'kingdom', 'territory', 'siege', 'conquer',
21
+ 'survive', 'wave', 'waves', 'craft', 'crafting', 'hunger', 'swarm',
22
+ ]);
23
+ const ARCADE_WORDS = ['arcade', 'score', 'high score', 'dodge', 'catch', 'collect', 'endless', 'one-button', 'one button', 'tap', 'reflex', 'reflexes', 'chain', 'combo'];
24
+ const THREE_WORDS = ['3d', '3-d', 'three.js', 'threejs', 'first-person', 'first person', 'third-person', 'third person', 'voxel', 'voxels', 'low-poly', 'low poly', 'lowpoly', 'polygonal', 'fps'];
25
+ const TWO_D_WORDS = ['2d', '2-d', 'pixel', 'pixel art', 'pixel-art', 'sprite', 'sprites', 'retro', 'side-scroller', 'sidescroller', 'top-down', 'paper', 'hand-drawn'];
26
+ const PORTRAIT_WORDS = ['portrait', 'vertical', 'one thumb', 'one-thumb', 'one hand', 'one-handed', 'phone', 'mobile', 'iphone'];
27
+ const LANDSCAPE_WORDS = ['landscape', 'sideways', 'widescreen', 'desktop', 'keyboard', 'gamepad', 'controller'];
28
+ const CARD_ORIENTATION = {
29
+ arcade: null, card: 'portrait', platformer: 'landscape', puzzle: 'portrait', racing: 'landscape', rpg: 'landscape',
30
+ shooter: null, simulation: 'portrait', strategy: 'landscape', survival: 'landscape',
31
+ };
32
+ export const RECIPE = {
33
+ arcade: '.agents/skills/funpixel-gdd/references/start.md',
34
+ card: '.agents/skills/funpixel-gdd/references/genre-card.md',
35
+ platformer: '.agents/skills/funpixel-gdd/references/genre-platformer.md',
36
+ puzzle: '.agents/skills/funpixel-gdd/references/genre-puzzle.md',
37
+ racing: '.agents/skills/funpixel-gdd/references/genre-racing.md',
38
+ rpg: '.agents/skills/funpixel-gdd/references/genre-rpg.md',
39
+ shooter: '.agents/skills/funpixel-gdd/references/genre-shooter.md',
40
+ simulation: '.agents/skills/funpixel-gdd/references/genre-simulation.md',
41
+ strategy: '.agents/skills/funpixel-gdd/references/genre-strategy.md',
42
+ survival: '.agents/skills/funpixel-gdd/references/genre-survival.md',
43
+ };
44
+ const STOP = new Set(('a an the game games about of on in with where you your that and for to my me i make build little small polished complete ' +
45
+ 'phone mobile browser which who is are play player plays playing where while into from as it its at by be can will want new fun cute simple ' +
46
+ 'this one some very like just get gets go goes want will more really lot lots things stuff level levels hard harder easy easier ' +
47
+ 'replay replays sound sounds effects effect punchy glowing juicy fast slow good great beautiful')
48
+ .split(' '));
49
+ const norm = (s) => ` ${s.toLowerCase().replace(/[“”"'’]/g, ' ').replace(/[^a-z0-9.+#-]+/g, ' ').replace(/[.-]+(?=\s|$)/g, ' ').replace(/\s+/g, ' ').trim()} `;
50
+ const hits = (line, words) => words.filter((w) => line.includes(` ${w} `));
51
+ const MULTIPLAYER_WORDS = ['multiplayer', 'multi-player', 'online', 'co-op', 'coop', 'cooperative', 'versus', 'vs', 'pvp', 'deathmatch',
52
+ 'with a friend', 'with friends', 'with my friend', 'with my friends', 'against a friend', 'against friends', 'two friends', 'my friends can',
53
+ 'two players', '2 players', 'two-player', '2-player', 'four players', '4 players', 'with my brother', 'with my sister', 'invite code', 'room code'];
54
+ const PHRASE_END = new Set('to on in at with who that which where while from for of by and or but as into onto over under through across against between so then when if'.split(' '));
55
+ const VERBS = new Set(('rotate turn bring collect gather dodge avoid jump hop run dash race drive fly steer shoot fire throw catch match merge stack sort ' +
56
+ 'build craft grow farm cook serve feed help save rescue escape guide lead push pull swap connect link flip slide tap drag swipe draw paint ' +
57
+ 'fight defend protect guard explore find hide seek sneak steal deliver carry clean fix solve break smash bounce roll swing climb dig mine ' +
58
+ 'survive manage plant water raise tame train breed trade sell buy keep hold let get put take give lose win beat chase hunt eat avoid').split(' '));
59
+ export function nounPhrase(n) {
60
+ const all = n.trim().split(' ').filter(Boolean);
61
+ const about = all.indexOf('about');
62
+ const from = about >= 0 && about < all.length - 1 ? about + 1 : 0;
63
+ const phrase = [];
64
+ const words = all.slice(from);
65
+ for (const [i, w] of words.entries()) {
66
+ const verb = VERBS.has(w) || (/ing$/.test(w) && !/^games?$/.test(words[i + 1] ?? ''));
67
+ if (!phrase.length) {
68
+ if (STOP.has(w) || /^\d+$/.test(w) || /^games?$/.test(w) || PHRASE_END.has(w) || verb)
69
+ continue;
70
+ phrase.push(w);
71
+ continue;
72
+ }
73
+ if (PHRASE_END.has(w) || verb || STOP.has(w) || /^games?$/.test(w) || phrase.length >= 3)
74
+ break;
75
+ phrase.push(w);
76
+ }
77
+ return phrase.map((w) => w[0].toUpperCase() + w.slice(1)).join(' ');
78
+ }
79
+ export function pickStarter(raw) {
80
+ const line = raw.replace(/\s+/g, ' ').trim();
81
+ const n = norm(line);
82
+ const all = Object.entries(CARD_WORDS)
83
+ .map(([card, words]) => { const because = hits(n, words); const strong = because.filter((w) => !WEAK_WORDS.has(w)); return { card, because, strong: strong.length, score: strong.length * 2 + (because.length - strong.length) }; })
84
+ .filter((c) => c.because.length);
85
+ const qualified = all.filter((c) => c.strong >= 1 || c.because.length >= 2).sort((a, b) => b.score - a.score);
86
+ const statedRe = (w) => new RegExp(` (?:a|an|the|my) (?:[a-z0-9-]+ ){0,4}?${w.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')} (?:game|games|sim)\\b`);
87
+ const stated = qualified.find((c) => c.because.some((w) => !WEAK_WORDS.has(w) && statedRe(w).test(n)));
88
+ const scored = stated ? [stated, ...qualified.filter((c) => c !== stated)] : qualified;
89
+ const arcade = hits(n, ARCADE_WORDS);
90
+ const best = scored[0];
91
+ const tie = !stated && scored.length > 1 && scored[0].score === scored[1].score;
92
+ const weakOnly = all.filter((c) => !qualified.includes(c));
93
+ const unsure = tie
94
+ ? { candidates: [scored[0].card, scored[1].card], why: `${scored[0].card} (${scored[0].because.map((w) => `"${w}"`).join(', ')}) and ${scored[1].card} (${scored[1].because.map((w) => `"${w}"`).join(', ')}) match the line equally` }
95
+ : !best && weakOnly.length && arcade.length <= weakOnly[0].because.length
96
+ ? { candidates: weakOnly.map((c) => c.card), why: `only words with an everyday sense matched (${weakOnly.map((c) => `${c.card}: ${c.because.map((w) => `"${w}"`).join(', ')}`).join('; ')}), not enough to pick a recipe`, weak: true }
97
+ : undefined;
98
+ const card = !unsure && best && (stated || best.because.length >= arcade.length) ? best.card : 'arcade';
99
+ const because = card === 'arcade' ? (unsure ? [] : arcade) : best.because;
100
+ const rest = [...scored, ...weakOnly.sort((a, b) => b.score - a.score)];
101
+ const next = rest.find((c) => c.card !== card);
102
+ const three = hits(n, THREE_WORDS).filter((w) => !(w === 'fps' && hits(n, TWO_D_WORDS).length));
103
+ const two = hits(n, TWO_D_WORDS);
104
+ const engine = three.length && !two.length ? 'three' : 'pixi';
105
+ const engineBecause = engine === 'three' ? `3D words: ${three.map((w) => `"${w}"`).join(', ')}` : two.length ? `2D words: ${two.map((w) => `"${w}"`).join(', ')}` : 'no 3D word in the line, so Pixi, the 2D default';
106
+ const port = hits(n, PORTRAIT_WORDS), land = hits(n, LANDSCAPE_WORDS);
107
+ const byCard = CARD_ORIENTATION[card];
108
+ const orientation = port.length > land.length ? 'portrait' : land.length > port.length ? 'landscape' : byCard ?? 'landscape';
109
+ const orientationBecause = port.length !== land.length
110
+ ? `the line says ${(port.length > land.length ? port : land).map((w) => `"${w}"`).join(', ')}`
111
+ : byCard ? `how a ${card} game is usually held` : 'the scaffold\'s default';
112
+ const named = /^([A-Z0-9][\w'’!-]*(?:\s+[A-Z0-9][\w'’!-]*){0,3})\s*(?::|—|–|\s-\s)\s/.exec(line)
113
+ ?? /\b(?:called|named|titled)\s+["“']?([A-Z0-9][\w'’!-]*(?:\s+[A-Z0-9][\w'’!-]*){0,3})/.exec(line) ?? /["“]([^"”]{2,40})["”]/.exec(line);
114
+ const words = n.trim().split(' ').filter((w) => w && !STOP.has(w) && !/^\d+$/.test(w));
115
+ const kind = new Set([...Object.values(CARD_WORDS).flat(), ...ARCADE_WORDS, ...THREE_WORDS, ...TWO_D_WORDS, ...PORTRAIT_WORDS, ...LANDSCAPE_WORDS]);
116
+ const content = words.filter((w) => !kind.has(w)).slice(0, 3);
117
+ const pickWords = content.length ? content : words.slice(0, 3);
118
+ const titleWords = named ? named[1].trim() : nounPhrase(n) || pickWords.map((w) => w[0].toUpperCase() + w.slice(1)).join(' ');
119
+ const local = / (?:one|same|single|shared) (?:screen|device|phone|keyboard|tablet) | couch | hot ?seat | split ?screen | local /.test(n) && !/ online /.test(n);
120
+ const multi = local ? [] : hits(n, MULTIPLAYER_WORDS);
121
+ const folder = (named ? named[1] : titleWords || pickWords.join('-')).toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '').slice(0, 40) || 'game';
122
+ return {
123
+ line, card, because, also: next && next.card !== card ? { card: next.card, because: next.because } : null,
124
+ ...(unsure ? { unsure } : {}), ...(stated && card === stated.card ? { stated: true } : {}),
125
+ engine, engineBecause, orientation, orientationBecause,
126
+ title: titleWords || 'Untitled', titleFromLine: !!named, folder,
127
+ multiplayer: multi.length > 0, multiplayerBecause: multi,
128
+ };
129
+ }
130
+ export function templateOf(reference) {
131
+ if (!reference)
132
+ return null;
133
+ const m = /```markdown\n([\s\S]*?)\n```/.exec(reference);
134
+ return m ? m[1] : null;
135
+ }
136
+ export function seedGdd(p, name, template, date, tier) {
137
+ const q = (w) => w.map((x) => `"${x}"`).join(', ');
138
+ const cardLine = p.unsure?.weak
139
+ ? `**Genre card:** none (decided at init: ${p.unsure.why}; the GDD's own design, not ${p.unsure.candidates.join(' or ')}) · kept: <camera, body, how a run ends> · adapted: <choices for this game>`
140
+ : p.unsure
141
+ ? `**Genre card:** none picked yet: ${p.unsure.why}, so the owner is asked (a scope question in the chat) · kept: <camera, body, how a run ends> · adapted: <choices for this game>`
142
+ : p.card === 'arcade'
143
+ ? `**Genre card:** none picked (${p.because.length ? `arcade words: ${q(p.because)}` : 'no genre word in the line'}; the scaffold's own arcade round) · kept: <camera, body, how a run ends> · adapted: <choices for this game>`
144
+ : `**Genre card:** ${p.card} (from the line: ${q(p.because)}; recipe \`${RECIPE[p.card]}\`) · kept: <camera, body, how a run ends> · adapted: <choices for this game>`;
145
+ const header = [
146
+ `# ${name}`,
147
+ '',
148
+ `**Version:** v0.1 · ${date} · **Stage:** Design`,
149
+ `**Pitch:** ${p.line}`,
150
+ '**The 6-second ad:** <what someone sees in the first seconds that makes them want to play>',
151
+ '**The player\'s journey:** <what they see first and press (the real control) → the first objective → the first payoff>',
152
+ cardLine,
153
+ `**Orientation:** ${p.orientation} (${p.orientationBecause}) · **Input:** <keyboard, touch, pad>${p.multiplayer ? ` · **Players:** multiplayer (the line says ${q(p.multiplayerBecause)}; rooms on the relay, host-owned state: skill \`funpixel-game-spine\`)` : ''}`,
154
+ '',
155
+ '## Where we are',
156
+ `Design. Seeded from one line by \`funtools init\` on ${date}: the pitch is the line as written; the engine (${p.engine}: ${p.engineBecause}), the genre card and the orientation are the closest starters it found, each with its reason above. All of it is yours to change: rewrite the pitch, pick another card or none, turn the phone. Next: the rest of this document (skill \`funpixel-gdd\`), then the first playable slice.`,
157
+ ].join('\n');
158
+ if (!template)
159
+ return `${header}\n`;
160
+ const where = template.indexOf('\n## Where we are');
161
+ const at = where < 0 ? -1 : template.indexOf('\n## ', where + 1);
162
+ if (at < 0)
163
+ return `${header}\n`;
164
+ const rest = template.slice(at + 1);
165
+ return `${header}\n\n${tier ? sizeTemplate(rest, tier, tier === 'small' ? [] : sectionsForLine(p.line)).text : rest}\n`;
166
+ }
@@ -0,0 +1,179 @@
1
+ const sheetPath = (name) => `design/first-look/${name}.png`;
2
+ const ref = (name, subject) => ({ name, kind: 'image', subject, out: sheetPath(name) });
3
+ const sfx = (name, subject) => ({ name: `sfx-${name}`, kind: 'sound', subject, out: `public/assets/sfx/${name}.mp3`, params: { duration_seconds: 0.6 } });
4
+ const theme = (subject) => ({ name: 'theme', kind: 'music', subject, params: { instrumental: true } });
5
+ const ui = (refs) => [
6
+ { name: 'wordmark', kind: 'sprite', subject: 'the game\'s title lettered as art, made of the world\'s own material', references: refs, role: { w: 640 } },
7
+ { name: 'plate', kind: 'sprite', subject: 'one UI panel in the world\'s material, plain centre, a border that can nine-slice', references: refs, role: { w: 256 } },
8
+ ];
9
+ const hero2d = (subject) => [
10
+ ref('ref-hero', `a character turnaround reference sheet of ${subject}: front, side and back on a plain light ground, the same proportions in every view`),
11
+ { name: 'player', kind: 'sprite', subject: `${subject}, whole, facing right`, references: ['ref-hero', 'ref-world'], role: { h: 96 } },
12
+ ];
13
+ export const STARTERS = {
14
+ world3d: {
15
+ loop: 'you run and jump through a lit 3D space to collect what is scattered there before the clock runs out, while hazards with a visible tell push you to move',
16
+ conventions: [
17
+ 'The camera follows behind and frames where you are going; it never clips into walls and never turns by itself, so up on the stick always means away.',
18
+ 'A jump just after a ledge still counts and an early press fires on landing (0.1 s each); a held jump goes higher than a tap.',
19
+ 'A shadow under the hero shows where a jump will land.',
20
+ 'On a phone: a stick that appears where the left thumb lands, jump under the right thumb.',
21
+ ],
22
+ screens: [],
23
+ playLength: '15–20 minutes for a first-time player, to an ending (starter default: one round is 45 s; make rounds, places or chapters reach it)',
24
+ actors: [
25
+ ['hero', 'player-controlled', 'moves', 'idle, run (leans into speed), jump (stretch), fall, land (squash by impact), dash, toppled', '3D model from ref-hero (rigged: idle, run, jump)'],
26
+ ['pickup', 'goal', 'idles', 'bobbing and turning while there; a burst of sparks when taken', '3D model'],
27
+ ['flare', 'threat', 'still', 'a glowing ring through the tell (0.7 s), a column of light through the burn', 'code'],
28
+ ],
29
+ places: [['the square', 'drifting motes, the hero', 'one ambient bed', 'a pickup: sparks and a chime; the win: the view kicks wide', 'code scatter + ref-world']],
30
+ assets: [
31
+ ref('ref-hero', 'a character turnaround reference sheet of the hero: front, three-quarter, side and back on a plain light ground, about four heads tall, the same proportions in every view'),
32
+ ref('ref-world', 'a style frame of the play space from the play camera: the open ground, raised platforms and pillars, the light and the sky at the game\'s time of day'),
33
+ { name: 'hero', kind: 'model3d', subject: 'the hero, standing in a relaxed A-pose', from: 'ref-hero', references: ['ref-hero'], params: { animations: ['idle', 'run', 'jump'] } },
34
+ { name: 'pickup', kind: 'model3d', subject: 'the collectible, small and readable from far away, glowing', references: ['ref-world'] },
35
+ ...ui(['ref-world']),
36
+ sfx('pickup', 'a bright short chime for collecting a light'), sfx('jump', 'a soft quick whoosh of a jump'), sfx('land', 'a light thump of feet landing on stone'),
37
+ sfx('tell', 'a low rising hum of a ring of fire about to flare'), sfx('win', 'a short triumphant flourish'), sfx('lose', 'a deflating low sting'),
38
+ theme('a warm looping ambient theme for the place, gentle and adventurous'),
39
+ ],
40
+ },
41
+ arcade: {
42
+ loop: 'you make one quick choice over and over against a clock or a rising threat, chasing a best score',
43
+ conventions: ['A retry is under a second away.', 'The score and the best are always visible; a new best is announced.', 'Danger shows a tell before it can hurt.'],
44
+ screens: [], playLength: '15 minutes across many runs, to a last stage or an ending (one run 30–90 s)',
45
+ actors: [['player', 'player-controlled', 'moves', 'idle, act, hit, toppled', 'sprite from ref-hero'], ['threat', 'threat', 'moves', 'tell, strike, rest', 'sprite']],
46
+ places: [['the arena', 'ambient motion at the edges', 'one bed', 'a new best: a flourish', 'background image']],
47
+ assets: [...hero2d('the hero'), ref('ref-world', 'a style frame of the arena with the hero in play'), { name: 'background', kind: 'image', subject: 'the arena\'s backdrop, quiet in the middle', references: ['ref-world'] }, ...ui(['ref-world']), sfx('pickup', 'a bright short chime'), theme('a punchy looping arcade theme')],
48
+ },
49
+ card: {
50
+ loop: 'you draw, choose and play cards to beat a hand, a rival or a target, building a better deck or hand as you go',
51
+ conventions: ['A card lifts under the finger and shows what it will do before it is played.', 'The draw, the discard and the counts are visible.', 'An undo for a misplay where the rules allow it.'],
52
+ screens: [['deck view', 'every card owned', 'see what the deck is', 'a button on the play', 'play']], playLength: '15–20 minutes: a run of three acts to a final fight',
53
+ actors: [['card', 'piece', 'still', 'in hand, lifted, played, discarded', 'card frame + art per card'], ['rival', 'opponent', 'idles', 'thinking, playing, beaten', 'portrait']],
54
+ places: [['the table', 'the rival\'s hands, a candle', 'one bed', 'a big play: the table shakes', 'background image']],
55
+ assets: [ref('ref-world', 'a style frame of the table with cards in play'), { name: 'card-frame', kind: 'sprite', subject: 'a blank card frame in the world\'s material', references: ['ref-world'], role: { h: 280 } }, { name: 'table', kind: 'image', subject: 'the table seen from above', references: ['ref-world'] }, ...ui(['ref-world']), sfx('play', 'a crisp card slap'), theme('a calm looping theme for a card table')],
56
+ },
57
+ platformer: {
58
+ loop: 'you run and jump through rooms of hazards to reach the exit, dying fast and retrying faster',
59
+ conventions: ['Coyote time and a jump buffer (about 0.1 s each); a held jump goes higher than a tap.', 'Death costs seconds: back at the last checkpoint in about a second.', 'Maze chase: a turn pressed early is queued and taken at the next corner.'],
60
+ screens: [['level select', 'the rooms, the ones cleared', 'pick a room', 'title', 'play']], playLength: '15–20 minutes: 20–30 rooms of 30–60 s and a last room',
61
+ actors: [['hero', 'player-controlled', 'moves', 'idle, run, jump (stretch), fall, land (squash), dead', 'sheet from ref-hero'], ['enemy', 'threat', 'moves', 'patrol, notice, hit', 'sheet'], ['checkpoint', 'save', 'still', 'unlit, lit', 'sprite']],
62
+ places: [['each area', 'birds, drifting leaves', 'a bed per area', 'a checkpoint: it lights with a chime', 'parallax layers']],
63
+ assets: [...hero2d('the hero'), ref('ref-world', 'a style frame of a platforming room: ground, ledges, a hazard, the hero mid-jump'), { name: 'tiles', kind: 'texture', subject: 'the ground and ledge tiles', references: ['ref-world'] }, { name: 'enemy', kind: 'sprite', subject: 'a patrolling enemy whose shape says how it moves', references: ['ref-world'], role: { h: 80 } }, ...ui(['ref-world']), sfx('jump', 'a light jump'), sfx('land', 'a soft landing'), theme('a bright looping platformer theme')],
64
+ },
65
+ puzzle: {
66
+ loop: 'you place, swap, slide or merge pieces on a board to reach a goal, each move a small decision',
67
+ conventions: ['Undo and restart are one tap away.', 'Merge or drop: a drop line and the next piece shown.', 'A move pressed during an animation is queued, never lost.'],
68
+ screens: [['level select', 'the levels, stars per level', 'pick a level', 'title', 'play']], playLength: '15–20 minutes: 20–30 levels of 30–60 s and a final level',
69
+ actors: [['piece', 'piece', 'idles', 'resting, held, moving, cleared', 'sprite per kind'], ['board', 'place', 'still', 'calm, nearly full', 'image']],
70
+ places: [['the board', 'a small companion that reacts', 'one bed', 'a clear: pieces burst, the bed lifts', 'background image']],
71
+ assets: [ref('ref-world', 'a style frame of the board mid-play with every piece kind'), { name: 'pieces', kind: 'sheet', subject: 'every piece kind on one sheet, each readable at 48 px', references: ['ref-world'] }, { name: 'board', kind: 'image', subject: 'the board and its frame', references: ['ref-world'] }, ...ui(['ref-world']), sfx('merge', 'a satisfying soft pop'), theme('a calm looping puzzle theme')],
72
+ },
73
+ racing: {
74
+ loop: 'you steer around a track against rivals and the clock, taking the racing line and the risks it offers',
75
+ conventions: ['Rivals stay close (catch-up): the race is decided late.', 'The position and the lap are always on screen.', 'A crash costs time, never the race outright.'],
76
+ screens: [['results', 'positions, times, the best lap', 'race again or go on', 'the finish', 'play or title']], playLength: '15–20 minutes: a cup of 5 races of 3 laps',
77
+ actors: [['car', 'player-controlled', 'moves', 'drive, drift, boost, crash', 'model or sprite from ref-hero'], ['rival', 'opponent', 'moves', 'drive, overtake, crash', 'same, recoloured']],
78
+ places: [['the stands', 'an instanced crowd', 'a crowd murmur', 'an overtake: a roar; the finish: confetti', 'instanced cards']],
79
+ assets: [ref('ref-hero', 'a vehicle reference sheet: front, side, back and top'), ref('ref-world', 'a style frame of the track from the chase camera'), { name: 'car', kind: 'sprite', subject: 'the player\'s vehicle from above', references: ['ref-hero'], role: { h: 96 } }, { name: 'track', kind: 'image', subject: 'the track surface and its edges', references: ['ref-world'] }, ...ui(['ref-world']), sfx('boost', 'a short boost whoosh'), theme('a driving looping race theme')],
80
+ },
81
+ rpg: {
82
+ loop: 'you explore, fight and grow stronger to take on a quest a person asked of you',
83
+ conventions: ['The hero heals at a safe place; saving is automatic.', 'A new item shows what it changes before you take it.', 'Enemies telegraph their attacks.'],
84
+ screens: [['inventory', 'what you carry and wear', 'equip in one tap', 'a button on the play', 'play']], playLength: '15–25 minutes: 4 areas and a final boss',
85
+ actors: [['hero', 'player-controlled', 'moves', 'idle, walk, attack, hit, down', 'sheet from ref-hero'], ['enemy', 'threat', 'moves', 'patrol, wind-up, strike, recover', 'sheet'], ['quest giver', 'speaker', 'idles', 'waiting, talking, thanking', 'portrait + sprite']],
86
+ places: [['the village', 'people who greet you', 'a bed per place', 'a quest done: the village celebrates', 'tiles + props']],
87
+ assets: [...hero2d('the hero'), ref('ref-world', 'a style frame of the first area with the hero and a person to talk to'), { name: 'enemy', kind: 'sheet', subject: 'the first enemy', references: ['ref-world'] }, { name: 'tiles', kind: 'texture', subject: 'ground tiles of the first area', references: ['ref-world'] }, ...ui(['ref-world']), sfx('hit', 'a meaty hit'), theme('an adventurous looping theme')],
88
+ },
89
+ shooter: {
90
+ loop: 'you move and fire at waves of enemies, weaving through their shots',
91
+ conventions: ['Fire is automatic or one held press on a phone.', 'The hitbox is smaller than the ship.', 'Enemy shots stand out from everything else.'],
92
+ screens: [], playLength: '15 minutes: waves to a final boss',
93
+ actors: [['ship', 'player-controlled', 'moves', 'fly, fire, hit, invulnerable', 'sprite from ref-hero'], ['enemy', 'threat', 'moves', 'enter, fire, break', 'sprite'], ['boss', 'threat', 'moves', 'phases with tells', 'sprite']],
94
+ places: [['the sky', 'clouds and debris drifting', 'one driving bed', 'a boss down: the screen clears in light', 'parallax layers']],
95
+ assets: [...hero2d('the ship'), ref('ref-world', 'a style frame of a wave with shots on screen'), { name: 'enemy', kind: 'sprite', subject: 'a basic enemy', references: ['ref-world'], role: { h: 64 } }, { name: 'background', kind: 'strip', subject: 'a scrolling backdrop', references: ['ref-world'] }, ...ui(['ref-world']), sfx('shoot', 'a short laser zap'), theme('a driving looping shooter theme')],
96
+ },
97
+ simulation: {
98
+ loop: 'you build, tend and sell to grow a place, one small decision at a time',
99
+ conventions: ['Time pauses while you decide; a speed-up exists.', 'Every cost and gain is shown before you commit.', 'Progress keeps between sessions.'],
100
+ screens: [['shop', 'what you can buy and its price', 'buy in one tap', 'a button on the play', 'play']], playLength: '15–20 minutes to the last big upgrade and its ending',
101
+ actors: [['customer', 'visitor', 'moves', 'arrive, wait, happy, leave', 'sprite'], ['station', 'piece', 'still', 'idle, working, ready', 'sprite']],
102
+ places: [['the shop', 'customers coming and going', 'a cosy bed', 'a sale: coins chime; a level-up: lights', 'background image + props']],
103
+ assets: [ref('ref-world', 'a style frame of the place busy with people'), { name: 'customer', kind: 'sheet', subject: 'a customer walking', references: ['ref-world'] }, { name: 'station', kind: 'sprite', subject: 'the first work station', references: ['ref-world'], role: { h: 96 } }, ...ui(['ref-world']), sfx('coin', 'a cheerful coin chime'), theme('a cosy looping theme')],
104
+ },
105
+ strategy: {
106
+ loop: 'you place and command units to hold or take ground, reading what the other side will do',
107
+ conventions: ['Tactics: an undo for the turn and a preview of every move\'s result.', 'Tower defence: the next wave is shown; speed-up exists.', 'Ranges and paths show before you commit.'],
108
+ screens: [['level select', 'the maps, the stars won', 'pick a map', 'title', 'play']], playLength: '15–20 minutes: 5–7 maps and a last map',
109
+ actors: [['unit', 'player-controlled', 'moves', 'idle, move, attack, hurt, down', 'sheet from ref-hero'], ['enemy unit', 'opponent', 'moves', 'same states, another colour', 'sheet']],
110
+ places: [['the field', 'banners in the wind', 'a bed that swells in battle', 'a map won: banners rise', 'tiles + props']],
111
+ assets: [...hero2d('a unit'), ref('ref-world', 'a style frame of the field with both sides'), { name: 'tiles', kind: 'texture', subject: 'ground tiles of the field', references: ['ref-world'] }, ...ui(['ref-world']), sfx('order', 'a short command horn'), theme('a tactical looping theme')],
112
+ },
113
+ survival: {
114
+ loop: 'you move through growing hordes while your weapons fire on their own, picking an upgrade at every level',
115
+ conventions: ['Weapons fire automatically; you only move.', 'A level-up pauses for a pick of three.', 'Experience gems pull in when near.'],
116
+ screens: [['level-up pick', 'three upgrades with what each does', 'pick in one tap', 'a level gained', 'play']], playLength: '15 minutes: one run to the last wave and its boss',
117
+ actors: [['hero', 'player-controlled', 'moves', 'idle, walk, hit, down', 'sheet from ref-hero'], ['enemy', 'threat', 'moves', 'chase, hit, die', 'sheet per kind'], ['gem', 'pickup', 'idles', 'glint, pulled, taken', 'sprite']],
118
+ places: [['the field', 'the horde itself', 'a bed that rises with the count', 'a level-up: time slows, light', 'tiles']],
119
+ assets: [...hero2d('the hero'), ref('ref-world', 'a style frame of a horde closing in'), { name: 'enemy', kind: 'sheet', subject: 'the first enemy kind walking', references: ['ref-world'] }, { name: 'gem', kind: 'sprite', subject: 'an experience gem', references: ['ref-world'], role: { h: 32 } }, ...ui(['ref-world']), sfx('levelup', 'a rising level-up chime'), theme('an intense looping survival theme')],
120
+ },
121
+ };
122
+ export function starterPlaceholders(manifest) {
123
+ const key = manifest?.starter;
124
+ if (typeof key !== 'string' || !Object.hasOwn(STARTERS, key) || !Array.isArray(manifest.items))
125
+ return [];
126
+ const wrote = new Map(STARTERS[key].assets.map((a) => [a.name, a.subject]));
127
+ return manifest.items
128
+ .filter((it) => typeof it?.name === 'string' && typeof it.subject === 'string' && wrote.get(it.name) === it.subject)
129
+ .map((it) => it.name);
130
+ }
131
+ const BASE_SCREENS = [
132
+ ['title', 'the world behind, the name as art, one start control', 'start in one tap', 'load, or quit from pause', 'play'],
133
+ ['how to play', 'the verbs with their keys and gestures', 'say the controls in one look', 'title or pause', 'back'],
134
+ ['play', 'the HUD at the edges, the play in the middle', 'keep the play clear', 'start, resume, retry', 'pause, the endings'],
135
+ ['pause', 'resume, sound, how to play, quit', 'resume in one tap', 'the pause control, Escape', 'play or title'],
136
+ ['win / lose', 'the result, the score and the best, play again', 'retry in under a second', 'the round ending', 'play or title'],
137
+ ];
138
+ const D = '(starter default)';
139
+ const table = (head, rows) => [head, `|${head.split('|').slice(1, -1).map(() => '---').join('|')}|`, ...rows.map((r) => `| ${r.join(' | ')} |`)].join('\n');
140
+ export function fillGdd(gdd, key) {
141
+ const s = STARTERS[key];
142
+ let out = gdd;
143
+ const put = (at, text) => { if (at.test(out))
144
+ out = out.replace(at, text); };
145
+ put(/^<one sentence: you <verb> <what> to <goal> while <what pushes back>>$/m, `${s.loop[0].toUpperCase()}${s.loop.slice(1)}. ${D}`);
146
+ put(/^Play length: <[^\n]*$/m, `Play length: ${s.playLength} ${D}`);
147
+ put(/^\| <hero> \| player-controlled[^\n]*\n\| <piece>[^\n]*$/m, s.actors.map((r) => `| ${r.join(' | ')} ${D} |`).join('\n'));
148
+ put(/^\| <stands, streets, rooftops>[^\n]*$/m, s.places.map((r) => `| ${r.join(' | ')} ${D} |`).join('\n'));
149
+ put(/^\| <title> \| <the title, one start control>[^\n]*$/m, [...BASE_SCREENS, ...s.screens].map((r) => `| ${r.join(' | ')} |`).join('\n'));
150
+ if (key === 'world3d') {
151
+ put(/^Cold open: <[^\n]*$/m, `Cold open: none: Play blends the title's orbit into the follow in 1.1 s and hands over at once ${D}`);
152
+ put(/^First control: <[^\n]*$/m, `First control: 0:01 · Objective on screen: "Gather the gems" · Distance: "N m" to the nearest gem, beside the count ${D}`);
153
+ put(/^\| <0:00> \| <title>[^\n]*\n\| <0:03>[^\n]*\n\| <0:08>[^\n]*$/m, [
154
+ `| 0:00 | title | the square the round is played on, orbiting slowly behind the wordmark | tap Play | hook: title vs play alike ${D} |`,
155
+ `| 0:01 | play | the hero, the gems, the HUD's "Gems 0 / 16 · 9 m" | move, jump, dash | hook: control at 1 s, objective on screen ${D} |`,
156
+ ].join('\n'));
157
+ put(/^\| <title> \| <title> \| <50°>[^\n]*\n\| <play>[^\n]*\n\| <the first beat>[^\n]*$/m, [
158
+ `| title | title | 50° | 7.5 m up, 21 m out | slow orbit over the square (0.07 rad/s) | <design/first-look/title.png> ${D} |`,
159
+ `| play | play | 50° | 4.4 m up, 9.5 m behind | follow, framing 0.35 s ahead, pulls in off walls | <design/first-look/play.png> ${D} |`,
160
+ `| a beat | reveal | 45° | 9 m up, 15 m behind | shoot('reveal', 1.2) at the beat, shoot('play', 0.8) after | <> ${D} |`,
161
+ ].join('\n'));
162
+ }
163
+ const block = ['', '## Conventions players bring', `Starter defaults from \`funtools init\` (the genre card's list): keep each, or break it on purpose and say so here and in the game.`, ...s.conventions.map((c) => `- ${c}`), ''].join('\n');
164
+ out = out.includes('\n## The numbers') ? out.replace('\n## The numbers', `${block}\n## The numbers`) : `${out.trimEnd()}\n${block}`;
165
+ if (!/\| win \/ lose \|/.test(out))
166
+ out = `${out.trimEnd()}\n\n## Screens (starter default)\n${table('| Screen | What is on it | The one thing it must do | Entered by | Leaves to |', [...BASE_SCREENS, ...s.screens])}\n`;
167
+ return out;
168
+ }
169
+ export function assetManifest(key, idea) {
170
+ const PICTURE = new Set(['image', 'sprite', 'sheet', 'texture', 'strip']);
171
+ const items = [...STARTERS[key].assets]
172
+ .map(({ references, ...it }) => (references && PICTURE.has(it.kind) ? { ...it, references: references.map(sheetPath) } : it))
173
+ .sort((a, b) => Number(b.name.startsWith('ref-')) - Number(a.name.startsWith('ref-')));
174
+ return JSON.stringify({
175
+ starter: key,
176
+ about: `The ${key === 'world3d' ? '3D world' : key} starter's placeholder art and sound${idea ? `, written for its demo round and not for "${idea.length > 80 ? `${idea.slice(0, 79)}…` : idea}"` : ''}, to make with \`npx @funpixel/tools assets gen\` (the hosted jobs; dry run first: --dry-run; estimate before paying). Reference sheets (ref-*) come first and every later picture names them in "references", so the cast and the world stay one design. Each subject is composed with assets/style.json; rewrite every subject for your game before generating (\`assets gen --dry-run\` names the ones still as the starter wrote them). Until a file lands the game draws its placeholder.`,
177
+ items,
178
+ }, null, 2) + '\n';
179
+ }
@@ -0,0 +1,125 @@
1
+ export function sourceOf(m) {
2
+ if (m.originalSource && m.originalLine)
3
+ return `${cleanPath(m.originalSource)}:${m.originalLine}`;
4
+ if (m.sourceFile && m.sourceLine)
5
+ return `${cleanPath(m.sourceFile)}:${m.sourceLine}`;
6
+ return null;
7
+ }
8
+ export function cleanPath(p) {
9
+ let path = p;
10
+ try {
11
+ if (/^[a-z]+:\/\//i.test(p))
12
+ path = new URL(p).pathname;
13
+ }
14
+ catch { }
15
+ return path.replace(/\?.*$/, '').replace(/^\/+/, '').replace(/^(\.\.\/)+/, '');
16
+ }
17
+ const num = (n, dp = 1) => (typeof n === 'number' && Number.isFinite(n) ? +n.toFixed(dp) : null);
18
+ export function stateLine(m) {
19
+ const parts = [];
20
+ const p = m.position;
21
+ if (p)
22
+ parts.push(`at ${['x', 'y', 'z'].filter((k) => k in p).map((k) => `${k} ${num(p[k])}`).join(' ')}`);
23
+ const s = m.scale;
24
+ if (s && Object.values(s).some((v) => v !== 1))
25
+ parts.push(`scale ${Object.values(s).map((v) => num(v, 2)).join('×')}`);
26
+ const r = m.rotation;
27
+ if (r && Object.values(r).some((v) => typeof v === 'number' && Math.abs(v) > 1e-3))
28
+ parts.push(`rotation ${Object.values(r).map((v) => num(v, 2)).join(',')}`);
29
+ if (typeof m.alpha === 'number' && m.alpha !== 1)
30
+ parts.push(`alpha ${num(m.alpha, 2)}`);
31
+ if (m.visible === false)
32
+ parts.push('HIDDEN');
33
+ if (m.childCount)
34
+ parts.push(`${m.childCount} children`);
35
+ const b = m.bounds;
36
+ if (b && b.width > 0 && b.height > 0)
37
+ parts.push(`on screen ${Math.round(b.x)},${Math.round(b.y)} ${Math.round(b.width)}x${Math.round(b.height)}`);
38
+ if (m.parentLabel)
39
+ parts.push(`in ${m.parentLabel}`);
40
+ return parts.join(' · ');
41
+ }
42
+ export function describeHit(h) {
43
+ const m = h.metadata;
44
+ const what = h.kind === 'hud'
45
+ ? `HUD ${h.name}${m.cssClass ? ` .${m.cssClass.split(/\s+/)[0]}` : ''}`
46
+ : h.name === m.typeName ? h.name : `${h.name} (${m.typeName})`;
47
+ const lines = [what];
48
+ const state = stateLine(m);
49
+ if (state)
50
+ lines.push(` ${state}`);
51
+ const data = { ...(h.data ?? {}), ...(m.componentProps ?? {}) };
52
+ if (Object.keys(data).length)
53
+ lines.push(` data ${JSON.stringify(data).slice(0, 240)}`);
54
+ const src = sourceOf(m);
55
+ const none = h.kind === 'hud'
56
+ ? 'an element, not an engine object: find it by its text or class (its component is the "in" above when Preact rendered it)'
57
+ : 'none recorded (made by the engine itself, or before the inspector hooked it)';
58
+ lines.push(src ? ` made at ${src}${m.originalSourceLine ? ` ${m.originalSourceLine.slice(0, 120)}` : ''}` : ` made at — ${none}`);
59
+ return lines;
60
+ }
61
+ export function describeError(e) {
62
+ const where = sourceOf({ originalSource: e.originalSource, originalLine: e.originalLine, sourceFile: e.filename, sourceLine: e.line });
63
+ const lines = [`${e.type === 'unhandledrejection' ? 'unhandled rejection' : e.type === 'console_error' ? 'console.error' : 'uncaught'}: ${e.message.slice(0, 240)}`];
64
+ lines.push(where ? ` at ${where}${e.originalSourceLine ? ` ${e.originalSourceLine.slice(0, 120)}` : ''}` : ' at — no source line (no frame of the game in its stack)');
65
+ return lines;
66
+ }
67
+ export function mergeErrors(inspector, page) {
68
+ const key = (m) => m.trim().replace(/^Uncaught\s+/, '').replace(/^[A-Za-z]*Error:\s*/, '');
69
+ const seen = new Set(inspector.map((e) => key(e.message)));
70
+ return [...inspector, ...page.filter((e) => !seen.has(key(e.message)))];
71
+ }
72
+ export function sourceRefFromStack(stack) {
73
+ if (!stack)
74
+ return null;
75
+ for (const line of stack.split('\n')) {
76
+ if (/funpixel-|__FUNPIXEL|hooked-|hookFactory|makeHooked|node_modules|\/@vite\/|\/@fs\/|webpack|rollup|chunk-/.test(line))
77
+ continue;
78
+ const m = line.match(/(?:\(|@)((?:https?|file):\/\/[^\s)]+):(\d+):(\d+)/) || line.match(/at\s+((?:https?|file):\/\/[^\s)]+):(\d+):(\d+)/);
79
+ if (m)
80
+ return { f: m[1], l: +m[2], c: +m[3] };
81
+ }
82
+ return null;
83
+ }
84
+ export function treeLines(root, max = 120) {
85
+ if (!root)
86
+ return [];
87
+ const out = [];
88
+ let total = 0;
89
+ const walk = (n, depth) => {
90
+ total++;
91
+ if (out.length < max)
92
+ out.push(`${' '.repeat(depth)}${n.name}${n.type && n.type !== n.name ? ` (${n.type})` : ''}${n.layer && n.layer !== 'canvas' ? ` [${n.layer}]` : ''}`);
93
+ for (const c of n.children ?? [])
94
+ walk(c, depth + 1);
95
+ };
96
+ walk(root, 0);
97
+ if (total > out.length)
98
+ out.push(`… ${total - out.length} more (--json has them all)`);
99
+ return out;
100
+ }
101
+ export const givenName = (n) => !!n.name && n.name !== n.type && !/^[A-Z][A-Za-z]*_\d+$/.test(n.name);
102
+ export function givenNames(root, max = 24) {
103
+ const out = new Set();
104
+ const walk = (n) => {
105
+ if (out.size >= max)
106
+ return;
107
+ if (givenName(n))
108
+ out.add(n.name);
109
+ for (const c of n.children ?? [])
110
+ walk(c);
111
+ };
112
+ if (root)
113
+ walk(root);
114
+ return [...out];
115
+ }
116
+ export function parseAt(raw, viewport) {
117
+ const m = /^\s*(-?[\d.]+)(%?)\s*,\s*(-?[\d.]+)(%?)\s*$/.exec(raw);
118
+ if (!m)
119
+ return null;
120
+ const x = m[2] ? (Number(m[1]) / 100) * viewport.width : Number(m[1]);
121
+ const y = m[4] ? (Number(m[3]) / 100) * viewport.height : Number(m[3]);
122
+ if (!Number.isFinite(x) || !Number.isFinite(y) || x < 0 || y < 0 || x > viewport.width || y > viewport.height)
123
+ return null;
124
+ return { x: Math.round(x), y: Math.round(y) };
125
+ }
@@ -0,0 +1,40 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { createServer } from 'node:net';
3
+ import { join, resolve } from 'node:path';
4
+ import { devtoolsPlugin, findDevtools } from "../dev/devtools.js";
5
+ import { gameVite } from "../commands/dev.js";
6
+ async function freePort() {
7
+ return new Promise((ok, fail) => {
8
+ const s = createServer();
9
+ s.once('error', fail);
10
+ s.listen(0, '127.0.0.1', () => {
11
+ const port = s.address().port;
12
+ s.close(() => ok(port));
13
+ });
14
+ });
15
+ }
16
+ export async function startDevServer(target) {
17
+ const dir = resolve(target);
18
+ const vite = await gameVite(dir);
19
+ if (!vite)
20
+ return `vite is not installed in ${dir} — run npm install (or pnpm install) first`;
21
+ let pkg = null;
22
+ try {
23
+ pkg = JSON.parse(readFileSync(join(dir, 'package.json'), 'utf8'));
24
+ }
25
+ catch { }
26
+ const tools = findDevtools(pkg, dir);
27
+ if (typeof tools === 'string')
28
+ return tools;
29
+ const port = await freePort();
30
+ const server = await vite.createServer({
31
+ root: dir,
32
+ configFile: undefined,
33
+ logLevel: 'silent',
34
+ clearScreen: false,
35
+ plugins: [devtoolsPlugin(tools, [vite.searchForWorkspaceRoot(dir)])],
36
+ server: { host: '127.0.0.1', port, strictPort: true, hmr: false, watch: null, open: false },
37
+ });
38
+ await server.listen();
39
+ return { url: `http://127.0.0.1:${port}/`, tools, close: () => server.close() };
40
+ }
@@ -0,0 +1,74 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { mkdir, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { changedShare, sideBySide, UNCHANGED } from "../commands/compare.js";
5
+ import { decodePng, encodePng } from "../look/png.js";
6
+ export function notSameTest(a, b) {
7
+ const out = [];
8
+ if (a.script !== b.script)
9
+ out.push('the script changed');
10
+ if (a.seed !== b.seed)
11
+ out.push(`seed ${a.seed} → ${b.seed}`);
12
+ if (a.viewport !== b.viewport || a.size !== b.size)
13
+ out.push(`${a.viewport} ${a.size} → ${b.viewport} ${b.size}`);
14
+ if ((a.orientation || '') !== (b.orientation || ''))
15
+ out.push(`held ${a.orientation || 'as the game says'} → ${b.orientation || 'as the game says'}`);
16
+ return out;
17
+ }
18
+ const loadPng = (f) => (existsSync(f) ? decodePng(readFileSync(f)) : null);
19
+ export async function diffRuns(a, b, out) {
20
+ const names = (r) => r.marks.map((m) => m.name);
21
+ const marks = [];
22
+ if (out)
23
+ await mkdir(out, { recursive: true });
24
+ for (const mb of b.marks) {
25
+ const ma = a.marks.find((m) => m.name === mb.name);
26
+ if (!ma)
27
+ continue;
28
+ const fa = loadPng(ma.frame), fb = loadPng(mb.frame);
29
+ const same = fa && fb && fa.width === fb.width && fa.height === fb.height;
30
+ let sheet = null;
31
+ if (out && fa && fb) {
32
+ sheet = join(out, `${mb.name}.png`);
33
+ await writeFile(sheet, encodePng(sideBySide(fa, fb)));
34
+ }
35
+ const keys = [...new Set([...Object.keys(ma.counters), ...Object.keys(mb.counters)])];
36
+ const counters = keys.filter((k) => JSON.stringify(ma.counters[k]) !== JSON.stringify(mb.counters[k]))
37
+ .map((k) => ({ field: k, before: ma.counters[k], after: mb.counters[k] }));
38
+ const verdicts = mb.expect.flatMap((e) => {
39
+ const was = ma.expect.find((x) => x.field === e.field && x.op === e.op && x.want === e.want);
40
+ return was && was.verdict !== e.verdict ? [{ field: `${e.field}${e.op}${e.want}`, before: was.verdict, after: e.verdict }] : [];
41
+ });
42
+ marks.push({ mark: mb.name, changed: same ? Math.round(changedShare(fa, fb) * 1000) / 1000 : null, counters, verdicts, sheet });
43
+ }
44
+ const not_same = notSameTest(a, b);
45
+ return {
46
+ before: a.run, after: b.run, same_test: !not_same.length, not_same,
47
+ same_build: !!a.fingerprint && a.fingerprint === b.fingerprint,
48
+ marks,
49
+ only_before: names(a).filter((n) => !names(b).includes(n)),
50
+ only_after: names(b).filter((n) => !names(a).includes(n)),
51
+ unchanged: marks.filter((m) => m.changed !== null && m.changed < UNCHANGED && !m.counters.length).map((m) => m.mark),
52
+ };
53
+ }
54
+ export function diffLines(d) {
55
+ const lines = [];
56
+ for (const m of d.marks) {
57
+ const bits = [];
58
+ if (m.changed === null)
59
+ bits.push('frame not comparable');
60
+ else if (m.changed >= UNCHANGED)
61
+ bits.push(`${Math.round(m.changed * 1000) / 10}% of the frame changed`);
62
+ if (m.counters.length)
63
+ bits.push(m.counters.slice(0, 6).map((c) => `${c.field} ${JSON.stringify(c.before) ?? '—'} → ${JSON.stringify(c.after) ?? '—'}`).join(', ') + (m.counters.length > 6 ? ` (+${m.counters.length - 6})` : ''));
64
+ for (const v of m.verdicts)
65
+ bits.push(`${v.field}: ${v.before} → ${v.after}`);
66
+ if (bits.length)
67
+ lines.push(`${m.mark}: ${bits.join(' · ')}`);
68
+ }
69
+ if (d.only_before.length)
70
+ lines.push(`reached before, not now: ${d.only_before.join(', ')}`);
71
+ if (d.only_after.length)
72
+ lines.push(`new marks: ${d.only_after.join(', ')}`);
73
+ return lines;
74
+ }