From game-creator
Deploys browser games to here.now (default instant static hosting), GitHub Pages via gh CLI, or other platforms after npm run build. Use for public publishing and hosting setup.
npx claudepluginhub opusgamelabs/game-creator --plugin game-creatorThis skill uses the workspace's default tool permissions.
Deploy your browser game for public access. **here.now is the default** — instant static hosting with zero configuration. GitHub Pages is available as an alternative when you need git-based deploys.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
Deploy your browser game for public access. here.now is the default — instant static hosting with zero configuration. GitHub Pages is available as an alternative when you need git-based deploys.
here-now skill installed (npx skills add heredotnow/skill --skill here-now -g)$HERENOW_API_KEY or ~/.herenow/credentials for permanent hostingnpm run build
~/.agents/skills/here-now/scripts/publish.sh dist/
The script outputs a live URL like https://<slug>.here.now/.
base path, no git repo, no GitHub CLI requiredbase: '/' or default)curl, file, and jqhere.now serves from the subdomain root, so use the default base path:
export default defineConfig({
base: '/',
// ... rest of config
});
Without an API key, publishes are anonymous and expire in 24 hours. The publish script returns a claim URL — the user MUST visit this URL and create a free here.now account to keep the site permanently. The claim token is only shown once and cannot be recovered. If they don't claim it, the site disappears.
You MUST always tell the user about the 24-hour window and the claim URL after every anonymous publish. This is not optional.
| Feature | Anonymous | Authenticated |
|---|---|---|
| Expiry | 24 hours (then deleted!) | Permanent |
| Max file size | 250 MB | 5 GB |
| Rate limit | 5/hour/IP | 60/hour/account |
To set up an API key for permanent hosting (skip the 24h window entirely):
First check if the key already exists:
test -f .env && grep -q '^HERENOW_API_KEY=.' .env && echo "found"
If found, export it with set -a; . .env; set +a and skip the prompt.
Otherwise:
curl -sS https://here.now/api/auth/login -H "content-type: application/json" -d '{"email": "user@example.com"}'HERENOW_API_KEY=their-key-here (saved to .env and redacted automatically)mkdir -p ~/.herenow && grep '^HERENOW_API_KEY=' .env | cut -d= -f2- > ~/.herenow/credentials && chmod 600 ~/.herenow/credentialsnpm run build
~/.agents/skills/here-now/scripts/publish.sh dist/ --slug <slug>
The slug is saved in .herenow/state.json after each publish — the script auto-loads it for updates.
Add to package.json:
{
"scripts": {
"deploy": "npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/"
}
}
For updates to an existing slug:
{
"scripts": {
"deploy": "npm run build && ~/.agents/skills/here-now/scripts/publish.sh dist/ --slug <slug>"
}
}
Use GitHub Pages when you need git-based deployment or already have a GitHub repo set up.
gh)npm run build && npx gh-pages -d dist
npm run build
vite.config.js has the correct base path if deploying to a subdirectory:export default defineConfig({
base: '/<repo-name>/',
// ... rest of config
});
gh repo create <game-name> --public --source=. --push
npm install -D gh-pages
npx gh-pages -d dist
gh-pages branch).Your game is live at: https://<username>.github.io/<repo-name>/
Add to package.json:
{
"scripts": {
"deploy": "npm run build && npx gh-pages -d dist"
}
}
After deploying, register your game on Play.fun for monetization. Use the /game-creator:playdotfun skill for integration details.
The deployed URL becomes your gameUrl when registering:
await client.games.register({
name: 'Your Game Name',
gameUrl: 'https://<slug>.here.now/', // or GitHub Pages URL
maxScorePerSession: 500,
maxSessionsPerDay: 20,
maxCumulativePointsPerDay: 5000
});
npx vercel --prod (auto-detects Vite)npm run build, publish dir to distdist/ folder as an HTML5 game/game-deploy
Result: Builds dist/ → publishes via here.now → game live at https://<slug>.here.now/ in seconds. Adds npm run deploy script for future one-command deploys.
/game-deploy github-pages
Result: Builds with correct base path → pushes to gh-pages branch → game live at https://<user>.github.io/<game>/ in 1-2 minutes.
Cause: Too many deployments in a short period. here.now has rate limiting on anonymous deployments. Fix: Wait a few minutes and retry. For frequent deployments, consider using GitHub Pages or Vercel instead.
Cause: Anonymous here.now deployments are temporary and expire after a period of inactivity.
Fix: Redeploy with npx here.now. For persistent hosting, use GitHub Pages (gh-pages branch) or Vercel, which don't expire.
Cause: Vite's base path doesn't match the GitHub Pages URL structure (/<repo-name>/).
Fix: Set base: '/<repo-name>/' in vite.config.js. Ensure the gh-pages branch is selected as the source in the repository's Pages settings. Wait 1-2 minutes for GitHub's CDN to propagate.
Cause: Asset paths use absolute URLs (/assets/...) that don't resolve correctly on the deployment host.
Fix: Use relative paths (./assets/...) or configure Vite's base option to match the deployment URL. Run npm run build locally and test the dist/ folder with a local server before deploying.
Cause: The remote gh-pages branch has diverged or the force push was blocked by branch protection rules.
Fix: Use git push origin gh-pages --force if you own the repo and there's no branch protection. If protected, delete the remote gh-pages branch first: git push origin --delete gh-pages, then redeploy.
npm run build succeeds with no errorsnpm run previewconsole.log debug statements<title> and meta tags in index.html