@playcraft/cli 0.1.50-beta → 0.1.52

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 (406) hide show
  1. package/README.md +3 -62
  2. package/dist/agent/local-backend.js +1 -1
  3. package/dist/cli-root-help.js +0 -2
  4. package/dist/commands/build-all.js +19 -5
  5. package/dist/commands/build.js +28 -15
  6. package/dist/commands/create.js +33 -26
  7. package/dist/commands/image.js +6 -2
  8. package/dist/commands/login.js +42 -84
  9. package/dist/commands/skills.js +0 -4
  10. package/dist/commands/tools-3d.js +0 -11
  11. package/dist/commands/tools-generation.js +137 -69
  12. package/dist/commands/tools-image-context.js +29 -0
  13. package/dist/commands/tools-utils.js +12 -0
  14. package/dist/commands/tools.js +2 -2
  15. package/dist/config.js +4 -59
  16. package/dist/index.js +3 -40
  17. package/dist/remix/clone.js +0 -2
  18. package/dist/remix/init-template.js +0 -2
  19. package/dist/remix/pull.js +0 -2
  20. package/dist/remix/push.js +1 -21
  21. package/dist/utils/agent-api-client.js +30 -210
  22. package/dist/utils/image-asset-context.js +228 -0
  23. package/dist/utils/playcraft-http-client.js +4 -6
  24. package/package.json +5 -15
  25. package/project-template/.claude/agents/refs/ta-image-generation-detail.md +67 -123
  26. package/project-template/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  27. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  28. package/project-template/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  29. package/project-template/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  30. package/project-template/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  31. package/project-templates/phaser/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  32. package/project-templates/phaser/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  33. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  34. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  35. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  36. package/project-templates/phaser/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  37. package/project-templates/threejs/.claude/agents/refs/ta-image-generation-detail.md +59 -59
  38. package/project-templates/threejs/.claude/skills/playcraft-image-generation/SKILL.md +135 -63
  39. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +42 -33
  40. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +18 -20
  41. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +6 -7
  42. package/project-templates/threejs/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +39 -39
  43. package/SKILLS_REGISTRY.md +0 -149
  44. package/dist/auth/account-activation.js +0 -157
  45. package/dist/auth/messages.js +0 -30
  46. package/dist/commands/build-temp.js +0 -26
  47. package/dist/commands/platform-skills.generated.js +0 -19
  48. package/dist/commands/playable.js +0 -53
  49. package/dist/commands/tools-batch.js +0 -113
  50. package/dist/commands/video.js +0 -122
  51. package/dist/commands/workspace-runtime.js +0 -54
  52. package/dist/commands/workspace.js +0 -40
  53. package/dist/project-skills/builtin-import.js +0 -225
  54. package/dist/project-skills/commands.js +0 -77
  55. package/dist/project-skills/lifecycle.js +0 -28
  56. package/dist/project-skills/local-run.js +0 -112
  57. package/dist/project-skills/local-store.js +0 -221
  58. package/dist/project-skills/messages.js +0 -80
  59. package/dist/project-skills/reconcile.js +0 -62
  60. package/dist/project-skills/remote-cache.js +0 -51
  61. package/dist/project-skills/validation.js +0 -19
  62. package/dist/recording/messages.js +0 -40
  63. package/dist/recording/project-digest.js +0 -85
  64. package/dist/recording/recorder.js +0 -293
  65. package/dist/recording/scenario.js +0 -50
  66. package/dist/skill-registry/client.js +0 -345
  67. package/dist/skill-registry/commands.js +0 -180
  68. package/dist/skill-registry/evaluation-client.js +0 -156
  69. package/dist/skill-registry/evaluation-commands.js +0 -174
  70. package/dist/skill-registry/messages.js +0 -177
  71. package/dist/skill-registry/package.js +0 -275
  72. package/dist/skill-registry/platform-package.js +0 -100
  73. package/dist/utils/environment-endpoints.js +0 -17
  74. package/dist/utils/error-diagnostics.js +0 -20
  75. package/dist/utils/tool-operation-journal.js +0 -124
  76. package/dist/utils/video-evidence-git.js +0 -81
  77. package/dist/video-replication/client.js +0 -234
  78. package/dist/video-replication/comparison-evidence.js +0 -149
  79. package/dist/video-replication/comparison-files.js +0 -57
  80. package/dist/video-replication/comparison-log.js +0 -72
  81. package/dist/video-replication/comparison-messages.js +0 -104
  82. package/dist/video-replication/comparison-output.js +0 -63
  83. package/dist/video-replication/comparison-preflight.js +0 -66
  84. package/dist/video-replication/comparison.js +0 -230
  85. package/dist/video-replication/diagnostics.js +0 -41
  86. package/dist/video-replication/evidence.js +0 -165
  87. package/dist/video-replication/media.js +0 -112
  88. package/dist/video-replication/messages.js +0 -97
  89. package/dist/workspace/messages.js +0 -67
  90. package/dist/workspace/transfer-client.js +0 -233
  91. package/dist/workspace/transfer-errors.js +0 -48
  92. package/dist/workspace-runtime/batch/content-changes.js +0 -30
  93. package/dist/workspace-runtime/batch/control.js +0 -86
  94. package/dist/workspace-runtime/batch/deliver.js +0 -173
  95. package/dist/workspace-runtime/batch/freeze.js +0 -101
  96. package/dist/workspace-runtime/batch/generate.js +0 -249
  97. package/dist/workspace-runtime/batch/git.js +0 -40
  98. package/dist/workspace-runtime/batch/occupancy.js +0 -8
  99. package/dist/workspace-runtime/batch/policy.js +0 -70
  100. package/dist/workspace-runtime/batch/prepare.js +0 -317
  101. package/dist/workspace-runtime/batch/processes.js +0 -72
  102. package/dist/workspace-runtime/batch/records.js +0 -113
  103. package/dist/workspace-runtime/batch/routes.js +0 -61
  104. package/dist/workspace-runtime/batch/source-candidate.js +0 -86
  105. package/dist/workspace-runtime/batch/source-capture.js +0 -146
  106. package/dist/workspace-runtime/batch/source-failure.js +0 -43
  107. package/dist/workspace-runtime/batch/source-publish.js +0 -130
  108. package/dist/workspace-runtime/codex/app-server.js +0 -1065
  109. package/dist/workspace-runtime/codex/compact.js +0 -46
  110. package/dist/workspace-runtime/codex/config-toml.js +0 -107
  111. package/dist/workspace-runtime/codex/delivery-tools.js +0 -144
  112. package/dist/workspace-runtime/codex/jsonrpc-stdio.js +0 -145
  113. package/dist/workspace-runtime/codex/launcher-client.js +0 -177
  114. package/dist/workspace-runtime/codex/loopback.js +0 -146
  115. package/dist/workspace-runtime/codex/mcp-config.js +0 -39
  116. package/dist/workspace-runtime/codex/model-broker.js +0 -263
  117. package/dist/workspace-runtime/codex/native-adapter.js +0 -9
  118. package/dist/workspace-runtime/codex/permissions.js +0 -79
  119. package/dist/workspace-runtime/codex/thread-image.js +0 -38
  120. package/dist/workspace-runtime/codex/tool-response.js +0 -10
  121. package/dist/workspace-runtime/codex/ui-instructions.js +0 -4
  122. package/dist/workspace-runtime/codex/ui-tools.js +0 -203
  123. package/dist/workspace-runtime/codex/work-mode.js +0 -15
  124. package/dist/workspace-runtime/main.js +0 -10
  125. package/dist/workspace-runtime/persistence/journal.js +0 -365
  126. package/dist/workspace-runtime/persistence/native-subagents.js +0 -162
  127. package/dist/workspace-runtime/persistence/sqlite-client.js +0 -77
  128. package/dist/workspace-runtime/persistence/sqlite-worker.js +0 -1161
  129. package/dist/workspace-runtime/persistence/stopped-execution.js +0 -77
  130. package/dist/workspace-runtime/previews/diagnostics.js +0 -44
  131. package/dist/workspace-runtime/previews/output.js +0 -36
  132. package/dist/workspace-runtime/previews/publish.js +0 -283
  133. package/dist/workspace-runtime/previews/runtime-preview.js +0 -177
  134. package/dist/workspace-runtime/previews/single-file.js +0 -43
  135. package/dist/workspace-runtime/processes/managed-writes.js +0 -69
  136. package/dist/workspace-runtime/serve.js +0 -441
  137. package/dist/workspace-runtime/server/accept-operation.js +0 -61
  138. package/dist/workspace-runtime/server/asset-transfers.js +0 -63
  139. package/dist/workspace-runtime/server/auth.js +0 -21
  140. package/dist/workspace-runtime/server/connectivity.js +0 -209
  141. package/dist/workspace-runtime/server/desktop-host.js +0 -429
  142. package/dist/workspace-runtime/server/desktop-preview-config.js +0 -81
  143. package/dist/workspace-runtime/server/desktop-preview-service.js +0 -157
  144. package/dist/workspace-runtime/server/desktop-preview-static.js +0 -53
  145. package/dist/workspace-runtime/server/desktop-preview.js +0 -189
  146. package/dist/workspace-runtime/server/dispatch.js +0 -1632
  147. package/dist/workspace-runtime/server/endpoints.js +0 -21
  148. package/dist/workspace-runtime/server/execution-group.js +0 -90
  149. package/dist/workspace-runtime/server/http.js +0 -1340
  150. package/dist/workspace-runtime/server/lock.js +0 -53
  151. package/dist/workspace-runtime/server/operation-record.js +0 -33
  152. package/dist/workspace-runtime/server/rfb-watch-gate.js +0 -168
  153. package/dist/workspace-runtime/server/session-restore.js +0 -84
  154. package/dist/workspace-runtime/server/source-uploader.js +0 -138
  155. package/dist/workspace-runtime/server/submit-operation.js +0 -41
  156. package/dist/workspace-runtime/server/terminal-host.js +0 -366
  157. package/dist/workspace-runtime/server/types.js +0 -1
  158. package/dist/workspace-runtime/server/workspace-transfer.js +0 -168
  159. package/dist/workspace-runtime/verify-artifact.js +0 -59
  160. package/dist/workspace-runtime/workspaces/append-only-log.js +0 -62
  161. package/dist/workspace-runtime/workspaces/archive.js +0 -207
  162. package/dist/workspace-runtime/workspaces/artifact-events.js +0 -55
  163. package/dist/workspace-runtime/workspaces/artifact-files.js +0 -199
  164. package/dist/workspace-runtime/workspaces/artifact-receipts.js +0 -89
  165. package/dist/workspace-runtime/workspaces/artifacts.js +0 -282
  166. package/dist/workspace-runtime/workspaces/asset-library-import.js +0 -366
  167. package/dist/workspace-runtime/workspaces/asset-transfer-dependencies.js +0 -81
  168. package/dist/workspace-runtime/workspaces/asset-transfer-publish.js +0 -434
  169. package/dist/workspace-runtime/workspaces/asset-transfer-storage.js +0 -389
  170. package/dist/workspace-runtime/workspaces/attachment-content.js +0 -73
  171. package/dist/workspace-runtime/workspaces/attachments.js +0 -185
  172. package/dist/workspace-runtime/workspaces/batch-commit.js +0 -142
  173. package/dist/workspace-runtime/workspaces/binary-content.js +0 -65
  174. package/dist/workspace-runtime/workspaces/binary-write.js +0 -112
  175. package/dist/workspace-runtime/workspaces/cli-context.js +0 -23
  176. package/dist/workspace-runtime/workspaces/cli-credentials.js +0 -115
  177. package/dist/workspace-runtime/workspaces/composer-context.js +0 -147
  178. package/dist/workspace-runtime/workspaces/context-error.js +0 -2
  179. package/dist/workspace-runtime/workspaces/delivery-build.js +0 -331
  180. package/dist/workspace-runtime/workspaces/delivery-store.js +0 -168
  181. package/dist/workspace-runtime/workspaces/delivery.js +0 -64
  182. package/dist/workspace-runtime/workspaces/dependencies.js +0 -279
  183. package/dist/workspace-runtime/workspaces/developer-command.js +0 -98
  184. package/dist/workspace-runtime/workspaces/directories.js +0 -132
  185. package/dist/workspace-runtime/workspaces/directory-access.js +0 -37
  186. package/dist/workspace-runtime/workspaces/directory-attachments.js +0 -245
  187. package/dist/workspace-runtime/workspaces/directory-create.js +0 -57
  188. package/dist/workspace-runtime/workspaces/directory-maintenance.js +0 -111
  189. package/dist/workspace-runtime/workspaces/directory-mutations.js +0 -238
  190. package/dist/workspace-runtime/workspaces/directory-revisions.js +0 -56
  191. package/dist/workspace-runtime/workspaces/directory-stats.js +0 -49
  192. package/dist/workspace-runtime/workspaces/disk-snapshot.js +0 -31
  193. package/dist/workspace-runtime/workspaces/empty-template.js +0 -42
  194. package/dist/workspace-runtime/workspaces/file-content.js +0 -48
  195. package/dist/workspace-runtime/workspaces/files-search.js +0 -116
  196. package/dist/workspace-runtime/workspaces/files.js +0 -150
  197. package/dist/workspace-runtime/workspaces/git-credential-broker.js +0 -312
  198. package/dist/workspace-runtime/workspaces/git-credential-helper.js +0 -68
  199. package/dist/workspace-runtime/workspaces/git-direct-store.js +0 -155
  200. package/dist/workspace-runtime/workspaces/git.js +0 -670
  201. package/dist/workspace-runtime/workspaces/instructions.js +0 -56
  202. package/dist/workspace-runtime/workspaces/json5-edit.js +0 -313
  203. package/dist/workspace-runtime/workspaces/library-attachments.js +0 -268
  204. package/dist/workspace-runtime/workspaces/operation-log.js +0 -23
  205. package/dist/workspace-runtime/workspaces/optional-platform-skills.js +0 -14
  206. package/dist/workspace-runtime/workspaces/parameter-agent-inputs.js +0 -87
  207. package/dist/workspace-runtime/workspaces/parameter-agent-protocol.js +0 -29
  208. package/dist/workspace-runtime/workspaces/parameter-agent-store.js +0 -58
  209. package/dist/workspace-runtime/workspaces/parameter-agent.js +0 -282
  210. package/dist/workspace-runtime/workspaces/parameters.js +0 -295
  211. package/dist/workspace-runtime/workspaces/prepare.js +0 -278
  212. package/dist/workspace-runtime/workspaces/registry.js +0 -251
  213. package/dist/workspace-runtime/workspaces/remix-references.js +0 -301
  214. package/dist/workspace-runtime/workspaces/revisions.js +0 -31
  215. package/dist/workspace-runtime/workspaces/session-image.js +0 -104
  216. package/dist/workspace-runtime/workspaces/shared-git.js +0 -40
  217. package/dist/workspace-runtime/workspaces/skill-artifact-loader.js +0 -95
  218. package/dist/workspace-runtime/workspaces/skills.js +0 -191
  219. package/dist/workspace-runtime/workspaces/transfer-quota.js +0 -69
  220. package/dist/workspace-runtime/workspaces/transfer.js +0 -471
  221. package/dist/workspace-runtime/workspaces/turn-changes.js +0 -75
  222. package/dist/workspace-runtime/workspaces/video-attachments.js +0 -49
  223. package/project-template/.claude/skills/playcraft-replica-validation/SKILL.md +0 -25
  224. package/project-template/.claude/skills/playcraft-replica-validation/references/contracts.md +0 -79
  225. package/project-template/.claude/skills/playcraft-video-understanding/SKILL.md +0 -29
  226. package/project-template/.claude/skills/playcraft-video-understanding/references/contracts.md +0 -37
  227. package/project-template-v2/.claude/agents/artist.md +0 -82
  228. package/project-template-v2/.claude/agents/developer.md +0 -153
  229. package/project-template-v2/.claude/agents/game-designer.md +0 -264
  230. package/project-template-v2/.claude/agents/refs/artist-art-style-catalog.md +0 -533
  231. package/project-template-v2/.claude/agents/refs/artist-color-audio-recipes.md +0 -153
  232. package/project-template-v2/.claude/agents/refs/artist-dimension-axis.md +0 -27
  233. package/project-template-v2/.claude/agents/refs/artist-master-composite-recipes.md +0 -208
  234. package/project-template-v2/.claude/agents/refs/atom-skill-library.md +0 -81
  235. package/project-template-v2/.claude/agents/refs/developer-impl-cookbook.md +0 -432
  236. package/project-template-v2/.claude/agents/refs/framework-5-component-filter.md +0 -252
  237. package/project-template-v2/.claude/agents/refs/framework-game-feel-juice.md +0 -266
  238. package/project-template-v2/.claude/agents/refs/framework-mda.md +0 -147
  239. package/project-template-v2/.claude/agents/refs/game-designer-gameplay-sufficiency.md +0 -123
  240. package/project-template-v2/.claude/agents/refs/ta-3d-flip-recipe.md +0 -88
  241. package/project-template-v2/.claude/agents/refs/ta-atlas-deliverable-standard.md +0 -67
  242. package/project-template-v2/.claude/agents/refs/ta-batch-pipeline-recipes.md +0 -120
  243. package/project-template-v2/.claude/agents/refs/ta-image-generation-detail.md +0 -300
  244. package/project-template-v2/.claude/agents/refs/ta-image-ops-reference.md +0 -495
  245. package/project-template-v2/.claude/agents/refs/ta-pipeline-cookbook.md +0 -1141
  246. package/project-template-v2/.claude/agents/refs/ta-tools-reference.md +0 -111
  247. package/project-template-v2/.claude/agents/refs/ta-vfx-preset-catalog.md +0 -365
  248. package/project-template-v2/.claude/agents/refs/threejs-cannon-pitfalls.md +0 -412
  249. package/project-template-v2/.claude/agents/reviewer.md +0 -75
  250. package/project-template-v2/.claude/agents/technical-artist.md +0 -86
  251. package/project-template-v2/.claude/hooks/snapshot-milestone.mjs +0 -243
  252. package/project-template-v2/.claude/hooks/user-prompt.mjs +0 -133
  253. package/project-template-v2/.claude/settings.json +0 -33
  254. package/project-template-v2/.claude/skills/brainstorming/SKILL.md +0 -161
  255. package/project-template-v2/.claude/skills/brainstorming/scripts/frame-template.html +0 -270
  256. package/project-template-v2/.claude/skills/brainstorming/scripts/helper.js +0 -177
  257. package/project-template-v2/.claude/skills/brainstorming/scripts/server.cjs +0 -354
  258. package/project-template-v2/.claude/skills/brainstorming/scripts/start-server.sh +0 -148
  259. package/project-template-v2/.claude/skills/brainstorming/scripts/stop-server.sh +0 -56
  260. package/project-template-v2/.claude/skills/brainstorming/scripts/wait-for-selection.sh +0 -62
  261. package/project-template-v2/.claude/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
  262. package/project-template-v2/.claude/skills/brainstorming/visual-companion.md +0 -309
  263. package/project-template-v2/.claude/skills/playcraft-ad-psychology/SKILL.md +0 -182
  264. package/project-template-v2/.claude/skills/playcraft-art-style-guide/SKILL.md +0 -123
  265. package/project-template-v2/.claude/skills/playcraft-asset-state-sheet/SKILL.md +0 -205
  266. package/project-template-v2/.claude/skills/playcraft-audio-generation/SKILL.md +0 -280
  267. package/project-template-v2/.claude/skills/playcraft-batch-pipeline/SKILL.md +0 -184
  268. package/project-template-v2/.claude/skills/playcraft-build-optimizer/SKILL.md +0 -306
  269. package/project-template-v2/.claude/skills/playcraft-image-generation/SKILL.md +0 -298
  270. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/build-sprite-sheet.template.mjs +0 -123
  271. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/compare-style.template.mjs +0 -254
  272. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch-sprite.template.mjs +0 -324
  273. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-batch.template.mjs +0 -97
  274. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/gen-edit-variants.template.mjs +0 -118
  275. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/process-batch.template.mjs +0 -137
  276. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/prompt-cookbook.md +0 -397
  277. package/project-template-v2/.claude/skills/playcraft-image-generation/reference/validate-sprite-sheet.template.mjs +0 -296
  278. package/project-template-v2/.claude/skills/playcraft-image-ops/SKILL.md +0 -122
  279. package/project-template-v2/.claude/skills/playcraft-image-processing/SKILL.md +0 -219
  280. package/project-template-v2/.claude/skills/playcraft-masking/SKILL.md +0 -373
  281. package/project-template-v2/.claude/skills/playcraft-playable-optimization/SKILL.md +0 -161
  282. package/project-template-v2/.claude/skills/playcraft-research/SKILL.md +0 -215
  283. package/project-template-v2/.claude/skills/playcraft-skill-recommender/SKILL.md +0 -382
  284. package/project-template-v2/.claude/skills/playcraft-sprite-generation/SKILL.md +0 -423
  285. package/project-template-v2/.claude/skills/playcraft-sprite-remix/SKILL.md +0 -158
  286. package/project-template-v2/.claude/skills/playcraft-sprite-sheet/SKILL.md +0 -100
  287. package/project-template-v2/.claude/skills/playcraft-storyboard/SKILL.md +0 -167
  288. package/project-template-v2/.claude/skills/playcraft-style-qa/SKILL.md +0 -270
  289. package/project-template-v2/.claude/skills/playcraft-text-rendering/SKILL.md +0 -236
  290. package/project-template-v2/.claude/skills/playcraft-vfx-animation/SKILL.md +0 -130
  291. package/project-template-v2/.claude/skills/playwright-cli/SKILL.md +0 -390
  292. package/project-template-v2/.claude/skills/playwright-cli/references/element-attributes.md +0 -23
  293. package/project-template-v2/.claude/skills/playwright-cli/references/playwright-tests.md +0 -39
  294. package/project-template-v2/.claude/skills/playwright-cli/references/request-mocking.md +0 -87
  295. package/project-template-v2/.claude/skills/playwright-cli/references/running-code.md +0 -240
  296. package/project-template-v2/.claude/skills/playwright-cli/references/session-management.md +0 -226
  297. package/project-template-v2/.claude/skills/playwright-cli/references/spec-driven-testing.md +0 -308
  298. package/project-template-v2/.claude/skills/playwright-cli/references/storage-state.md +0 -275
  299. package/project-template-v2/.claude/skills/playwright-cli/references/test-generation.md +0 -134
  300. package/project-template-v2/.claude/skills/playwright-cli/references/tracing.md +0 -142
  301. package/project-template-v2/.claude/skills/playwright-cli/references/video-recording.md +0 -153
  302. package/project-template-v2/.claude/skills/session-analyzer/SKILL.md +0 -386
  303. package/project-template-v2/.claude/skills/session-analyzer/scripts/execution-breakdown.mjs +0 -182
  304. package/project-template-v2/.claude/skills/session-analyzer/scripts/find-turns.mjs +0 -72
  305. package/project-template-v2/.claude/skills/session-analyzer/scripts/heavy-output.mjs +0 -121
  306. package/project-template-v2/.claude/skills/session-analyzer/scripts/resolve-session.mjs +0 -102
  307. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-stats.mjs +0 -127
  308. package/project-template-v2/.claude/skills/session-analyzer/scripts/subagent-tool-timeline.mjs +0 -106
  309. package/project-template-v2/.claude/skills/session-analyzer/scripts/time-gaps.mjs +0 -128
  310. package/project-template-v2/.claude/skills/session-analyzer/scripts/turn-timeline.mjs +0 -67
  311. package/project-template-v2/.claude/snapshot.mjs +0 -263
  312. package/project-template-v2/.playcraft/skills.lock.json +0 -152
  313. package/project-template-v2/CLAUDE.md +0 -146
  314. package/project-template-v2/assets/audio/bgm/.gitkeep +0 -0
  315. package/project-template-v2/assets/audio/sfx/.gitkeep +0 -0
  316. package/project-template-v2/assets/bundles/.gitkeep +0 -0
  317. package/project-template-v2/assets/images/bg/.gitkeep +0 -0
  318. package/project-template-v2/assets/images/reference/.gitkeep +0 -0
  319. package/project-template-v2/assets/images/storyboard/.gitkeep +0 -0
  320. package/project-template-v2/assets/images/tiles/.gitkeep +0 -0
  321. package/project-template-v2/assets/images/ui/.gitkeep +0 -0
  322. package/project-template-v2/assets/images/vfx/.gitkeep +0 -0
  323. package/project-template-v2/assets/models/.gitkeep +0 -0
  324. package/project-template-v2/docs/harness/iteration-1/context-flow.md +0 -254
  325. package/project-template-v2/docs/harness/iteration-1/generate-flow.md +0 -91
  326. package/project-template-v2/docs/harness/iteration-1/ideate-flow.md +0 -214
  327. package/project-template-v2/docs/harness/iteration-1/optimize-flow.md +0 -75
  328. package/project-template-v2/docs/harness/iteration-1/wrapup-flow.md +0 -63
  329. package/project-template-v2/docs/harness/iteration-2/context-flow.md +0 -223
  330. package/project-template-v2/docs/harness/iteration-2/generate-flow.md +0 -129
  331. package/project-template-v2/docs/harness/iteration-2/ideate-flow.md +0 -267
  332. package/project-template-v2/docs/harness/iteration-2/optimize-flow.md +0 -164
  333. package/project-template-v2/docs/harness/iteration-2/wrapup-flow.md +0 -115
  334. package/project-template-v2/docs/harness/orchestrator-flow.md +0 -364
  335. package/project-template-v2/docs/project-state.json +0 -60
  336. package/project-template-v2/docs/project-state.md +0 -72
  337. package/project-template-v2/docs/standards/README.md +0 -225
  338. package/project-template-v2/docs/standards/agent-behavior-standards.md +0 -174
  339. package/project-template-v2/docs/standards/artifacts/design-brief.md +0 -19
  340. package/project-template-v2/docs/standards/artifacts/design.md +0 -22
  341. package/project-template-v2/docs/standards/artifacts/game-code.md +0 -41
  342. package/project-template-v2/docs/standards/artifacts/todo-list.md +0 -41
  343. package/project-template-v2/docs/standards/iter1-agent-behavior-standards.md +0 -343
  344. package/project-template-v2/game/index.ts +0 -18
  345. package/project-template-v2/globals.d.ts +0 -51
  346. package/project-template-v2/index.css +0 -34
  347. package/project-template-v2/index.html +0 -18
  348. package/project-template-v2/main.ts +0 -9
  349. package/project-template-v2/package.json +0 -46
  350. package/project-template-v2/skills/_shared/scripts/dispatch-clear.mjs +0 -31
  351. package/project-template-v2/skills/_shared/scripts/dispatch-set.mjs +0 -86
  352. package/project-template-v2/skills/_shared/scripts/dod-check.mjs +0 -153
  353. package/project-template-v2/skills/_shared/scripts/handoff-append.mjs +0 -70
  354. package/project-template-v2/skills/_shared/scripts/lib/validator-artifacts.mjs +0 -91
  355. package/project-template-v2/skills/_shared/scripts/pipeline/dod-config.mjs +0 -131
  356. package/project-template-v2/skills/_shared/scripts/pipeline/index.mjs +0 -80
  357. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-1-core.mjs +0 -90
  358. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-2-wrap.mjs +0 -93
  359. package/project-template-v2/skills/_shared/scripts/pipeline/iteration-3-visual.mjs +0 -23
  360. package/project-template-v2/skills/_shared/scripts/render-project-state.mjs +0 -230
  361. package/project-template-v2/skills/_shared/scripts/state-advance-stage.mjs +0 -58
  362. package/project-template-v2/skills/_shared/scripts/state-get.mjs +0 -339
  363. package/project-template-v2/skills/_shared/scripts/state-handoff.mjs +0 -39
  364. package/project-template-v2/skills/_shared/scripts/state-set.mjs +0 -94
  365. package/project-template-v2/skills/_shared/scripts/state-store.mjs +0 -783
  366. package/project-template-v2/skills/_shared/scripts/todo-add.mjs +0 -88
  367. package/project-template-v2/skills/_shared/scripts/todo-get.mjs +0 -130
  368. package/project-template-v2/skills/_shared/scripts/todo-remove.mjs +0 -33
  369. package/project-template-v2/skills/_shared/scripts/todo-set.mjs +0 -47
  370. package/project-template-v2/skills/_shared/scripts/verify-asset-code-sync.mjs +0 -268
  371. package/project-template-v2/skills/_shared/scripts/verify-env.mjs +0 -285
  372. package/project-template-v2/skills/_shared/scripts/verify-placeholders.mjs +0 -161
  373. package/project-template-v2/skills/playable-autoplay/SKILL.md +0 -176
  374. package/project-template-v2/skills/playable-autoplay/agents/openai.yaml +0 -4
  375. package/project-template-v2/skills/playable-debug/SKILL.md +0 -116
  376. package/project-template-v2/skills/playable-debug/agents/openai.yaml +0 -4
  377. package/project-template-v2/skills/playable-debug/references/debug-config.md +0 -40
  378. package/project-template-v2/skills/playable-record/SKILL.md +0 -140
  379. package/project-template-v2/skills/playable-record/scripts/lib/dev-server.mjs +0 -104
  380. package/project-template-v2/skills/playable-record/scripts/lib/record-audio-bridge.js +0 -141
  381. package/project-template-v2/skills/playable-record/scripts/record-playable.mjs +0 -425
  382. package/project-template-v2/skills/playable-record/scripts/verify-contract.mjs +0 -261
  383. package/project-template-v2/skills/playable-record/scripts/verify-firstwin.mjs +0 -398
  384. package/project-template-v2/skills/playable-record/scripts/verify-fusion.mjs +0 -322
  385. package/project-template-v2/skills/playable-record/scripts/verify-lifecycle.mjs +0 -105
  386. package/project-template-v2/skills/playable-record/scripts/verify-vlm-video.mjs +0 -230
  387. package/project-template-v2/skills/playable-validate/SKILL.md +0 -61
  388. package/project-template-v2/skills/playable-validate/validation-rules.md +0 -14
  389. package/project-template-v2/skills/playable-verify-ui/SKILL.md +0 -63
  390. package/project-template-v2/skills/playable-verify-ui/scripts/lib/__init__.py +0 -1
  391. package/project-template-v2/skills/playable-verify-ui/scripts/lib/config_expr.js +0 -218
  392. package/project-template-v2/skills/playable-verify-ui/scripts/lib/node_utils.js +0 -51
  393. package/project-template-v2/skills/playable-verify-ui/scripts/lib/profile_loader.py +0 -59
  394. package/project-template-v2/skills/playable-verify-ui/scripts/lib/report.py +0 -106
  395. package/project-template-v2/skills/playable-verify-ui/scripts/lib/runtime_contract.js +0 -116
  396. package/project-template-v2/skills/playable-verify-ui/scripts/verify_fetch_antipatterns.py +0 -59
  397. package/project-template-v2/skills/playable-verify-ui/scripts/verify_hardcoded_layout.js +0 -64
  398. package/project-template-v2/skills/playable-verify-ui/scripts/verify_runtime_contract.js +0 -58
  399. package/project-template-v2/skills/playable-verify-ui/scripts/verify_text_overlap.py +0 -333
  400. package/project-template-v2/ta-workspace/scripts/.gitkeep +0 -0
  401. package/project-template-v2/tsconfig.json +0 -20
  402. package/project-template-v2/vite.config.ts +0 -27
  403. package/project-templates/batch-locks/phaser.yaml +0 -922
  404. package/project-templates/batch-locks/threejs.yaml +0 -978
  405. package/project-templates/empty/AGENTS.md +0 -41
  406. package/project-templates/empty/gitignore +0 -33
@@ -1,308 +0,0 @@
1
- # Spec-driven testing (plan → generate → heal)
2
-
3
- End-to-end workflow for authoring and maintaining Playwright tests using `playwright-cli`. The three sections below can be used independently:
4
-
5
- - **Planning** — explore the app, produce a spec file describing what to test.
6
- - **Generate** — turn a spec into Playwright test files. Update the spec if it's vague or stale.
7
- - **Heal** — diagnose failing tests, fix the code, reconcile the spec with reality.
8
-
9
- All three lean on the same mechanic: run `npx playwright test --debug=cli` in the background, then `playwright-cli attach tw-XXXX` to drive the paused page interactively. See [playwright-tests.md](playwright-tests.md) for the debug/attach mechanics and [test-generation.md](test-generation.md) for how every `playwright-cli` action emits Playwright TypeScript.
10
-
11
- ---
12
-
13
- ## 1. Planning
14
-
15
- Goal: produce a spec file (e.g. `specs/<feature>.plan.md`) that enumerates the scenarios to test. **Always** write the spec to a file.
16
-
17
- ### 1.1 Prerequisite: workspace
18
-
19
- Check the workspace has Playwright installed before anything else:
20
-
21
- ```bash
22
- # Either of these confirms a workspace:
23
- test -f playwright.config.ts || test -f playwright.config.js
24
- npx --no-install playwright --version
25
- ```
26
-
27
- If there is no Playwright install, bootstrap one and let the user pick the defaults:
28
-
29
- ```bash
30
- npm init playwright@latest
31
- ```
32
-
33
- ### 1.2 Prerequisite: seed test
34
-
35
- A **seed test** is a minimal test that lands the page in the state every scenario starts from: navigation to the app, any required login, feature flags, etc. Scenarios assume a fresh start _after_ the seed. `--debug=cli` pauses _inside_ this test, so the seed is where every planning and generation session begins.
36
-
37
- Minimum viable seed:
38
-
39
- ```ts
40
- // tests/seed.spec.ts
41
- import { test } from '@playwright/test';
42
-
43
- test('seed', async ({ page }) => {
44
- await page.goto('https://example.com/');
45
- });
46
- ```
47
-
48
- Preferred — push navigation into a fixture so scenario tests reuse it:
49
-
50
- ```ts
51
- // tests/fixtures.ts
52
- import { test as baseTest } from '@playwright/test';
53
- export { expect } from '@playwright/test';
54
-
55
- export const test = baseTest.extend({
56
- page: async ({ page }, use) => {
57
- await page.goto('https://example.com/');
58
- await use(page);
59
- },
60
- });
61
- ```
62
-
63
- ```ts
64
- // tests/seed.spec.ts
65
- import { test } from './fixtures';
66
-
67
- test('seed', async ({ page }) => {
68
- // Fixture already navigates. This empty body tells agents where to start.
69
- });
70
- ```
71
-
72
- If no seed exists, create one that at least navigates to the app.
73
-
74
- ### 1.3 Explore the app
75
-
76
- Launch the app via the seed in the background and attach:
77
-
78
- ```bash
79
- PLAYWRIGHT_HTML_OPEN=never npx playwright test tests/seed.spec.ts --debug=cli
80
- # wait for "Debugging Instructions" and the session name tw-XXXX
81
- playwright-cli attach tw-XXXX
82
- ```
83
-
84
- Resume so the seed runs, then probe the app:
85
-
86
- ```bash
87
- playwright-cli resume # resume so that seed test runs fully
88
- playwright-cli snapshot # inventory of interactive elements
89
- playwright-cli click e5 # follow a flow
90
- playwright-cli eval "location.href" # read URL / state
91
- playwright-cli show --annotate # ask the user to point at something
92
- ```
93
-
94
- Map out:
95
-
96
- - Interactive surfaces (forms, buttons, lists, filters, modals).
97
- - Primary user journeys end-to-end.
98
- - Edge cases: empty states, validation errors, very long input, boundary values.
99
- - Persistence: reload, local/session storage, URL fragments.
100
- - Navigation: which controls change the URL, back/forward behaviour.
101
-
102
- **Important**: Do not just open the app url with playwright-cli, always go through the test to capture any custom setup done there.
103
- **Important**: Stop the background test when done exploring.
104
-
105
- ### 1.4 Write the spec file
106
-
107
- Save under `specs/<feature>.plan.md`. Use this structure:
108
-
109
- ```markdown
110
- # <Feature> Test Plan
111
-
112
- ## Application Overview
113
-
114
- <One paragraph describing what the feature does and why it matters.>
115
-
116
- ## Test Scenarios
117
-
118
- ### 1. <Group Name>
119
-
120
- **Seed:** `tests/seed.spec.ts`
121
-
122
- #### 1.1. <kebab-case-scenario-name>
123
-
124
- **File:** `tests/<group>/<kebab-case-scenario-name>.spec.ts`
125
-
126
- **Steps:**
127
-
128
- 1. <Concrete user step>
129
- - expect: <observable outcome>
130
- - expect: <another observable outcome>
131
-
132
- 2. <Next step>
133
- - expect: <outcome>
134
-
135
- #### 1.2. <next-scenario>
136
-
137
- ...
138
-
139
- ### 2. <Next Group>
140
-
141
- **Seed:** `tests/seed.spec.ts`
142
- ...
143
- ```
144
-
145
- Guidelines:
146
-
147
- - Each scenario is independent and starts from the seed's fresh state — never chain scenarios.
148
- - Scenario names are kebab-case and match the test file name (`should-add-single-todo` → `should-add-single-todo.spec.ts`).
149
- - Cover happy path, edge cases, validation, negative flows, persistence.
150
- - Write steps at the user level ("Type 'Buy milk' into the input"), not the API level ("call `fill`").
151
- - Put observable outcomes in `- expect:` bullets; each becomes an assertion during generation.
152
-
153
- ---
154
-
155
- ## 2. Generate
156
-
157
- Goal: take a spec file and produce Playwright test files. Optionally update the spec if it has drifted.
158
-
159
- ### 2.1 Inputs
160
-
161
- - **Spec file**, e.g. `specs/basic-operations.plan.md`.
162
- - **Target**: either a single scenario (e.g. `1.2`), a whole group (`1`), or all.
163
- - **Seed file**, read from the `**Seed:**` line of the scenario's group.
164
-
165
- ### 2.2 Generate one scenario
166
-
167
- For each target scenario, in sequence (never in parallel — scenarios share the seed session):
168
-
169
- ```bash
170
- PLAYWRIGHT_HTML_OPEN=never npx playwright test <seed-file> --debug=cli # background
171
- playwright-cli attach tw-XXXX
172
- # resume
173
- ```
174
-
175
- **Do not** just open the app url with playwright-cli, always go through the test to capture any custom setup done there.
176
-
177
- Walk the scenario's `Steps:` one by one with `playwright-cli`, treating the spec as the plan and the live app as the source of truth. If a step is vague ("click the button" — which button?), references an element that no longer exists, or contradicts the app's actual behaviour, use your judgement: update the spec to match what the app really does, then keep going. Editing the spec mid-generation is expected.
178
-
179
- Every action prints the equivalent Playwright TypeScript (see [test-generation.md](test-generation.md)):
180
-
181
- ```bash
182
- playwright-cli snapshot # find refs
183
- playwright-cli fill e3 "John Doe" # -> page.getByRole('textbox', {...}).fill(...)
184
- playwright-cli press Enter
185
- playwright-cli click e7
186
- ```
187
-
188
- For each `- expect:` bullet, add an explicit assertion. See [test-generation.md](test-generation.md) for details.
189
-
190
- Collect the generated code and write the test file at the path given in the spec:
191
-
192
- ```ts
193
- // spec: specs/basic-operations.plan.md
194
- // seed: tests/seed.spec.ts
195
- import { test, expect } from './fixtures'; // or '@playwright/test' if no fixtures file
196
-
197
- test.describe('Singing in and out', () => {
198
- test('should sign in', async ({ page }) => {
199
- // 1. Navigate to the application
200
- // (handled by the seed fixture)
201
-
202
- // 2. Type 'John Doe' into the username field
203
- await page.getByRole('textbox', { name: 'username' }).fill('John Doe');
204
-
205
- // 3. Type password
206
- await page.getByRole('textbox', { name: 'password' }).fill('TestPassword');
207
-
208
- // 4. Press Enter to submit
209
- await page.getByRole('textbox', { name: 'password' }).press('Enter');
210
-
211
- await expect(page.getByRole('heading')).toContainText('Welcome, John Doe!');
212
- });
213
- });
214
- ```
215
-
216
- Rules:
217
-
218
- - **One test per file.** File path, describe name, and test name come verbatim from the spec (minus the ordinal).
219
- - Prefix each numbered step with a `// N. <step text>` comment before its actions.
220
- - Use the describe group name verbatim from the spec (no `1.` ordinal).
221
- - Import from `./fixtures` if the project has one; otherwise `@playwright/test`.
222
- - **Important**: close the CLI session and stop the background test before moving to the next scenario.
223
-
224
- ### 2.3 Generate multiple scenarios
225
-
226
- Loop 2.2 over the targeted scenarios one at a time, restarting the seed between each so every test starts from a clean page. This is safe to parallelise due to unique generated session names - just make sure each test run is stopped.
227
-
228
- ### 2.4 Run generated tests
229
-
230
- After generation, run the new tests once:
231
-
232
- ```bash
233
- PLAYWRIGHT_HTML_OPEN=never npx playwright test tests/<group>/<scenario>.spec.ts
234
- ```
235
-
236
- Any failure goes to Section 3.
237
-
238
- ---
239
-
240
- ## 3. Heal
241
-
242
- Goal: fix failing tests, and update the spec if the app's intended behaviour changed.
243
-
244
- ### 3.1 Find failing tests
245
-
246
- ```bash
247
- PLAYWRIGHT_HTML_OPEN=never npx playwright test
248
- ```
249
-
250
- Record the list of failing `<file>:<line>` entries and process them one at a time. Do not attempt parallel fixes — shared state and the single CLI session make that fragile.
251
-
252
- ### 3.2 Debug one failure
253
-
254
- Run the single failing test in debug mode in the background, then attach:
255
-
256
- ```bash
257
- PLAYWRIGHT_HTML_OPEN=never npx playwright test tests/<group>/<scenario>.spec.ts:<line> --debug=cli
258
- # wait for "Debugging Instructions" and the tw-XXXX session name
259
- playwright-cli attach tw-XXXX
260
- ```
261
-
262
- The test is paused at the start. Step forward or run to until just before the failing action or assertion, then diagnose:
263
-
264
- ```bash
265
- playwright-cli snapshot # did the element change / move / rename?
266
- playwright-cli console # app-side errors?
267
- playwright-cli network # failed request? wrong payload?
268
- playwright-cli show --annotate # ask the user to point somewhere
269
- ```
270
-
271
- Common causes: selector drift, new wrapper element, label/ARIA rename, timing (transition, async load), assertion text updated in the app, test data leaking between runs.
272
-
273
- Rehearse the corrected interaction with `playwright-cli` — the generated code in the output is what you paste back into the test.
274
-
275
- ### 3.3 Apply the fix
276
-
277
- Edit the test file: update the locator, assertion, step order, or inputs to match the corrected behaviour. Stop the background debug run. Rerun the single test to confirm green.
278
-
279
- Never skip hooks or add sleeps as a fix. Never use `networkidle`.
280
-
281
- ### 3.4 Reconcile with the spec
282
-
283
- Open the spec referenced by the `// spec:` header in the test file and locate the scenario that matches the test.
284
-
285
- - **Fix was purely technical** (locator drift, better assertion shape) and the spec's user-level behaviour still matches the app → leave the spec alone.
286
- - **Fix changed user-visible steps, inputs, order, or expected outcomes** that the spec describes → update the spec to match reality. Keep the scenario id and file path stable; only the step / expect lines change.
287
- - **Unclear whether the app change is intentional** (spec is stale) **or a regression** (test was right, app is wrong) → **stop and ask the user**. Provide:
288
- - the scenario id (e.g. `2.3`),
289
- - the spec lines that no longer match,
290
- - the observed app behaviour (quote a snapshot excerpt or a concrete outcome).
291
-
292
- Only after the user answers, either update the spec (intentional change) or file/flag the test as covering a bug (regression).
293
-
294
- ### 3.5 Iteration and giving up
295
-
296
- - Fix failures one at a time; rerun after each.
297
- - If after thorough investigation you are confident the test is correct but the app is wrong _and_ the user has confirmed it's a bug: mark the test `test.fixme(...)` with a comment pointing at the user's decision or issue link. Never silently skip.
298
-
299
- ---
300
-
301
- ## Cross-references
302
-
303
- | For... | See |
304
- | ---------------------------------------------- | ---------------------------------------------- |
305
- | `--debug=cli` / attach mechanics | [playwright-tests.md](playwright-tests.md) |
306
- | How `playwright-cli` actions become TS | [test-generation.md](test-generation.md) |
307
- | Mocking requests during exploration/generation | [request-mocking.md](request-mocking.md) |
308
- | Managing the CLI browser session | [session-management.md](session-management.md) |
@@ -1,275 +0,0 @@
1
- # Storage Management
2
-
3
- Manage cookies, localStorage, sessionStorage, and browser storage state.
4
-
5
- ## Storage State
6
-
7
- Save and restore complete browser state including cookies and storage.
8
-
9
- ### Save Storage State
10
-
11
- ```bash
12
- # Save to auto-generated filename (storage-state-{timestamp}.json)
13
- playwright-cli state-save
14
-
15
- # Save to specific filename
16
- playwright-cli state-save my-auth-state.json
17
- ```
18
-
19
- ### Restore Storage State
20
-
21
- ```bash
22
- # Load storage state from file
23
- playwright-cli state-load my-auth-state.json
24
-
25
- # Reload page to apply cookies
26
- playwright-cli open https://example.com
27
- ```
28
-
29
- ### Storage State File Format
30
-
31
- The saved file contains:
32
-
33
- ```json
34
- {
35
- "cookies": [
36
- {
37
- "name": "session_id",
38
- "value": "abc123",
39
- "domain": "example.com",
40
- "path": "/",
41
- "expires": 1735689600,
42
- "httpOnly": true,
43
- "secure": true,
44
- "sameSite": "Lax"
45
- }
46
- ],
47
- "origins": [
48
- {
49
- "origin": "https://example.com",
50
- "localStorage": [
51
- { "name": "theme", "value": "dark" },
52
- { "name": "user_id", "value": "12345" }
53
- ]
54
- }
55
- ]
56
- }
57
- ```
58
-
59
- ## Cookies
60
-
61
- ### List All Cookies
62
-
63
- ```bash
64
- playwright-cli cookie-list
65
- ```
66
-
67
- ### Filter Cookies by Domain
68
-
69
- ```bash
70
- playwright-cli cookie-list --domain=example.com
71
- ```
72
-
73
- ### Filter Cookies by Path
74
-
75
- ```bash
76
- playwright-cli cookie-list --path=/api
77
- ```
78
-
79
- ### Get Specific Cookie
80
-
81
- ```bash
82
- playwright-cli cookie-get session_id
83
- ```
84
-
85
- ### Set a Cookie
86
-
87
- ```bash
88
- # Basic cookie
89
- playwright-cli cookie-set session abc123
90
-
91
- # Cookie with options
92
- playwright-cli cookie-set session abc123 --domain=example.com --path=/ --httpOnly --secure --sameSite=Lax
93
-
94
- # Cookie with expiration (Unix timestamp)
95
- playwright-cli cookie-set remember_me token123 --expires=1735689600
96
- ```
97
-
98
- ### Delete a Cookie
99
-
100
- ```bash
101
- playwright-cli cookie-delete session_id
102
- ```
103
-
104
- ### Clear All Cookies
105
-
106
- ```bash
107
- playwright-cli cookie-clear
108
- ```
109
-
110
- ### Advanced: Multiple Cookies or Custom Options
111
-
112
- For complex scenarios like adding multiple cookies at once, use `run-code`:
113
-
114
- ```bash
115
- playwright-cli run-code "async page => {
116
- await page.context().addCookies([
117
- { name: 'session_id', value: 'sess_abc123', domain: 'example.com', path: '/', httpOnly: true },
118
- { name: 'preferences', value: JSON.stringify({ theme: 'dark' }), domain: 'example.com', path: '/' }
119
- ]);
120
- }"
121
- ```
122
-
123
- ## Local Storage
124
-
125
- ### List All localStorage Items
126
-
127
- ```bash
128
- playwright-cli localstorage-list
129
- ```
130
-
131
- ### Get Single Value
132
-
133
- ```bash
134
- playwright-cli localstorage-get token
135
- ```
136
-
137
- ### Set Value
138
-
139
- ```bash
140
- playwright-cli localstorage-set theme dark
141
- ```
142
-
143
- ### Set JSON Value
144
-
145
- ```bash
146
- playwright-cli localstorage-set user_settings '{"theme":"dark","language":"en"}'
147
- ```
148
-
149
- ### Delete Single Item
150
-
151
- ```bash
152
- playwright-cli localstorage-delete token
153
- ```
154
-
155
- ### Clear All localStorage
156
-
157
- ```bash
158
- playwright-cli localstorage-clear
159
- ```
160
-
161
- ### Advanced: Multiple Operations
162
-
163
- For complex scenarios like setting multiple values at once, use `run-code`:
164
-
165
- ```bash
166
- playwright-cli run-code "async page => {
167
- await page.evaluate(() => {
168
- localStorage.setItem('token', 'jwt_abc123');
169
- localStorage.setItem('user_id', '12345');
170
- localStorage.setItem('expires_at', Date.now() + 3600000);
171
- });
172
- }"
173
- ```
174
-
175
- ## Session Storage
176
-
177
- ### List All sessionStorage Items
178
-
179
- ```bash
180
- playwright-cli sessionstorage-list
181
- ```
182
-
183
- ### Get Single Value
184
-
185
- ```bash
186
- playwright-cli sessionstorage-get form_data
187
- ```
188
-
189
- ### Set Value
190
-
191
- ```bash
192
- playwright-cli sessionstorage-set step 3
193
- ```
194
-
195
- ### Delete Single Item
196
-
197
- ```bash
198
- playwright-cli sessionstorage-delete step
199
- ```
200
-
201
- ### Clear sessionStorage
202
-
203
- ```bash
204
- playwright-cli sessionstorage-clear
205
- ```
206
-
207
- ## IndexedDB
208
-
209
- ### List Databases
210
-
211
- ```bash
212
- playwright-cli run-code "async page => {
213
- return await page.evaluate(async () => {
214
- const databases = await indexedDB.databases();
215
- return databases;
216
- });
217
- }"
218
- ```
219
-
220
- ### Delete Database
221
-
222
- ```bash
223
- playwright-cli run-code "async page => {
224
- await page.evaluate(() => {
225
- indexedDB.deleteDatabase('myDatabase');
226
- });
227
- }"
228
- ```
229
-
230
- ## Common Patterns
231
-
232
- ### Authentication State Reuse
233
-
234
- ```bash
235
- # Step 1: Login and save state
236
- playwright-cli open https://app.example.com/login
237
- playwright-cli snapshot
238
- playwright-cli fill e1 "user@example.com"
239
- playwright-cli fill e2 "password123"
240
- playwright-cli click e3
241
-
242
- # Save the authenticated state
243
- playwright-cli state-save auth.json
244
-
245
- # Step 2: Later, restore state and skip login
246
- playwright-cli state-load auth.json
247
- playwright-cli open https://app.example.com/dashboard
248
- # Already logged in!
249
- ```
250
-
251
- ### Save and Restore Roundtrip
252
-
253
- ```bash
254
- # Set up authentication state
255
- playwright-cli open https://example.com
256
- playwright-cli eval "() => { document.cookie = 'session=abc123'; localStorage.setItem('user', 'john'); }"
257
-
258
- # Save state to file
259
- playwright-cli state-save my-session.json
260
-
261
- # ... later, in a new session ...
262
-
263
- # Restore state
264
- playwright-cli state-load my-session.json
265
- playwright-cli open https://example.com
266
- # Cookies and localStorage are restored!
267
- ```
268
-
269
- ## Security Notes
270
-
271
- - Never commit storage state files containing auth tokens
272
- - Add `*.auth-state.json` to `.gitignore`
273
- - Delete state files after automation completes
274
- - Use environment variables for sensitive data
275
- - By default, sessions run in-memory mode which is safer for sensitive operations