SuperAPI AI 工具集

use-template

编程与开发

查看项目

更新于 10-15 14:53

技能介绍

用途

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,适合需要长期演进的项目。