@bitmagic/cli 0.1.61-dev.8 → 0.1.61

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.
@@ -667,84 +667,62 @@ bitmagic dev # long-running — start it IN THE BACKGROUND and leave it u
667
667
  \`\`\`
668
668
 
669
669
  \`bitmagic dev\` never exits: it builds, then serves the game and the editor — on this project's
670
- own fixed ports, \`http://localhost:${editorPort}/\` for a machine's first project — until interrupted.
671
- **Run it as a background task.** Run it in the foreground and you will block until the session is
672
- killed, which is the mistake worth naming because the way to avoid it is to defer the command — and
673
- deferring it is the failure this section exists to prevent.
674
-
675
- **Then say so in your reply, once:** the URL, and that they can watch there. It opens a browser tab
676
- by itself (or reuses the one from an earlier run), but you started it in the background, so
677
- everything it printed — including that URL — went into a log the person you are working for never
678
- sees. If you do not mention it, the only signal they get is a tab that may or may not have appeared.
679
-
680
- Take the URL from what \`bitmagic dev\` printed rather than assuming ${editorPort} — the port depends on
681
- how many projects this machine has, and \`.bitmagic/dev.json\` records what it actually bound.
682
-
683
- **If they ask about their phone, restart dev with \`--mobile\`.** It serves the game to their own
684
- network and writes a QR code to \`.bitmagic/mobile-qr.png\` (the URL is \`mobileUrl\` in
685
- \`.bitmagic/dev.json\`). Hand them the image, and say their phone warns once about the certificate
686
- — tap Show Details, then Visit Website.
687
-
688
- The point is not the server. The point is that the person who asked for this game is sitting in
689
- front of that page, and everything below assumes they can see what you are doing:
690
-
691
- - The game reloads by itself every time you change it, so they watch it take shape.
692
- - The assets panel lists every generation while it runs, with your prompt and progress. A forge
693
- takes twenty minutes; started with no dev view up, those twenty minutes look identical to a
694
- crash.
695
- - They can move objects in the Editor tab and screenshot a problem straight to you.
696
-
697
- Started at the end, all of that is a server nobody needed. A game that appeared in one silent hour
698
- is worth less than a rough one they watched arrive, because they could not steer the first.
670
+ own fixed ports, \`http://localhost:${editorPort}/\` for a machine's first project — until
671
+ interrupted. **Run it as a background task**, or you block until the session is killed. Take the
672
+ URL from what it printed rather than assuming ${editorPort} (\`.bitmagic/dev.json\` records what it
673
+ actually bound), and **say it in your reply, once** — you started it in the background, so
674
+ everything it printed, that URL included, went into a log your creator never sees.
675
+
676
+ Everything below assumes they can watch: the game reloads itself on every change, the assets panel
677
+ lists each generation with your prompt and progress, and they can move objects in the Editor tab
678
+ and screenshot a problem straight to you. Started at the end, all of that is a server nobody
679
+ needed — a game that appeared in one silent hour is worth less than a rough one they watched
680
+ arrive, because they could not steer the first. If they ask about their phone, restart with
681
+ \`--mobile\` (\`.claude/skills/working-with-the-creator/SKILL.md\` has the QR and the certificate
682
+ warning).
699
683
 
700
684
  If you are unsure whether one is already running, \`bitmagic reload\` says so and costs nothing.
701
685
 
702
686
  ## Layout
703
687
 
704
- - \`src/work/\` — **your game.** Everything you write lives here. \`Game.ts\` is the entry
705
- point; \`game.json\` and \`world.json\` hold configuration and scene data. The \`work\`
706
- directory name is load-bearing: the engine loads game data by fetching the literal path
707
- \`src/work/world.json\`, not through an import or an alias, so renaming or moving this
708
- directory breaks the game at runtime even though it still typechecks.
709
- - \`engine/\` — **the Bitmagic engine, read-only.** It is vendored by the CLI and replaced
710
- wholesale by \`bitmagic upgrade\`. Edits here are lost on upgrade and ignored on publish.
711
- - \`engine/LICENSE.md\` — **the engine's licence, and it is not boilerplate.** The engine is
712
- Bitmagic's IP, licensed to you under the PolyForm Shield License 1.0.0 with an additional
713
- permission: build, modify, sell and distribute games anywhere you like, including off
688
+ - \`src/work/\` — **your game.** Everything you write lives here. \`Game.ts\` is the entry point;
689
+ \`game.json\` and \`world.json\` hold configuration and scene data. The \`work\` directory name is
690
+ load-bearing: the engine fetches the literal path \`src/work/world.json\`, not an import or an
691
+ alias, so renaming or moving it breaks the game at runtime while still typechecking.
692
+ - \`engine/\` — **the Bitmagic engine, read-only.** Vendored by the CLI and replaced wholesale by
693
+ \`bitmagic upgrade\`; edits here are lost on upgrade and ignored on publish.
694
+ - \`engine/LICENSE.md\` — **the engine's licence, and not boilerplate.** PolyForm Shield 1.0.0 plus
695
+ one permission: build, modify, sell and distribute games anywhere you like, including off
714
696
  bitmagic.ai and with a modified engine. What you may not do is ship the engine *as an engine*.
715
- The licence obliges every published bundle to carry a notice, which is why both
716
- \`vite.publish*.config.js\` files have a \`banner\`: leave it alone. \`engine/THIRD-PARTY-NOTICES.md\`
717
- covers three.js, Rapier and the rest.
697
+ Every published bundle must carry a notice, which is why both \`vite.publish*.config.js\` files
698
+ have a \`banner\`: leave it alone. \`engine/THIRD-PARTY-NOTICES.md\` covers three.js and the rest.
718
699
  - \`engine/agent-docs/\` — **the engine's documentation, and the fastest thing in this project.**
719
- \`engine-api/\` is a generated signature digest covering every public engine class, method and
720
- type; the ~83 \`*.md\` files are the per-subsystem guides, including \`mechanic-*.md\` genre
721
- recipes and \`archetype-*.md\` world recipes; \`samples/\` holds compile-checked reference code.
722
- See **Finding an engine API** below. Reading \`engine/\` source to find out what exists is the one
723
- habit that turns a ten-minute change into an hour.
724
- - \`GAME-DESIGN.md\` — **what this game is.** Yours to write and keep current. Nothing compiles it,
725
- but \`bitmagic cover\` generates the cover art from it, so it is not decoration.
726
- - \`mechanics-plan.md\` — **how the game gets built, and in what order.** Yours to write and rewrite
727
- each slice: \`GAME-DESIGN.md\` says what the game *is*, this says what ships next and what is
728
- deliberately deferred. Nothing reads it but you and the human, and it is excluded from the publish
729
- fingerprint, so revising it never invalidates a passing \`bitmagic verify\`.
730
- - \`.claude/skills/\` — **shipped by the CLI, re-rendered by \`bitmagic upgrade\`:**
731
- \`planning-a-game/\` (what to build first), \`finding-engine-apis/\` (engine docs), \`generating-assets/\`,
732
- \`checking-usage/\`, \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\`. They document the CLI and the engine, so they
733
- stay current with both; edits to them are lost. Skills you add yourself are never touched.
700
+ \`engine-api/\` is a generated signature digest of every public class, method and type; the ~83
701
+ \`*.md\` files are the per-subsystem guides, including \`mechanic-*.md\` genre recipes and
702
+ \`archetype-*.md\` world recipes; \`samples/\` holds compile-checked reference code. See **Finding
703
+ an engine API** below.
704
+ - \`GAME-DESIGN.md\` — **what this game is**, and \`mechanics-plan.md\` — **how it gets built, and
705
+ in what order.** Both yours to write and rewrite; \`bitmagic cover\` reads the first. Both are
706
+ excluded from the publish fingerprint, so revising them never invalidates a passing
707
+ \`bitmagic verify\`.
708
+ - \`.claude/skills/\` — **shipped by the CLI and re-rendered by \`bitmagic upgrade\`**, so they stay
709
+ current with it. Every one is plain markdown at \`.claude/skills/<name>/SKILL.md\`, readable
710
+ whether or not your harness loads skills by itself: \`planning-a-game/\` (what to build first),
711
+ \`finding-engine-apis/\` (engine docs), \`generating-assets/\`, \`working-with-the-creator/\`,
712
+ \`theming-the-hud/\`, \`publishing-a-game/\`, \`judging-quality/\`, \`checking-usage/\`,
713
+ \`making-a-trailer/\`. Edits to them are lost; skills you add yourself are never touched.
734
714
  - \`.claude/settings.json\` — **yours**, seeded with one Stop hook that runs \`bitmagic reload\` so
735
715
  the owner's browser refreshes when you finish a turn. \`upgrade\` adds that hook if it is missing
736
716
  and changes nothing else, so your permissions and your own hooks are safe here.
737
- - \`AGENTS.md\` — this file. Yours to edit, and \`upgrade\` will never overwrite your edits. It
738
- refreshes this file only while it is still byte-identical to what the CLI wrote; once you change
739
- anything, it stops and instead tells you which sections of the current template you are missing,
740
- leaving that template in \`.bitmagic/AGENTS.md.latest\` to diff against. **If you edit this file,
741
- re-read that diff after an upgrade** — new CLI capabilities are documented here, and an edited
742
- copy will not learn about them on its own.
717
+ - \`AGENTS.md\` — this file. Yours to edit; \`upgrade\` refreshes it only while it is byte-identical
718
+ to what the CLI wrote, and otherwise keeps yours and drops the current template in
719
+ \`.bitmagic/AGENTS.md.latest\`. **If you edit this file, diff that after an upgrade** — new CLI
720
+ capabilities are documented here, and an edited copy will not learn about them on its own.
743
721
 
744
722
  \`engine/types/work-game.d.ts\` declares \`module 'work/Game.js'\`, which is how the engine
745
723
  imports your game. Renaming or removing the \`VoxelGame\` export from \`src/work/Game.ts\` still
746
- typechecks against that declaration — it only fails at runtime, when the engine actually loads
747
- the module and finds the export missing.
724
+ typechecks against that declaration — it fails only at runtime, when the engine loads the module
725
+ and finds the export missing.
748
726
 
749
727
  ## Build the smallest playable thing first
750
728
 
@@ -776,34 +754,23 @@ Then **stop and report**: what plays now, what you deliberately left out, and th
776
754
  things you would do next, in order. Let them choose. Do not publish unless they ask.
777
755
 
778
756
  The full contract — what counts as a core verb, what the engine already ships so you never build it,
779
- the \`mechanics-plan.md\` skeleton, and the loop after slice 1 — is in the \`planning-a-game\` skill.
757
+ the \`mechanics-plan.md\` skeleton, and the loop after slice 1 — is in
758
+ \`.claude/skills/planning-a-game/SKILL.md\`.
780
759
 
781
760
  ## Finding an engine API
782
761
 
783
- The vendored engine is ~240,000 lines. Reading it to discover what exists is the most expensive
784
- mistake available in this project, and it is almost never necessary. Three tiers — go down them in
785
- order and stop at the first that answers you.
786
-
787
- 1. **\`engine/agent-docs/engine-api/\`** — a generated digest of every public engine class, method,
788
- function, interface and type, signatures only, bodies omitted. Grep it for the symbol you want —
789
- \`rg -n "spawnAsset" engine/agent-docs/engine-api/\` — and read the group doc it lands in.
790
- \`engine-api.md\` is the index of the 45 groups. One grep here replaces a dozen searches in
791
- \`engine/\`.
792
- 2. **\`engine/agent-docs/*.md\`** — the prose guides, one per subsystem (\`npc-system.md\`,
793
- \`vehicle-system.md\`, \`collectible-objects.md\`, \`end-game.md\`, \`HUD_ELEMENTS.md\`, …). Read
794
- one when you need to know how a subsystem is *meant to be used*, which a signature cannot tell
795
- you. The \`finding-engine-apis\` skill carries the feature-to-doc table — use it instead of
796
- guessing filenames.
797
- 3. **\`engine/\` source** — last resort, for an implementation detail neither of the above answers.
798
-
799
- Two conventions in those docs, because they are shared with Bitmagic's hosted agent:
800
-
801
- - \`@docs foo.md\` means the file \`engine/agent-docs/foo.md\`, and \`samples/foo\` means
802
- \`engine/agent-docs/samples/foo.ts\`. Just read the file.
803
- - Where a doc tells you to run \`node bin/voxel.mjs\` or \`bin/world-edit.mjs\`, or to call
804
- \`configure_game\`, \`generate_character\` or \`runWorldForger\`, those are the hosted agent's
805
- tools and **do not exist here**. The equivalents are editing \`src/work/world.json\` directly, and
806
- \`bitmagic generate\` / \`bitmagic forge\`. Everything else in the doc still applies.
762
+ The vendored engine is ~240,000 lines, and reading it to discover what exists is the most expensive
763
+ mistake available in this project. Three tiers, in order, stopping at the first that answers you:
764
+ **\`engine/agent-docs/engine-api/\`**, a generated digest of every public class, method, function,
765
+ interface and type, signatures only — grep it (\`rg -n "spawnAsset" engine/agent-docs/engine-api/\`)
766
+ and read the group doc it lands in, with \`engine-api.md\` indexing the 45 groups; then
767
+ **\`engine/agent-docs/*.md\`**, the prose guides, for how a subsystem is *meant* to be used; then
768
+ **\`engine/\` source**, last resort. \`@docs foo.md\` in those docs means
769
+ \`engine/agent-docs/foo.md\` — just read the file.
770
+
771
+ \`.claude/skills/finding-engine-apis/SKILL.md\` carries the feature-to-doc table (use it instead of
772
+ guessing filenames) and translates the hosted-agent tools those shared docs name, none of which
773
+ exist here.
807
774
 
808
775
  Two counterweights, and they matter as much as the tiers:
809
776
 
@@ -846,9 +813,6 @@ It writes \`.bitmagic/cover.webp\` (read that file if you want to show them the
846
813
  uploads. Because it touches \`world.json\`, it invalidates a passing verify — so run it BEFORE
847
814
  \`bitmagic verify\`, not between verifying and publishing.
848
815
 
849
- Re-running it on an unchanged \`GAME-DESIGN.md\` generates nothing; it just reports the cover you
850
- already have. Rewrite the design and run it again — or pass \`--force\` — when the game has moved on
851
- from its artwork.
852
816
 
853
817
  ## Before you change movement, cameras or rotation
854
818
 
@@ -901,12 +865,11 @@ bitmagic judge # grade the verify screenshot against a quality rubric (paid,
901
865
 
902
866
  The engine is large; \`check\` is the fast way to find out whether an edit holds together.
903
867
 
904
- **Run \`bitmagic reload\` when you finish a round of edits.** \`bitmagic dev\` watches the project
905
- and reloads the browser once writes go quiet, which is a guess about you — you pause to think, and
906
- a long enough pause looks like "done". \`bitmagic reload\` replaces the guess with a fact, and it
907
- waits for the build in flight rather than showing the previous one. It exits 0 and does nothing when
908
- no \`bitmagic dev\` is running, so it is safe to run unconditionally. If this project has a Claude
909
- Code Stop hook (\`.claude/settings.json\`), that already runs it for you.
868
+ **Run \`bitmagic reload\` when you finish a round of edits.** \`bitmagic dev\` otherwise guesses
869
+ from writes going quiet, and a pause to think looks like "done"; \`reload\` also waits for the build
870
+ in flight rather than showing the previous one. It exits 0 and does nothing when no \`bitmagic dev\`
871
+ is running, so run it unconditionally — the Stop hook in \`.claude/settings.json\` does that for you
872
+ in Claude Code.
910
873
 
911
874
  **\`check\` passing does not mean the game runs.** The engine's most common failure is a clean
912
875
  compile that dies on load — a missing asset, a bad \`world.json\` value, a null container. Run
@@ -918,62 +881,31 @@ One verify runs at a time per machine: "waiting for" another project's verify is
918
881
  judge of it. After each milestone run \`bitmagic verify\` (not \`--fast\`), then \`bitmagic judge\`:
919
882
  a separate vision model grades the screenshot against \`GAME-DESIGN.md\` and prints at most three
920
883
  concrete findings (also written to \`.bitmagic/judge.json\`). Fix the ones worth fixing, confirm
921
- with one re-run, then move on — **never loop on the judge**. See the \`judging-quality/\` skill.
884
+ with one re-run, then move on — **never loop on the judge**. See
885
+ \`.claude/skills/judging-quality/SKILL.md\`.
922
886
 
923
887
  ## The human may be moving objects too
924
888
 
925
889
  \`bitmagic dev\` serves one page with two tabs — **Game**, where the owner plays, and **Editor**,
926
890
  where they click an object and drag a gizmo. A drag writes the new transform straight into
927
- \`src/work/world.json\`, one entry per object touched. So \`world.json\` is shared ground, not yours
928
- alone:
891
+ \`src/work/world.json\`. So \`world.json\` is shared ground, not yours alone:
929
892
 
930
893
  - **Re-read \`src/work/world.json\` before editing it.** The copy you read earlier in the session
931
894
  may be stale, and a whole-file rewrite from that copy silently reverts what they just placed.
932
- - **An image pasted into the conversation is probably a frame from their running game.** The dev
933
- view has a Screenshot button that copies the current frame to the clipboard, so "look at this"
934
- usually means the game as it is right now — not a reference or a mock-up.
935
- - **They can watch your generations happen — but not your failures.** Every \`bitmagic generate\`
936
- and \`bitmagic forge\` records itself in \`.bitmagic/jobs/\` while it runs, and the dev view lists
937
- those with your progress lines and the prompt you used. One that FAILS simply drops off that list,
938
- with the error reaching your terminal and nowhere else — so a failure you do not mention is one
939
- they never learn about. Those files are yours to read too: check them before starting a second
940
- generation that needs a browser, because a forge and a prop each want one and will fight over it.
941
- - Prefer changing the entries you mean to change over regenerating \`environmentObjects\`
942
- wholesale, so their placements survive your edit.
943
-
944
- ### \`.bitmagic/edit/events.jsonl\`
945
-
946
- Every editor action is appended there as one JSON object per line, and printed to \`bitmagic dev\`'s
947
- own output. Read it to find out what the human did — and, for one event, what they want YOU to do.
948
-
949
- \`\`\`
950
- {"at":"…","event":"object.moved","objectId":"inst_…","position":{"from":{…},"to":{…}}}
951
- {"at":"…","event":"object.added","objectId":"inst_…","type":"tree_oak"}
952
- {"at":"…","event":"object.deleted","objectId":"inst_…"}
953
- {"at":"…","event":"hq.requested","assetId":"asset_…","prompt":"…","command":"bitmagic generate prop …"}
954
- \`\`\`
955
-
956
- Almost every line is history — world.json already says so, and the line exists to tell you WHO
957
- changed it and from what. Nothing is expected of you.
958
-
959
- \`hq.started\` / \`hq.completed\` mean the human pressed "Generate high-quality version" and the
960
- editor ran it: an asset's mesh was regenerated and every placed instance upgraded with it. Read
961
- these rather than being surprised by an asset that changed on its own. Nothing is expected of you
962
- here either.
963
-
964
- **\`hq.requested\` is the one line that asks something of you.** It appears only when the editor
965
- could NOT run the generation — normally because nobody is logged in. It carries the command:
966
-
967
- \`\`\`
968
- bitmagic generate prop --asset <assetId> --prompt "<prompt>" --json
969
- \`\`\`
970
-
971
- That generates the mesh, voxelizes it to the asset's recorded \`fitBox\`, and upserts it under the
972
- same asset id, so every placed instance upgrades at once. They asked for it, so run it — just never
973
- twice for the same request. If it fails after the mesh was generated, the error and the JSON result
974
- carry the mesh URL — retry with \`--glb-url <url>\` to skip the step that already succeeded.
975
-
976
- The file is append-only and never rewritten, so you can re-read it from where you left off.
895
+ Prefer changing the entries you mean to change over regenerating \`environmentObjects\` wholesale.
896
+ - **An image pasted into the conversation is probably a frame from their running game**, not a
897
+ reference or a mock-up — the dev view has a Screenshot button.
898
+ - **They can watch your generations happen, but not your failures.** Each \`bitmagic generate\` and
899
+ \`bitmagic forge\` records itself in \`.bitmagic/jobs/\` and shows in the dev view while it runs;
900
+ one that FAILS drops off that list with the error reaching your terminal and nowhere else, so a
901
+ failure you do not mention is one they never learn about.
902
+ - **\`.bitmagic/edit/events.jsonl\` may be asking you for something.** Every editor action is
903
+ appended there, and almost all of them are history you can ignore — but \`hq.requested\` means
904
+ they pressed "Generate high-quality version" and the editor could not run it, and it carries the
905
+ \`bitmagic generate prop\` command to run on their behalf.
906
+
907
+ The event shapes, the rest of the editor protocol and \`bitmagic dev --mobile\` are in
908
+ \`.claude/skills/working-with-the-creator/SKILL.md\`.
977
909
 
978
910
  ## Publishing
979
911
 
@@ -982,79 +914,32 @@ bitmagic build # bundle into .bitmagic/build/index.html + .bitmagic/build/m
982
914
  bitmagic publish # verify-gate, build if needed, and ship to bitmagic.ai
983
915
  \`\`\`
984
916
 
985
- Follow this order; \`publish\` enforces it and refuses otherwise:
986
-
987
- 1. Run \`bitmagic verify\` and get it passing. It writes \`.bitmagic/verify/result.json\`,
988
- \`.bitmagic/verify/screenshot.png\` and \`.bitmagic/verify/console.log\` — or the
989
- \`.mobile\`-suffixed names when the run was a phone one.
990
-
991
- The publish thumbnail is \`.bitmagic/cover.webp\` when \`bitmagic cover\` has produced one, and
992
- that screenshot otherwise. The output names which one it used.
993
- 2. Do not edit any tracked file between verifying and publishing. Staleness is decided by a
994
- content fingerprint of every tracked file, not a clock — one edit after verifying invalidates
995
- it immediately, and an untouched project stays fresh no matter how long it has been. There is
996
- no way to check freshness except running \`bitmagic verify\` again. Git operations are safe:
997
- \`.git/\` is excluded from the fingerprint, so committing (or branching, or stashing) between
998
- verifying and publishing changes nothing. So are \`node_modules/\`, \`dist/\`, \`.bitmagic/\`
999
- and \`.vite-cache/\` — and \`GAME-DESIGN.md\`, which no build step reads, so refining the design
1000
- doc never invalidates a verify. \`bitmagic cover\` DOES, because it writes \`world.json\`.
1001
- 3. Run \`bitmagic publish\`. It rebuilds automatically if the project changed since the last
1002
- build, so a manual \`bitmagic build\` first is optional.
1003
-
1004
- **Show your creator the QR code.** Publish turns the game's URL into a scannable image. Your
1005
- output is a pipe, so it cannot be drawn in the terminal: publish writes \`.bitmagic/publish-qr.png\`
1006
- and names it (\`qrPath\` under \`--json\`). Surface that image like any artifact you made — scanning
1007
- it opens the game on a phone, and a bare URL leaves your creator retyping a game id into a browser.
1008
-
1009
- **A bare \`bitmagic publish\` does not make the game public.** Every publish uploads and
1010
- registers the game, but \`visibility\` defaults to \`private\` — reachable by URL, not listed on
1011
- bitmagic.ai. Pass \`--visibility public\` explicitly, on that call, to list it; omit it on a later
1012
- publish and the game goes back to private — its \`/play/\` page stops serving too, so a public
1013
- game you re-publish bare disappears from bitmagic.ai entirely until the next
1014
- \`--visibility public\`.
1015
-
1016
- \`--force\` overrides a **stale or failed** verify verdict, never a **missing** one — a project with
1017
- no cover art has only the verify screenshot to publish a thumbnail from, so \`bitmagic verify\` must
1018
- have produced one at least once before \`--force\` has anything to work with.
1019
-
1020
- \`--name\`/\`--description\` apply to that one publish call only; they are never written back to
1021
- \`src/work/game.json\` (doing so by hand would change the fingerprint and invalidate the verify
1022
- you just checked).
1023
-
1024
- **Category tags are part of every publish.** bitmagic.ai files the game under content categories
1025
- ("Racing", "Puzzle", …); publish auto-classifies an untagged game from its name and description.
1026
- To choose them yourself, declare \`"categories": ["Racing", "Arcade"]\` in \`worldProfileData\` —
1027
- a declared set wins on every publish, and an explicit \`[]\` means "no tags" and suppresses the
1028
- auto-classify. A tracked-file edit: declare them BEFORE \`bitmagic verify\`, not after.
1029
-
1030
- If \`bitmagic publish\` exits non-zero, branch on the exit code rather than parsing the message:
1031
-
1032
- | Code | Meaning | Fix |
1033
- |---|---|---|
1034
- | 1 | Build failed, or what was uploaded was not an engine build | Run \`bitmagic check\` to see the error, fix it. If the message names a missing \`vite.publish*.config.js\`, this project predates it — run \`bitmagic upgrade\`. Do NOT retry an unchanged bundle; the refusal is deterministic |
1035
- | 2 | Not logged in | \`bitmagic login\` |
1036
- | 3 | Verify missing, stale, or failed | \`bitmagic verify\` (then publish again, or add \`--force\` for a stale/failed record) |
1037
- | 5 | Not this game's owner, or the account/game is banned | Not self-serve — stop and report it |
1038
- | 6 | Upload or finalize failed | Usually transient (network/storage). Retry once; if it fails identically, stop and report it — this code also covers permanent failures such as an unknown game or a rejected request |
1039
- | 7 | Published, but the game did not render | The game IS live. Do NOT retry the publish — fix the game and publish again. Artifacts in \`.bitmagic/smoke/\` |
1040
-
1041
- After a successful publish the CLI loads the published game the way the portal does — in an iframe
1042
- that starts at a zero-size viewport — and fails with exit 7 if it does not render. This catches
1043
- failures that leave no other trace: a wrong Content-Type that makes the browser download the page,
1044
- a bundle that cannot find its own world.json, a canvas nothing ever draws into.
1045
-
1046
- Pass \`--skip-smoke\` to skip it. The publish still happens; it is simply not confirmed to render,
1047
- and the output says so.
1048
-
1049
- Every publish also uploads a **source archive** of this project to a **publicly readable** (though
1050
- unguessable) URL, which Bitmagic checks against the bundle and against an unmodified \`engine/\`;
1051
- findings print as \`warning:\` lines and never block a publish. Credential-shaped files (\`.env*\`,
1052
- \`*.pem\`, \`*.key\`, \`.npmrc\`, service-account JSON) are excluded and named in the output — but
1053
- that list cannot be exhaustive, so never keep a secret in this directory.
1054
-
1055
- Publishing is never refused because the vendored engine is old. When a newer engine exists,
1056
- \`bitmagic dev\` and \`bitmagic publish\` say so and suggest \`bitmagic upgrade\` — upgrade while you
1057
- are developing, when rebuilding is cheap, rather than being blocked at the moment you ship.
917
+ Publish enforces one order and refuses otherwise: get \`bitmagic verify\` passing, then **do not
918
+ edit a tracked file** between verifying and publishing, then publish (it rebuilds by itself, so a
919
+ manual \`build\` is optional). Staleness is a content fingerprint, not a clock — one edit
920
+ invalidates it immediately, an untouched project stays fresh forever, and the only way to check is
921
+ to verify again. Git operations, \`.bitmagic/\`, \`GAME-DESIGN.md\` and \`mechanics-plan.md\` are
922
+ excluded; \`bitmagic cover\` is NOT, because it writes \`world.json\`.
923
+
924
+ **A bare \`bitmagic publish\` does not make the game public.** Every publish uploads and registers
925
+ the game, but \`visibility\` defaults to \`private\` — reachable by URL, not listed on bitmagic.ai.
926
+ Pass \`--visibility public\` explicitly, on that call, to list it; omit it on a later publish and
927
+ the game goes back to private, its \`/play/\` page included.
928
+
929
+ **Show your creator the QR code.** Your output is a pipe, so publish cannot draw one in the
930
+ terminal: it writes \`.bitmagic/publish-qr.png\` and names it (\`qrPath\` under \`--json\`). Surface
931
+ that image like any artifact you made — a bare URL leaves your creator retyping a game id into a
932
+ browser.
933
+
934
+ **Every publish uploads a source archive of this project to a publicly readable (though
935
+ unguessable) URL.** Credential-shaped files (\`.env*\`, \`*.pem\`, \`*.key\`, \`.npmrc\`,
936
+ service-account JSON) are excluded and named in the output, but that list cannot be exhaustive —
937
+ so never keep a secret in this directory.
938
+
939
+ \`.claude/skills/publishing-a-game/SKILL.md\` has the rest, and you want it before you publish:
940
+ what the thumbnail comes from, category tags, \`--force\` and the one-shot \`--name\`/
941
+ \`--description\`, the post-publish render smoke test, and the exit-code table to branch on when
942
+ publish exits non-zero rather than parsing its message.
1058
943
 
1059
944
  ## The game's look is data
1060
945
 
@@ -1063,7 +948,7 @@ value: \`worldProfileData.hud.theme\` in \`src/work/world.json\`. **Never restyl
1063
948
  game code to satisfy a look request** ("rounder buttons", "orange UI", "neon glow"); use
1064
949
  \`bitmagic theme patch\` / \`set\` / \`show\` / \`check\` and read
1065
950
  \`engine/agent-docs/HUD_THEMES.md\` — its Common-asks table has a copyable patch for every frequent
1066
- request. The \`theming-the-hud/\` skill covers the loop, including verifying with
951
+ request. \`.claude/skills/theming-the-hud/SKILL.md\` covers the loop, including verifying with
1067
952
  \`.bitmagic/verify/screenshot.png\`.
1068
953
 
1069
954
  ## Generating assets
@@ -1088,24 +973,20 @@ Run \`bitmagic generate <type> --help\` for the full flags of any one.
1088
973
 
1089
974
  **Always add \`--original-prompt "<creator's request, verbatim>"\`** — to EVERY \`bitmagic\` command, \`build\`/\`verify\`/\`dev\`/\`reload\`/\`publish\` included. Never affects output; it is what counts the prompts shown on the game's public page.
1090
975
 
1091
- Four things worth knowing before you use these:
976
+ Two things before you use them:
1092
977
 
1093
- 1. **Each generation writes to \`src/work/world.json\`.** If you are also editing that file,
1094
- re-read it afterwards — your in-memory copy is stale. The command prints exactly which paths
1095
- it changed.
1096
- 2. **Use them.** Generation is what the creator's Bitmagic Pro subscription is for, and these
978
+ 1. **Use them.** Generation is what the creator's Bitmagic Pro subscription is for, and these
1097
979
  produce real, good-looking assets — a game that ships with placeholders because you were being
1098
980
  careful is the worse outcome. The one rule: do not call them **in a loop** to explore options.
1099
- Decide the prompt, ask for what you actually need, once. If the Pro allowance is exhausted and
1100
- spending beyond it has not been approved, the command refuses before generating and says so.
1101
- 3. **It only works on the game this project points at.** \`bitmagic.json\` holds the \`gameId\`;
1102
- generation is refused for a game the logged-in account does not own.
1103
- 4. **A running \`bitmagic dev\` picks the new asset up on its own.** It reloads the browser once
1104
- the write settles; \`bitmagic reload\` forces it if you want it now.
981
+ Decide the prompt, ask for what you actually need, once.
982
+ 2. **Each generation writes to \`src/work/world.json\`.** If you are also editing that file, re-read
983
+ it afterwards — your in-memory copy is stale. The command prints exactly which paths it changed.
1105
984
 
1106
985
  Three lanes make a 3D object, and the wrong one wastes a generation: \`generate model\` mints a NEW
1107
986
  asset, \`generate prop --asset <id>\` UPGRADES a placeholder, \`assets add <file>\` uploads your own.
1108
- Splats, video and \`.vox\`/\`.fbx\` still need the web editor; never reference an asset you did not make.
987
+ Splats, video and \`.vox\`/\`.fbx\` still need the web editor; never reference an asset you did not
988
+ make. \`.claude/skills/generating-assets/SKILL.md\` has the flags, the reference-image rules, what
989
+ to do after a generation, and every way one refuses.
1109
990
 
1110
991
  ## Forging a whole level
1111
992
 
@@ -1120,7 +1001,7 @@ level the game boots into, and it moves the legacy mirror fields with it. Add \`
1120
1001
  \`--platformer\` or \`--freeform\` (at most one) for a different kind of place; omit them all for
1121
1002
  natural terrain.
1122
1003
 
1123
- Five things worth knowing:
1004
+ Four things worth knowing:
1124
1005
 
1125
1006
  1. **It is slow.** A forge runs for many minutes — the level bake alone can take twenty. That is a
1126
1007
  planning fact, not a reason to avoid it: plan the run, start it, and do something else while it
@@ -1129,15 +1010,11 @@ Five things worth knowing:
1129
1010
  voxelizing is the engine's own code. The command builds and serves the project itself, so you
1130
1011
  do not need \`bitmagic dev\` running and it will not collide with one that is.
1131
1012
  3. **It rewrites large parts of \`world.json\`** (assets, environmentObjects, the level registry,
1132
- spawn points), so re-read the file afterwards if you were editing it. The command prints which
1133
- paths it changed. It also drops a \`forged-heightfield.json\` beside it, which later placements
1134
- use to sit objects on the new terrain.
1135
- 4. **Every failure says whether \`world.json\` changed** — and it only ever changes on the final
1136
- step, all at once. A failure before that leaves the project exactly as it was.
1137
- 5. **Resume rather than re-run.** The command prints a job id. If it fails after the design
1138
- succeeded, \`bitmagic forge --resume <jobId>\` skips the steps that already finished — twenty
1139
- minutes you do not spend again. The failure message says when resuming is worth it, and when the
1140
- failure is deterministic and you should change the prompt instead.
1013
+ spawn points), so re-read the file afterwards if you were editing it. It also drops a
1014
+ \`forged-heightfield.json\` beside it, which later placements use to sit objects on the terrain.
1015
+ 4. **Resume rather than re-run.** The command prints a job id, \`world.json\` only ever changes on
1016
+ the final step, and every failure says whether it did and whether
1017
+ \`bitmagic forge --resume <jobId>\` is worth it — which is twenty minutes you do not spend again.
1141
1018
 
1142
1019
  Afterwards actually walk the level in the dev view — one that loads is not necessarily one you can
1143
1020
  move through. (You should already have \`bitmagic dev\` running; a forge takes twenty minutes, and
@@ -1593,9 +1470,12 @@ Cover art and the reference image are the two generations that are **not** \`gen
1593
1470
  | \`bitmagic cover\` | the game's cover art | \`hud.startScreen.imageUrl\`, \`.bitmagic/cover.webp\`, the publish thumbnail |
1594
1471
  | \`bitmagic reference make\` | a concept image of the world | \`.bitmagic/reference/\` only — nothing in \`world.json\` |
1595
1472
 
1596
- \`cover\` writes its own prompt from \`GAME-DESIGN.md\` rather than taking one, and it skips
1597
- generating entirely when the design has not changed since the last cover. See AGENTS.md for why it
1598
- is worth running before you start implementing rather than after.
1473
+ \`cover\` writes its own prompt from \`GAME-DESIGN.md\` rather than taking one, and re-running it on
1474
+ an unchanged design generates nothing — it just reports the cover you already have. Rewrite the
1475
+ design and run it again, or pass \`--force\`, when the game has moved on from its artwork. It
1476
+ writes \`world.json\`, so it invalidates a passing verify: run it before \`bitmagic verify\`, never
1477
+ between verifying and publishing. See AGENTS.md for why it is worth running before you start
1478
+ implementing rather than after.
1599
1479
 
1600
1480
  ${GENERATE_SKILL_REFERENCE_SECTION}## Before generating
1601
1481
 
@@ -1 +1 @@
1
- {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/scaffold/project-files.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import * as path from 'path';
3
3
  import { CliError } from '../errors.js';
4
4
  import { aliasSourceDir } from './aliases.js';
5
5
  import { renderPackageJson, renderTsconfig, renderIndexHtml, renderViteConfig, renderVitePublishConfig, renderVitePublishStandaloneConfig, renderGitignore, renderBitmagicJson, renderAgentsMd, renderGameDesignMd, renderClaudeMd, renderJudgeSkill, renderThemingSkill, renderGenerateSkill, renderPlanningSkill, renderEngineApiSkill, renderUsageSkill, } from './project-files.js';
6
- import { renderSkillsReadme, renderTrailerSkill } from './skill-files.js';
6
+ import { renderCreatorCollaborationSkill, renderPublishingSkill, renderSkillsReadme, renderTrailerSkill, } from './skill-files.js';
7
7
  import { hashAgentsMd } from './agents-md.js';
8
8
  import { CLAUDE_SETTINGS_FILE, renderClaudeSettings } from './claude-settings.js';
9
9
  /**
@@ -165,6 +165,8 @@ export const PLATFORM_GENERATED_FILES = [
165
165
  ['.claude/skills/judging-quality/SKILL.md', renderJudgeSkill],
166
166
  ['.claude/skills/theming-the-hud/SKILL.md', renderThemingSkill],
167
167
  ['.claude/skills/making-a-trailer/SKILL.md', renderTrailerSkill],
168
+ ['.claude/skills/publishing-a-game/SKILL.md', renderPublishingSkill],
169
+ ['.claude/skills/working-with-the-creator/SKILL.md', renderCreatorCollaborationSkill],
168
170
  ];
169
171
  /**
170
172
  * Every template the downloaded bundle carries, in index order.
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/scaffold/project.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  * markdown, so backticks are escaped exactly as project-files.ts escapes them.
10
10
  */
11
11
  /** The `## Reference image` section of the scaffolded AGENTS.md, placed before the cover section. */
12
- export declare const AGENTS_MD_REFERENCE_SECTION = "## Reference image \u2014 offer it when the idea has a strong setting\n\nWhen the idea names a **place or a look** \u2014 a tropical island, a neon city \u2014 offer to make a\nconcept image of the world before generating anything else:\n\n```\nbitmagic reference make # a candidate lands in .bitmagic/reference/\nbitmagic reference make --from <id> --prompt \"same island, but at dusk\"\nbitmagic reference accept <id> # the human's call, never yours\n```\n\nShow the human each image file and let THEM iterate and accept. Once accepted, it is the default\nstyle reference for `generate skybox|background|block-type|image`, `bitmagic cover` and\n`bitmagic forge` (whose designer literally sees the picture) \u2014 one look across the whole game;\n`--no-reference` exempts a call, and a picture the human hands you for ONE request rides that\ncall as `--reference-image <file>` instead. Accepting prints a durable URL: paste it into\n`GAME-DESIGN.md`'s world/look section, since `.bitmagic/` is not committed and\n`bitmagic reference accept <url>` is how a fresh clone gets it back. Details are in the\n`generating-assets` skill; skip the offer when the idea has no visual identity yet.\n\n";
12
+ export declare const AGENTS_MD_REFERENCE_SECTION = "## Reference image \u2014 offer it when the idea has a strong setting\n\nWhen the idea names a **place or a look** \u2014 a tropical island, a neon city \u2014 offer to make a\nconcept image of the world before generating anything else:\n\n```\nbitmagic reference make # a candidate lands in .bitmagic/reference/\nbitmagic reference make --from <id> --prompt \"same island, but at dusk\"\nbitmagic reference accept <id> # the human's call, never yours\n```\n\nShow the human each image file and let THEM iterate and accept. Once accepted, it is the default\nstyle reference for `generate skybox|background|block-type|image`, `bitmagic cover` and\n`bitmagic forge` (whose designer literally sees the picture) \u2014 one look across the whole game;\n`--no-reference` exempts a call, and a picture the human hands you for ONE request rides that\ncall as `--reference-image <file>` instead. Accepting prints a durable URL: paste it into\n`GAME-DESIGN.md`'s world/look section, since `.bitmagic/` is not committed and\n`bitmagic reference accept <url>` is how a fresh clone gets it back. Details are in\n`.claude/skills/generating-assets/SKILL.md`; skip the offer when the idea has no visual identity\nyet.\n\n";
13
13
  /** The planning skill's step-1 paragraph on offering a reference image. */
14
14
  export declare const PLANNING_SKILL_REFERENCE_STEP1 = "If the idea describes a **place** \u2014 an island, a city, a specific look \u2014 offer a reference image\nbefore anything else is generated: `bitmagic reference make`, show the human the file it prints,\niterate with `--from <id>`, and run `accept` only when they choose one. Every skybox, block,\ncover and forge after that inherits the accepted image, so it is worth settling first \u2014 and worth\nskipping when the idea has no visual identity yet.\n\n";
15
15
  /** The planning skill's step-4 list entry (rendered between the design-doc and cover steps). */
@@ -26,8 +26,9 @@ style reference for \`generate skybox|background|block-type|image\`, \`bitmagic
26
26
  \`--no-reference\` exempts a call, and a picture the human hands you for ONE request rides that
27
27
  call as \`--reference-image <file>\` instead. Accepting prints a durable URL: paste it into
28
28
  \`GAME-DESIGN.md\`'s world/look section, since \`.bitmagic/\` is not committed and
29
- \`bitmagic reference accept <url>\` is how a fresh clone gets it back. Details are in the
30
- \`generating-assets\` skill; skip the offer when the idea has no visual identity yet.
29
+ \`bitmagic reference accept <url>\` is how a fresh clone gets it back. Details are in
30
+ \`.claude/skills/generating-assets/SKILL.md\`; skip the offer when the idea has no visual identity
31
+ yet.
31
32
 
32
33
  `;
33
34
  /** The planning skill's step-1 paragraph on offering a reference image. */
@@ -1 +1 @@
1
- {"version":3,"file":"reference-guidance.js","sourceRoot":"","sources":["../../src/scaffold/reference-guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qGAAqG;AACrG,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;CAoB1C,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;CAM7C,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;;CAE7C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B/C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GACrC,6HAA6H,CAAC"}
1
+ {"version":3,"file":"reference-guidance.js","sourceRoot":"","sources":["../../src/scaffold/reference-guidance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,qGAAqG;AACrG,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;;;;;;;;;;;;;;CAqB1C,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,8BAA8B,GAAG;;;;;;CAM7C,CAAC;AAEF,gGAAgG;AAChG,MAAM,CAAC,MAAM,8BAA8B,GAAG;;CAE7C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B/C,CAAC;AAEF,4EAA4E;AAC5E,MAAM,CAAC,MAAM,0BAA0B,GACrC,6HAA6H,CAAC"}
@@ -1,5 +1,9 @@
1
1
  /**
2
- * Shipped skills that did not fit in `project-files.ts`, which sits at the 2000-line ESLint cap.
2
+ * Shipped skills that live outside `project-files.ts` — the trailer skill because that file was at
3
+ * the 2000-line ESLint cap when it was written, and `publishing-a-game` / `working-with-the-creator`
4
+ * because they were carved out of AGENTS.md rather than added to it (see the length budget in
5
+ * `__tests__/project-files.test.ts`: a fact whose failure is loud belongs in a skill, and both of
6
+ * those were 116 lines of loud facts riding in every request's context).
3
7
  *
4
8
  * Same contract as the renderers there: each is a pure function returning the file's contents,
5
9
  * registered in `PLATFORM_GENERATED_FILES` (project.ts) so `bitmagic init` writes it and
@@ -20,3 +24,26 @@ export declare function renderSkillsReadme(): string;
20
24
  * the creator actually experiences: a prompt in, a shots.json edit out, one command to see it.
21
25
  */
22
26
  export declare function renderTrailerSkill(): string;
27
+ /**
28
+ * `.claude/skills/publishing-a-game/SKILL.md` — the whole ship-it path, and every way it refuses.
29
+ *
30
+ * This is the largest block that came out of AGENTS.md, and it is the clearest case for the split:
31
+ * an agent about to publish KNOWS it is publishing, and an agent staring at a non-zero exit code
32
+ * knows it needs the table. Neither failure is silent, so neither has to ride in every request's
33
+ * context. What stayed behind in AGENTS.md is only the part an agent cannot discover by trying:
34
+ * the verify-then-don't-edit order, that a bare publish leaves the game private, that the QR image
35
+ * exists, and that the project is uploaded to a public URL (a fact needed BEFORE a credential is
36
+ * written, not when publish is run).
37
+ */
38
+ export declare function renderPublishingSkill(): string;
39
+ /**
40
+ * `.claude/skills/working-with-the-creator/SKILL.md` — the dev view as a two-way channel.
41
+ *
42
+ * The creator is not only watching: they drag gizmos into `world.json`, they paste frames from
43
+ * their running game, and one editor action (`hq.requested`) is a job handed to the agent. Reading
44
+ * `.bitmagic/edit/events.jsonl` is a deliberate act with a stated trigger, and the event shapes are
45
+ * reference material — so the format table lives here, while AGENTS.md keeps only the three facts
46
+ * an agent must hold without being asked: re-read `world.json`, a pasted image is probably live,
47
+ * and that file may be asking you for something.
48
+ */
49
+ export declare function renderCreatorCollaborationSkill(): string;
@@ -1,5 +1,9 @@
1
1
  /**
2
- * Shipped skills that did not fit in `project-files.ts`, which sits at the 2000-line ESLint cap.
2
+ * Shipped skills that live outside `project-files.ts` — the trailer skill because that file was at
3
+ * the 2000-line ESLint cap when it was written, and `publishing-a-game` / `working-with-the-creator`
4
+ * because they were carved out of AGENTS.md rather than added to it (see the length budget in
5
+ * `__tests__/project-files.test.ts`: a fact whose failure is loud belongs in a skill, and both of
6
+ * those were 116 lines of loud facts riding in every request's context).
3
7
  *
4
8
  * Same contract as the renderers there: each is a pure function returning the file's contents,
5
9
  * registered in `PLATFORM_GENERATED_FILES` (project.ts) so `bitmagic init` writes it and
@@ -17,7 +21,8 @@ project root for the guidance an agent should read before editing this game.
17
21
  ## Which of these are yours
18
22
 
19
23
  \`planning-a-game/\`, \`finding-engine-apis/\`, \`generating-assets/\`, \`checking-usage/\`,
20
- \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\` — and
24
+ \`judging-quality/\`, \`theming-the-hud/\`, \`making-a-trailer/\`, \`publishing-a-game/\`,
25
+ \`working-with-the-creator/\` — and
21
26
  this README — are shipped by the Bitmagic CLI and **re-rendered by \`bitmagic upgrade\`**. They
22
27
  describe what the CLI and the engine can do, so they have to stay current with both; edits to them
23
28
  are lost on the next upgrade.
@@ -31,6 +36,8 @@ are lost on the next upgrade.
31
36
  | \`judging-quality/\` | a milestone is done and the game deserves an independent quality verdict — \`bitmagic judge\` |
32
37
  | \`theming-the-hud/\` | any ask about the game's LOOK — colors, fonts, rounder/sharper, outlines, glow, glossy, mobile-button styling |
33
38
  | \`making-a-trailer/\` | asked for a trailer, a highlight reel, a gameplay video, or to record gameplay — \`bitmagic trailer\` from recording to a CDN link, and how to tune the cut from prompts |
39
+ | \`publishing-a-game/\` | shipping the game to bitmagic.ai — the verify gate, public vs private, thumbnails, category tags, and every way \`bitmagic publish\` can refuse |
40
+ | \`working-with-the-creator/\` | they are editing alongside you — gizmo drags into \`world.json\`, a pasted frame from their game, \`.bitmagic/edit/events.jsonl\`, their phone |
34
41
 
35
42
  Every other directory here is yours. \`upgrade\` never opens a skill it does not ship, and never
36
43
  deletes anything under \`.claude/\`. Put project-specific guidance in a skill of your own, or in
@@ -200,4 +207,207 @@ Then: **quota check** the labels (rule of three, one standing start), render, ex
200
207
  from the changed region, compare with the previous \`-rN\`, deliver the URL.
201
208
  `;
202
209
  }
210
+ /**
211
+ * `.claude/skills/publishing-a-game/SKILL.md` — the whole ship-it path, and every way it refuses.
212
+ *
213
+ * This is the largest block that came out of AGENTS.md, and it is the clearest case for the split:
214
+ * an agent about to publish KNOWS it is publishing, and an agent staring at a non-zero exit code
215
+ * knows it needs the table. Neither failure is silent, so neither has to ride in every request's
216
+ * context. What stayed behind in AGENTS.md is only the part an agent cannot discover by trying:
217
+ * the verify-then-don't-edit order, that a bare publish leaves the game private, that the QR image
218
+ * exists, and that the project is uploaded to a public URL (a fact needed BEFORE a credential is
219
+ * written, not when publish is run).
220
+ */
221
+ export function renderPublishingSkill() {
222
+ return `---
223
+ name: publishing-a-game
224
+ description: Use when publishing this Bitmagic game to bitmagic.ai, making it public or private, building the bundle, choosing category tags or a thumbnail, sharing the game's link or QR code, or when \`bitmagic publish\` refuses or exits non-zero (verify stale, not logged in, exit 7 and the rest).
225
+ ---
226
+
227
+ # Publishing this game
228
+
229
+ \`\`\`
230
+ bitmagic build # bundle into .bitmagic/build/index.html + .bitmagic/build/manifest.json
231
+ bitmagic publish # verify-gate, build if needed, and ship to bitmagic.ai
232
+ \`\`\`
233
+
234
+ Publish enforces this order and refuses otherwise:
235
+
236
+ 1. **\`bitmagic verify\`, passing.** It writes \`.bitmagic/verify/result.json\`,
237
+ \`.bitmagic/verify/screenshot.png\` and \`.bitmagic/verify/console.log\` — or the
238
+ \`.mobile\`-suffixed names when the run was a phone one.
239
+ 2. **No edit to a tracked file between verifying and publishing.** See the fingerprint rules below.
240
+ 3. **\`bitmagic publish\`.** It rebuilds automatically if the project changed since the last build,
241
+ so a manual \`bitmagic build\` first is optional.
242
+
243
+ ## Public is a flag, not a default
244
+
245
+ Every publish uploads and registers the game, but \`visibility\` defaults to \`private\` — reachable
246
+ by URL, not listed on bitmagic.ai. Pass \`--visibility public\` explicitly, **on that call**, to
247
+ list it. Omit it on a later publish and the game goes back to private: its \`/play/\` page stops
248
+ serving too, so a public game re-published bare disappears from bitmagic.ai entirely until the next
249
+ \`--visibility public\`.
250
+
251
+ ## Show the creator the QR code
252
+
253
+ Publish turns the game's URL into a scannable image. Your output is a pipe, so it cannot be drawn
254
+ in the terminal: publish writes \`.bitmagic/publish-qr.png\` and names it (\`qrPath\` under
255
+ \`--json\`). Surface that image like any artifact you made — scanning it opens the game on a phone,
256
+ and a bare URL leaves your creator retyping a game id into a browser.
257
+
258
+ ## The thumbnail
259
+
260
+ \`.bitmagic/cover.webp\` when \`bitmagic cover\` has produced one, and the verify screenshot
261
+ otherwise. The output names which one it used. \`bitmagic cover\` writes \`world.json\`, so it
262
+ invalidates a passing verify — run it BEFORE \`bitmagic verify\`, never between verifying and
263
+ publishing.
264
+
265
+ ## What invalidates a verify, and what does not
266
+
267
+ Staleness is a **content fingerprint of every tracked file**, not a clock. One edit after verifying
268
+ invalidates it immediately; an untouched project stays fresh no matter how long it has been. There
269
+ is no way to check freshness except running \`bitmagic verify\` again.
270
+
271
+ | Safe between verify and publish | Invalidates the verify |
272
+ |---|---|
273
+ | Git operations — \`.git/\` is excluded, so commit, branch or stash freely | Any edit to a tracked file under \`src/\`, \`index.html\`, \`game.json\`, \`world.json\`, … |
274
+ | \`node_modules/\`, \`dist/\`, \`.bitmagic/\`, \`.vite-cache/\` | \`bitmagic cover\` (it writes \`world.json\`) |
275
+ | \`GAME-DESIGN.md\` and \`mechanics-plan.md\` — no build step reads them, so refining the design or the backlog is free | declaring \`categories\` or \`primaryPlatform\` (tracked-file edits — do them first) |
276
+
277
+ ## Category tags
278
+
279
+ bitmagic.ai files the game under content categories ("Racing", "Puzzle", …), and publish
280
+ auto-classifies an untagged game from its name and description. To choose them yourself, declare
281
+ \`"categories": ["Racing", "Arcade"]\` in \`worldProfileData\` — a declared set wins on every
282
+ publish, and an explicit \`[]\` means "no tags" and suppresses the auto-classify. It is a
283
+ tracked-file edit: declare them BEFORE \`bitmagic verify\`.
284
+
285
+ ## One-shot overrides
286
+
287
+ \`--name\` / \`--description\` apply to that one publish call only. They are never written back to
288
+ \`src/work/game.json\` — doing so by hand would change the fingerprint and invalidate the verify you
289
+ just checked.
290
+
291
+ \`--force\` overrides a **stale or failed** verify verdict, never a **missing** one. A project with
292
+ no cover art has only the verify screenshot to publish a thumbnail from, so \`bitmagic verify\` must
293
+ have produced one at least once before \`--force\` has anything to work with.
294
+
295
+ ## The render smoke test
296
+
297
+ After a successful publish the CLI loads the published game the way the portal does — in an iframe
298
+ that starts at a zero-size viewport — and fails with **exit 7** if it does not render. This catches
299
+ failures that leave no other trace: a wrong Content-Type that makes the browser download the page, a
300
+ bundle that cannot find its own world.json, a canvas nothing ever draws into. Artifacts land in
301
+ \`.bitmagic/smoke/\`.
302
+
303
+ \`--skip-smoke\` skips it. The publish still happens; it is simply not confirmed to render, and the
304
+ output says so.
305
+
306
+ ## When it exits non-zero
307
+
308
+ Branch on the exit code rather than parsing the message.
309
+
310
+ | Code | Meaning | Fix |
311
+ |---|---|---|
312
+ | 1 | Build failed, or what was uploaded was not an engine build | Run \`bitmagic check\` to see the error, fix it. If the message names a missing \`vite.publish*.config.js\`, this project predates it — run \`bitmagic upgrade\`. Do NOT retry an unchanged bundle; the refusal is deterministic |
313
+ | 2 | Not logged in | \`bitmagic login\` |
314
+ | 3 | Verify missing, stale, or failed | \`bitmagic verify\` (then publish again, or add \`--force\` for a stale/failed record) |
315
+ | 5 | Not this game's owner, or the account/game is banned | Not self-serve — stop and report it |
316
+ | 6 | Upload or finalize failed | Usually transient (network/storage). Retry once; if it fails identically, stop and report it — this code also covers permanent failures such as an unknown game or a rejected request |
317
+ | 7 | Published, but the game did not render | The game IS live. Do NOT retry the publish — fix the game and publish again. Artifacts in \`.bitmagic/smoke/\` |
318
+
319
+ ## Every publish uploads your source
320
+
321
+ A **source archive** of this project goes to a publicly readable (though unguessable) URL, which
322
+ Bitmagic checks against the bundle and against an unmodified \`engine/\`; findings print as
323
+ \`warning:\` lines and never block a publish. Credential-shaped files (\`.env*\`, \`*.pem\`,
324
+ \`*.key\`, \`.npmrc\`, service-account JSON) are excluded and named in the output — but that list
325
+ cannot be exhaustive, so **never keep a secret in this directory**.
326
+
327
+ ## An old engine never blocks a publish
328
+
329
+ When a newer engine exists, \`bitmagic dev\` and \`bitmagic publish\` say so and suggest
330
+ \`bitmagic upgrade\`. Upgrade while you are developing, when rebuilding is cheap, rather than being
331
+ blocked at the moment you ship.
332
+ `;
333
+ }
334
+ /**
335
+ * `.claude/skills/working-with-the-creator/SKILL.md` — the dev view as a two-way channel.
336
+ *
337
+ * The creator is not only watching: they drag gizmos into `world.json`, they paste frames from
338
+ * their running game, and one editor action (`hq.requested`) is a job handed to the agent. Reading
339
+ * `.bitmagic/edit/events.jsonl` is a deliberate act with a stated trigger, and the event shapes are
340
+ * reference material — so the format table lives here, while AGENTS.md keeps only the three facts
341
+ * an agent must hold without being asked: re-read `world.json`, a pasted image is probably live,
342
+ * and that file may be asking you for something.
343
+ */
344
+ export function renderCreatorCollaborationSkill() {
345
+ return `---
346
+ name: working-with-the-creator
347
+ description: Use when the creator is watching or editing the game alongside you — they moved or added objects in the Editor tab, pasted a screenshot of the running game, asked to try it on their phone, or pressed "Generate high-quality version"; and whenever you need to read \`.bitmagic/edit/events.jsonl\` or \`.bitmagic/jobs/\` to find out what they did.
348
+ ---
349
+
350
+ # Working alongside the creator
351
+
352
+ \`bitmagic dev\` serves one page with two tabs — **Game**, where the owner plays, and **Editor**,
353
+ where they click an object and drag a gizmo. A drag writes the new transform straight into
354
+ \`src/work/world.json\`, one entry per object touched. So \`world.json\` is shared ground, not yours
355
+ alone.
356
+
357
+ - **Re-read \`src/work/world.json\` before editing it.** The copy you read earlier in the session
358
+ may be stale, and a whole-file rewrite from that copy silently reverts what they just placed.
359
+ - **Prefer changing the entries you mean to change** over regenerating \`environmentObjects\`
360
+ wholesale, so their placements survive your edit.
361
+ - **An image pasted into the conversation is probably a frame from their running game.** The dev
362
+ view has a Screenshot button that copies the current frame to the clipboard, so "look at this"
363
+ usually means the game as it is right now — not a reference or a mock-up.
364
+
365
+ ## They can watch your generations — but not your failures
366
+
367
+ Every \`bitmagic generate\` and \`bitmagic forge\` records itself in \`.bitmagic/jobs/\` while it
368
+ runs, and the dev view lists those with your progress lines and the prompt you used. One that
369
+ FAILS simply drops off that list, with the error reaching your terminal and nowhere else — **a
370
+ failure you do not mention is one they never learn about.**
371
+
372
+ Those files are yours to read too. Check them before starting a second generation that needs a
373
+ browser: a forge and a prop each want one and will fight over it.
374
+
375
+ ## Their phone
376
+
377
+ \`bitmagic dev --mobile\` serves the game to their own network and writes a QR code to
378
+ \`.bitmagic/mobile-qr.png\` (the URL is \`mobileUrl\` in \`.bitmagic/dev.json\`). Hand them the
379
+ image, and say their phone warns once about the certificate — tap Show Details, then Visit Website.
380
+ It is a restart, not a flag you can add to a running server.
381
+
382
+ ## \`.bitmagic/edit/events.jsonl\`
383
+
384
+ Every editor action is appended there as one JSON object per line, and printed to \`bitmagic dev\`'s
385
+ own output. The file is append-only and never rewritten, so you can re-read it from where you left
386
+ off.
387
+
388
+ \`\`\`
389
+ {"at":"…","event":"object.moved","objectId":"inst_…","position":{"from":{…},"to":{…}}}
390
+ {"at":"…","event":"object.added","objectId":"inst_…","type":"tree_oak"}
391
+ {"at":"…","event":"object.deleted","objectId":"inst_…"}
392
+ {"at":"…","event":"hq.requested","assetId":"asset_…","prompt":"…","command":"bitmagic generate prop …"}
393
+ \`\`\`
394
+
395
+ | Event | What it means | Expected of you |
396
+ |---|---|---|
397
+ | \`object.moved\` / \`object.added\` / \`object.deleted\` | History. \`world.json\` already says so; the line tells you WHO changed it and from what | Nothing |
398
+ | \`hq.started\` / \`hq.completed\` | The human pressed "Generate high-quality version" and the editor ran it: an asset's mesh was regenerated and every placed instance upgraded with it | Nothing — but read these rather than being surprised by an asset that changed on its own |
399
+ | \`hq.requested\` | The editor could NOT run that generation, normally because nobody is logged in | **Run the command it carries** |
400
+
401
+ \`hq.requested\` is the one line that asks something of you:
402
+
403
+ \`\`\`
404
+ bitmagic generate prop --asset <assetId> --prompt "<prompt>" --json
405
+ \`\`\`
406
+
407
+ That generates the mesh, voxelizes it to the asset's recorded \`fitBox\`, and upserts it under the
408
+ same asset id, so every placed instance upgrades at once. They asked for it, so run it — just never
409
+ twice for the same request. If it fails after the mesh was generated, the error and the JSON result
410
+ carry the mesh URL: retry with \`--glb-url <url>\` to skip the step that already succeeded.
411
+ `;
412
+ }
203
413
  //# sourceMappingURL=skill-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsJR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"skill-files.js","sourceRoot":"","sources":["../../src/scaffold/skill-files.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsJR,CAAC;AACF,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GR,CAAC;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkER,CAAC;AACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitmagic/cli",
3
- "version": "0.1.61-dev.8",
3
+ "version": "0.1.61",
4
4
  "description": "Build Bitmagic games from your own agent tool",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Bitmagic Oy",
@@ -25,9 +25,9 @@
25
25
  "playwright-core": "^1.59.1",
26
26
  "tar": "^7.4.3",
27
27
  "ws": "^8.21.3",
28
- "@bitmagic/animation-forger": "0.1.16-dev.8",
29
- "@bitmagic/asset-core": "0.2.16-dev.8",
30
- "@bitmagic/world-forger": "0.1.21-dev.8"
28
+ "@bitmagic/animation-forger": "0.1.16",
29
+ "@bitmagic/asset-core": "0.2.16",
30
+ "@bitmagic/world-forger": "0.1.21"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@eslint/js": "^9.38.0",