evomeme 0.1.9 → 0.1.10

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 (405) hide show
  1. package/dist/canvas-public/app.js +509 -5999
  2. package/dist/canvas-public/assets/presets/catalog.json +47 -0
  3. package/dist/canvas-public/assets/presets/tiles/A_01_CaoDi.png +0 -0
  4. package/dist/canvas-public/assets/presets/tiles/A_02_ShaMo.png +0 -0
  5. package/dist/canvas-public/assets/presets/tiles/A_03_TianKong.png +0 -0
  6. package/dist/canvas-public/assets/presets/tiles/A_04_ShuiBo.png +0 -0
  7. package/dist/canvas-public/assets/presets/tiles/A_05_HaiMian.png +0 -0
  8. package/dist/canvas-public/assets/presets/tiles/A_06_MuDiBan.png +0 -0
  9. package/dist/canvas-public/assets/presets/tiles/A_07_ShiZhuan.png +0 -0
  10. package/dist/canvas-public/assets/presets/tiles/A_08_AnRongYan.png +0 -0
  11. package/dist/canvas-public/assets/presets/tiles/A_09_QingTaiShi.png +0 -0
  12. package/dist/canvas-public/assets/presets/tiles/A_10_ShenHai.png +0 -0
  13. package/dist/canvas-public/assets/presets/tiles/A_11_HuiYanShi.png +0 -0
  14. package/dist/canvas-public/assets/presets/tiles/A_12_HongTu.png +0 -0
  15. package/dist/canvas-public/assets/presets/tiles/A_13_GengDi.png +0 -0
  16. package/dist/canvas-public/assets/presets/tiles/A_14_HuoShanYan.png +0 -0
  17. package/dist/canvas-public/assets/presets/tiles/A_15_NiTu.png +0 -0
  18. package/dist/canvas-public/assets/presets/tiles/A_16_HuangSha.png +0 -0
  19. package/dist/canvas-public/assets/presets/tiles/A_17_CongLin.png +0 -0
  20. package/dist/canvas-public/assets/presets/tiles/A_18_ZiYanShi.png +0 -0
  21. package/dist/canvas-public/assets/presets/tiles/A_19_MoGuTu.png +0 -0
  22. package/dist/canvas-public/assets/presets/tiles/A_20_HuaDian.png +0 -0
  23. package/dist/canvas-public/assets/presets/tiles/A_21_HaiLang.png +0 -0
  24. package/dist/canvas-public/assets/presets/tiles/A_22_GanTu.png +0 -0
  25. package/dist/canvas-public/assets/presets/tiles/A_23_QingTaiShiBan.png +0 -0
  26. package/dist/canvas-public/assets/presets/tiles/A_24_XingKong.png +0 -0
  27. package/dist/canvas-public/assets/presets/tiles/A_25_MoFaFuWen.png +0 -0
  28. package/dist/canvas-public/assets/presets/tiles/A_26_ShiTuYeDi.png +0 -0
  29. package/dist/canvas-public/assets/presets/tiles/A_27_LanZhuan.png +0 -0
  30. package/dist/canvas-public/assets/presets/tiles/A_28_HongZhuan.png +0 -0
  31. package/dist/canvas-public/assets/presets/tiles/A_29_YueQiu.png +0 -0
  32. package/dist/canvas-public/assets/presets/tiles/A_30_JinShuGe.png +0 -0
  33. package/dist/canvas-public/assets/presets/tiles/A_31_JinShuJingGai.png +0 -0
  34. package/dist/canvas-public/assets/presets/tiles/A_32_ShuZiChuang.png +0 -0
  35. package/dist/canvas-public/canvas/actions.js +143 -0
  36. package/dist/canvas-public/canvas/camera.js +28 -0
  37. package/dist/canvas-public/canvas/chrome.js +13 -0
  38. package/dist/canvas-public/canvas/data.js +123 -0
  39. package/dist/canvas-public/canvas/dependencies.js +19 -0
  40. package/dist/canvas-public/canvas/interactions.js +544 -0
  41. package/dist/canvas-public/canvas/panel-resize.js +5 -0
  42. package/dist/canvas-public/canvas/renderer.js +297 -0
  43. package/dist/canvas-public/canvas/selection.js +62 -0
  44. package/dist/canvas-public/canvas/serialization.js +118 -0
  45. package/dist/canvas-public/canvas/sync.js +202 -0
  46. package/dist/canvas-public/core/api.js +27 -0
  47. package/dist/canvas-public/core/feature-registry.js +29 -0
  48. package/dist/canvas-public/core/feature-state.js +228 -0
  49. package/dist/canvas-public/core/layout.js +133 -0
  50. package/dist/canvas-public/core/operations.js +38 -0
  51. package/dist/canvas-public/core/project.js +203 -0
  52. package/dist/canvas-public/core/state.js +27 -0
  53. package/dist/canvas-public/dialogs/context-menu.js +118 -0
  54. package/dist/canvas-public/elements/base.js +100 -0
  55. package/dist/canvas-public/elements/connections.js +105 -0
  56. package/dist/canvas-public/elements/drag.js +53 -0
  57. package/dist/canvas-public/elements/image.js +259 -0
  58. package/dist/canvas-public/elements/loading-recovery.js +5 -0
  59. package/dist/canvas-public/elements/loading.js +21 -0
  60. package/dist/canvas-public/elements/map.js +64 -0
  61. package/dist/canvas-public/elements/registry.js +58 -0
  62. package/dist/canvas-public/elements/replacement.js +78 -0
  63. package/dist/canvas-public/elements/resize.js +210 -0
  64. package/dist/canvas-public/elements/task-pipeline.js +234 -0
  65. package/dist/canvas-public/elements/types.js +21 -0
  66. package/dist/canvas-public/elements/ui.js +14 -0
  67. package/dist/canvas-public/elements/video.js +64 -0
  68. package/dist/canvas-public/features/assets/local-assets.js +72 -0
  69. package/dist/canvas-public/features/assets/official-assets.js +538 -0
  70. package/dist/canvas-public/features/editing/canvas-size.js +532 -0
  71. package/dist/canvas-public/features/editing/color-key.js +469 -0
  72. package/dist/canvas-public/features/editing/cutout.js +20 -0
  73. package/dist/canvas-public/features/editing/interactive-image-editing.js +981 -0
  74. package/dist/canvas-public/features/editing/layer-decomposition.js +44 -0
  75. package/dist/canvas-public/features/editing/manual-split.js +114 -0
  76. package/dist/canvas-public/features/editing/perfect-pixel.js +336 -0
  77. package/dist/canvas-public/features/editing/scroll-preview.js +129 -0
  78. package/dist/canvas-public/features/editing/scroll-seam-elimination.js +71 -0
  79. package/dist/canvas-public/features/editing/seam-elimination.js +46 -0
  80. package/dist/canvas-public/features/editing/smart-split.js +48 -0
  81. package/dist/canvas-public/features/editing/source-preview.js +43 -0
  82. package/dist/canvas-public/features/editing/video-cycle.js +49 -0
  83. package/dist/canvas-public/features/editing/video-frames.js +35 -0
  84. package/dist/canvas-public/features/frame-editor/frame-editing.js +755 -0
  85. package/dist/canvas-public/features/frame-editor/frame-model.js +63 -0
  86. package/dist/canvas-public/features/frame-editor/playback.js +83 -0
  87. package/dist/canvas-public/features/frame-editor/preview.js +149 -0
  88. package/dist/canvas-public/features/generation/animation.js +272 -0
  89. package/dist/canvas-public/features/generation/asset-batch.js +102 -0
  90. package/dist/canvas-public/features/generation/direction.js +163 -0
  91. package/dist/canvas-public/features/generation/fields.js +73 -0
  92. package/dist/canvas-public/features/generation/game-ui.js +64 -0
  93. package/dist/canvas-public/features/generation/image.js +83 -0
  94. package/dist/canvas-public/features/generation/scroll-image.js +157 -0
  95. package/dist/canvas-public/features/generation/seamless-tile.js +52 -0
  96. package/dist/canvas-public/features/generation/tile-transition-atlas.js +79 -0
  97. package/dist/canvas-public/features/generation/video.js +105 -0
  98. package/dist/canvas-public/features/map/creation.js +73 -0
  99. package/dist/canvas-public/features/map/tile-map-editor.js +2518 -0
  100. package/dist/canvas-public/features/registry.js +59 -0
  101. package/dist/canvas-public/index.html +84 -259
  102. package/dist/canvas-public/inspector/controls.js +49 -0
  103. package/dist/canvas-public/inspector/frame-preview.js +11 -0
  104. package/dist/canvas-public/inspector/inspector.js +190 -0
  105. package/dist/canvas-public/inspector/media-inspector.js +517 -0
  106. package/dist/canvas-public/inspector/media-preview.js +56 -0
  107. package/dist/canvas-public/inspector/number-stepper.js +96 -0
  108. package/dist/canvas-public/inspector/resize.js +88 -0
  109. package/dist/canvas-public/inspector/scroll-preview.js +11 -0
  110. package/dist/canvas-public/inspector/ui-inspector.js +14 -0
  111. package/dist/canvas-public/language/en-US.js +1059 -0
  112. package/dist/canvas-public/language/index.js +79 -0
  113. package/dist/canvas-public/language/zh-CN.js +1059 -0
  114. package/dist/canvas-public/map/export.js +9 -0
  115. package/dist/canvas-public/map/inspector.js +8 -0
  116. package/dist/canvas-public/map/model.js +409 -0
  117. package/dist/canvas-public/map/tile-map-editor.js +2 -0
  118. package/dist/canvas-public/media/metadata.js +183 -0
  119. package/dist/canvas-public/media/support.js +183 -0
  120. package/dist/canvas-public/styles/base.css +49 -0
  121. package/dist/canvas-public/styles/canvas.css +127 -0
  122. package/dist/canvas-public/styles/controls.css +203 -0
  123. package/dist/canvas-public/styles/dialogs.css +521 -0
  124. package/dist/canvas-public/styles/feature-form.css +409 -0
  125. package/dist/canvas-public/styles/inspector.css +441 -0
  126. package/dist/canvas-public/styles/layout.css +344 -0
  127. package/dist/canvas-public/styles/map.css +11 -0
  128. package/dist/canvas-public/styles/nodes.css +636 -0
  129. package/dist/canvas-public/styles.css +9 -2247
  130. package/dist/canvas-public/ui/controls.js +222 -0
  131. package/dist/canvas-public/ui/elements.js +9 -0
  132. package/dist/canvas-public/ui/feature-controller.js +296 -0
  133. package/dist/canvas-public/ui/feature-form.js +401 -0
  134. package/dist/canvas-public/ui/settings.js +83 -0
  135. package/dist/canvas-public/ui/toolbar.js +55 -0
  136. package/dist/canvas-public/vendor/pixi-tilemap.js +126 -0
  137. package/dist/canvas-public/vendor/pixi.min.js +2340 -0
  138. package/dist/canvas-public/workers/color-key-worker.js +289 -0
  139. package/dist/canvas-public/workers/perfect-pixel-worker.js +510 -0
  140. package/dist/index.js +42236 -13382
  141. package/dist/skills/en-US/evomeme-canvas/SKILL.md +52 -0
  142. package/dist/skills/en-US/evomeme-canvas/agents/openai.yaml +7 -0
  143. package/dist/skills/en-US/evomeme-cloud-fs/SKILL.md +176 -0
  144. package/dist/skills/en-US/evomeme-cloud-fs/agents/openai.yaml +7 -0
  145. package/dist/skills/en-US/evomeme-cover/SKILL.md +132 -0
  146. package/dist/skills/en-US/evomeme-cover/agents/openai.yaml +7 -0
  147. package/dist/skills/en-US/evomeme-game-maker/SKILL.md +288 -0
  148. package/dist/skills/en-US/evomeme-game-maker/agents/openai.yaml +4 -0
  149. package/dist/skills/en-US/evomeme-login/SKILL.md +92 -0
  150. package/dist/skills/en-US/evomeme-login/agents/openai.yaml +7 -0
  151. package/dist/skills/en-US/evomeme-native-bridge-sdk/SKILL.md +286 -0
  152. package/dist/skills/en-US/evomeme-native-bridge-sdk/agents/openai.yaml +8 -0
  153. package/dist/skills/en-US/evomeme-tos-upload/SKILL.md +47 -0
  154. package/dist/skills/en-US/evomeme-tos-upload/agents/openai.yaml +5 -0
  155. package/dist/skills/en-US/evomeme-ui/SKILL.md +123 -0
  156. package/dist/skills/en-US/evomeme-ui/agents/openai.yaml +4 -0
  157. package/dist/skills/en-US/evomeme-ui/references/host-layout.md +69 -0
  158. package/dist/skills/en-US/game-art/SKILL.md +121 -0
  159. package/dist/skills/en-US/game-art/agents/openai.yaml +8 -0
  160. package/dist/skills/en-US/game-asset-align/SKILL.md +45 -0
  161. package/dist/skills/en-US/game-asset-align/agents/openai.yaml +8 -0
  162. package/dist/skills/en-US/game-asset-align/references/alignment-contract.md +61 -0
  163. package/dist/skills/en-US/game-asset-align/references/blender-scene-pipeline.md +45 -0
  164. package/dist/skills/en-US/game-asset-align/references/canonical-package.md +26 -0
  165. package/dist/skills/en-US/game-asset-align/references/engine-capabilities.md +14 -0
  166. package/dist/skills/en-US/game-asset-align/references/lightweight-review.md +32 -0
  167. package/dist/skills/en-US/game-asset-align/references/repair-policy.md +30 -0
  168. package/dist/skills/en-US/game-asset-align/references/tool-contract.md +39 -0
  169. package/dist/skills/en-US/game-asset-align/references/visual-review.md +26 -0
  170. package/dist/skills/en-US/game-asset-image-generator/SKILL.md +104 -0
  171. package/dist/skills/en-US/game-asset-image-generator/agents/openai.yaml +7 -0
  172. package/dist/skills/en-US/game-asset-image-generator/references/background.md +32 -0
  173. package/dist/skills/en-US/game-asset-image-generator/references/static-game-assets.md +38 -0
  174. package/dist/skills/en-US/game-audio/SKILL.md +82 -0
  175. package/dist/skills/en-US/game-audio/agents/openai.yaml +4 -0
  176. package/dist/skills/en-US/game-demo/SKILL.md +103 -0
  177. package/dist/skills/en-US/game-demo/agents/openai.yaml +7 -0
  178. package/dist/skills/en-US/game-maker/SKILL.md +111 -0
  179. package/dist/skills/en-US/game-maker/agents/openai.yaml +4 -0
  180. package/dist/skills/en-US/game-test/SKILL.md +58 -0
  181. package/dist/skills/en-US/game-test/agents/openai.yaml +7 -0
  182. package/dist/skills/en-US/game-ui/SKILL.md +177 -0
  183. package/dist/skills/en-US/game-ui/agents/openai.yaml +4 -0
  184. package/dist/skills/en-US/godot-3d-game/SKILL.md +39 -0
  185. package/dist/skills/en-US/godot-3d-game/agents/openai.yaml +8 -0
  186. package/dist/skills/en-US/godot-3d-game/references/alignment-gates.md +26 -0
  187. package/dist/skills/en-US/godot-3d-game/references/appearance-alignment.md +52 -0
  188. package/dist/skills/en-US/godot-3d-game/references/build-and-qa.md +22 -0
  189. package/dist/skills/en-US/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  190. package/dist/skills/en-US/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  191. package/dist/skills/en-US/godot-3d-game/references/physics-colliders.md +13 -0
  192. package/dist/skills/en-US/godot-3d-game/references/project-structure.md +22 -0
  193. package/dist/skills/en-US/godot-3d-game/references/skeleton-animation.md +16 -0
  194. package/dist/skills/en-US/phaser-2d-game/SKILL.md +127 -0
  195. package/dist/skills/en-US/phaser-2d-game/agents/openai.yaml +8 -0
  196. package/dist/skills/en-US/phaser-2d-game/references/engine-performance.md +64 -0
  197. package/dist/skills/en-US/phaser-2d-game/references/engine-physics.md +139 -0
  198. package/dist/skills/en-US/phaser-2d-game/references/engine-runtime.md +129 -0
  199. package/dist/skills/en-US/phaser-2d-game/references/engine-spritesheets.md +99 -0
  200. package/dist/skills/en-US/phaser-2d-game/references/engine-tilemaps.md +80 -0
  201. package/dist/skills/en-US/phaser-2d-game/references/file-structure.md +94 -0
  202. package/dist/skills/en-US/phaser-2d-graphics-builder/SKILL.md +68 -0
  203. package/dist/skills/en-US/phaser-2d-graphics-builder/agents/openai.yaml +7 -0
  204. package/dist/skills/en-US/threejs-3d-game/SKILL.md +117 -0
  205. package/dist/skills/en-US/threejs-3d-game/agents/openai.yaml +7 -0
  206. package/dist/skills/en-US/threejs-3d-game/references/engine-asset-pipeline.md +153 -0
  207. package/dist/skills/en-US/threejs-3d-game/references/engine-audio.md +70 -0
  208. package/dist/skills/en-US/threejs-3d-game/references/engine-input-camera.md +84 -0
  209. package/dist/skills/en-US/threejs-3d-game/references/engine-performance.md +96 -0
  210. package/dist/skills/en-US/threejs-3d-game/references/engine-physics.md +142 -0
  211. package/dist/skills/en-US/threejs-3d-game/references/engine-runtime.md +199 -0
  212. package/dist/skills/en-US/threejs-3d-game/references/file-structure.md +353 -0
  213. package/dist/skills/en-US/threejs-aaa-graphics-builder/SKILL.md +62 -0
  214. package/dist/skills/en-US/threejs-aaa-graphics-builder/agents/openai.yaml +7 -0
  215. package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/SKILL.md +4 -4
  216. package/{skills → dist/skills/zh-CN}/evomeme-cover/SKILL.md +1 -1
  217. package/{skills → dist/skills/zh-CN}/evomeme-game-maker/SKILL.md +91 -88
  218. package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/SKILL.md +6 -5
  219. package/dist/skills/zh-CN/evomeme-ui/SKILL.md +123 -0
  220. package/dist/skills/zh-CN/evomeme-ui/agents/openai.yaml +4 -0
  221. package/dist/skills/zh-CN/evomeme-ui/references/host-layout.md +69 -0
  222. package/dist/skills/zh-CN/game-asset-align/SKILL.md +45 -0
  223. package/dist/skills/zh-CN/game-asset-align/agents/openai.yaml +8 -0
  224. package/dist/skills/zh-CN/game-asset-align/references/alignment-contract.md +61 -0
  225. package/dist/skills/zh-CN/game-asset-align/references/blender-scene-pipeline.md +45 -0
  226. package/dist/skills/zh-CN/game-asset-align/references/canonical-package.md +26 -0
  227. package/dist/skills/zh-CN/game-asset-align/references/engine-capabilities.md +14 -0
  228. package/dist/skills/zh-CN/game-asset-align/references/lightweight-review.md +32 -0
  229. package/dist/skills/zh-CN/game-asset-align/references/repair-policy.md +30 -0
  230. package/dist/skills/zh-CN/game-asset-align/references/tool-contract.md +39 -0
  231. package/dist/skills/zh-CN/game-asset-align/references/visual-review.md +26 -0
  232. package/{skills → dist/skills/zh-CN}/game-asset-image-generator/SKILL.md +1 -1
  233. package/dist/skills/zh-CN/game-audio/references/bgm-cdn.md +127 -0
  234. package/dist/skills/zh-CN/game-audio/references/sfx-cdn.md +77 -0
  235. package/dist/skills/zh-CN/game-test/references/checklists/playtest-qa.md +12 -0
  236. package/{skills → dist/skills/zh-CN}/game-ui/SKILL.md +9 -1
  237. package/dist/skills/zh-CN/game-ui/references/checklists/game-ui-quality.md +14 -0
  238. package/dist/skills/zh-CN/game-ui/references/checklists/hud-readability.md +12 -0
  239. package/dist/skills/zh-CN/game-ui/references/checklists/mobile-input.md +12 -0
  240. package/dist/skills/zh-CN/game-ui/references/checklists/responsive-ui-fit.md +12 -0
  241. package/dist/skills/zh-CN/game-ui/references/ui-patterns.md +140 -0
  242. package/dist/skills/zh-CN/game-ui/references/ui-prompt-templates.md +63 -0
  243. package/dist/skills/zh-CN/godot-3d-game/SKILL.md +39 -0
  244. package/dist/skills/zh-CN/godot-3d-game/agents/openai.yaml +8 -0
  245. package/dist/skills/zh-CN/godot-3d-game/references/alignment-gates.md +26 -0
  246. package/dist/skills/zh-CN/godot-3d-game/references/appearance-alignment.md +52 -0
  247. package/dist/skills/zh-CN/godot-3d-game/references/build-and-qa.md +22 -0
  248. package/dist/skills/zh-CN/godot-3d-game/references/canonical-asset-runtime.md +27 -0
  249. package/dist/skills/zh-CN/godot-3d-game/references/import-and-wrapper-scenes.md +20 -0
  250. package/dist/skills/zh-CN/godot-3d-game/references/physics-colliders.md +13 -0
  251. package/dist/skills/zh-CN/godot-3d-game/references/project-structure.md +22 -0
  252. package/dist/skills/zh-CN/godot-3d-game/references/skeleton-animation.md +16 -0
  253. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  254. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  255. package/dist/skills/zh-CN/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  256. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/compose-quality.md +10 -0
  257. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +9 -0
  258. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +15 -0
  259. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +10 -0
  260. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +9 -0
  261. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +9 -0
  262. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/compose-recipes.md +71 -0
  263. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +33 -0
  264. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/implementation-blueprint.md +82 -0
  265. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/sprite-recipes.md +90 -0
  266. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/technical-art.md +67 -0
  267. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/vfx-recipes.md +67 -0
  268. package/dist/skills/zh-CN/phaser-2d-graphics-builder/references/visual-scorecard.md +129 -0
  269. package/{skills → dist/skills/zh-CN}/threejs-3d-game/SKILL.md +6 -2
  270. package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-asset-pipeline.md +52 -15
  271. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  272. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  273. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  274. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +23 -0
  275. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +19 -0
  276. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +14 -0
  277. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +14 -0
  278. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +15 -0
  279. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +17 -0
  280. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +236 -0
  281. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/implementation-blueprint.md +161 -0
  282. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/model-recipes.md +146 -0
  283. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/render-recipes.md +90 -0
  284. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/shader-cookbook.md +292 -0
  285. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/technical-art.md +167 -0
  286. package/dist/skills/zh-CN/threejs-aaa-graphics-builder/references/visual-scorecard.md +147 -0
  287. package/dist/stage-blender/bake_materials.py +102 -0
  288. package/dist/stage-blender/export_scene.py +275 -0
  289. package/dist/stage-blender/preview_camera.py +90 -0
  290. package/dist/stage-blender/repair_mesh.py +112 -0
  291. package/dist/stage-public/app.js +759 -0
  292. package/dist/stage-public/baked/bakePilot.js +44 -0
  293. package/dist/stage-public/baked/bakedScene.js +129 -0
  294. package/dist/stage-public/baked/sceneAppearance.js +225 -0
  295. package/dist/stage-public/baked/sceneCamera.js +45 -0
  296. package/dist/stage-public/comparison-contract.js +28 -0
  297. package/dist/stage-public/delivery.html +4 -0
  298. package/dist/stage-public/delivery.js +17 -0
  299. package/dist/stage-public/godot/appearance.gd +170 -0
  300. package/dist/stage-public/godot/preview.gd +79 -0
  301. package/dist/stage-public/index.html +141 -0
  302. package/dist/stage-public/review-app.js +289 -0
  303. package/dist/stage-public/review-runtime.js +63 -0
  304. package/dist/stage-public/review.css +24 -0
  305. package/dist/stage-public/review.html +47 -0
  306. package/dist/stage-public/scene-runtime.js +212 -0
  307. package/dist/stage-public/sceneContractRuntime.js +235 -0
  308. package/dist/stage-public/styles.css +328 -0
  309. package/dist/stage-public/three-appearance.js +104 -0
  310. package/dist/stage-public/vendor/three170/LICENSE +21 -0
  311. package/dist/stage-public/vendor/three170/build/three.module.js +54571 -0
  312. package/dist/stage-public/vendor/three170/examples/jsm/controls/OrbitControls.js +1523 -0
  313. package/dist/stage-public/vendor/three170/examples/jsm/environments/RoomEnvironment.js +144 -0
  314. package/dist/stage-public/vendor/three170/examples/jsm/libs/fflate.module.js +2672 -0
  315. package/dist/stage-public/vendor/three170/examples/jsm/loaders/EXRLoader.js +2563 -0
  316. package/dist/stage-public/vendor/three170/examples/jsm/loaders/GLTFLoader.js +4727 -0
  317. package/dist/stage-public/vendor/three170/examples/jsm/utils/BufferGeometryUtils.js +1373 -0
  318. package/dist/tile-transition-mask.svg +40 -0
  319. package/package.json +21 -7
  320. package/dist/canvas-public/cycle-detect.js +0 -166
  321. package/dist/canvas-public/smart-split.js +0 -185
  322. /package/{skills → dist/skills/en-US}/game-audio/references/bgm-cdn.md +0 -0
  323. /package/{skills → dist/skills/en-US}/game-audio/references/sfx-cdn.md +0 -0
  324. /package/{skills → dist/skills/en-US}/game-test/references/checklists/playtest-qa.md +0 -0
  325. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/game-ui-quality.md +0 -0
  326. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/hud-readability.md +0 -0
  327. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/mobile-input.md +0 -0
  328. /package/{skills → dist/skills/en-US}/game-ui/references/checklists/responsive-ui-fit.md +0 -0
  329. /package/{skills → dist/skills/en-US}/game-ui/references/ui-patterns.md +0 -0
  330. /package/{skills → dist/skills/en-US}/game-ui/references/ui-prompt-templates.md +0 -0
  331. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-1.jpeg +0 -0
  332. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-2.jpeg +0 -0
  333. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  334. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/compose-quality.md +0 -0
  335. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  336. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/premium-game-quality-gate.md +0 -0
  337. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/sprite-quality.md +0 -0
  338. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  339. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/checklists/visual-scorecard.md +0 -0
  340. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/compose-recipes.md +0 -0
  341. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/graphics-prompt-templates.md +0 -0
  342. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/implementation-blueprint.md +0 -0
  343. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/sprite-recipes.md +0 -0
  344. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/technical-art.md +0 -0
  345. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/vfx-recipes.md +0 -0
  346. /package/{skills → dist/skills/en-US}/phaser-2d-graphics-builder/references/visual-scorecard.md +0 -0
  347. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-1.jpg +0 -0
  348. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-2.jpg +0 -0
  349. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/assets/scorecard-anchors/scene-3.jpg +0 -0
  350. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-game-quality-gate.md +0 -0
  351. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/aaa-visual-scorecard.md +0 -0
  352. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/material-lighting-quality.md +0 -0
  353. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/performance-safe-visual-detail.md +0 -0
  354. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/procedural-model-quality.md +0 -0
  355. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/checklists/technical-art-quality.md +0 -0
  356. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/graphics-prompt-templates.md +0 -0
  357. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/implementation-blueprint.md +0 -0
  358. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/model-recipes.md +0 -0
  359. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/render-recipes.md +0 -0
  360. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/shader-cookbook.md +0 -0
  361. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/technical-art.md +0 -0
  362. /package/{skills → dist/skills/en-US}/threejs-aaa-graphics-builder/references/visual-scorecard.md +0 -0
  363. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/SKILL.md +0 -0
  364. /package/{skills → dist/skills/zh-CN}/evomeme-canvas/agents/openai.yaml +0 -0
  365. /package/{skills → dist/skills/zh-CN}/evomeme-cloud-fs/agents/openai.yaml +0 -0
  366. /package/{skills → dist/skills/zh-CN}/evomeme-cover/agents/openai.yaml +0 -0
  367. /package/{skills → dist/skills/zh-CN}/evomeme-game-maker/agents/openai.yaml +0 -0
  368. /package/{skills → dist/skills/zh-CN}/evomeme-login/SKILL.md +0 -0
  369. /package/{skills → dist/skills/zh-CN}/evomeme-login/agents/openai.yaml +0 -0
  370. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/SKILL.md +0 -0
  371. /package/{skills → dist/skills/zh-CN}/evomeme-native-bridge-sdk/agents/openai.yaml +0 -0
  372. /package/{skills → dist/skills/zh-CN}/evomeme-tos-upload/agents/openai.yaml +0 -0
  373. /package/{skills → dist/skills/zh-CN}/game-art/SKILL.md +0 -0
  374. /package/{skills → dist/skills/zh-CN}/game-art/agents/openai.yaml +0 -0
  375. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/agents/openai.yaml +0 -0
  376. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/background.md +0 -0
  377. /package/{skills → dist/skills/zh-CN}/game-asset-image-generator/references/static-game-assets.md +0 -0
  378. /package/{skills → dist/skills/zh-CN}/game-audio/SKILL.md +0 -0
  379. /package/{skills → dist/skills/zh-CN}/game-audio/agents/openai.yaml +0 -0
  380. /package/{skills → dist/skills/zh-CN}/game-demo/SKILL.md +0 -0
  381. /package/{skills → dist/skills/zh-CN}/game-demo/agents/openai.yaml +0 -0
  382. /package/{skills → dist/skills/zh-CN}/game-maker/SKILL.md +0 -0
  383. /package/{skills → dist/skills/zh-CN}/game-maker/agents/openai.yaml +0 -0
  384. /package/{skills → dist/skills/zh-CN}/game-test/SKILL.md +0 -0
  385. /package/{skills → dist/skills/zh-CN}/game-test/agents/openai.yaml +0 -0
  386. /package/{skills → dist/skills/zh-CN}/game-ui/agents/openai.yaml +0 -0
  387. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/SKILL.md +0 -0
  388. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/agents/openai.yaml +0 -0
  389. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-performance.md +0 -0
  390. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-physics.md +0 -0
  391. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-runtime.md +0 -0
  392. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-spritesheets.md +0 -0
  393. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/engine-tilemaps.md +0 -0
  394. /package/{skills → dist/skills/zh-CN}/phaser-2d-game/references/file-structure.md +0 -0
  395. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/SKILL.md +0 -0
  396. /package/{skills → dist/skills/zh-CN}/phaser-2d-graphics-builder/agents/openai.yaml +0 -0
  397. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/agents/openai.yaml +0 -0
  398. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-audio.md +0 -0
  399. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-input-camera.md +0 -0
  400. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-performance.md +0 -0
  401. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-physics.md +0 -0
  402. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/engine-runtime.md +0 -0
  403. /package/{skills → dist/skills/zh-CN}/threejs-3d-game/references/file-structure.md +0 -0
  404. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/SKILL.md +0 -0
  405. /package/{skills → dist/skills/zh-CN}/threejs-aaa-graphics-builder/agents/openai.yaml +0 -0
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: evomeme-canvas
3
+ description: Before generating or editing any game asset, MUST ensure the evomeme asset canvas for the current workspace is visible to the user and tell the user the canvas link. Use when the task involves image generation, image editing, cutouts, layer separation, video generation, or other evomeme asset tools.
4
+ ---
5
+
6
+ # evomeme Asset Canvas
7
+
8
+ Before calling any asset generation or editing tool, first complete the canvas startup flow in this skill. The canvas MUST correspond to the workspace for the current task.
9
+
10
+ ## Pre-Launch Checks
11
+
12
+ Determine whether a canvas service can be reused ONLY from the current conversation record. MUST NOT infer that a service belongs to the current workspace solely because the port is occupied or `/api/health` responds normally.
13
+
14
+ - When the current conversation explicitly records a foreground canvas terminal and address launched in this conversation for the same workspace, visit `<canvas address>/api/health`; reuse it if the response is normal. If the address is unknown, the health check fails, or the terminal has closed, start it again.
15
+ - When the current conversation has no canvas startup record, MUST NOT reuse an existing evomeme canvas service even if one is found. That service may belong to another workspace; first close the existing service, then follow the flow below to start a new foreground service for the current workspace.
16
+ - When the canvas in the current conversation record belongs to another workspace, likewise close that service first, then restart it for the current workspace.
17
+
18
+ When closing an existing service, close ONLY processes that can be confirmed to be the evomeme canvas. MUST NOT terminate an unidentified process occupying a port.
19
+
20
+ ## Foreground Launch
21
+
22
+ 1. Open a separate user-visible interactive terminal or command window at the current workspace root.
23
+ 2. In that terminal, run the following in the foreground, and run ONLY this:
24
+
25
+ ```text
26
+ npx -y evomeme@latest canvas
27
+ ```
28
+
29
+ 3. Keep this terminal open. The command MUST continue occupying that terminal, and the user MUST be able to press `Ctrl+C` in it or directly close the terminal window to stop the service.
30
+ 4. Wait for the terminal to output "Asset canvas started" and "Canvas address". If startup fails, handle the error or explain it to the user first; MUST NOT continue calling asset generation tools.
31
+
32
+ MUST NOT run the command as a hidden, detached, or background process. MUST NOT use `&`, `nohup`, `start /B`, `Start-Job`, hidden windows, service managers, or other background startup methods, and DO NOT add `--no-open`. If the current execution environment cannot provide a user-visible terminal that the user can interrupt themselves, ask the user to run the command above in a visible terminal; continue only after confirming the startup output or a passing health check.
33
+
34
+ Keeping the canvas terminal running in the foreground does not prevent continued work in another terminal or with other tools; DO NOT close the canvas terminal just to continue generation.
35
+
36
+ ## Tell and Guide the User
37
+
38
+ After obtaining the actual address output by the terminal, immediately send the user a clickable link before calling the first asset tool, and explain:
39
+
40
+ - Keep the canvas terminal open; pressing `Ctrl+C` in that terminal or closing that terminal will stop the service.
41
+ - The canvas lets the user view the current workspace's assets, generation task status, and generation results in real time.
42
+ - The user can select reference images, generate images, or continue editing directly in the canvas; the AI will also continue using the asset tools for the current workspace, and results will appear in the canvas.
43
+
44
+ Use the actual address; DO NOT guess the port. You can use the concise wording below:
45
+
46
+ ```markdown
47
+ The asset canvas has started: [Open the evomeme asset canvas](<actual address>). Please keep the command-line window running the canvas open; you can monitor tasks in the canvas, and you can also select reference images directly and use image generation or editing features. Press Ctrl+C in the command line or close that command line to stop the service.
48
+ ```
49
+
50
+ ## During Generation
51
+
52
+ After confirming the canvas is available and telling the user, continue the already authorized asset task. There is no need to ask for confirmation again ONLY to open the canvas. Later generation can reuse ONLY the healthy same-workspace canvas explicitly recorded in the current conversation; if the service stops midway, complete the startup flow again before the next asset tool call.
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "evomemeCanvas"
3
+ short_description: "Start and guide use of the evomeme asset canvas before asset generation"
4
+ default_prompt: "Use $evomeme-canvas to start the asset canvas for the current workspace, then continue generating assets after the canvas is running."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,176 @@
1
+ ---
2
+ name: evomeme-cloud-fs
3
+ description: Explain evomeme workspace init, .evomemeignore, and cloud file MCPs such as source submission. Use when running npx -y evomeme@latest init, editing ignore rules, or calling evomeme_submit_game_code / evomeme_upload_game_asset.
4
+ ---
5
+
6
+ # evomeme Cloud File System
7
+
8
+ Explains local workspace initialization, submission ignore rules, and MCPs related to source submission / binary upload.
9
+
10
+ Load `../evomeme-login/SKILL.md` only after authentication fails; DO NOT load the login skill preventively.
11
+
12
+ ---
13
+
14
+ ## `npx -y evomeme@latest init`
15
+
16
+ ### Purpose
17
+
18
+ Initialize the evomeme local environment at the project workspace root so later submission and skill orchestration can be used:
19
+
20
+ - Generate the default **`.evomemeignore`** if it does not exist
21
+ - Copy package-provided skills into the workspace **`.codex/skills/`**
22
+ - Confirm the local login state (for later MCP use)
23
+
24
+ The npm package name is **`evomeme`** (executable entry `evomeme`).
25
+
26
+ ### Usage
27
+
28
+ Run at the **project workspace root**:
29
+
30
+ ```bash
31
+ npx -y evomeme@latest init
32
+ ```
33
+
34
+ Optional: use `--cwd <path>` to specify the workspace; use `--name <name>` to provide the work name when a new cloud work needs to be created.
35
+
36
+ To install the plugin into the IDE (writes MCP configuration, different from init), use:
37
+
38
+ ```bash
39
+ npx -y evomeme@latest install --ide codex
40
+ ```
41
+
42
+ ### Notes
43
+
44
+ - init is **workspace preparation** (ignore rules, skills, login state), not a prerequisite that must be completed before making a game.
45
+ - During development, there is no need to run init for work binding; when submission is needed, directly call `evomeme_submit_game_code` (see below).
46
+ - An existing `.evomemeignore` **will not be overwritten**; skills will be copied/updated into `.codex/skills/` according to the package contents.
47
+
48
+ ---
49
+
50
+ ## `.evomemeignore`
51
+
52
+ ### Purpose
53
+
54
+ Controls **which paths are ignored** when `evomeme_submit_game_code` collects source code, preventing dependencies, secrets, binaries, or local caches from being submitted to the cloud.
55
+
56
+ ### Usage
57
+
58
+ - File location: **`.evomemeignore`** at the workspace root
59
+ - **Syntax**: same as `.gitignore` (`#` comments, trailing `/` for directories, `!` negation, etc.)
60
+ - **Scope**: affects only file collection during submission; unrelated to git, and still takes effect even if the project does not use git
61
+ - **Who writes it**: `npx -y evomeme@latest init` generates default contents when the file does not exist; **it does not overwrite when it already exists**. If init has never been run, client submission still applies the built-in default rules
62
+ - **Typical items ignored by default**: `assets/` (including all descendant files), `node_modules/`, `.env` / `.env.*` (retaining `!.env.example`), logs, `.DS_Store` / `Thumbs.db`, `.vscode/` / `.idea/`, `.git/`, `.evomeme/`, `.evomemeignore` itself, `.codex/` (including skills copied by init), etc.
63
+ - **Directory rules apply recursively**: a directory rule ending with `/` ignores the directory itself and all contents at any depth inside it; the root `dist/` and its contents are the ONLY mandatory-submission exception
64
+ - **Binary assets**: **No binary file may be uploaded as source code through `evomeme_submit_game_code`**. Local binaries referenced by the game MUST first go through TOS (see pre-submission checks), then be referenced as URLs in `public/config.json`.
65
+
66
+ ### `dist/` Hard Rules (MUST NOT Be Violated)
67
+
68
+ Platform preview / draft runtime depends on build artifacts. The **`dist/` under the workspace root MUST be uploaded** and MUST NOT be excluded from submission.
69
+
70
+ 1. **MUST submit `dist/`**: Before calling `evomeme_submit_game_code`, complete the project build first (usually `npm run build` / `pnpm build`), confirm a usable `dist/` exists (containing at least `dist/index.html`); the submitted collection result **MUST include** files under `dist/`.
71
+ 2. **MUST NOT write ignore rules**: MUST NOT add `dist`, `dist/`, `/dist`, `/dist/**`, `**/dist/**`, or any other rule that would exclude the build artifact directory to `.evomemeignore` (also MUST NOT bypass this with equivalent patterns).
72
+ 3. **If already ignored, MUST fix it first**: If the existing `.evomemeignore` (or equivalent rules) already ignores `dist/`, these rules **MUST be deleted** before submission, then build, then submit. Calling `evomeme_submit_game_code` is **forbidden** until the ignore has been removed.
73
+ 4. **DO NOT solve binaries inside dist with ignore**: If `dist/` contains binaries that cannot go through source submission, handle them on the source side (local assets first TOS + `public/config.json` URL, then rebuild) so the new `dist/` can be submitted; it is **forbidden** to add the whole `dist/` to ignore for this reason.
74
+ 5. **`dist/` MUST contain zero binaries**: Recursively check every file in `dist/`; only files that can be strictly decoded as UTF-8 text are allowed. Images, audio, video, fonts, models, WASM, archives, executable files, and all other binaries are forbidden, even if the file extension is disguised as text.
75
+ 6. **`dist/` MUST be self-contained and portable**: Package runtime dependencies may point ONLY to files inside `dist/`, and must use `./` or `../` paths relative to the referencing file; they MUST NOT depend on the workspace, source directory, development server, or deployment site root path.
76
+
77
+ After modifying `.evomemeignore`, the next `evomeme_submit_game_code` will collect according to the new rules.
78
+
79
+ ---
80
+
81
+ ## File-System-Related MCP Tools
82
+
83
+ When cloud file capability is needed, **directly call** the tools below. DO NOT bypass MCP by using curl / scripts instead.
84
+
85
+ | Tool Name | Function |
86
+ | --- | --- |
87
+ | `evomeme_submit_game_code` | **Game publication** (not pure source upload): collects according to `.evomemeignore` and fully overwrites the cloud work, **MUST include a runnable `dist/`**; irreversible. |
88
+ | `evomeme_upload_game_asset` | Hands supported local images, audio, video, or common 3D models (GLB/GLTF/FBX/OBJ/STL) to the server for TOS upload; a public `asset_url` is returned only after content review passes. Other types are forbidden to upload. |
89
+
90
+ ### `evomeme_submit_game_code`
91
+
92
+ Fully syncs the **UTF-8 text source code** collected from the current workspace according to `.evomemeignore` to the cloud work.
93
+
94
+ **Hard constraint: no binary file may be uploaded through this tool** (including images, models, audio/video, fonts, archives, etc.). Source submission collects only text; supported images, audio, video, and common 3D models (GLB/GLTF/FBX/OBJ/STL) can go to TOS only through `evomeme_upload_game_asset`; fonts, archives, and other unlisted types do not support upload. Before submission, the release artifact gate below MUST also pass; if any binary or absolute local dependency is found, calling this tool is forbidden.
95
+
96
+ Optional parameters:
97
+
98
+ - `name`: work display name.
99
+ - `cover_url`: game cover (public image URL).
100
+
101
+ #### Two Points That MUST Be Emphasized During Submission
102
+
103
+ 1. **Name: SHOULD include `name` with every submission (pass the current official name, not a new name each time)**
104
+ The interface-level `name` is optional, but the Agent **SHOULD by default** include the game's **current official name** on every call (consistent with the plan / cover title / user-approved name). The intent is for the cloud to always receive this name and stay synchronized, **not** to require changing it to a new name every time. When the user has not requested a rename, repeatedly passing the same old name is fine. Omit it ONLY when the user explicitly says "do not include the name this time".
105
+
106
+ 2. **Cover: first submission MUST have a cover**
107
+ - When submitting this work to the cloud for the **first time** (no local successful submission record yet / no cover has been included yet), `cover_url` **MUST** be included; empty submission is not allowed.
108
+ - Before submission, first read **`_game_cover_url`** from `public/config.json`:
109
+ - If it exists and `value` is a usable image URL -> **directly use** that value as `cover_url`;
110
+ - If it does not exist or is invalid -> **MUST** load and follow `../evomeme-cover/SKILL.md` to generate a 9:16 cover, write `_game_cover_url`, then submit (DO NOT skip the cover skill and hard-code a URL).
111
+
112
+ Before calling, tell the user in one or two sentences that this submission will **fully overwrite** the existing cloud code and is irreversible; if the user explicitly objects, DO NOT submit.
113
+
114
+ #### Pre-Submission Code Safety Review (A Simple Pass Is Enough)
115
+
116
+ Before calling `evomeme_submit_game_code`, the Agent SHOULD quickly read the main source code that will be submitted (focus on files the user changed or added; if time is tight, sample entry files, `package.json`, scripts, and network-related files), and submit only after confirming there is no obviously dangerous code.
117
+
118
+ Pay special attention to the following (if any are found, **refuse submission** and tell the user why; DO NOT call this tool):
119
+
120
+ - Download and execute: `curl ... | bash`, `Invoke-Expression` + remote download, `certutil` / `bitsadmin` pulling files, etc.
121
+ - Reverse shell / remote-control traces, mining scripts, or mining-pool addresses
122
+ - Long encoded execution chains such as `eval(atob(...))` / `Function(atob(...))`; long `powershell -enc` payloads
123
+ - `preinstall` / `postinstall` / `prepare` in `package.json` pulling remote resources or executing unknown commands
124
+
125
+ This is a **shallow manual (Agent) review** and does not replace server-side checks; `fetch` in normal game logic and ordinary build scripts do not need to be treated as dangerous.
126
+
127
+ #### Pre-Submission Release Artifact Gate (MUST NOT Be Skipped)
128
+
129
+ Before calling `evomeme_submit_game_code`:
130
+
131
+ 1. Confirm `.evomemeignore` **does not** ignore `dist/` (see "`dist/` Hard Rules" above); if it does, delete those rules first.
132
+ 2. Run the production build, confirm `dist/` at the workspace root has been generated, and that it contains at least `dist/index.html`.
133
+ 3. **Recursively check the contents of all files in `dist/`, not only extensions**: every file MUST be readable strictly as UTF-8 text; if a single binary file exists, immediately stop submission, report the exact path, then migrate the asset according to the flow below and rebuild.
134
+ 4. **Scan dependency references in the source, configuration, and `dist/` text included in this submission**, focusing on HTML `src` / `href`, CSS `url()`, JS/TS `import` / `require` / dynamic imports, `fetch`, Worker, `new URL(...)`, and asset paths in configuration. The following are forbidden:
135
+ - Windows drive paths (such as `C:\\...`), UNC paths (such as `\\\\server\\...`), or POSIX local absolute paths (such as `/Users/...`, `/home/...`, `/tmp/...`);
136
+ - `file://`, and any path pointing to a local file in the current workspace or outside the workspace;
137
+ - site-root paths starting with `/` (such as `/assets/a.js`, `/config.json`). The game may be published under a subpath, so runtime in-package references MUST use `./` or `../`;
138
+ - `localhost`, `127.0.0.1`, `0.0.0.0`, development server addresses, or runtime dependencies on `src/`, `public/`, the project root, or unbuilt `.ts` / `.tsx` files.
139
+ 5. **The ONLY allowed exceptions are intentionally used and publicly accessible external `https://` URLs**, such as TOS assets, CDNs, or official APIs; they are not local absolute dependencies. MUST NOT treat `http://`, local-machine URLs, or accidentally leftover development addresses as exceptions. Third-party package names in source code may exist only as build-time inputs; the production build MUST resolve or bundle them and MUST NOT leave browser-unresolvable dependencies in `dist/`.
140
+ 6. Preview with `dist/` as the static server root. MUST NOT let the server fall back to reading source code or other workspace directories; confirm the page and key game flow run, and that requests do not escape `dist/` (except intentionally used public `https://` external requests).
141
+ 7. Confirm the submission collection result includes the complete `dist/`. If any check fails, MUST list the exact file and matched path / dependency, fix it, rebuild, and recheck from step 1; **submission is forbidden until the gate passes**.
142
+
143
+ #### Local Binary Reference Check Before Submission (MUST NOT Be Skipped)
144
+
145
+ Before calling `evomeme_submit_game_code`, MUST proactively check whether the workspace still contains **local binary files referenced by code or configuration** (for example, relative paths in source pointing to `.png` / `.jpg` / `.webp` / `.gif` / `.glb` / `.mp3`, etc., or configuration containing local paths instead of public `https://` URLs).
146
+
147
+ If such references exist, MUST finish handling all of them before submission. The order is fixed:
148
+
149
+ 1. Use `evomeme_upload_game_asset` to upload the local binary to TOS and obtain a public `asset_url`;
150
+ 2. Add that local path to `.evomemeignore` to ensure it does not enter source collection (**MUST NOT** ignore `dist/` for this reason);
151
+ 3. Change the runtime reference to be written into `public/config.json` (a flat visible parameter, with `type` as `image` / `audio`, etc., and `value` as the `asset_url` above), and have game code read the URL only from configuration;
152
+ 4. Rebuild to refresh `dist/`; confirm source, configuration, and `dist/` no longer depend on local binary paths, and that the new `dist/` contains no binary files, then call `evomeme_submit_game_code`.
153
+
154
+ Submission is **forbidden** until the checks and handling above are complete. If `.evomemeignore` was just changed, use the updated rules as authoritative.
155
+
156
+ Call results:
157
+
158
+ - **Success**: The tool returns a **plain-text multiline** description (for example, containing `thread_id`, `checkpoint_id`, etc.), not JSON with a `success` field. Restate key information to the user according to the body. After success, **MUST** give the user the evomeme drafts link and guide them to open and browse the work just submitted:
159
+
160
+ https://www.evomeme.com/profile/works/draft
161
+
162
+ Also tell them: they can view the draft on that page and publish the game themselves in evomeme. DO NOT only say "submission succeeded" without giving the link.
163
+ - **Failure**: The MCP result has `isError`, and the body is the error description. Show the original text to the user; if the error points to login / token expiration, load `../evomeme-login/SKILL.md`, recover, and retry the original submission.
164
+
165
+ ### `evomeme_upload_game_asset`
166
+
167
+ Hands supported local images, audio, video, or common 3D models (GLB/GLTF/FBX/OBJ/STL) to the server for TOS upload, and returns a public `asset_url` only after content safety review passes; other types are forbidden to upload. Prefer this tool when handling media / model resources before source submission; see `../evomeme-tos-upload/SKILL.md` for details.
168
+
169
+ ---
170
+
171
+ ## References
172
+
173
+ - Main entry and development orchestration: `../game-director/SKILL.md`, `../game-develop/SKILL.md`
174
+ - Game cover: `../evomeme-cover/SKILL.md`
175
+ - Login recovery (only after authentication errors): `../evomeme-login/SKILL.md`
176
+ - TOS upload: `../evomeme-tos-upload/SKILL.md`
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "evomemeCloud FS"
3
+ short_description: "Initialize the game workspace, manage submission ignore rules, and safely submit code and binary assets"
4
+ default_prompt: "Use $evomeme-cloud-fs to prepare my game workspace, check the submission contents, and safely submit the game to the cloud."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: evomeme-cover
3
+ description: Use the image-generation MCP to generate a 9:16 portrait game cover (with a large title, gameplay-related background, and art consistent with the game). After success, MUST write the URL to _game_cover_url in public/config.json. Use when a work cover or submitted cover_url is needed, or when the user wants a promotional image/store cover.
4
+ ---
5
+
6
+ # Game Cover Generation
7
+
8
+ ## Overview
9
+
10
+ Generate **one** portrait cover image for an evomeme work, for cloud submission (`cover_url` of `evomeme_submit_game_code`) or display.
11
+
12
+ It **MUST** be generated through MCP `evomeme_generate_game_image`; MUST NOT use local SVG, screenshot collage, or non-MCP channels to impersonate a cover.
13
+
14
+ Load `../evomeme-login/SKILL.md` only after authentication fails; DO NOT load the login skill preventively.
15
+
16
+ ---
17
+
18
+ ## Hard Requirements (All Required)
19
+
20
+ | Requirement | Description |
21
+ | --- | --- |
22
+ | **Aspect ratio** | MUST be **9:16 portrait**. MCP `size` is **fixed** to `1440x2560` (the ONLY allowed preset that is exactly 9:16). MUST NOT use square, landscape, or any other size. |
23
+ | **Large title** | The image MUST contain a clear, readable **large Chinese game title** (or the official name specified by the user), centered or with a clear visual focus, large enough to look like a store/store-page cover rather than small text in a corner. |
24
+ | **Strongly relevant background** | The background scene / main composition MUST directly reflect the game's core gameplay, character, or world (for example, parkour should show running and obstacles, match-3 should show a gem-board atmosphere). MUST NOT use unrelated scenery or generic abstract gradients. |
25
+ | **Consistent art style** | Style, color palette, line/rendering texture MUST match the current game (`../game-art/SKILL.md` or the established art specification), and MUST NOT start a separate style. |
26
+
27
+ Difference from the runtime asset skill: `../game-asset-image-generator/SKILL.md` often requires backgrounds to have "no text"; **the cover MUST have a large title**, so DO NOT apply its `no text` prohibition here.
28
+
29
+ ---
30
+
31
+ ## Preparation Before Generation
32
+
33
+ 1. Confirm the game's **official name** (used for the large text in the image; DO NOT use a temporary placeholder such as "Untitled Game").
34
+ 2. Summarize from the plan / `game-art` / existing visuals:
35
+ - one-sentence gameplay and visual subject;
36
+ - art-style keywords (such as pixel, flat cartoon, cyberpunk, etc.);
37
+ - main colors and mood.
38
+ 3. Optional: if there is a public URL for a strong style reference image, it may be used as `reference_image_url` (it MUST match this game).
39
+
40
+ ---
41
+
42
+ ## MCP Call (Fixed Parameters)
43
+
44
+ Call `evomeme_generate_game_image` **once**:
45
+
46
+ | Parameter | Value |
47
+ | --- | --- |
48
+ | `image_type` | `background` (the cover is a full portrait composition; DO NOT use the `asset` cutout type) |
49
+ | `size` | **`1440x2560`** (mandatory, corresponding to 9:16) |
50
+ | `image_model` | **`asset-pro`** (quality tier for covers; DO NOT use `asset-lite`) |
51
+ | `prompt` | See the prompt structure below |
52
+ | `reference_image_url` | Optional |
53
+
54
+ MUST NOT pass a size that is not in the tool enum (such as `1080x1920`). `image_model` allows ONLY `asset-max` / `asset-pro` / `asset-lite`.
55
+
56
+ ### Prompt Structure (MUST Cover)
57
+
58
+ Chinese or a Chinese-English mix may be used, but the following elements MUST be written clearly:
59
+
60
+ 1. **Portrait composition**: `9:16 vertical poster` / `mobile portrait cover`, with the subject filling the vertical frame.
61
+ 2. **Large title**: state the **exact game name** to render in the image, and require `large bold title text`, high contrast, clearly readable, no garbled characters.
62
+ 3. **Gameplay-related background**: describe a scene and key object/character pose strongly related to the game subject (serving only the cover narrative; DO NOT pile up UI).
63
+ 4. **Art style**: a style sentence consistent with the game (aligned with `game-art`); one sentence for color palette and mood.
64
+ 5. **Quality**: `high detail`, `game store cover`, `no watermark`, `no UI chrome`, `no small unreadable text`.
65
+
66
+ DO NOT write `no text` (it conflicts with the large title).
67
+
68
+ ### Successful Return and Permanent Save (MUST)
69
+
70
+ The tool will poll the task to a terminal state by itself and return text metadata plus an MCP `image` content block. Parse `tos_url` (and `job_id`, `local_path`, etc.) from the text; `tos_url` is the public cover address.
71
+
72
+ **After image generation succeeds, the Agent MUST immediately** write that URL into the fixed key **`_game_cover_url`** in the workspace `public/config.json` as the permanent cover record. The cover flow MUST NOT be considered complete until this has been written.
73
+
74
+ Write convention:
75
+
76
+ 1. If `public/config.json` does not exist, create a valid JSON object before writing.
77
+ 2. The key name MUST be **`_game_cover_url`** (DO NOT rename it, DO NOT write it to another key).
78
+ 3. Recommended structure (consistent with other asset items, convenient for tools and submission to read):
79
+
80
+ ```json
81
+ {
82
+ "_game_cover_url": {
83
+ "value": "https://...",
84
+ "type": "image",
85
+ "image_type": "Cover",
86
+ "size": "1440x2560",
87
+ "label": "Game Cover"
88
+ }
89
+ }
90
+ ```
91
+
92
+ 4. If the project already has other configuration items, **merge the write** and MUST NOT overwrite or empty the whole file.
93
+ 5. When regenerating the cover, **overwrite** the `value` of `_game_cover_url` with the new `tos_url`.
94
+ 6. After writing, confirm the JSON parses, then report to the user.
95
+
96
+ For subsequent submission, read the cover link from `public/config.json` -> `_game_cover_url` -> `value`, and pass it into `cover_url` of `evomeme_submit_game_code` (see `../evomeme-cloud-fs/SKILL.md`).
97
+
98
+ ---
99
+
100
+ ## Delivery and Follow-Up
101
+
102
+ 1. `_game_cover_url` has been written to `public/config.json`; show the cover URL to the user, and explain that it was generated in 9:16 with a title, style consistency, and gameplay relevance.
103
+ 2. If used for cloud submission: read `_game_cover_url.value` as `cover_url`; `name` SHOULD match the game name on the cover.
104
+ 3. If the user is not satisfied: tighten style/subject/title layout according to feedback, then **call** the image-generation MCP **again** and **overwrite** `_game_cover_url` with the new URL. DO NOT fake it by locally editing the image.
105
+
106
+ ---
107
+
108
+ ## Checklist
109
+
110
+ Before calling:
111
+
112
+ - [ ] Is `size` `1440x2560`
113
+ - [ ] Is `image_type` `background`
114
+ - [ ] Is `image_model` `asset-pro`
115
+ - [ ] Does the prompt contain the **exact game name** and require a large title
116
+ - [ ] Is the prompt background strongly related to gameplay/subject
117
+ - [ ] Is the prompt style consistent with the current game art
118
+ - [ ] Has `no text` / landscape size / `asset` cutout type not been misused
119
+
120
+ After a successful call (MUST):
121
+
122
+ - [ ] `tos_url` has been written to `_game_cover_url` in `public/config.json`
123
+ - [ ] JSON is valid, and no other configuration items were accidentally deleted
124
+
125
+ ---
126
+
127
+ ## References
128
+
129
+ - Image-generation details and other sizes: `../game-asset-image-generator/SKILL.md`
130
+ - Art style: `../game-art/SKILL.md`
131
+ - Submit cover: `../evomeme-cloud-fs/SKILL.md`
132
+ - Login recovery (only after authentication errors): `../evomeme-login/SKILL.md`
@@ -0,0 +1,7 @@
1
+ interface:
2
+ display_name: "evomemeCover"
3
+ short_description: "Generate a 9:16 portrait cover with the official title for a game, and save the publication link"
4
+ default_prompt: "Use $evomeme-cover to generate a portrait cover for my game with the official title, core gameplay, and consistent style, then save the cover link to the project configuration."
5
+
6
+ policy:
7
+ allow_implicit_invocation: true