KUMODeck
EN

スターターテンプレート

スターターテンプレートは、Webアプリ(web-app)、小さなゲーム5つ、サーバーのプログラムの雛形(functions-starter)です。テンプレートがなくても使えます。自分のプロジェクトのフォルダでkumodeck initを実行するか、AIエージェントに頼んで整えてください。

Webアプリ#

web-appは、多くのAIツールが作るのと同じ形(React + Vite + TypeScript + Tailwind)の、小さな自分専用のメモアプリです。KUMODeckのログイン(まずゲスト、あとからメール)、自分のサーバーのプログラムとデータベース(Functions + D1。メモは本人にしか見えません)、共有・再読み込みできる本物のページのURL(/notes/123。"web": { "spaFallback": true })が入っています。

kumodeck create my-app --template web-app && cd my-app
kumodeck init                                    # 公開鍵を public/kumo-config.js に書き込みます
npm install && kumodeck config push
npm run build                                   # → dist/(kumo.json に deployDir "dist" が保存されています)
kumodeck deploy --env development

サーバーのプログラム(kumodeck functions deploy)と手元での開発は、テンプレートのREADME.mdとAGENTS.mdにあります。

ゲーム#

コピーして、作り変えて、コマンド1つで公開できる、完成した遊べるゲームです。どれもゲストログイン、自己ベストを覚えるクラウドセーブ、挑戦状つきのShare on Xボタンを使っていて、オフラインでも動き続けます。ランキングが欲しくなったらAIエージェント(Claude Code・Codex・Cursorなど)に頼んでください。各テンプレートに入っているランキングのSkillが、自分のデータベースとFunctionsの上に組み立てます。

テンプレートエンジンゲームマルチプレイ
vanilla-canvasなし(素の<canvas>)Star Catch — 30秒のアーケード—
phaserPhaser 4.2.1Dune Runner — エンドレスラン—
pixiPixiJS 8.21.0Bubble Pop — コンボタップ—
threethree.js 0.186.1Orb Garden — 3Dでボールを転がして集める共有の庭(最大8人)
multiplayer-starterなしCursor Party — ロビー、部屋コード、位置の同期、共有状態あり

ゲームのテンプレートはビルド不要です。エンジンはバージョンを固定したCDNのURLから読み込み、public/フォルダがそのままサイトになります。

使い方#

kumodeck create my-runner --template phaser && cd my-runner
kumodeck init                                    # 公開鍵を public/kumo-config.js に書き込みます
kumodeck config push --env development
kumodeck deploy --env development                # kumo.json に deployDir "public" が保存されています
kumodeck share on                                # 任意: Xのカードと共有リンク

--templateを省くとvanilla-canvasになります。createはCLIに同梱されたテンプレートからコピーするので、オフラインでも動き、サーバーには触りません。プロジェクトを作るのは次のinitです。ログイン済みならkumodeck create my-game --initで両方をまとめて実行できます。

kumo.config.jsonはpublic/の外に置くので、プロジェクトの詳細がプレイヤーに配信されることはありません。バンドラーを追加した場合は、その出力フォルダをデプロイします(kumodeck deploy dist、またはkumo.jsonのdeployDirを変更)。

構成#

my-game/
  kumo.config.json    マスターデータ(デプロイしない)
  README.md
  AGENTS.md           AIのコーディングアシスタント向けの説明(コマンド・規則・SDKの例。デプロイしない)
  CLAUDE.md           `@AGENTS.md`の1行だけ。Claude Codeも同じファイルを読む
  GEMINI.md           `@./AGENTS.md`の1行だけ。Gemini CLIも同じファイルを読む
  .agents/skills/     AIエージェント向けのSkill(レシピ)。一覧はINDEX.md(例: leaderboard/SKILL.md。デプロイしない)
  .claude/skills/     同じSkill(Claude Codeが見る所)
  public/             そのままデプロイする
    index.html
    kumo-boot.js      APIを見つけ、SDKを読み込み、ログインする。プレイを止めない
    kumo-config.js    公開してよい: apiUrl + 公開鍵
    game.js

kumo-config.jsには環境ごとに1本ずつ公開鍵を置きます。REPLACE_MEが残っている間はkumodeck initが書き込みます(自分で書き換えたファイルには触りません)。kumo-boot.jsは、<slug>--devのURLとlocalhostではdevelopmentの鍵を、それ以外ではproductionの鍵を選びます。1本だけのprojectKey: 'pk_…'(以前の書き方)も引き続き使えます。

public/kumo-config.js
window.KUMO_CONFIG = {
  apiUrl: '',                                  // '' = ページを配信している場所(kumodeck deploy ならこれで正しい)
  projectKeys: {
    development: 'pk_dev_…',
    production: 'pk_live_…'                    // 公開鍵なのでブラウザに置いてよい。sk_ の鍵は絶対に置かない
  }
};

AGENTS.mdは、アシスタント(Claude Code、Codex、Cursorなど)にゲームでの作業のしかたを伝えます。打つコマンド、アカウントはあなたがターミナルで作ること(アシスタントはパスワードを扱わない)、プレイヤーにバックエンドの名前を見せないこと、などです。Skill(一覧はINDEX.md)への案内も入っています。同じものが.agents/skills/(Codex・Cursorなど多くのエージェントが見る所)と.claude/skills/(Claude Code)にあります。ほかのファイルと同じように自由に書き換えてください。

Share on X#

どのテンプレートにも、結果画面にShare on Xボタンがあります。プレイヤーのスコアを付けてkumo.share({ kind: 'challenge', score })を呼びます。その投稿からゲームを開いた人には、メニューに「Challenge: beat N!」が出ます(kumo.share.incoming())。オフラインやシェアが OFF のときも、共有IDが付かないだけでXの投稿画面は開きます。kumo.config.jsonでは何も ON にしていません。カード画像や共有リンクが欲しくなったらkumodeck share onを実行してください。Xでのシェアを参照してください。

どのテンプレートでも使えるURLフラグ: ?player=2(同じブラウザで2人目のゲスト。マルチプレイを自分相手に試せます)、?offline=1、kumo-config.jsを上書きする?api=…&key=…。

サーバーのプログラム#

functions-starterはゲームではなく、アプリにもゲームにも使える、自分のサーバーのプログラムとSQLデータベースの出発点です。呼び出した利用者(APIではplayer)を確認し、自分のデータベースに書き込み、1時間ごとのジョブを動かす小さなAPIです。Functionsを参照してください。