用途
use-template 用于从游戏模板库(gallery)中克隆一个游戏模板到新项目,作为开发的起点。它强调这是一次快速复制——几秒内得到可运行的代码,而不是 AI 生成流水线。
主要能力
- 解析参数:
<template-id> [project-name]。 - 若未提供参数,读取
site/manifest.json,显示所有模板的编号列表(含引擎、复杂度、描述),并让用户选择。 template-id为必填;project-name默认等于template-id。- 按 id 在
site/manifest.json中查找模板;若未找到,显示可用 ID 并中止。 - 确定目标目录:若当前工作目录位于 game-creator 仓库内,则为
examples/<project-name>/;否则为./<project-name>/。若目标已存在则报错中止。 - 复制模板源码目录到目标位置,排除:
node_modules/、dist/、output/、.herenow/、progress.md、test-results/、playwright-report/。 - 更新项目元数据:在
package.json中将"name"设为项目名;在index.html(若存在)中更新<title>为格式化后的项目名。 - 在目标目录运行
npm install安装依赖。 - 打印后续步骤:
Template cloned successfully!
cd <project-name>
npm run dev
使用方式
示例命令:
/use-template flappy-bird my-game
/use-template threejs-3d-starter space-shooter
/use-template castle-siege
实现要点(来自资料中的代码):
- 通过查找包含
gallery/manifest.json的目录定位 game-creator 根目录。 - 校验项目名称:拒绝路径遍历(
..)、路径分隔符和特殊字符;仅允许字母数字、连字符、下划线和点,且必须以字母数字开头。 - 校验解析后的目标路径仍位于预期父目录内。
- 复制时按排除列表跳过指定目录与文件。
- 更新
package.json的 name 与index.html的 title(将-/_替换为空格并首字母大写)。 - 运行
npm install。 - 可选匿名遥测:发送事件类型("clone")、模板 ID、来源("skill")、schema 版本;不发送 PII、IP、文件路径或可识别用户的数据。可通过设置
DO_NOT_TRACK=1或DISABLE_TELEMETRY=1退出。
适用场景
- 想从现成模板快速起步,然后手动定制。
- 需要几秒内获得可运行代码,而非等待 AI 生成流程。
限制与安全说明
- 路径校验:项目名称会拒绝路径遍历(
..)、路径分隔符和特殊字符;解析后的目标路径会验证是否停留在预期父目录内。 - npm install:从复制后的模板
package.json运行,其中仅包含模板的固定依赖(Phaser/Three.js、Vite),不会安装任意包。 - 遥测:匿名、可退出,仅发送模板 ID 和事件类型(无 PII、路径或用户数据)。用
DO_NOT_TRACK=1或DISABLE_TELEMETRY=1环境变量禁用。 - 模板来源:模板从插件内本地的
site/manifest.json注册表复制,克隆时不获取外部模板。
与 /viral-game 和 /make-game 的关键区别
/use-template是 10 秒复制:立即得到可运行代码,手动定制。/viral-game是 10 分钟 AI 流水线:从文本提示或推文 URL 出发,完成脚手架、设计、音频、测试、部署和变现,风格固定、一次性完成。/make-game是更深入的多会话游戏开发工作流,包含里程碑、ADR 和docs/STATE.md,适合需要长期演进的项目。