npx skills add https://github.com/opusgamelabs/game-creator --skill make-game从零开始逐步构建一个完整的浏览器游戏。此命令将引导您完成整个流程——从空文件夹到已部署、可盈利的游戏。无需游戏开发经验。
您将获得:
WLT_API_KEY 时的 3D 游戏)npm testnpm run deploy)质量保证融入每一步——每个修改代码的步骤都会运行构建验证、通过 Playwright MCP 进行视觉审查,并自动修复发现的问题。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
您是一个编排器。您不直接编写游戏代码。 您的工作是:
TaskCreate/TaskUpdate 创建和追踪流程任务Task 子代理留在主线程中的内容:
交给子代理的内容(通过 Task 工具):
每个子代理接收:步骤说明、相关技能名称、项目路径、引擎类型、开发服务器端口和游戏概念描述。
在每个修改代码的步骤(步骤 1、1.5、2、3)之后运行。步骤 3.5 运行其自己的测试验证。将所有 QA 工作委托给子代理,以最小化主线程上下文使用。
完整的 QA 子代理指令、编排器流程和自动修复逻辑,请参见 verification-protocol.md。
解析 $ARGUMENTS 以确定游戏概念。参数可以有两种形式:
2d(Phaser——横版卷轴、平台游戏、街机)或 3d(Three.js——第一人称、第三人称、开放世界)。如果未指定,请询问用户。对于 3D 游戏,检查这些 API 密钥——首先在 .env 中(test -f .env && grep -q '^KEY_NAME=.' .env),然后在环境变量中:
MESHY_API_KEY — 用于通过 Meshy AI 生成自定义 3D 角色/道具模型(提示流程请参见 tweet-pipeline.md)WLT_API_KEY / WORLDLABS_API_KEY — 用于通过 World Labs 高斯溅射生成逼真的 3D 环境。如果未设置,请与 MESHY_API_KEY 一起询问用户:我还可以使用 World Labs 生成逼真的 3D 环境。粘贴您的密钥,格式如:
WORLDLABS_API_KEY=your-key-here— 或者输入 "skip" 以使用基本几何体。(密钥会自动保存到 .env 并从本次对话中隐藏。)
完整的推文获取、解析、创意抽象、名人检测和 Meshy API 密钥流程,请参见 tweet-pipeline.md。
使用 TaskCreate 预先创建所有流程任务:
这使用户能够随时全面了解流程进度。质量保证(构建、运行时、视觉审查、自动修复)内置于每个步骤中,而不是一个单独的任务。
创建任务后,在项目根目录中创建 output/ 目录,并将 output/autofix-history.json 初始化为空数组 []。此文件追踪整个流程中的所有自动修复尝试,以便修复子代理避免重复失败的修复方法。
将任务 1 标记为 in_progress。
完整的步骤 1 基础设施设置、子代理提示模板、progress.md 创建和用户消息,请参见 step-details.md。
子代理返回后,运行验证协议(参见 verification-protocol.md)。
将任务 1 标记为 completed。
在继续之前等待用户确认。
始终为 2D 和 3D 游戏运行此步骤。 2D 游戏获得像素艺术精灵;3D 游戏获得 GLB 模型和动画角色。
将任务 2 标记为 in_progress。
完整的步骤 1.5 角色库检查、分级回退、2D 子代理提示、3D 资源流程、3D 子代理提示和用户消息,请参见 step-details.md。
子代理返回后,运行验证协议(参见 verification-protocol.md)。
将任务 2 标记为 completed。
在继续之前等待用户确认。
将任务 3 标记为 in_progress。
完整的步骤 2 子代理提示模板(以壮观效果为先的设计、开场时刻、连击系统、设计审计、强度校准)和用户消息,请参见 step-details.md。
子代理返回后,运行验证协议(参见 verification-protocol.md)。
将任务 3 标记为 completed。
直接进行到步骤 2.5 — 无需用户确认(宣传视频是非破坏性的且速度快)。
将任务 4 标记为 in_progress。
完整的步骤 2.5 宣传视频捕捉流程:FFmpeg 检查、捕捉脚本子代理、捕捉执行、转换、缩略图提取和用户消息,请参见 step-details.md。
将任务 4 标记为 completed。
在继续之前等待用户确认。
将任务 5 标记为 in_progress。
完整的步骤 3 子代理提示模板(AudioManager、背景音乐、音效、AudioBridge、静音切换)和用户消息,请参见 step-details.md。
子代理返回后,运行验证协议(参见 verification-protocol.md)。
将任务 5 标记为 completed。
在继续之前等待用户确认。
将任务 6 标记为 in_progress。
完整的步骤 3.5 子代理提示模板(Playwright 安装、测试夹具、游戏/视觉/性能规范、npm 脚本),请参见 step-details.md。
子代理返回后,运行 npm test 以验证所有测试通过。如果需要,修复测试代码(而不是游戏代码)。
将任务 6 标记为 completed。
在继续之前等待用户确认。
将任务 7 标记为 in_progress。
此步骤保留在主线程中,因为它可能需要用户来回确认以进行 API 密钥设置。
验证 here-now 技能是否已安装:
ls ~/.agents/skills/here-now/scripts/publish.sh
如果未找到,告诉用户:
部署需要 here-now 技能。请使用以下命令安装:
npx skills add heredotnow/skill --skill here-now -g -y完成后请告诉我。
等待用户确认。
npm run build
验证 dist/ 是否存在并包含 index.html 和资源。如果构建失败,请在继续之前修复错误。
读取 vite.config.js。对于 here.now,base 应为 '/'(默认值)。如果设置为其他值(例如,GitHub Pages 子目录路径),请更新它:
export default defineConfig({
base: '/',
// ... 其余配置
});
更改基础路径后重新构建。
~/.agents/skills/here-now/scripts/publish.sh dist/
脚本会立即输出实时 URL(例如 https://<slug>.here.now/)。
读取并遵循脚本 stderr 中的 publish_result.* 行。保存 slug 以备将来更新。
如果是匿名发布(无 API 密钥): 发布将在 24 小时后过期并被永久删除,除非用户认领。脚本会返回一个认领 URL。您必须立即告诉用户:
需要操作——您的游戏将在 24 小时内被删除! 访问您的认领 URL 以创建一个免费的 here.now 账户,并永久保留您的游戏在线。认领令牌只显示一次,无法恢复。现在就做,以免忘记!
然后进行到 7e 以帮助他们设置永久托管。
如果已认证: 发布是永久的。跳过 7e。
对于匿名发布,强烈建议执行此步骤。 帮助用户创建一个 here.now 账户,以便他们的游戏保持在线:
询问他们的电子邮件
发送魔法链接:
curl -sS https://here.now/api/auth/login -H "content-type: application/json" -d '{"email": "user@example.com"}'
告诉用户:"请检查您的收件箱,查找来自 here.now 的登录链接。点击它,然后从仪表板复制您的 API 密钥。"
保存密钥:
mkdir -p ~/.herenow && echo "<API_KEY>" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
重新发布以使其永久化:
~/.agents/skills/here-now/scripts/publish.sh dist/ --slug <slug>
curl -s -o /dev/null -w "%{http_code}" "https://<slug>.here.now/"
应立即返回 200(here.now 部署是即时的)。
向 package.json 添加一个 deploy 脚本,以便将来部署只需一个命令:
{
"scripts": {
"deploy": "npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/"
}
}
告诉用户(如果已认证):
您的游戏已上线!
URL:
https://<slug>.here.now/更改后重新部署:只需运行:
npm run deploy或者,如果您与我合作,我会为您重新构建和部署。
下一步:盈利。 我将在 Play.fun(OpenGameProtocol)上注册您的游戏,添加积分 SDK,并重新部署。玩家赚取奖励,您将获得一个可在 Moltbook 上分享的 play.fun URL。准备好了吗?
告诉用户(如果是匿名——无 API 密钥):
您的游戏已上线!
URL:
https://<slug>.here.now/重要提示:您的游戏将在 24 小时内被删除,除非您认领它! 访问您的认领 URL 以创建一个免费的 here.now 账户,并永久保留您的游戏在线。认领令牌只显示一次——请立即保存!
更改后重新部署:只需运行:
npm run deploy下一步:盈利。 我将在 Play.fun(OpenGameProtocol)上注册您的游戏,添加积分 SDK,并重新部署。玩家赚取奖励,您将获得一个可在 Moltbook 上分享的 play.fun URL。准备好了吗?
有关高级部署选项(GitHub Pages、自定义域名、故障排除),请加载
game-deploy技能。
将任务 7 标记为 completed。
在继续之前等待用户确认。
将任务 8 标记为 in_progress。
此步骤保留在主线程中,因为它需要交互式身份验证。
检查用户是否已有 Play.fun 凭据。身份验证脚本与插件捆绑:
node skills/playdotfun/scripts/playfun-auth.js status
如果凭据存在,跳转到 8b。
如果无凭据,启动身份验证回调服务器:
node skills/playdotfun/scripts/playfun-auth.js callback &
告诉用户:
要在 Play.fun 上注册您的游戏,您需要登录一次。在浏览器中打开此 URL:https://app.play.fun/skills-auth?callback=http://localhost:9876/callback
使用您的 Play.fun 账户登录。凭据将保存在本地。完成后请告诉我。
等待用户确认。 然后使用 playfun-auth.js status 进行验证。
如果回调失败,提供手动方法作为备用方案。
从步骤 6 确定已部署的游戏 URL(例如 https://<slug>.here.now/ 或 https://<username>.github.io/<game-name>/)。
读取 package.json 以获取游戏名称和描述。读取 src/core/Constants.js 以根据计分系统确定合理的反作弊限制。
使用 Play.fun API 注册游戏。加载 playdotfun 技能以获取 API 参考。通过 POST https://api.play.fun/games 注册:
{
"name": "<game-name>",
"description": "<game-description>",
"gameUrl": "<deployed-url>",
"platform": "web",
"isHTMLGame": true,
"iframable": true,
"maxScorePerSession": "<based on game scoring>",
"maxSessionsPerDay": 50,
"maxCumulativePointsPerDay": "<reasonable daily cap>"
}
反作弊指南:
maxScorePerSession: 100-500maxScorePerSession: 500-2000maxScorePerSession: 1000-5000保存返回的游戏 UUID。
首先,从存储的凭据中提取用户的 API 密钥:
# 从代理配置中读取 API 密钥(由 playfun-auth.js 存储)
# Claude Code 的示例路径——请根据您的代理进行调整
API_KEY=$(cat ~/.claude.json | jq -r '.mcpServers["play-fun"].headers["x-api-key"]')
echo "User API Key: $API_KEY"
如果未找到 API 密钥,请提示用户先进行身份验证。
然后将 SDK 脚本和 meta 标签添加到 index.html 的 </head> 之前,替换为实际的 API 密钥:
<meta name="x-ogp-key" content="<USER_API_KEY>" />
<script src="https://sdk.play.fun/latest"></script>
重要提示:x-ogp-key meta 标签必须包含用户的 Play.fun API 密钥(而不是游戏 ID)。不要保留占位符——始终替换为上面提取的实际密钥。
创建 src/playfun.js,将游戏的 EventBus 连接到 Play.fun 积分追踪:
// src/playfun.js — Play.fun (OpenGameProtocol) 集成
import { eventBus, Events } from './core/EventBus.js';
const GAME_ID = '<game-uuid>';
let sdk = null;
let initialized = false;
export async function initPlayFun() {
const SDKClass = typeof PlayFunSDK !== 'undefined' ? PlayFunSDK
: typeof OpenGameSDK !== 'undefined' ? OpenGameSDK : null;
if (!SDKClass) {
console.warn('Play.fun SDK not loaded');
return;
}
sdk = new SDKClass({ gameId: GAME_ID, ui: { usePointsWidget: true } });
await sdk.init();
initialized = true;
// addPoints() — 在游戏过程中频繁调用,以在本地缓冲积分(非阻塞)
eventBus.on(Events.SCORE_CHANGED, ({ score, delta }) => {
if (initialized && delta > 0) sdk.addPoints(delta);
});
// savePoints() — 仅在自然断点处调用(游戏结束、关卡完成)
// 警告:savePoints() 会打开一个阻塞模态框——切勿在活跃游戏过程中调用!
eventBus.on(Events.GAME_OVER, () => { if (initialized) sdk.savePoints(); });
// 在页面卸载时保存(浏览器会优雅地处理此操作)
window.addEventListener('beforeunload', () => { if (initialized) sdk.savePoints(); });
}
关键的 SDK 行为:
| 方法 | 何时使用 | 行为 |
|---|---|---|
addPoints(n) | 游戏过程中 | 在本地缓冲积分,非阻塞 |
savePoints() | 游戏结束 / 关卡结束时 | 打开阻塞模态框,将缓冲的积分同步到服务器 |
切勿在计时器或活跃游戏过程中调用 savePoints()——它会用模态对话框打断玩家。仅在自然暂停点(游戏结束、关卡转换、菜单屏幕)调用。
阅读实际的 EventBus.js 以找到正确的事件名称和负载结构。并相应地进行调整。
将 initPlayFun() 添加到 src/main.js:
import { initPlayFun } from './playfun.js';
// 游戏初始化后
initPlayFun().catch(err => console.warn('Play.fun init failed:', err));
cd <project-dir> && npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/
如果项目已部署到 GitHub Pages,请使用 npx gh-pages -d dist。
验证部署是否生效(here.now 部署是即时的;GitHub Pages 可能需要 1-2 分钟)。
您的游戏已在 Play.fun 上实现盈利!
游戏地址:
<game-url>Play.fun 地址:https://play.fun/games/<game-uuid>Play.fun 小部件现已生效——玩家可以看到积分、排行榜和钱包连接。积分在游戏过程中被缓冲,并在游戏结束时保存。
在 Moltbook 上分享:将您的游戏 URL 发布到 moltbook.com —— 超过 77 万个代理已准备好游玩和点赞。
将任务 8 标记为 completed。
盈利化之后,运行最终质量审查。这是只读的——不修改代码,不阻塞流程。
加载 review-game 技能,并针对项目目录运行完整分析。向用户报告分数和任何建议:
质量报告:
- 架构:X/5
- 性能:X/5
- 代码质量:X/5
- 盈利准备度:X/5
建议(如果有):
- [列出发现的任何问题]
这些是未来改进的建议——您的游戏已经上线并实现盈利!
/make-game 2d flappy-cat
结果:搭建 → 像素艺术猫 + 管道精灵 → 天空渐变 + 粒子 → 芯片音乐背景音乐 + 喵声音效 → 宣传视频 → 部署到 here.now → 在 Play.fun 上注册。约 10 分钟,可在 https://flappy-cat.here.now/ 游玩。
/make-game https://x.com/user/status/123456
结果:获取推文 → 抽象游戏概念 → 3D Three.js 搭建 → Meshy AI 角色模型 → 视觉润色 → 音频 → 部署 + 盈利。
告诉用户:
您的游戏已经完成了完整流程!以下是您所拥有的:
- 搭建的架构 — 干净、模块化的代码,具有增量限制、对象池和资源释放
- 像素艺术精灵 — 可识别的角色(如果选择)或干净的几何形状
- 3D 环境 — 逼真的高斯溅射世界(使用 World Labs 的 3D 游戏)
- 视觉润色 — 渐变、粒子、过渡、动感效果
- 宣传视频 — 移动设备竖屏格式的 50 FPS 游戏画面(
output/promo.mp4)- 音乐和音效 — 芯片音乐背景音乐和复古音效
- 测试套件 — 运行
npm test进行游戏玩法、视觉回归和性能检查- 质量保证 — 每个步骤都经过构建、运行时和视觉审查验证
- 在线运行 — 部署到 here.now,附带即时公共 URL
- 在 Play.fun 上盈利 — 积分追踪、排行榜和钱包连接
- 质量评分 — 架构、性能和代码质量审查
在 Moltbook 上分享您的 play.fun URL,以触达代理互联网上的超过 77 万个代理。将您的宣传视频发布到 TikTok、Reels 或 X 以吸引流量。
接下来做什么?
- 添加新的游戏玩法功能:
/game-creator:add-feature [描述您想要的内容]- 升级到像素艺术(如果使用形状):
/game-creator:add-assets- 重新录制宣传视频:
/game-creator:record-promo- 运行更深入的代码审查:
/game-creator:review-game- 为您的游戏启动 playcoin(玩家的代币奖励)
- 继续迭代!再次运行任何步骤:
/game-creator:design-game、/game-creator:add-audio- 更改后重新部署:
npm run deploy- 更改后运行测试:
npm test- 如果您更喜欢基于 git 的部署,请切换到 GitHub Pages:
/game-creator:game-deploy
每周安装次数
99
代码仓库
GitHub 星标数
26
首次出现
2026年2月21日
安全审计
安装于
claude-code82
opencode51
cursor49
gemini-cli49
github-copilot49
amp49
Build a complete browser game from scratch, step by step. This command walks you through the entire pipeline — from an empty folder to a deployed, monetized game. No game development experience needed.
What you'll get:
WLT_API_KEY is set)npm test after future changesnpm run deploy)Quality assurance is built into every step — each code-modifying step runs build verification, visual review via Playwright MCP, and autofixes any issues found.
You are an orchestrator. You do NOT write game code directly. Your job is to:
TaskCreate/TaskUpdateTask subagentWhat stays in the main thread:
What goes to subagents (via Task tool):
Each subagent receives: step instructions, relevant skill name, project path, engine type, dev server port, and game concept description.
Run after every code-modifying step (Steps 1, 1.5, 2, 3). Step 3.5 runs its own test verification. Delegates all QA work to a subagent to minimize main-thread context usage.
See verification-protocol.md for full QA subagent instructions, orchestrator flow, and autofix logic.
Parse $ARGUMENTS to determine the game concept. Arguments can take two forms:
2d (Phaser — side-scrollers, platformers, arcade) or 3d (Three.js — first-person, third-person, open world). If not specified, ask the user.For 3D games, check for these API keys — first in .env (test -f .env && grep -q '^KEY_NAME=.' .env), then in the environment:
MESHY_API_KEY — for generating custom 3D character/prop models with Meshy AI (see tweet-pipeline.md for the prompt flow)WLT_API_KEY / WORLDLABS_API_KEY — for generating photorealistic 3D environments with World Labs Gaussian Splats. If not set, ask the user alongside MESHY_API_KEY:I can also generate a photorealistic 3D environment with World Labs. Paste your key like:
WORLDLABS_API_KEY=your-key-here— or type "skip" to use basic geometry. (Keys are saved to .env and redacted from this conversation automatically.)
See tweet-pipeline.md for the full tweet fetching, parsing, creative abstraction, celebrity detection, and Meshy API key flow.
Create all pipeline tasks upfront using TaskCreate:
This gives the user full visibility into pipeline progress at all times. Quality assurance (build, runtime, visual review, autofix) is built into each step, not a separate task.
After creating tasks, create the output/ directory in the project root and initialize output/autofix-history.json as an empty array []. This file tracks all autofix attempts across the pipeline so fix subagents avoid repeating failed approaches.
Mark task 1 as in_progress.
See step-details.md for the full Step 1 infrastructure setup, subagent prompt template, progress.md creation, and user messaging.
After subagent returns , run the Verification Protocol (see verification-protocol.md).
Mark task 1 as completed.
Wait for user confirmation before proceeding.
Always run this step for both 2D and 3D games. 2D games get pixel art sprites; 3D games get GLB models and animated characters.
Mark task 2 as in_progress.
See step-details.md for the full Step 1.5 character library check, tiered fallback, 2D subagent prompt, 3D asset flow, 3D subagent prompt, and user messaging.
After subagent returns , run the Verification Protocol (see verification-protocol.md).
Mark task 2 as completed.
Wait for user confirmation before proceeding.
Mark task 3 as in_progress.
See step-details.md for the full Step 2 subagent prompt template (spectacle-first design, opening moment, combo system, design audit, intensity calibration) and user messaging.
After subagent returns , run the Verification Protocol (see verification-protocol.md).
Mark task 3 as completed.
Proceed directly to Step 2.5 — no user confirmation needed (promo video is non-destructive and fast).
Mark task 4 as in_progress.
See step-details.md for the full Step 2.5 promo video capture flow: FFmpeg check, capture script subagent, capture execution, conversion, thumbnail extraction, and user messaging.
Mark task 4 as completed.
Wait for user confirmation before proceeding.
Mark task 5 as in_progress.
See step-details.md for the full Step 3 subagent prompt template (AudioManager, BGM, SFX, AudioBridge, mute toggle) and user messaging.
After subagent returns , run the Verification Protocol (see verification-protocol.md).
Mark task 5 as completed.
Wait for user confirmation before proceeding.
Mark task 6 as in_progress.
See step-details.md for the full Step 3.5 subagent prompt template (Playwright install, test fixtures, game/visual/perf specs, npm scripts).
After subagent returns , run npm test to verify all tests pass. Fix test code (not game code) if needed.
Mark task 6 as completed.
Wait for user confirmation before proceeding.
Mark task 7 as in_progress.
This step stays in the main thread because it may require user back-and-forth for API key setup.
Verify the here-now skill is installed:
ls ~/.agents/skills/here-now/scripts/publish.sh
If not found , tell the user:
The here-now skill is needed for deployment. Install it with:
npx skills add heredotnow/skill --skill here-now -g -yTell me when you're ready.
Wait for the user to confirm.
npm run build
Verify dist/ exists and contains index.html and assets. If the build fails, fix the errors before proceeding.
Read vite.config.js. For here.now, the base should be '/' (the default). If it's set to something else (e.g., a GitHub Pages subdirectory path), update it:
export default defineConfig({
base: '/',
// ... rest of config
});
Rebuild after changing the base path.
~/.agents/skills/here-now/scripts/publish.sh dist/
The script outputs the live URL immediately (e.g., https://<slug>.here.now/).
Read and follow publish_result.* lines from script stderr. Save the slug for future updates.
If anonymous (no API key): The publish expires in 24 hours and will be permanently deleted unless the user claims it. The script returns a claim URL. You MUST immediately tell the user:
ACTION REQUIRED — your game will be deleted in 24 hours! Visit your claim URL to create a free here.now account and keep your game online permanently. The claim token is only shown once and cannot be recovered. Do this now before you forget!
Then proceed to 7e to help them set up permanent hosting.
If authenticated: The publish is permanent. Skip 7e.
This step is strongly recommended for anonymous publishes. Help the user create a here.now account so their game stays online:
Ask for their email
Send magic link:
curl -sS https://here.now/api/auth/login -H "content-type: application/json" -d '{"email": "user@example.com"}'
Tell the user: "Check your inbox for a sign-in link from here.now. Click it, then copy your API key from the dashboard."
Save the key:
mkdir -p ~/.herenow && echo "<API_KEY>" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
Re-publish to make it permanent:
~/.agents/skills/here-now/scripts/publish.sh dist/ --slug <slug>
curl -s -o /dev/null -w "%{http_code}" "https://<slug>.here.now/"
Should return 200 immediately (here.now deploys are instant).
Add a deploy script to package.json so future deploys are one command:
{
"scripts": {
"deploy": "npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/"
}
}
Tell the user (if authenticated):
Your game is live!
URL :
https://<slug>.here.now/Redeploy after changes : Just run:
npm run deployOr if you're working with me, I'll rebuild and redeploy for you.
Next up: monetization. I'll register your game on Play.fun (OpenGameProtocol), add the points SDK, and redeploy. Players earn rewards, you get a play.fun URL to share on Moltbook. Ready?
Tell the user (if anonymous — no API key):
Your game is live!
URL :
https://<slug>.here.now/IMPORTANT: Your game will be deleted in 24 hours unless you claim it! Visit your claim URL to create a free here.now account and keep your game online forever. The claim token is only shown once — save it now!
Redeploy after changes : Just run:
npm run deployNext up: monetization. I'll register your game on Play.fun (OpenGameProtocol), add the points SDK, and redeploy. Players earn rewards, you get a play.fun URL to share on Moltbook. Ready?
For advanced deployment options (GitHub Pages, custom domains, troubleshooting), load the
game-deployskill.
Mark task 7 as completed.
Wait for user confirmation before proceeding.
Mark task 8 as in_progress.
This step stays in the main thread because it requires interactive authentication.
Check if the user already has Play.fun credentials. The auth script is bundled with the plugin:
node skills/playdotfun/scripts/playfun-auth.js status
If credentials exist , skip to 8b.
If no credentials , start the auth callback server:
node skills/playdotfun/scripts/playfun-auth.js callback &
Tell the user:
To register your game on Play.fun, you need to log in once. Open this URL in your browser: https://app.play.fun/skills-auth?callback=http://localhost:9876/callback
Log in with your Play.fun account. Credentials are saved locally. Tell me when you're done.
Wait for user confirmation. Then verify with playfun-auth.js status.
If callback fails, offer manual method as fallback.
Determine the deployed game URL from Step 6 (e.g., https://<slug>.here.now/ or https://<username>.github.io/<game-name>/).
Read package.json for the game name and description. Read src/core/Constants.js to determine reasonable anti-cheat limits based on the scoring system.
Use the Play.fun API to register the game. Load the playdotfun skill for API reference. Register via POST https://api.play.fun/games:
{
"name": "<game-name>",
"description": "<game-description>",
"gameUrl": "<deployed-url>",
"platform": "web",
"isHTMLGame": true,
"iframable": true,
"maxScorePerSession": "<based on game scoring>",
"maxSessionsPerDay": 50,
"maxCumulativePointsPerDay": "<reasonable daily cap>"
}
Anti-cheat guidelines:
maxScorePerSession: 100-500maxScorePerSession: 500-2000maxScorePerSession: 1000-5000Save the returned game UUID.
First, extract the user's API key from stored credentials:
# Read API key from agent config (stored by playfun-auth.js)
# Example path for Claude Code — adapt for your agent
API_KEY=$(cat ~/.claude.json | jq -r '.mcpServers["play-fun"].headers["x-api-key"]')
echo "User API Key: $API_KEY"
If no API key is found, prompt the user to authenticate first.
Then add the SDK script and meta tag to index.html before </head>, substituting the actual API key:
<meta name="x-ogp-key" content="<USER_API_KEY>" />
<script src="https://sdk.play.fun/latest"></script>
Important : The x-ogp-key meta tag must contain the user's Play.fun API key (not the game ID). Do NOT leave the placeholder — always substitute the actual key extracted above.
Create src/playfun.js that wires the game's EventBus to Play.fun points tracking:
// src/playfun.js — Play.fun (OpenGameProtocol) integration
import { eventBus, Events } from './core/EventBus.js';
const GAME_ID = '<game-uuid>';
let sdk = null;
let initialized = false;
export async function initPlayFun() {
const SDKClass = typeof PlayFunSDK !== 'undefined' ? PlayFunSDK
: typeof OpenGameSDK !== 'undefined' ? OpenGameSDK : null;
if (!SDKClass) {
console.warn('Play.fun SDK not loaded');
return;
}
sdk = new SDKClass({ gameId: GAME_ID, ui: { usePointsWidget: true } });
await sdk.init();
initialized = true;
// addPoints() — call frequently during gameplay to buffer points locally (non-blocking)
eventBus.on(Events.SCORE_CHANGED, ({ score, delta }) => {
if (initialized && delta > 0) sdk.addPoints(delta);
});
// savePoints() — ONLY call at natural break points (game over, level complete)
// WARNING: savePoints() opens a BLOCKING MODAL — never call during active gameplay!
eventBus.on(Events.GAME_OVER, () => { if (initialized) sdk.savePoints(); });
// Save on page unload (browser handles this gracefully)
window.addEventListener('beforeunload', () => { if (initialized) sdk.savePoints(); });
}
Critical SDK behavior:
| Method | When to use | Behavior |
|---|---|---|
addPoints(n) | During gameplay | Buffers points locally, non-blocking |
savePoints() | Game over / level end | Opens blocking modal , syncs buffered points to server |
Do NOT call savePoints() on a timer or during active gameplay — it interrupts the player with a modal dialog. Only call at natural pause points (game over, level transitions, menu screens).
Read the actual EventBus.js to find the correct event names and payload shapes. Adapt accordingly.
Add initPlayFun() to src/main.js:
import { initPlayFun } from './playfun.js';
// After game init
initPlayFun().catch(err => console.warn('Play.fun init failed:', err));
cd <project-dir> && npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/
If the project was deployed to GitHub Pages instead, use npx gh-pages -d dist.
Verify the deployment is live (here.now deploys are instant; GitHub Pages may take 1-2 minutes).
Your game is monetized on Play.fun!
Play :
<game-url>Play.fun :https://play.fun/games/<game-uuid>The Play.fun widget is now live — players see points, leaderboard, and wallet connect. Points are buffered during gameplay and saved on game over.
Share on Moltbook : Post your game URL to moltbook.com — 770K+ agents ready to play and upvote.
Mark task 8 as completed.
After monetization, run a final quality review. This is read-only — no code changes, no pipeline blocking.
Load the review-game skill and run the full analysis against the project directory. Report the scores and any recommendations to the user:
Quality Report:
- Architecture: X/5
- Performance: X/5
- Code Quality: X/5
- Monetization Readiness: X/5
Recommendations (if any):
- [list any issues found]
These are suggestions for future improvement — your game is already live and monetized!
/make-game 2d flappy-cat
Result: Scaffold → pixel art cat + pipe sprites → sky gradient + particles → chiptune BGM + meow SFX → promo video → deploy to here.now → register on Play.fun. ~10 minutes, playable at https://flappy-cat.here.now/.
/make-game https://x.com/user/status/123456
Result: Fetches tweet → abstracts game concept → 3D Three.js scaffold → Meshy AI character models → visual polish → audio → deploy + monetize.
Tell the user:
Your game has been through the full pipeline! Here's what you have:
- Scaffolded architecture — clean, modular code with delta capping, object pooling, and resource disposal
- Pixel art sprites — recognizable characters (if chosen) or clean geometric shapes
- 3D environments — photorealistic Gaussian Splat worlds (3D games with World Labs)
- Visual polish — gradients, particles, transitions, juice
- Promo video — 50 FPS gameplay footage in mobile portrait (
output/promo.mp4)- Music and SFX — chiptune background music and retro sound effects
- Test suite — run
npm testfor gameplay, visual regression, and performance checks- Quality assured — each step verified with build, runtime, and visual review
- Live on the web — deployed to here.now with an instant public URL
- Monetized on Play.fun — points tracking, leaderboards, and wallet connect
- Quality score — architecture, performance, and code quality review
Share your play.fun URL on Moltbook to reach 770K+ agents on the agent internet. Post your promo video to TikTok, Reels, or X to drive traffic.
What's next?
- Add new gameplay features:
/game-creator:add-feature [describe what you want]- Upgrade to pixel art (if using shapes):
/game-creator:add-assets- Re-record promo video:
/game-creator:record-promo- Run a deeper code review:
/game-creator:review-game- Launch a playcoin for your game (token rewards for players)
- Keep iterating! Run any step again:
/game-creator:design-game,/game-creator:add-audio- Redeploy after changes:
npm run deploy
Weekly Installs
99
Repository
GitHub Stars
26
First Seen
Feb 21, 2026
Security Audits
Gen Agent Trust HubFailSocketWarnSnykFail
Installed on
claude-code82
opencode51
cursor49
gemini-cli49
github-copilot49
amp49
agent-browser 浏览器自动化工具 - Vercel Labs 命令行网页操作与测试
157,400 周安装
Google Places API 本地地点搜索代理 - 快速查找附近地点、餐厅、咖啡店
2 周安装
goplaces - 现代化 Google Places API 命令行工具,支持搜索、解析与详情查询
2 周安装
gifgrep:命令行GIF搜索与处理工具,支持Tenor/Giphy,快速下载提取帧序列
2 周安装
编码代理使用指南:Bash优先的AI编程助手配置与PTY模式详解
2 周安装
blu CLI 命令行工具:控制 Bluesound/NAD 播放器,实现音频设备自动化管理
2 周安装
Claude代码插件MCP集成指南:连接外部服务与API的完整教程
3 周安装
npm test/game-creator:game-deploy