@hybridlabor-api/aos 4.6.6 → 4.7.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 (503) hide show
  1. package/.agents/agents.md +9 -3
  2. package/.agents/nodes.json +7 -2
  3. package/.agents/state.schema.json +26 -1
  4. package/.agents/vendor-manifest.json +56 -0
  5. package/.agents/workflows/startcycle-graph.md +2 -2
  6. package/.claude/agents/architect.md +7 -2
  7. package/.claude/agents/security-reviewer.md +1 -1
  8. package/.claude/agents/techlead.md +2 -0
  9. package/.claude/hooks/memb-inject.mjs +257 -135
  10. package/.claude/hooks/trail-relay.mjs +18 -0
  11. package/.claude/settings.json +70 -0
  12. package/.claude/workflows/startcycle-dispatch.mjs +203 -17
  13. package/.opencode/agents/architect.md +7 -2
  14. package/.opencode/agents/techlead.md +2 -0
  15. package/.opencode/plugins/bdb-aos.js +75 -0
  16. package/THIRD_PARTY_NOTICES.md +57 -1
  17. package/bin/aos-doctor.mjs +366 -0
  18. package/bin/aos-store.mjs +167 -0
  19. package/bin/aos-uninstall.mjs +55 -1
  20. package/docs/AUDIT_BRIEF_ECC_STORE.md +122 -0
  21. package/docs/PLAN_AOS_STORE_PHASE1.md +190 -0
  22. package/docs/handover/agenttrail-for-ao.md +58 -0
  23. package/docs/handover/deja-for-ao.md +51 -0
  24. package/installer.js +182 -38
  25. package/lib/aos-archify-contract.mjs +277 -0
  26. package/lib/ecc-store-index.json +1 -0
  27. package/mcp_config.json +8 -0
  28. package/mcps/mcsc/README.md +24 -0
  29. package/mcps/mcsc/package-lock.json +1234 -0
  30. package/mcps/mcsc/package.json +14 -0
  31. package/mcps/mcsc/packages/core/bin/mcsc.js +162 -0
  32. package/mcps/mcsc/packages/core/rulebook.default.yaml +49 -0
  33. package/mcps/mcsc/packages/core/schema/rulebook.schema.json +56 -0
  34. package/mcps/mcsc/packages/core/src/adapters/agy.js +107 -0
  35. package/mcps/mcsc/packages/core/src/adapters/codex.js +179 -0
  36. package/mcps/mcsc/packages/core/src/adapters/native.js +14 -0
  37. package/mcps/mcsc/packages/core/src/adapters/opencode.js +183 -0
  38. package/mcps/mcsc/packages/core/src/adapters/types.js +21 -0
  39. package/mcps/mcsc/packages/core/src/capabilities/buildOfferTable.js +34 -0
  40. package/mcps/mcsc/packages/core/src/capabilities/registry.js +99 -0
  41. package/mcps/mcsc/packages/core/src/capabilities/types.js +24 -0
  42. package/mcps/mcsc/packages/core/src/detect/cache.js +47 -0
  43. package/mcps/mcsc/packages/core/src/detect/inventory.js +73 -0
  44. package/mcps/mcsc/packages/core/src/detect/probes.js +158 -0
  45. package/mcps/mcsc/packages/core/src/detect/types.js +26 -0
  46. package/mcps/mcsc/packages/core/src/rulebook/load.js +53 -0
  47. package/mcps/mcsc/packages/core/src/rulebook/resolve.js +227 -0
  48. package/mcps/mcsc/packages/core/src/rulebook/rulebook.types.js +89 -0
  49. package/mcps/mcsc/packages/core/src/trail.js +17 -0
  50. package/mcps/mcsc/packages/mcp/server.js +302 -0
  51. package/mcps/mcsc/server.js +2 -0
  52. package/package.json +8 -2
  53. package/scripts/build-ecc-store-index.mjs +147 -0
  54. package/skills/basic/bdbmediastorm/SKILL.md +1 -1
  55. package/skills/basic/godmode-ui-ux/SKILL.md +2 -2
  56. package/skills/basic/godmode-ui-ux/references/anti-slop-rules.md +44 -40
  57. package/skills/basic/godmode-ui-ux/references/taste-archetypes.md +49 -0
  58. package/skills/basic/startcycle/SKILL.md +7 -0
  59. package/skills/basic/startcycle-graph/SKILL.md +25 -0
  60. package/skills/basic/startcycle-graph-user/SKILL.md +3 -0
  61. package/skills/basic/teamwork-preview/SKILL.md +2 -0
  62. package/skills/bdbrainstorm/SKILL.md +1 -0
  63. package/skills/global_config/agenttrail/LICENSE +21 -0
  64. package/skills/global_config/agenttrail/SKILL.md +48 -0
  65. package/skills/global_config/agenttrail/bin/agenttrail.mjs +1113 -0
  66. package/skills/global_config/agenttrail/public/index.html +662 -0
  67. package/skills/global_config/aos-project-init/SKILL.md +25 -5
  68. package/skills/global_config/aos-setup/SKILL.md +34 -1
  69. package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +115 -1
  70. package/skills/global_config/archify/LICENSE +22 -0
  71. package/skills/global_config/archify/SKILL.md +140 -0
  72. package/skills/global_config/archify/THIRD_PARTY_NOTICES.md +69 -0
  73. package/skills/global_config/archify/assets/JetBrainsMono-OFL.txt +93 -0
  74. package/skills/global_config/archify/assets/template.html +14937 -0
  75. package/skills/global_config/archify/bin/archify.mjs +2139 -0
  76. package/skills/global_config/archify/bin/open-artifact.mjs +86 -0
  77. package/skills/global_config/archify/bin/preview.mjs +653 -0
  78. package/skills/global_config/archify/bin/visual-check.mjs +829 -0
  79. package/skills/global_config/archify/brand-marks/README.md +31 -0
  80. package/skills/global_config/archify/brand-marks/catalog.json +131 -0
  81. package/skills/global_config/archify/delta/architecture-delta.mjs +1232 -0
  82. package/skills/global_config/archify/examples/agent-run.lifecycle.json +60 -0
  83. package/skills/global_config/archify/examples/agent-tool-call.workflow.json +94 -0
  84. package/skills/global_config/archify/examples/async-job-roundtrip.sequence.json +61 -0
  85. package/skills/global_config/archify/examples/brand-aware-delivery.architecture.json +47 -0
  86. package/skills/global_config/archify/examples/cache-miss-request.sequence.json +82 -0
  87. package/skills/global_config/archify/examples/checkout-platform.base.architecture.json +31 -0
  88. package/skills/global_config/archify/examples/checkout-platform.head.architecture.json +31 -0
  89. package/skills/global_config/archify/examples/dataflow-product-analytics.html +15048 -0
  90. package/skills/global_config/archify/examples/deployment-release.lifecycle.json +49 -0
  91. package/skills/global_config/archify/examples/event-stream.dataflow.json +57 -0
  92. package/skills/global_config/archify/examples/incident-response.workflow.json +64 -0
  93. package/skills/global_config/archify/examples/lifecycle-agent-run.html +14983 -0
  94. package/skills/global_config/archify/examples/product-analytics.dataflow.json +76 -0
  95. package/skills/global_config/archify/examples/production-deployment.architecture.json +71 -0
  96. package/skills/global_config/archify/examples/release-delivery.workflow.json +62 -0
  97. package/skills/global_config/archify/examples/sequence-cache-miss-request.html +15063 -0
  98. package/skills/global_config/archify/examples/web-app-rendered.html +15012 -0
  99. package/skills/global_config/archify/examples/web-app.architecture.json +46 -0
  100. package/skills/global_config/archify/examples/workflow-agent-tool-call-rendered.html +15054 -0
  101. package/skills/global_config/archify/migrations/workflow-v2.mjs +279 -0
  102. package/skills/global_config/archify/package.json +39 -0
  103. package/skills/global_config/archify/recipes/scenarios.mjs +391 -0
  104. package/skills/global_config/archify/references/authoring-contract.md +247 -0
  105. package/skills/global_config/archify/references/brand-marks.md +65 -0
  106. package/skills/global_config/archify/references/delivery-contract.md +138 -0
  107. package/skills/global_config/archify/references/viewer-runtime.md +45 -0
  108. package/skills/global_config/archify/renderers/architecture/grid.mjs +62 -0
  109. package/skills/global_config/archify/renderers/architecture/render-architecture.mjs +1078 -0
  110. package/skills/global_config/archify/renderers/dataflow/README.md +104 -0
  111. package/skills/global_config/archify/renderers/dataflow/render-dataflow.mjs +483 -0
  112. package/skills/global_config/archify/renderers/lifecycle/README.md +115 -0
  113. package/skills/global_config/archify/renderers/lifecycle/render-lifecycle.mjs +561 -0
  114. package/skills/global_config/archify/renderers/sequence/README.md +114 -0
  115. package/skills/global_config/archify/renderers/sequence/render-sequence.mjs +464 -0
  116. package/skills/global_config/archify/renderers/shared/brand-marks.mjs +563 -0
  117. package/skills/global_config/archify/renderers/shared/cli.mjs +218 -0
  118. package/skills/global_config/archify/renderers/shared/desktop-readability.mjs +26 -0
  119. package/skills/global_config/archify/renderers/shared/diagnostics.mjs +160 -0
  120. package/skills/global_config/archify/renderers/shared/engineering-profiles.mjs +157 -0
  121. package/skills/global_config/archify/renderers/shared/generated-brand-marks.mjs +2003 -0
  122. package/skills/global_config/archify/renderers/shared/generated-validators.mjs +13 -0
  123. package/skills/global_config/archify/renderers/shared/geometry.mjs +1423 -0
  124. package/skills/global_config/archify/renderers/shared/i18n.mjs +595 -0
  125. package/skills/global_config/archify/renderers/shared/layout-report.mjs +40 -0
  126. package/skills/global_config/archify/renderers/shared/legend.mjs +217 -0
  127. package/skills/global_config/archify/renderers/shared/output-path.mjs +340 -0
  128. package/skills/global_config/archify/renderers/shared/repository-evidence.mjs +239 -0
  129. package/skills/global_config/archify/renderers/shared/repository-location.mjs +58 -0
  130. package/skills/global_config/archify/renderers/shared/text-fit.mjs +49 -0
  131. package/skills/global_config/archify/renderers/shared/utils.mjs +232 -0
  132. package/skills/global_config/archify/renderers/shared/validator.mjs +86 -0
  133. package/skills/global_config/archify/renderers/workflow/README.md +223 -0
  134. package/skills/global_config/archify/renderers/workflow/render-workflow.mjs +35 -0
  135. package/skills/global_config/archify/renderers/workflow/workflow-compiler.mjs +4400 -0
  136. package/skills/global_config/archify/renderers/workflow/workflow-migration-geometry.mjs +144 -0
  137. package/skills/global_config/archify/schemas/README.md +211 -0
  138. package/skills/global_config/archify/schemas/architecture.schema.json +178 -0
  139. package/skills/global_config/archify/schemas/common.schema.json +115 -0
  140. package/skills/global_config/archify/schemas/dataflow.schema.json +243 -0
  141. package/skills/global_config/archify/schemas/lifecycle.schema.json +266 -0
  142. package/skills/global_config/archify/schemas/sequence.schema.json +223 -0
  143. package/skills/global_config/archify/schemas/workflow.schema.json +428 -0
  144. package/skills/global_config/archify/scripts/check-render-output.mjs +916 -0
  145. package/skills/global_config/archify/scripts/generate-brand-marks.mjs +141 -0
  146. package/skills/global_config/archify/scripts/generate-validators.mjs +66 -0
  147. package/skills/global_config/archify/scripts/render-examples.mjs +26 -0
  148. package/skills/global_config/archify/skill-release.json +10 -0
  149. package/skills/global_config/ask-tim/SKILL.md +10 -0
  150. package/skills/global_config/bdb-security-audit/SKILL.md +109 -0
  151. package/skills/global_config/bdb-security-audit/references/audit-checklists.md +172 -0
  152. package/skills/global_config/bdb-security-audit/references/skylos-guide.md +139 -0
  153. package/skills/global_config/bdb-security-audit/references/xalgorix-bridge.md +110 -0
  154. package/skills/global_config/bdbdesignpro/SKILL.md +4 -4
  155. package/skills/global_config/bdbdesignpro/references/bdb-motion-tokens.md +52 -31
  156. package/skills/global_config/bdbresilience/SKILL.md +10 -0
  157. package/skills/global_config/brag/SKILL.md +179 -0
  158. package/skills/global_config/brag/assets/music/README.md +20 -0
  159. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.json +3846 -0
  160. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-1-by-ende-dot-app.music-cues.md +35 -0
  161. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.json +1826 -0
  162. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-10-by-ende-dot-app.music-cues.md +35 -0
  163. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.json +2266 -0
  164. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-11-by-ende-dot-app.music-cues.md +35 -0
  165. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.json +2806 -0
  166. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-12-by-ende-dot-app.music-cues.md +35 -0
  167. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.json +2796 -0
  168. package/skills/global_config/brag/assets/music/cues/happy-beats-business-moves-vol-9-by-ende-dot-app.music-cues.md +35 -0
  169. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-1-by-ende-dot-app.mp3 +0 -0
  170. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-10-by-ende-dot-app.mp3 +0 -0
  171. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-11-by-ende-dot-app.mp3 +0 -0
  172. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-12-by-ende-dot-app.mp3 +0 -0
  173. package/skills/global_config/brag/assets/music/happy-beats-business-moves-vol-9-by-ende-dot-app.mp3 +0 -0
  174. package/skills/global_config/brag/assets/sfx/casino/card-fan-1.ogg +0 -0
  175. package/skills/global_config/brag/assets/sfx/casino/card-fan-2.ogg +0 -0
  176. package/skills/global_config/brag/assets/sfx/casino/card-place-1.ogg +0 -0
  177. package/skills/global_config/brag/assets/sfx/casino/card-place-2.ogg +0 -0
  178. package/skills/global_config/brag/assets/sfx/casino/card-place-3.ogg +0 -0
  179. package/skills/global_config/brag/assets/sfx/casino/card-place-4.ogg +0 -0
  180. package/skills/global_config/brag/assets/sfx/casino/card-shove-1.ogg +0 -0
  181. package/skills/global_config/brag/assets/sfx/casino/card-shove-2.ogg +0 -0
  182. package/skills/global_config/brag/assets/sfx/casino/card-shove-3.ogg +0 -0
  183. package/skills/global_config/brag/assets/sfx/casino/card-shove-4.ogg +0 -0
  184. package/skills/global_config/brag/assets/sfx/casino/card-shuffle.ogg +0 -0
  185. package/skills/global_config/brag/assets/sfx/casino/card-slide-1.ogg +0 -0
  186. package/skills/global_config/brag/assets/sfx/casino/card-slide-2.ogg +0 -0
  187. package/skills/global_config/brag/assets/sfx/casino/card-slide-3.ogg +0 -0
  188. package/skills/global_config/brag/assets/sfx/casino/card-slide-4.ogg +0 -0
  189. package/skills/global_config/brag/assets/sfx/casino/card-slide-5.ogg +0 -0
  190. package/skills/global_config/brag/assets/sfx/casino/card-slide-6.ogg +0 -0
  191. package/skills/global_config/brag/assets/sfx/casino/card-slide-7.ogg +0 -0
  192. package/skills/global_config/brag/assets/sfx/casino/card-slide-8.ogg +0 -0
  193. package/skills/global_config/brag/assets/sfx/casino/cards-pack-open-1.ogg +0 -0
  194. package/skills/global_config/brag/assets/sfx/casino/cards-pack-open-2.ogg +0 -0
  195. package/skills/global_config/brag/assets/sfx/casino/chip-lay-1.ogg +0 -0
  196. package/skills/global_config/brag/assets/sfx/casino/chip-lay-2.ogg +0 -0
  197. package/skills/global_config/brag/assets/sfx/casino/chip-lay-3.ogg +0 -0
  198. package/skills/global_config/brag/assets/sfx/casino/chips-collide-1.ogg +0 -0
  199. package/skills/global_config/brag/assets/sfx/casino/chips-collide-2.ogg +0 -0
  200. package/skills/global_config/brag/assets/sfx/casino/chips-collide-3.ogg +0 -0
  201. package/skills/global_config/brag/assets/sfx/casino/chips-collide-4.ogg +0 -0
  202. package/skills/global_config/brag/assets/sfx/casino/chips-handle-1.ogg +0 -0
  203. package/skills/global_config/brag/assets/sfx/casino/chips-handle-2.ogg +0 -0
  204. package/skills/global_config/brag/assets/sfx/casino/chips-handle-3.ogg +0 -0
  205. package/skills/global_config/brag/assets/sfx/casino/chips-handle-4.ogg +0 -0
  206. package/skills/global_config/brag/assets/sfx/casino/chips-handle-6.ogg +0 -0
  207. package/skills/global_config/brag/assets/sfx/casino/chips-stack-1.ogg +0 -0
  208. package/skills/global_config/brag/assets/sfx/casino/chips-stack-2.ogg +0 -0
  209. package/skills/global_config/brag/assets/sfx/casino/chips-stack-3.ogg +0 -0
  210. package/skills/global_config/brag/assets/sfx/casino/chips-stack-4.ogg +0 -0
  211. package/skills/global_config/brag/assets/sfx/casino/chips-stack-5.ogg +0 -0
  212. package/skills/global_config/brag/assets/sfx/casino/chips-stack-6.ogg +0 -0
  213. package/skills/global_config/brag/assets/sfx/casino/dice-grab-1.ogg +0 -0
  214. package/skills/global_config/brag/assets/sfx/casino/dice-grab-2.ogg +0 -0
  215. package/skills/global_config/brag/assets/sfx/casino/dice-shake-1.ogg +0 -0
  216. package/skills/global_config/brag/assets/sfx/casino/dice-shake-2.ogg +0 -0
  217. package/skills/global_config/brag/assets/sfx/casino/dice-shake-3.ogg +0 -0
  218. package/skills/global_config/brag/assets/sfx/casino/dice-throw-1.ogg +0 -0
  219. package/skills/global_config/brag/assets/sfx/casino/dice-throw-2.ogg +0 -0
  220. package/skills/global_config/brag/assets/sfx/casino/dice-throw-3.ogg +0 -0
  221. package/skills/global_config/brag/assets/sfx/casino/die-throw-1.ogg +0 -0
  222. package/skills/global_config/brag/assets/sfx/casino/die-throw-2.ogg +0 -0
  223. package/skills/global_config/brag/assets/sfx/casino/die-throw-3.ogg +0 -0
  224. package/skills/global_config/brag/assets/sfx/casino/die-throw-4.ogg +0 -0
  225. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_000.ogg +0 -0
  226. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_003.ogg +0 -0
  227. package/skills/global_config/brag/assets/sfx/impact/footstep_carpet_004.ogg +0 -0
  228. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_000.ogg +0 -0
  229. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_001.ogg +0 -0
  230. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_002.ogg +0 -0
  231. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_003.ogg +0 -0
  232. package/skills/global_config/brag/assets/sfx/impact/footstep_concrete_004.ogg +0 -0
  233. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_000.ogg +0 -0
  234. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_001.ogg +0 -0
  235. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_002.ogg +0 -0
  236. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_003.ogg +0 -0
  237. package/skills/global_config/brag/assets/sfx/impact/footstep_grass_004.ogg +0 -0
  238. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_000.ogg +0 -0
  239. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_001.ogg +0 -0
  240. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_002.ogg +0 -0
  241. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_003.ogg +0 -0
  242. package/skills/global_config/brag/assets/sfx/impact/footstep_snow_004.ogg +0 -0
  243. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_000.ogg +0 -0
  244. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_001.ogg +0 -0
  245. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_002.ogg +0 -0
  246. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_003.ogg +0 -0
  247. package/skills/global_config/brag/assets/sfx/impact/footstep_wood_004.ogg +0 -0
  248. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_000.ogg +0 -0
  249. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_003.ogg +0 -0
  250. package/skills/global_config/brag/assets/sfx/impact/impactBell_heavy_004.ogg +0 -0
  251. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_000.ogg +0 -0
  252. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_001.ogg +0 -0
  253. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_002.ogg +0 -0
  254. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_003.ogg +0 -0
  255. package/skills/global_config/brag/assets/sfx/impact/impactGeneric_light_004.ogg +0 -0
  256. package/skills/global_config/brag/assets/sfx/impact/impactGlass_heavy_002.ogg +0 -0
  257. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_001.ogg +0 -0
  258. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_002.ogg +0 -0
  259. package/skills/global_config/brag/assets/sfx/impact/impactGlass_light_003.ogg +0 -0
  260. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_000.ogg +0 -0
  261. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_002.ogg +0 -0
  262. package/skills/global_config/brag/assets/sfx/impact/impactGlass_medium_004.ogg +0 -0
  263. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_000.ogg +0 -0
  264. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_002.ogg +0 -0
  265. package/skills/global_config/brag/assets/sfx/impact/impactMetal_heavy_004.ogg +0 -0
  266. package/skills/global_config/brag/assets/sfx/impact/impactMetal_light_002.ogg +0 -0
  267. package/skills/global_config/brag/assets/sfx/impact/impactMetal_light_003.ogg +0 -0
  268. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_000.ogg +0 -0
  269. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_001.ogg +0 -0
  270. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_002.ogg +0 -0
  271. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_003.ogg +0 -0
  272. package/skills/global_config/brag/assets/sfx/impact/impactMetal_medium_004.ogg +0 -0
  273. package/skills/global_config/brag/assets/sfx/impact/impactMining_001.ogg +0 -0
  274. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_000.ogg +0 -0
  275. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_001.ogg +0 -0
  276. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_002.ogg +0 -0
  277. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_003.ogg +0 -0
  278. package/skills/global_config/brag/assets/sfx/impact/impactPlank_medium_004.ogg +0 -0
  279. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_000.ogg +0 -0
  280. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_001.ogg +0 -0
  281. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_002.ogg +0 -0
  282. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_003.ogg +0 -0
  283. package/skills/global_config/brag/assets/sfx/impact/impactPlate_heavy_004.ogg +0 -0
  284. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_000.ogg +0 -0
  285. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_001.ogg +0 -0
  286. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_002.ogg +0 -0
  287. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_003.ogg +0 -0
  288. package/skills/global_config/brag/assets/sfx/impact/impactPlate_light_004.ogg +0 -0
  289. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_000.ogg +0 -0
  290. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_001.ogg +0 -0
  291. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_002.ogg +0 -0
  292. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_003.ogg +0 -0
  293. package/skills/global_config/brag/assets/sfx/impact/impactPlate_medium_004.ogg +0 -0
  294. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_000.ogg +0 -0
  295. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_001.ogg +0 -0
  296. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_002.ogg +0 -0
  297. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_003.ogg +0 -0
  298. package/skills/global_config/brag/assets/sfx/impact/impactPunch_heavy_004.ogg +0 -0
  299. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_000.ogg +0 -0
  300. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_001.ogg +0 -0
  301. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_002.ogg +0 -0
  302. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_003.ogg +0 -0
  303. package/skills/global_config/brag/assets/sfx/impact/impactPunch_medium_004.ogg +0 -0
  304. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_000.ogg +0 -0
  305. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_001.ogg +0 -0
  306. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_002.ogg +0 -0
  307. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_003.ogg +0 -0
  308. package/skills/global_config/brag/assets/sfx/impact/impactSoft_heavy_004.ogg +0 -0
  309. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_000.ogg +0 -0
  310. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_001.ogg +0 -0
  311. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_002.ogg +0 -0
  312. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_003.ogg +0 -0
  313. package/skills/global_config/brag/assets/sfx/impact/impactSoft_medium_004.ogg +0 -0
  314. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_000.ogg +0 -0
  315. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_001.ogg +0 -0
  316. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_002.ogg +0 -0
  317. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_003.ogg +0 -0
  318. package/skills/global_config/brag/assets/sfx/impact/impactTin_medium_004.ogg +0 -0
  319. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_000.ogg +0 -0
  320. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_001.ogg +0 -0
  321. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_002.ogg +0 -0
  322. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_003.ogg +0 -0
  323. package/skills/global_config/brag/assets/sfx/impact/impactWood_heavy_004.ogg +0 -0
  324. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_000.ogg +0 -0
  325. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_001.ogg +0 -0
  326. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_002.ogg +0 -0
  327. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_003.ogg +0 -0
  328. package/skills/global_config/brag/assets/sfx/impact/impactWood_light_004.ogg +0 -0
  329. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_000.ogg +0 -0
  330. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_001.ogg +0 -0
  331. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_002.ogg +0 -0
  332. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_003.ogg +0 -0
  333. package/skills/global_config/brag/assets/sfx/impact/impactWood_medium_004.ogg +0 -0
  334. package/skills/global_config/brag/assets/sfx/interface/bong_001.ogg +0 -0
  335. package/skills/global_config/brag/assets/sfx/interface/click_001.ogg +0 -0
  336. package/skills/global_config/brag/assets/sfx/interface/click_002.ogg +0 -0
  337. package/skills/global_config/brag/assets/sfx/interface/click_003.ogg +0 -0
  338. package/skills/global_config/brag/assets/sfx/interface/click_004.ogg +0 -0
  339. package/skills/global_config/brag/assets/sfx/interface/click_005.ogg +0 -0
  340. package/skills/global_config/brag/assets/sfx/interface/drop_001.ogg +0 -0
  341. package/skills/global_config/brag/assets/sfx/interface/drop_002.ogg +0 -0
  342. package/skills/global_config/brag/assets/sfx/interface/drop_003.ogg +0 -0
  343. package/skills/global_config/brag/assets/sfx/interface/error_005.ogg +0 -0
  344. package/skills/global_config/brag/assets/sfx/interface/error_006.ogg +0 -0
  345. package/skills/global_config/brag/assets/sfx/interface/glitch_002.ogg +0 -0
  346. package/skills/global_config/brag/assets/sfx/interface/glitch_004.ogg +0 -0
  347. package/skills/global_config/brag/assets/sfx/interface/select_008.ogg +0 -0
  348. package/skills/global_config/brag/assets/sfx/interface/switch_001.ogg +0 -0
  349. package/skills/global_config/brag/assets/sfx/interface/switch_002.ogg +0 -0
  350. package/skills/global_config/brag/assets/sfx/interface/switch_004.ogg +0 -0
  351. package/skills/global_config/brag/assets/sfx/interface/switch_005.ogg +0 -0
  352. package/skills/global_config/brag/assets/sfx/interface/switch_006.ogg +0 -0
  353. package/skills/global_config/brag/assets/sfx/interface/switch_007.ogg +0 -0
  354. package/skills/global_config/brag/assets/sfx/keyboard/keypress-001.wav +0 -0
  355. package/skills/global_config/brag/assets/sfx/keyboard/keypress-002.wav +0 -0
  356. package/skills/global_config/brag/assets/sfx/keyboard/keypress-003.wav +0 -0
  357. package/skills/global_config/brag/assets/sfx/keyboard/keypress-004.wav +0 -0
  358. package/skills/global_config/brag/assets/sfx/keyboard/keypress-005.wav +0 -0
  359. package/skills/global_config/brag/assets/sfx/keyboard/keypress-006.wav +0 -0
  360. package/skills/global_config/brag/assets/sfx/keyboard/keypress-007.wav +0 -0
  361. package/skills/global_config/brag/assets/sfx/keyboard/keypress-008.wav +0 -0
  362. package/skills/global_config/brag/assets/sfx/keyboard/keypress-009.wav +0 -0
  363. package/skills/global_config/brag/assets/sfx/keyboard/keypress-010.wav +0 -0
  364. package/skills/global_config/brag/assets/sfx/keyboard/keypress-011.wav +0 -0
  365. package/skills/global_config/brag/assets/sfx/keyboard/keypress-012.wav +0 -0
  366. package/skills/global_config/brag/assets/sfx/keyboard/keypress-013.wav +0 -0
  367. package/skills/global_config/brag/assets/sfx/keyboard/keypress-014.wav +0 -0
  368. package/skills/global_config/brag/assets/sfx/keyboard/keypress-015.wav +0 -0
  369. package/skills/global_config/brag/assets/sfx/keyboard/keypress-016.wav +0 -0
  370. package/skills/global_config/brag/assets/sfx/keyboard/keypress-017.wav +0 -0
  371. package/skills/global_config/brag/assets/sfx/keyboard/keypress-018.wav +0 -0
  372. package/skills/global_config/brag/assets/sfx/keyboard/keypress-019.wav +0 -0
  373. package/skills/global_config/brag/assets/sfx/keyboard/keypress-020.wav +0 -0
  374. package/skills/global_config/brag/assets/sfx/keyboard/keypress-021.wav +0 -0
  375. package/skills/global_config/brag/assets/sfx/keyboard/keypress-022.wav +0 -0
  376. package/skills/global_config/brag/assets/sfx/keyboard/keypress-023.wav +0 -0
  377. package/skills/global_config/brag/assets/sfx/keyboard/keypress-024.wav +0 -0
  378. package/skills/global_config/brag/assets/sfx/keyboard/keypress-025.wav +0 -0
  379. package/skills/global_config/brag/assets/sfx/keyboard/keypress-026.wav +0 -0
  380. package/skills/global_config/brag/assets/sfx/keyboard/keypress-027.wav +0 -0
  381. package/skills/global_config/brag/assets/sfx/keyboard/keypress-028.wav +0 -0
  382. package/skills/global_config/brag/assets/sfx/keyboard/keypress-029.wav +0 -0
  383. package/skills/global_config/brag/assets/sfx/keyboard/keypress-030.wav +0 -0
  384. package/skills/global_config/brag/assets/sfx/keyboard/keypress-031.wav +0 -0
  385. package/skills/global_config/brag/assets/sfx/keyboard/keypress-032.wav +0 -0
  386. package/skills/global_config/brag/assets/sfx/sfx-analysis.json +15584 -0
  387. package/skills/global_config/brag/assets/sfx/sfx-analysis.md +75 -0
  388. package/skills/global_config/brag/assets/sfx/ui/click1.ogg +0 -0
  389. package/skills/global_config/brag/assets/sfx/ui/click2.ogg +0 -0
  390. package/skills/global_config/brag/assets/sfx/ui/click3.ogg +0 -0
  391. package/skills/global_config/brag/assets/sfx/ui/click4.ogg +0 -0
  392. package/skills/global_config/brag/assets/sfx/ui/click5.ogg +0 -0
  393. package/skills/global_config/brag/assets/sfx/ui/mouseclick1.ogg +0 -0
  394. package/skills/global_config/brag/assets/sfx/ui/rollover1.ogg +0 -0
  395. package/skills/global_config/brag/assets/sfx/ui/rollover2.ogg +0 -0
  396. package/skills/global_config/brag/assets/sfx/ui/rollover4.ogg +0 -0
  397. package/skills/global_config/brag/assets/sfx/ui/rollover5.ogg +0 -0
  398. package/skills/global_config/brag/assets/sfx/ui/switch1.ogg +0 -0
  399. package/skills/global_config/brag/assets/sfx/ui/switch10.ogg +0 -0
  400. package/skills/global_config/brag/assets/sfx/ui/switch11.ogg +0 -0
  401. package/skills/global_config/brag/assets/sfx/ui/switch12.ogg +0 -0
  402. package/skills/global_config/brag/assets/sfx/ui/switch13.ogg +0 -0
  403. package/skills/global_config/brag/assets/sfx/ui/switch14.ogg +0 -0
  404. package/skills/global_config/brag/assets/sfx/ui/switch15.ogg +0 -0
  405. package/skills/global_config/brag/assets/sfx/ui/switch16.ogg +0 -0
  406. package/skills/global_config/brag/assets/sfx/ui/switch17.ogg +0 -0
  407. package/skills/global_config/brag/assets/sfx/ui/switch18.ogg +0 -0
  408. package/skills/global_config/brag/assets/sfx/ui/switch19.ogg +0 -0
  409. package/skills/global_config/brag/assets/sfx/ui/switch2.ogg +0 -0
  410. package/skills/global_config/brag/assets/sfx/ui/switch20.ogg +0 -0
  411. package/skills/global_config/brag/assets/sfx/ui/switch21.ogg +0 -0
  412. package/skills/global_config/brag/assets/sfx/ui/switch22.ogg +0 -0
  413. package/skills/global_config/brag/assets/sfx/ui/switch23.ogg +0 -0
  414. package/skills/global_config/brag/assets/sfx/ui/switch24.ogg +0 -0
  415. package/skills/global_config/brag/assets/sfx/ui/switch25.ogg +0 -0
  416. package/skills/global_config/brag/assets/sfx/ui/switch26.ogg +0 -0
  417. package/skills/global_config/brag/assets/sfx/ui/switch27.ogg +0 -0
  418. package/skills/global_config/brag/assets/sfx/ui/switch28.ogg +0 -0
  419. package/skills/global_config/brag/assets/sfx/ui/switch29.ogg +0 -0
  420. package/skills/global_config/brag/assets/sfx/ui/switch3.ogg +0 -0
  421. package/skills/global_config/brag/assets/sfx/ui/switch30.ogg +0 -0
  422. package/skills/global_config/brag/assets/sfx/ui/switch31.ogg +0 -0
  423. package/skills/global_config/brag/assets/sfx/ui/switch32.ogg +0 -0
  424. package/skills/global_config/brag/assets/sfx/ui/switch33.ogg +0 -0
  425. package/skills/global_config/brag/assets/sfx/ui/switch34.ogg +0 -0
  426. package/skills/global_config/brag/assets/sfx/ui/switch35.ogg +0 -0
  427. package/skills/global_config/brag/assets/sfx/ui/switch36.ogg +0 -0
  428. package/skills/global_config/brag/assets/sfx/ui/switch37.ogg +0 -0
  429. package/skills/global_config/brag/assets/sfx/ui/switch38.ogg +0 -0
  430. package/skills/global_config/brag/assets/sfx/ui/switch4.ogg +0 -0
  431. package/skills/global_config/brag/assets/sfx/ui/switch5.ogg +0 -0
  432. package/skills/global_config/brag/assets/sfx/ui/switch6.ogg +0 -0
  433. package/skills/global_config/brag/assets/sfx/ui/switch7.ogg +0 -0
  434. package/skills/global_config/brag/assets/sfx/ui/switch8.ogg +0 -0
  435. package/skills/global_config/brag/assets/sfx/ui/switch9.ogg +0 -0
  436. package/skills/global_config/brag/references/audio.md +307 -0
  437. package/skills/global_config/brag/references/step-1-inspect.md +133 -0
  438. package/skills/global_config/brag/references/step-2-plan.md +234 -0
  439. package/skills/global_config/brag/references/step-3-compose.md +210 -0
  440. package/skills/global_config/brag/references/step-4-deliver.md +168 -0
  441. package/skills/global_config/brag/references/tones.md +231 -0
  442. package/skills/global_config/brag/scripts/analyze_music_cues.py +309 -0
  443. package/skills/global_config/brag/scripts/pyproject.toml +14 -0
  444. package/skills/global_config/brag/scripts/uv.lock +819 -0
  445. package/skills/global_config/deja-memory/SKILL.md +42 -0
  446. package/skills/global_config/editable-design/LICENSE +202 -0
  447. package/skills/global_config/editable-design/README.md +34 -0
  448. package/skills/global_config/editable-design/SKILL.md +630 -0
  449. package/skills/global_config/editable-design/THIRD_PARTY_NOTICES.md +10 -0
  450. package/skills/global_config/editable-design/agents/openai.yaml +4 -0
  451. package/skills/global_config/editable-design/assets/editor/layer-editor.css +262 -0
  452. package/skills/global_config/editable-design/assets/editor/layer-editor.js +1929 -0
  453. package/skills/global_config/editable-design/assets/poster-starter/README.md +92 -0
  454. package/skills/global_config/editable-design/assets/poster-starter/assets/.gitkeep +0 -0
  455. package/skills/global_config/editable-design/assets/poster-starter/index.html +91 -0
  456. package/skills/global_config/editable-design/assets/poster-starter/poster.json +6 -0
  457. package/skills/global_config/editable-design/assets/poster-starter/reference/.gitkeep +1 -0
  458. package/skills/global_config/editable-design/assets/replay/icons/assets.png +0 -0
  459. package/skills/global_config/editable-design/assets/replay/icons/html.png +0 -0
  460. package/skills/global_config/editable-design/assets/replay/icons/input.png +0 -0
  461. package/skills/global_config/editable-design/assets/replay/icons/layers.png +0 -0
  462. package/skills/global_config/editable-design/assets/replay/icons/plan.png +0 -0
  463. package/skills/global_config/editable-design/assets/replay/icons/reference.png +0 -0
  464. package/skills/global_config/editable-design/assets/replay/icons/review.png +0 -0
  465. package/skills/global_config/editable-design/assets/replay/index.html +59 -0
  466. package/skills/global_config/editable-design/assets/replay/replay-motion.js +410 -0
  467. package/skills/global_config/editable-design/assets/replay/replay.css +380 -0
  468. package/skills/global_config/editable-design/assets/replay/replay.js +374 -0
  469. package/skills/global_config/editable-design/font-kit/package-lock.json +115 -0
  470. package/skills/global_config/editable-design/font-kit/package.json +19 -0
  471. package/skills/global_config/editable-design/pack.sh +20 -0
  472. package/skills/global_config/editable-design/references/asset-architecture.md +72 -0
  473. package/skills/global_config/editable-design/references/editor-pitfalls.md +70 -0
  474. package/skills/global_config/editable-design/references/editor-runtime.md +131 -0
  475. package/skills/global_config/editable-design/references/font-system.md +89 -0
  476. package/skills/global_config/editable-design/references/imagery.md +145 -0
  477. package/skills/global_config/editable-design/references/layout-typography.md +116 -0
  478. package/skills/global_config/editable-design/references/replay-contract.md +169 -0
  479. package/skills/global_config/editable-design/scripts/_browser.mjs +247 -0
  480. package/skills/global_config/editable-design/scripts/bake.mjs +87 -0
  481. package/skills/global_config/editable-design/scripts/build-replay.mjs +316 -0
  482. package/skills/global_config/editable-design/scripts/check-contract.mjs +293 -0
  483. package/skills/global_config/editable-design/scripts/check-fonts.sh +252 -0
  484. package/skills/global_config/editable-design/scripts/check-poster.sh +70 -0
  485. package/skills/global_config/editable-design/scripts/doctor.sh +78 -0
  486. package/skills/global_config/editable-design/scripts/explode.mjs +115 -0
  487. package/skills/global_config/editable-design/scripts/font-kit.mjs +187 -0
  488. package/skills/global_config/editable-design/scripts/import-asset.sh +23 -0
  489. package/skills/global_config/editable-design/scripts/init-poster.sh +64 -0
  490. package/skills/global_config/editable-design/scripts/install-font-kit.sh +13 -0
  491. package/skills/global_config/editable-design/scripts/package-lock.json +334 -0
  492. package/skills/global_config/editable-design/scripts/package.json +14 -0
  493. package/skills/global_config/editable-design/scripts/remove-chroma-key.py +201 -0
  494. package/skills/global_config/editable-design/scripts/render-poster.sh +202 -0
  495. package/skills/global_config/editable-design/scripts/trace.sh +159 -0
  496. package/skills/global_config/editable-design/scripts/verify-replay.mjs +97 -0
  497. package/skills/global_config/editable-design/scripts/verify.mjs +782 -0
  498. package/skills/global_config/editable-design/scripts/wire-editor.mjs +104 -0
  499. package/skills/global_config/editable-design/tests/fixtures/small-explode/index.html +86 -0
  500. package/skills/global_config/mcsc/SKILL.md +60 -0
  501. package/skills/global_config/plan-canvas/SKILL.md +8 -0
  502. package/skills/global_config/plan-canvas/scripts/lib/plan-canvas/server.js +31 -6
  503. package/skills/global_config/plan-canvas/scripts/plan-canvas.js +4 -2
@@ -0,0 +1,630 @@
1
+ ---
2
+ name: editable-design
3
+ description: Create and render fixed-canvas editable visual designs, including posters, marketing graphics, covers, menus, banners, and social cards. Default outputs include fixed and editable HTML, PNG, a mouse editor with scan and exploded layer views, and an evidence-backed Design Replay. Do not use for websites, slide decks, videos, or standalone logo systems. Always use this skill when the project contains `poster.json`.
4
+ category: design-ui-ux
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Editable Design
9
+
10
+ Design the complete requested fixed-canvas visual, verify it, then deliver it. The default
11
+ deliverable is a fixed-canvas `index.html`, a mouse-editable `editor.html` with
12
+ scan and exploded-layer views, a poster-specific visual system built from
13
+ generated artwork, live typography, and/or HTML geometry, and a rendered PNG.
14
+ It also includes `replay/index.html`, a deterministic visual account of the real
15
+ input, reference, plan, asset prompts, code, review, and layer output, plus a
16
+ standalone animated `layers.html` breakdown.
17
+
18
+ ## Communicate clearly
19
+
20
+ Assume the user is a nontechnical knowledge worker. Talk about their poster,
21
+ choices, progress, and results. Keep tools, commands, files, renderers, browser
22
+ software, dependencies, source control, paths, and exit codes out of user-facing
23
+ messages unless the user asks or must take action.
24
+
25
+ Use no more than one short update for each user-visible phase: preparing,
26
+ designing, and delivering. If a phase takes longer than 60 seconds, give one
27
+ plain-language update. Keep recoverable technical problems private; say only that
28
+ you hit a problem and are trying another method.
29
+
30
+ **You are the designer, not a consultant.** Decide the layout, hierarchy,
31
+ palette, type, composition, and white space yourself. Do not generate design
32
+ options or pause for a visual selection unless the user explicitly asks to
33
+ compare designs. When undecided, pick one and say why; do not hand the choice
34
+ back.
35
+
36
+ Ask one concise group of up to three discovery questions only when the missing
37
+ information would materially change the finished poster or force you to invent
38
+ something. **The only thing you must ask about is fact**: prices, dates and
39
+ times, locations, contact details, exact brand and product names, legal notices.
40
+ Inventing one of those ships a falsehood, which is worse than leaving it out.
41
+ Everything else is a judgement call, and judgement is your job.
42
+
43
+ ## Choose the execution path
44
+
45
+ Use the **one-shot fast path** only when all of these are true:
46
+
47
+ - this is a new poster in an empty or projectless workspace;
48
+ - the layout needs no generated shipping imagery, because type, colour, or CSS
49
+ shapes carry it;
50
+ - the request does not involve multiple artwork slots, a cutout subject, print
51
+ DPI, or revising an existing poster; and
52
+ - the deliverable is a single screen-resolution render.
53
+
54
+ Use the **capability path** otherwise.
55
+
56
+ ## Prepare academic PDF inputs
57
+
58
+ When the source is a research-paper PDF, complete a compact evidence pass before
59
+ the reference or design plan. Read the whole paper's text structure and inspect
60
+ the pages containing its principal figures, tables, and diagrams; an abstract-only
61
+ summary is not enough. Write `source-brief.md` with:
62
+
63
+ - the research question and why it matters;
64
+ - the method as a short causal or procedural chain;
65
+ - three to five result claims, preserving every reported number, unit, baseline,
66
+ and comparison exactly;
67
+ - the conclusion and any limitation needed to avoid overstating the paper; and
68
+ - a visual-evidence inventory naming the strongest source figures or tables and
69
+ what claim each one supports.
70
+
71
+ Record the PDF path and `source-brief.md` with the input evidence. Use the brief
72
+ as the factual boundary for all poster wording. Prefer a real, legible source
73
+ figure, table crop, or faithful code-native reconstruction when it carries a key
74
+ result. Generated artwork may establish atmosphere or explain a concept, but it
75
+ must not replace empirical evidence or introduce unreported quantities. When the
76
+ paper contains usable visual evidence, the final poster must include at least one
77
+ evidence-bearing visual tied to a live caption or result claim.
78
+
79
+ ## Generate the imagery
80
+
81
+ Generated artwork is a first-class visual material, not a required full-canvas
82
+ layer. Use it wherever photographic, illustrative, material, atmospheric, or
83
+ subject-specific content carries the design. Live typography and HTML geometry
84
+ may instead form the primary visual system when their precision, repetition,
85
+ and spatial relationships are the composition.
86
+
87
+ Do not replace imagery the design genuinely needs with a generic gradient, flat
88
+ fill, or improvised CSS illustration. Equally, do not generate a backdrop merely
89
+ to prove that artwork was used.
90
+
91
+ Generated support does not need to dominate the page; compact visual assets are
92
+ worthwhile when they make a section easier to scan, compare, or remember.
93
+
94
+ Avoid model-authored SVG illustrations. Graphic content is either generated
95
+ raster artwork or it is typography and geometry.
96
+
97
+ Codex's bundled Node runtime includes Lucide; for common small icons, prefer a
98
+ coherent locally embedded Lucide subset over ad hoc CSS drawing, without adding
99
+ runtime external requests.
100
+
101
+ ### Choose the reference mode
102
+
103
+ Treat reference handling as a four-value mode even when the host exposes no
104
+ formal setting:
105
+
106
+ - `auto` — the default. Resolve it to `art-directed` for every new poster,
107
+ including an open brief and the one-shot fast path; the composition reference
108
+ is a standard design step, not an optional enhancement that depends on the
109
+ user describing a finished picture. Resolve it to `off` only when the user
110
+ explicitly declines reference generation, or when a small revision to an
111
+ existing poster does not change its composition. Resolve it to `reproduce`
112
+ when the user supplied an image as the target or asked to match one closely. A
113
+ loose style or mood reference does not imply reproduction.
114
+ - `off` — skip composition-reference generation.
115
+ - `art-directed` — generate one enhanced, non-shipping composition concept.
116
+ - `reproduce` — treat the supplied reference as a high-fidelity specification.
117
+
118
+ Respect an explicit user choice over `auto`. Whenever `art-directed` is active,
119
+ run the creative prompt enhancer below; it is not a separate switch.
120
+
121
+ When image generation is unavailable, resolve `auto` to `off` when live
122
+ typography, HTML geometry, local icons, and user-provided assets can satisfy the
123
+ request. If the requested result fundamentally requires generated photography,
124
+ illustration, or cutouts, report the missing capability instead of silently
125
+ substituting a materially weaker design. A supplied target can still use
126
+ `reproduce` without image generation when it can be rebuilt from live elements.
127
+
128
+ ### Create an art-directed composition reference
129
+
130
+ Generate **one reference composition** before planning anything, and read the
131
+ layout off it. Pass the request through a
132
+ **creative prompt-enhancement step** and ask the image model for one opinionated,
133
+ fully art-directed finished-poster concept rather than a literal transcription.
134
+ Lock every user-specified fact, string, subject, required placement, palette
135
+ requirement, and exclusion. Freely intensify only the composition, hierarchy,
136
+ crop, scale relationships, photographic direction, lighting, materiality,
137
+ typography treatment, grid behaviour, and spatial rhythm. This reference-only
138
+ step deliberately has more creative freedom than shipping-asset generation,
139
+ and it is the only step where the image model is allowed to render text.
140
+
141
+ Creative expansion changes the design language, not the requested content. Do
142
+ not invent facts, dates, locations, prices, brand names, slogans, people,
143
+ products, narrative subjects, or extra scene objects. Preserve minimalism when
144
+ requested, but express it through tension, scale, atmosphere, material depth,
145
+ and precise hierarchy rather than by making the frame merely empty.
146
+
147
+ Three boundaries make this safe. Breaking any of them wrecks the rest of the run:
148
+
149
+ - **The reference never becomes artwork.** Save it under `reference/`, never
150
+ `assets/`, and never crop it into a backdrop — it has generated lettering all
151
+ over it.
152
+ - **The reference's pixels never ship.** Every character is re-set in HTML. A
153
+ generated glyph cannot be edited or re-flowed, and generated Chinese in
154
+ particular is often subtly wrong. Its *wording*, though, is fair game: if the
155
+ reference invented a line that fits, adopt it as live HTML text and name the
156
+ added lines in the handoff. Facts are the exception. Prices, dates, locations
157
+ and brand names still come from the user; a plausible date the image model
158
+ made up is still a false date.
159
+ - **Choose the shipping asset architecture after reading the reference.** The
160
+ reference determines composition, hierarchy, visual regions, and depth
161
+ relationships; it does not require a backdrop. Generate a clean full-bleed
162
+ backdrop when the integrated design decision selects a continuous scene.
163
+ Otherwise generate the selected slots, cutouts, or fragments, or rebuild the
164
+ graphic relationships as live typography and geometry when the reference's
165
+ visual force is fundamentally graphic and modular.
166
+
167
+ Read off the reference: major visual regions and their proportions, band
168
+ positions when they are actually present, visual weight, palette relationships,
169
+ text-bearing regions, depth and overlap relationships, and any supporting
170
+ visuals, large or small, that materially contribute to meaning, comparison, or
171
+ recall. Write these observations into the integrated design plan below. Before
172
+ calling the image model, save the exact enhanced prompt in
173
+ `reference/composition-prompt.md`; after the result is imported as
174
+ `reference/composition-reference.png`, record both under `P02_reference`. These
175
+ are evidence for the Replay, not extra design prose.
176
+
177
+ ### High-fidelity reproduction
178
+
179
+ When the user asks for the reference to be reproduced closely — "make it look
180
+ like this" — or supplied the image explicitly as the target, treat it as a
181
+ specification rather than a sketch. Work element by element: match positions, proportions,
182
+ decorative marks and where each colour sits, and adopt its wording wholesale
183
+ as live HTML text.
184
+
185
+ Two things do not change under this mode. Text is still re-set in HTML, never
186
+ lifted as pixels. And facts still come from the user.
187
+
188
+ Say in the handoff that you were reproducing a reference, and name whatever you
189
+ could not reproduce — a hand-drawn contour edge, a texture, a script face that
190
+ is not installed.
191
+
192
+ ### Choose the asset architecture before prompting
193
+
194
+ Before finalizing the asset plan, identify every visual component that
195
+ materially contributes to subject, hierarchy, atmosphere, comparison, recall,
196
+ semantic distinction, or fidelity to the reference. Let the composition
197
+ determine the asset count. Generate all main and supporting assets needed for
198
+ the finished poster, and do not consolidate distinct visual roles merely to
199
+ reduce generation work.
200
+
201
+ Use the image model proactively for supporting visual assets when they would
202
+ strengthen communication; do not reserve generated imagery only for the main
203
+ visual or explicitly requested detail shots.
204
+
205
+ A generated raster is not the only way to preserve a strong visual reference.
206
+ For example, a dense Memphis-style exhibition poster may be strongest as a live
207
+ modular composition: monumental typography, saturated colour fields, black
208
+ keylines, checker and halftone patterns, label rails, inline pictograms, and
209
+ independently placed icon panels. Rebuild those relationships as live HTML/CSS
210
+ geometry and inline SVG when flattening them into a background would weaken
211
+ their structure, precision, or editability. This is a complete visual system
212
+ derived from the same mandatory art-directed reference, not a fallback from
213
+ generated imagery.
214
+
215
+ Choose by visual topology, not by habit. No topology is the default:
216
+
217
+ - **Slot matrix** — one image per bounded card, product cell, specimen, or
218
+ timeline node; HTML owns the grid and captions.
219
+ - **Code-native modular field** — live typography, colour blocks, rules,
220
+ patterns, icon cells, diagrams, and inline geometry form the primary visual
221
+ system. Use this when the reference's force comes from graphic composition,
222
+ precision, repetition, and modular rhythm rather than photographic material.
223
+ - **Continuous scene** — one zoned full-bleed backdrop plus HTML typography.
224
+ Use this when the meaningful imagery depends on shared lighting, perspective,
225
+ atmosphere, or physical continuity.
226
+ - **Cutout stack** — independent transparent subjects arranged across explicit
227
+ back, middle, text, and foreground layers.
228
+ - **Layered collage** — a base field plus a small set of independently placed
229
+ photo fragments, paper pieces, textures, stickers, or cutouts.
230
+
231
+ Keep elements together when their shared lighting, perspective, material, or
232
+ physical interaction makes them one visually continuous scene. Separate or
233
+ rebuild them independently when their position, crop, replacement, repetition,
234
+ semantic role, or overlap is part of the design. Do not split elements that
235
+ share continuous light and perspective merely to make the file count larger;
236
+ their seams will show.
237
+
238
+ Visuals assigned to distinct meanings must remain perceptually and semantically
239
+ distinct. Reuse is acceptable only when each instance clearly communicates its
240
+ own intended meaning; unintended repetition is a defect.
241
+
242
+ For a slot matrix, cutout stack, or layered collage, read
243
+ [Asset architecture](references/asset-architecture.md). When two or more
244
+ shipping assets are needed, create `asset-plan.json` before generating anything;
245
+ record each asset's form, target rectangle, layer order, and dependencies.
246
+
247
+ ### Prompt the shipping assets
248
+
249
+ Before writing shipping prompts, read [Imagery](references/imagery.md) and
250
+ follow it exactly. The art-directed composition reference may render poster
251
+ text; shipping assets may not.
252
+
253
+ Use one call per distinct asset. After every shipping prompt and destination
254
+ filename is frozen, dispatch up to ten independent generations concurrently in
255
+ one batch; do not split a run of ten or fewer assets into smaller waves. For
256
+ more than ten, use consecutive batches of ten. Parallelism applies only to
257
+ assets without dependencies on another returned image; corrections based on a
258
+ returned image remain sequential. Orchestrate the batch with all-settled
259
+ semantics rather than fail-fast semantics so one rejected call cannot cancel or
260
+ hide the successful results.
261
+
262
+ Let the whole batch settle, preserve every successful result, and retry only the
263
+ failed calls immediately rather than rerunning or delaying the successful ones.
264
+ Retry a transient failure once with the same prompt. For a safety refusal or an
265
+ obvious prompt-specific failure, revise only that asset's prompt and retry it
266
+ once; stop automatic retries after that second attempt and continue with the
267
+ successful assets while choosing a safe substitute or reporting the missing
268
+ slot. Do not ask for several unrelated cutouts in one sheet: one call returns
269
+ one raster, not several independently editable transparent files.
270
+
271
+ Import all successful results in one post-batch pass with
272
+ `scripts/import-asset.sh GENERATED_PATH assets/NAME.png`. Check dimensions,
273
+ unwanted lettering, and obvious slot mismatch together in that same pass, then
274
+ record the prompt file and selected asset results once. Do not pause for
275
+ per-image narration, rewrite already-frozen planning files between successful
276
+ results, or introduce a second selection phase when the outputs satisfy their
277
+ slot prompts. For ten or fewer independent assets, post-generation handling
278
+ should add only local import and one consolidated inspection, not another
279
+ multi-minute reasoning stage.
280
+
281
+ ## Start new posters immediately
282
+
283
+ Before setup, if the intended target directory already exists or the workspace
284
+ contains an apparent same-title poster project, ask whether to continue that
285
+ project or create a new one. Do not treat matching titles, copy, assets, or
286
+ timestamps as authorization to modify user-owned files. Make no writes to the
287
+ existing project until the user answers; skip this confirmation only when the
288
+ user explicitly identified that existing project as the target. This collision
289
+ check happens before and overrides the immediate-setup rule below.
290
+
291
+ For a new poster in an empty or projectless workspace, make setup the first task
292
+ action. From an existing parent directory, run this skill's
293
+ `scripts/init-poster.sh TARGET`; do not set the command's working directory to a
294
+ target that does not exist yet. Do not run a second initializer.
295
+
296
+ It copies the starter plus project-local runtime scripts and reports whether a
297
+ renderer is available. Change into the target before running the remaining
298
+ commands. **Complete this before asking any discovery questions**, then open the starter's
299
+ `index.html` in the browser so the user sees the placeholder layout while you
300
+ work. Begin the trace in the same breath:
301
+
302
+ ```bash
303
+ scripts/trace.sh init "<one line about this poster>"
304
+ ```
305
+
306
+ Immediately write the active user-authored brief to `brief.md`, verbatim and in
307
+ order, including user-supplied attachment paths. Do not copy ambient UI state,
308
+ system instructions, or hidden context into it. Record it with
309
+ `scripts/trace.sh artifact brief.md P01_input`. This is the Replay's source of
310
+ truth; the trace label is not a substitute for the original request.
311
+
312
+ If no renderer is available, do not abort: the HTML is still deliverable, it just
313
+ produces no PNG. Say so once in the final handoff rather than repeatedly.
314
+
315
+ In a delegated, background, or invisible thread, initialize normally but do not
316
+ open a browser purely for preview. **Reading the render is not preview and is
317
+ never skipped.**
318
+
319
+ ## One-shot build
320
+
321
+ After setup and any necessary clarification, design and produce the poster in one
322
+ focused pass. Trace only the stable artifacts named below.
323
+
324
+ 1. Read `index.html`, `poster.json`, and the contract in `README.md`. Read other
325
+ files only when the implementation needs them. Avoid broad scans and
326
+ speculative research.
327
+ 2. **Fix the canvas.** Infer the size from the intended use, and tell the user
328
+ which one you chose and why in your first update. Write it into `poster.json`;
329
+ the root element's `width`/`height` must equal its `data-canvas-*` values.
330
+ `scripts/trace.sh decision canvas "<W>x<H>" "<why>" P09_canvas`
331
+ 3. **Complete the reference stage before planning the design or shipping
332
+ assets.** Resolve the reference mode. Under `art-directed`, save the enhanced
333
+ prompt, generate and import the composition reference, read it, and record its
334
+ prompt and image under `P02_reference`. Under `reproduce`, inspect the supplied
335
+ target as the specification. Under `off`, continue without creating reference
336
+ artifacts.
337
+ 4. **Make one integrated design decision after the reference settles.** In one
338
+ pass decide the final live HTML wording, information hierarchy, asset
339
+ topology, text and image regions, layer order, palette roles, font stacks,
340
+ and asset or region geometry. Keep every user-supplied string verbatim; name
341
+ any non-factual wording adopted from the reference in the handoff. Write the
342
+ decision once in `design-plan.md`. When two or more shipping assets are
343
+ required, also write the minimal machine-readable `asset-plan.json` from
344
+ that same decision. Record both together under `P11_asset_plan`.
345
+ When typography is a primary visual material or the editor needs stronger
346
+ alternatives, read [Font system](references/font-system.md), choose fonts by
347
+ role, and use the self-hosted kit rather than defaulting to the same system
348
+ sans/serif pair.
349
+ 5. **Generate the artwork** per the batching, retry, import, and inspection
350
+ policy above, into `assets/`. Record the completed batch once. In multi-asset
351
+ runs, every
352
+ `asset-plan.json` entry's `prompt` value must exactly match one `##` heading
353
+ in `prompts.md`, and the imported filename stem should match the asset `id`:
354
+ `scripts/trace.sh artifact prompts.md P12_generate_imagery`.
355
+ 6. **Make one complete layout patch.** One file, CSS inline, zero external
356
+ requests, absolute positioning inside the canvas, fixed px for every layout
357
+ dimension. Declare the palette and font stacks on `:root` and reference them
358
+ throughout. Do not write comments.
359
+ When the plan selects a bundled font, run `scripts/font-kit.mjs add <id>
360
+ index.html` after the HTML exists, then assign its generated
361
+ `--font-kit-<id>` variable to the intended type roles before checking fonts.
362
+ For selected Lucide icons, resolve them from the bundled runtime at build
363
+ time and inline only their SVG markup in the poster HTML; keep their size,
364
+ stroke width, and color treatment consistent, and add no runtime import.
365
+ 7. **Check the final HTML font stacks once** with
366
+ `scripts/check-fonts.sh index.html`. A missing family raises no error in the
367
+ browser, and a family marked `latin only` must not set CJK text. Fix any
368
+ failure before rendering.
369
+ 8. **Clear the scaffolding**, see below.
370
+ 9. **Check the deterministic contract**:
371
+ `scripts/check-poster.sh index.html`. Fix every failure before opening Chrome.
372
+ 10. **Run the editable-layout preflight before the first render**:
373
+ `scripts/trace.sh run P14_contract -- node <poster-building-skill>/scripts/check-contract.mjs index.html`.
374
+ It
375
+ checks fixed geometry, layer and group structure, viewport stability, font
376
+ loading, and whether live-text hit areas are blocked by another layer. Fix
377
+ every failure now; this is the cheap point to change structure.
378
+ 11. **Render**: `scripts/trace.sh run P15_render -- scripts/render-poster.sh
379
+ index.html out/poster.png`. It reads the PNG's real pixel dimensions back and
380
+ compares them with `poster.json`; a mismatch is an error.
381
+ 12. **Review, fix, and optimize the render** through the single review loop below.
382
+ Keep every real pass in `render-review.md`; do not create a second review
383
+ record for optimization. After the final render, record the consolidated
384
+ review once under `P16_read_render`, and record the current `index.html` and
385
+ `out/poster.png` under `P15_html` so Replay cannot select an obsolete version.
386
+ 13. **Wire the bundled editor runtime** without changing `index.html`:
387
+ `node scripts/wire-editor.mjs index.html`. Confirm that `editor.html`,
388
+ `layer-editor.css`, and `layer-editor.js` exist, then
389
+ `scripts/trace.sh artifact editor.html P17_editor`.
390
+ 14. **Verify the editor and exploded view** with
391
+ `scripts/trace.sh run P17_verify -- node <poster-building-skill>/scripts/verify.mjs index.html`.
392
+ The same browser
393
+ run writes the verified standalone result to `layers.html`; do not launch a
394
+ second generation pass. It must pass the
395
+ geometry-plus-pixel zero-drift, edit/export round-trip, overview/background
396
+ component extraction, one-level gallery spread, theme, scan, replay, collapse, and
397
+ standalone-render checks. After it passes, record
398
+ `scripts/trace.sh artifact layers.html P17_layers`. Read
399
+ [Editor and exploded views](references/editor-runtime.md) for setup and
400
+ commands.
401
+ 15. **Generate the Agent Design Replay** only after the poster and editing
402
+ contract pass: `node scripts/build-replay.mjs .`, then
403
+ `node scripts/verify-replay.mjs replay/index.html`. Record the `replay/`
404
+ directory under `P18_replay`, then `scripts/trace.sh finish ok`. For an
405
+ older project without those project-local scripts, run this skill's bundled
406
+ `scripts/build-replay.mjs PROJECT` and `scripts/verify-replay.mjs
407
+ PROJECT/replay/index.html` instead. Open the generated Replay once and
408
+ confirm that the seven nodes, Prompt/result pairs, render, Review, and layer
409
+ preview load. The fixed
410
+ template, not the agent, designs this page. Read
411
+ [Agent design replay](references/replay-contract.md) only when recording or
412
+ diagnosing its evidence contract.
413
+
414
+ ## Record the creative path without constraining it
415
+
416
+ The Replay is a post-build view of real artifacts. It does not add a visual
417
+ selection gate, require multiple directions, or change how the poster is
418
+ designed. Preserve the exact user request, enhanced reference prompt, plan,
419
+ shipping prompts, imported results, HTML, render review, and verified layer
420
+ output while working; the builder groups them into seven story stages.
421
+
422
+ Do not ask the model to redesign the Replay, summarize the run from memory, add
423
+ generic “why this was done” commentary, or reconstruct missing prompts. The
424
+ viewer displays recorded Agent content and marks absent evidence as missing.
425
+ Optional alternatives and selection branches appear only when the run actually
426
+ contains them.
427
+
428
+ ## Capability path
429
+
430
+ ### Project setup
431
+
432
+ - For a new poster use the flow in **Start new posters immediately** and keep the
433
+ starter's canvas, runtime, and validation contract. Its preview scaffolding is
434
+ not a composition, asset-topology, image-coverage, or text-placement guide.
435
+ - For an existing poster, preserve its file organisation, `poster.json`, and
436
+ asset paths. A copy change is only a copy change; do not re-flow the layout
437
+ along the way.
438
+ - Keep poster code within the project directory.
439
+
440
+ ### Shape the poster
441
+
442
+ - Hierarchy is the whole job. A viewer takes a poster in three passes: hook,
443
+ then claim, then detail. Build that staircase with size, weight, colour, and
444
+ white space, and make the steps genuinely different. Two elements of similar
445
+ visual weight fight each other and both lose.
446
+ - White space is structure, not what is left over.
447
+ - Build a controlled palette with explicit roles for the field, text, accents,
448
+ and semantic states. Add colours when the brand, reference, imagery, or
449
+ information encoding requires them; no colour exists merely to fill space.
450
+ - Commit to one direction — editorial, luxury, brutalist, playful, technical —
451
+ and let it drive every decision.
452
+ - Give every typeface a clear role and verify that it covers the script it sets.
453
+ Use as many families as the composition genuinely needs while preserving a
454
+ coherent hierarchy. Every step of the size ramp must be clearly different
455
+ from the last.
456
+ - Distinguish the active type system from the editor palette. A poster normally
457
+ uses two or three families, while three to five verified `:root` font roles
458
+ may be exposed as meaningful alternatives. For a poster, cover, flyer, or
459
+ campaign, do not ship only one generic sans stack unless the brief or brand
460
+ deliberately requires it.
461
+ - For vertical CJK type, set `white-space: nowrap` and centre it with flex.
462
+ `text-align` controls the vertical axis under `writing-mode`, so a fixed-width
463
+ box leaves the text against its right edge.
464
+ - Where text sits over artwork, guarantee contrast explicitly: a solid panel, a
465
+ scrim, or a directional gradient sized to the text block. Do not count on the
466
+ image being dark enough exactly where you need it.
467
+ - Do not default to a coloured or black text box: first use an existing calm region or a local scrim, and add a panel only when its material, edges, palette, and overlap make it an intentional part of the composition rather than a generic card.
468
+ - When unsure about the layout, read [Layout and typography](references/layout-typography.md).
469
+ - When typography is prominent or the available choices feel generic, read
470
+ [Font system](references/font-system.md) and use its self-hosted font kit.
471
+
472
+ ### Build the default editing contract
473
+
474
+ Every poster ships with the bundled editor runtime for human
475
+ micro-adjustments and presentation. It can drag layers; resize width, height, or
476
+ both with side and corner handles; edit text; change font size or a declared
477
+ font family; delete and undo; save a local draft; scan and spread layers into an
478
+ exploded view; and download clean edited or exploded HTML. A manually resized
479
+ text width remains fixed during later text or font-size edits so the user's
480
+ intended wrapping is preserved. It is not a second design application.
481
+
482
+ Mark each independently movable semantic unit with a unique `data-layer-id`;
483
+ keep full-bleed backdrops, textures, scrims, fixed frames, and
484
+ `data-explode-group` wrappers unmarked. Use `hf-slot` for independently editable
485
+ styled-text leaves, and use a non-nested `data-explode-group` only when it
486
+ contains at least two meaningful leaf layers; never nest layer IDs or explode
487
+ groups. Declare selectable font stacks on `:root` with a generic fallback.
488
+ Keep the prebuilt editor runtime unchanged, generate `editor.html` only with
489
+ `node scripts/wire-editor.mjs index.html`, render and validate `index.html`, and
490
+ run the bundled browser verification before delivery.
491
+
492
+ ### Deliver the standalone layer breakdown
493
+
494
+ Every poster includes `layers.html` in addition to the live breakdown in
495
+ `editor.html`. The bundled `scripts/verify.mjs` generates and verifies it in one
496
+ browser run. Groups remain whole modules by default; when fewer than five
497
+ primary content components would be visible, the same one-level gallery also
498
+ adds the grouped text leaves as companion tiles so the breakdown does not feel
499
+ empty. Do not hand-edit it, wire it back into the editor, or substitute it for
500
+ the poster render. Read
501
+ [Editor and exploded views](references/editor-runtime.md) before diagnosing a
502
+ failure.
503
+
504
+ ### Clear the scaffolding before delivery
505
+
506
+ Apply the starter cleanup contract in `README.md` and record the sweep with
507
+ `scripts/trace.sh artifact cleanup-checklist.json P14_cleanup`. Preserve the
508
+ placeholder only when the user explicitly asked to work on the starter itself.
509
+
510
+ ### Add only what this poster needs
511
+
512
+ - Before prompting generated artwork, and again when artwork comes back wrong,
513
+ read [Imagery](references/imagery.md).
514
+ - When the design calls for product matrices, collage fragments, multiple
515
+ cutouts, or foreground/background occlusion, read
516
+ [Asset architecture](references/asset-architecture.md).
517
+ - For print, pass `--dpi 300`; the scale factor is derived at 96 px/inch. Only
518
+ meaningful for a canvas sized in print dimensions. The renderer produces PNG
519
+ only; there is no PDF path.
520
+ - Add no poster-specific interactivity, media queries, or CDN.
521
+ The bundled default editor shell is the only interaction layer.
522
+
523
+ ## Read the render
524
+
525
+ **Read the rendered image yourself. A poster you have not looked at is not
526
+ finished.**
527
+
528
+ When a visual reference exists, inspect it beside the current render before
529
+ deciding to finalize. Compare the focal subject's scale and position, headline
530
+ placement, major information regions, whitespace distribution, alignment,
531
+ required supporting details, reading order, and overall visual density. Name
532
+ only material differences that can be pointed to in the pixels.
533
+
534
+ During visual review, check for missing meaningful visual support, unintended
535
+ repetition, and mismatches between visuals and their associated content. Treat
536
+ them as defects when they weaken comprehension, hierarchy, or fidelity to the
537
+ request or reference.
538
+
539
+ When the reference includes typography, reject a result that looks more
540
+ templated, crowded, or hierarchically flat; rework the type before finalizing.
541
+
542
+ The reference is a benchmark for composition, hierarchy, completeness, and
543
+ quality, not automatically a pixel-perfect target. A difference is acceptable
544
+ when it deliberately adapts the design to live editable typography or
545
+ independently movable assets, or when the current solution is visibly as strong
546
+ as or stronger than the reference while preserving the request's intent. Do not
547
+ accept an element merely because it remains technically inside the canvas: it is
548
+ still defective when it sits visibly too close to a frame, rule, image edge, or
549
+ neighboring object. Do not
550
+ excuse a weaker focal subject, enlarged dead space, missing structure, reduced
551
+ density, poorer contrast, or lost detail as artistic variation unless the
552
+ change clearly improves the whole poster.
553
+
554
+ No script can do this step. The renderer proves the dimensions are right; it
555
+ cannot prove that text is not sitting on top of text, or that the artwork
556
+ brought its own placeholder lettering — and those two are the main reasons a
557
+ poster is scrapped.
558
+
559
+ Work down the list, and only count what you can point at. Do not evaluate taste:
560
+
561
+ - **Read every piece of text on the image out loud, line by line.** Anything you
562
+ cannot read is a defect, however correct it looks in the markup
563
+ - Any text clipped, cut off by an edge, covered by another layer, or obscured
564
+ - Any placeholder copy: LOGO, TITLE, EVENT DETAILS, SUBTITLE, Lorem ipsum, or a
565
+ lone brand-shaped word. This almost always came from generated artwork rather
566
+ than from you
567
+ - Any two elements overlapping badly enough that one is unreadable
568
+ - For text intended to sit in a panel, ribbon, card, or dark field, compare its visible bounds with that carrier at pixel level; any text or backing that spills outside, misaligns with, or visibly floats above the carrier is a defect even when fully legible.
569
+ - Contrast wherever text sits over artwork. If it is short, add a solid panel, a
570
+ scrim, or a directional gradient
571
+
572
+ For every actual render-review cycle, append one numbered pass to
573
+ `render-review.md` with its concrete findings, the changes applied, and the
574
+ result confirmed by the next render. A clean render records `none` for findings
575
+ and changes and `pass` for the result. Fix, re-render, and read again until no
576
+ defect remains. A taste preference is not a defect — do not invent one so you
577
+ have something to say.
578
+
579
+ After defects are resolved, perform exactly one optimization assessment against
580
+ the reference and request. Compare visual-asset count, semantic variety,
581
+ icon-to-copy pairing, and regions that changed from image-supported to text-only.
582
+ If one clear opportunity would materially improve scanning, recall, or fidelity,
583
+ apply only the highest-impact enhancement, update the asset plan and prompts when
584
+ needed, rerender, and append the real pass. If none exists, write `Optimization:
585
+ none` in the current pass and do not rerender. Record the consolidated file once
586
+ after the final render:
587
+ `scripts/trace.sh artifact render-review.md P16_read_render`.
588
+
589
+ If the same problem survives two fixes, your diagnosis is wrong. Stop, look at
590
+ the image again, and change your assumption rather than your wording.
591
+
592
+ ## Optional PPTX handoff
593
+
594
+ The mouse-editable HTML is built in and is not an optional integration. Finish
595
+ and deliver the core design before discussing PowerPoint. When the separate
596
+ `html-to-pptx` skill is available, tell the user once that an editable PPTX can
597
+ also be exported. Do not generate it unless the user asks. After they ask, use
598
+ `html-to-pptx` with `index.html` or an editor-downloaded `*.edited.html` beside
599
+ its assets; never pass `editor.html`. PPTX availability must not delay or weaken
600
+ the HTML, editor, PNG, layer breakdown, or Replay delivery.
601
+
602
+ ## Deliver
603
+
604
+ Use these stable English labels in the user-facing handoff, regardless of the
605
+ language used inside the design:
606
+
607
+ - **Final Design** — `out/poster.png`
608
+ - **Editable Source** — `index.html`
609
+ - **Visual Editor** — `editor.html`
610
+ - **Layer Breakdown** — `layers.html`
611
+ - **Agent Design Replay** — `replay/index.html`
612
+
613
+ Give the location of each available output, the canvas size and the font
614
+ families used, and the text
615
+ you read line by line off the render. Tell the
616
+ user that `editor.html` supports mouse dragging, eight-handle width/height
617
+ resizing, double-click text editing, and scan/explode/collapse views.
618
+ Treat Replay as a local evidence artifact by default and warn before sharing it,
619
+ because it may contain the original brief, prompts, attachment paths, and design
620
+ decisions.
621
+ State anything still wrong and exactly how it falls short; do not describe it
622
+ as finished.
623
+
624
+ When you cannot finish, name the obstacle — which fact is missing, which two
625
+ requirements contradict each other, how the amount of content and the canvas size
626
+ fail to fit — and say what you need. Do not disguise a design problem as missing
627
+ information.
628
+
629
+ Keep commands, exit codes, renderer names, and other internals out of the handoff
630
+ unless the user asks.
@@ -0,0 +1,10 @@
1
+ # Third-party notices
2
+
3
+ Editable Design uses or interoperates with the following third-party software. Dependencies are installed separately and are not included in the release archive unless explicitly stated.
4
+
5
+ - `puppeteer-core` — Apache License 2.0.
6
+ - Puppeteer's transitive npm dependencies — Apache-2.0, MIT, ISC, BSD-2-Clause, BSD-3-Clause, and 0BSD packages as recorded in `scripts/package-lock.json`.
7
+ - Fontsource font packages — SIL Open Font License 1.1, as recorded in `font-kit/package-lock.json`. Generated projects copy the selected font's license alongside its WOFF2 files.
8
+ - Pillow — HPND License; optional local cutout-processing dependency.
9
+
10
+ Generated or user-supplied artwork is not included in this repository's license merely because it is processed by the skill. Bundled Editable Design runtime files retain their Apache-2.0 license when copied into generated projects.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Editable Design"
3
+ short_description: "Create editable fixed-canvas visual designs"
4
+ default_prompt: "Use $editable-design to create and render a polished fixed-canvas design with editable HTML and a layer breakdown."