name: yy-create-template-project description: > 从用户提供的现有项目中提炼脱敏、可复用的模板项目,或优化完善已有模板项目。 当用户需要生成、整理、补齐或优化模板项目时触发,不用于直接创建业务项目、迁移成熟系统或复制含敏感数据的完整项目。
yy-create-template-project
描述
根据用户给定的现有项目,分析其目录结构、配置、入口、测试、文档和运行约束,提炼出脱敏、自包含、可复用的模板项目。
也可以分析已有模板项目,补齐缺失的配置、说明、示例、测试和脱敏边界,使其更适合作为可复制的项目骨架。
使用场景
- 用户提供一个已有项目,希望总结并生成可复用模板项目
- 用户提供一个已有模板项目,希望优化结构、配置、说明、示例或验证流程
- 用户需要从项目中抽离通用骨架、配置基线、示例源码和验证命令
- 用户需要检查模板项目是否完整、脱敏、自包含且可复用
- 用户需要补齐空白或轻量模板项目的 README、环境变量示例、测试样例或资源占位
不应触发:
- 用户只是要创建一个普通业务项目
- 用户只是要更新技能说明文字,不涉及模板项目本身
- 用户要求迁移、重构或修复成熟项目本身
- 用户要求完整复制包含真实业务数据、密钥、日志或运行产物的项目
- 用户只需要单个代码片段、配置片段或项目结构建议
指令
步骤 1. 确认任务边界与最小输入
先确认本次任务是从现有项目提炼模板,而不是直接创建业务项目。
至少收集以下信息:
- 源项目路径
- 模板输出目录
- 模板项目名称
- 模板类型和技术栈边界
- 本次是新建模板还是优化已有模板
- 是否允许覆盖或补齐已有模板目录
- 用户希望保留的验证命令
- 明确需要排除的敏感数据、业务样例和私有资源
决策分支:
- 源项目路径、输出目录和模板名称都已明确:直接进入项目分析
- 用户提供的是已有模板项目:把该模板作为源项目和输出对象,先分析缺口,再按授权范围优化完善
- 只缺少少量必要信息:只追问缺失项,不重复确认已明确内容
- 输出目录已有内容但覆盖策略不明:先确认新建、补齐或覆盖范围,不默认覆盖、删除或清空已有文件
- 用户要求完整复制真实项目:说明本技能只生成脱敏模板,必须先收敛为可公开复用的骨架和示例
步骤 2. 分析源项目与约束来源
读取源项目的最小必要上下文,建立模板提炼依据。
优先分析以下内容:
- 项目说明、代理规范和编辑器配置
- 包管理、构建、测试、格式化和类型检查配置
- 入口文件、路由或命令行入口
- 源码分层、公共工具、类型定义和示例页面或示例流程
- 测试目录、测试命令和最小可验证样例
- 环境变量示例、资源目录和 README 使用说明
.gitignore文件及其忽略规则完整性
决策分支:
- 存在项目规范文件:优先遵守源项目规范中与模板提炼直接相关的语言、路径、格式和验证要求
- 存在多个入口或多个应用:只提炼与模板类型直接相关的入口,不把整个 monorepo 全量复制为模板
- 源项目缺少 README 或测试:根据现有配置和入口生成最小模板说明或最小验证建议,并明确这是模板补齐内容
- 发现真实密钥、私有路径或敏感样例:停止复制该内容,将其改写为占位符或排除,并在交付结果中说明处理方式
- 源项目存在 .gitignore:检查是否覆盖依赖产物、构建产物、IDE 配置、环境变量、日志和缓存等标准忽略规则
- 源项目缺少 .gitignore:根据技术栈在后续步骤中生成标准忽略规则
步骤 3. 归纳模板骨架与保留范围
把源项目内容分为保留、改写、删除和待确认四类,再决定模板项目的最小闭环。
推荐保留:
- 通用配置文件、编辑器配置、格式化配置
.gitignore文件(需脱敏私有路径)- 包管理配置、构建配置、类型检查配置和测试配置
- 最小入口、示例页面、示例流水线或示例命令
- 可复用工具、类型定义、状态结构和测试样例
- README、环境变量示例和资源占位文件
必须改写:
- 项目名称、包名、命令名、模块名和示例输出名
- 真实业务字段、客户名称、设备名称、内部系统名称和业务路径
- 真实环境变量值、真实文件路径、真实接口地址和真实账号信息
- 不可泛化的业务流程说明,改写为中性示例流程
.gitignore中的私有路径、业务特定忽略规则
必须删除:
- 依赖安装产物、缓存、构建产物、测试覆盖率产物和日志
.env、私钥、证书、令牌、账号、Cookie 和真实配置- 真实业务数据、运行样例、二进制产物、大体积媒体和临时文件
- 与模板类型无关的成熟业务模块、历史迁移文件和私有集成代码
必须补齐(当源项目缺失时):
.gitignore文件:根据技术栈生成标准忽略规则,覆盖依赖产物、构建产物、IDE 配置、环境变量、日志和缓存
待确认:
- 锁文件是否保留
- 大型静态资源是否替换为占位文件
- 复杂测试是否降级为最小样例测试
- 是否把多应用结构压缩为单一模板入口
步骤 4. 确认方案与计划
在写入、覆盖、删除或生成模板文件前,必须先确认方案方向与实施计划。
决策分支:
- 用户明确要求直接执行,且源项目路径、输出目录、模板名称、生成模式、覆盖范围和脱敏边界都已明确:展示方案方向或计划后,可在同一轮继续后续步骤,无需额外等待确认
- 信息仍不完整,或用户未授权直接执行:先确认方案与计划,收到用户确认后才可继续写入、覆盖、删除或生成模板文件
- 当前环境可用
yy-mode-plan且需要用户确认:优先使用该技能创建方案方向和计划,并等待用户确认 - 当前环境不可用
yy-mode-plan,或当前分支无需等待确认:使用以下本地最小确认流程- 方向不明确时:先展示方案方向,等用户确认方向正确后,再展示计划
- 方向明确时:直接展示计划
- 展示计划后,如当前分支需要确认,则必须等用户确认才可继续后续步骤
- 展示方案方向时,至少包含以下内容:
- 目标:一句话说明将要完成的模板提炼或优化内容
- 方法:高层策略,说明如何抽取、脱敏、补齐或对齐模板
- 涉及范围:将要创建或修改的模板目录、关键文件、辅助资源或文档
- 待确认点:仍需用户决策的关键选择,如覆盖范围、锁文件、资源占位或验证命令
- 方案方向结尾在需要确认时,必须明确提示用户确认方向是否正确,或提出调整意见
计划中至少说明源项目路径、模板输出目录、模板名称、生成模式、保留范围、改写范围、删除或排除范围、待确认项、验证方式和影响范围。
步骤 5. 生成脱敏模板项目
在用户授权的输出目录中生成模板项目,并保持目录结构自包含。
决策分支:
- 输出目录不存在或为空目录:按新建模板模式生成完整骨架
- 输出目录已有模板且用户要求补齐:只新增缺失文件,或只修改与本次模板目标直接相关的文件
- 输出目录已有模板且用户明确授权覆盖:先列出将被覆盖的关键文件,再按授权范围写入
- 输出目录已有未知业务文件:暂停写入,要求用户确认处理范围
生成时遵守以下规则:
- 使用源项目的稳定结构作为基础,不重写为另一套无关技术栈
- 保持配置、入口、源码、测试、文档和资源占位之间的闭环
- 将真实业务实现替换为中性示例,不保留私有业务依赖
- 保留最小可运行或最小可验证路径
- 如果用户明确要求输出到指定目录,只需保证该目录中的模板项目自包含、脱敏且可复用
.gitignore 生成规则:
- 源项目有完整 .gitignore:保留并脱敏,移除私有路径和业务特定规则
- 源项目有不完整的 .gitignore:补齐缺失的标准忽略规则
- 源项目没有 .gitignore:根据技术栈生成,标准忽略规则应包含:
- 依赖产物(node_modules、vendor、.venv 等)
- 构建产物(dist、build、out、.next 等)
- 环境变量(.env、.env.local、.env.*.local)
- IDE/编辑器配置(.idea、.vscode、*.swp 等)
- 日志和缓存(*.log、.cache、.tmp 等)
- 操作系统文件(.DS_Store、Thumbs.db 等)
- 测试覆盖率产物(coverage、.nyc_output 等)
步骤 6. 补齐 lint 支持与命令
在模板项目生成或优化完成后,检测当前环境是否可用 yy-enable-lint 技能,并在可用时触发该技能补齐 lint 相关配置和命令。
决策分支:
- 当前环境可用
yy-enable-lint:在模板项目目录触发yy-enable-lint,要求其按模板项目的技术栈补齐可通过npm run lint执行的 lint 支持,并保持模板项目自包含 - 当前环境不可用
yy-enable-lint:不阻塞模板生成,按源项目现有配置和模板最小闭环保留或补充 lint 建议命令 - 用户明确要求不补齐 lint 支持:跳过
yy-enable-lint,仅在交付结果中说明未补齐原因 yy-enable-lint执行失败:只修复与模板项目 lint 配置直接相关的问题;若失败原因来自外部环境、依赖安装或源项目原有问题,记录失败原因和建议命令,不扩大处理范围
触发 yy-enable-lint 时必须说明这是模板项目,避免引入真实业务规则、私有路径或非模板必要依赖。
步骤 7. 补充模板说明与使用约定
为模板项目补充或更新 README,使后续使用者能在最少上下文下理解模板。
决策分支:
- 当前环境已安装
yy-create-readme:优先调用该技能在模板项目目录生成或更新 README.md,并在调用时补充说明这是模板项目,需要覆盖下文列出的最小要点 - 当前环境未安装
yy-create-readme:使用本地最小回退规则手动生成或更新 README.md,不阻塞模板生成 - 用户明确要求不使用
yy-create-readme:直接使用本地最小回退规则
本地最小回退规则下,README 至少说明:
- 模板定位
- 技术栈和运行环境
- 关键目录职责
- 安装、运行、测试、构建或打包命令
- 环境变量示例和资源占位说明
- 可定制项说明
无论使用哪种方式,如果模板输出到现有仓库的子目录,还应在 README 中说明该目录是模板项目,不是当前仓库的业务项目。
步骤 8. 验证模板质量
先执行静态验收,再根据用户授权决定是否运行命令。
静态验收必须检查:
- 模板目录不包含安装产物、缓存、构建产物、日志和真实运行数据
- 模板目录不包含
.env、密钥、令牌、证书、真实账号和真实接口地址 - 项目名称、包名、命令名和 README 已替换为模板名称
- 入口、配置、测试和 README 指向同一套运行方式
- 如已触发
yy-enable-lint,lint 相关命令、README 和包管理配置指向同一套执行方式 - 环境变量只保留示例名和占位值
- 路径使用相对路径,避免保留源项目的私有绝对路径
.gitignore存在且覆盖标准忽略规则,不包含私有路径或业务特定规则
决策分支:
- 用户明确授权安装或验证:在模板项目目录执行用户指定或 README 中声明的验证命令
- 用户未授权执行耗时命令:不主动安装依赖、构建、测试或联网,只在交付结果中给出建议命令
- 验证失败:只修复与本次模板生成直接相关的问题,不处理源项目原有无关问题
- 无法完全验证:明确说明未验证项、原因和建议用户执行的命令
步骤 9. 输出结果
输出以下内容:
- 生成结果:说明源项目、模板名称、输出目录和生成模式
- 修改原因和影响范围:说明为什么这样提炼,以及影响到哪些目录或文件
- 目录结构:列出模板项目的关键目录和文件
- 脱敏与过滤摘要:说明已排除、改写、占位或待确认的内容
- 模板使用说明:说明模板项目的结构、运行方式、验证方式和可定制边界
- lint 补齐状态:说明是否检测并触发
yy-enable-lint,以及补齐或跳过原因 - 验证状态:说明已执行的检查和命令;如未执行,说明建议命令
- 用户影响:说明该模板生成后,后续技能或脚手架会如何复用它
安全边界
- 不修改源项目,除非用户明确要求并授权具体文件
- 不默认覆盖、删除或清空已有模板目录
- 未完成步骤 4 的确认流程前,不写入、覆盖、删除或生成模板文件,除非用户明确要求直接执行且边界已充分明确
- 不复制真实
.env、密钥、令牌、证书、Cookie、账号或私有配置 - 不复制真实业务数据、日志、运行产物、缓存、依赖安装产物或大体积二进制资源
- 不默认执行安装、构建、测试、打包、部署、发布、网络请求或外部程序调用
- 不手动修改技能市场配置文件或其他派生索引文件
- 不把源项目的私有业务术语、客户信息、设备信息、接口地址或内部系统路径保留到模板中
相关资源
无内置辅助资源。执行时以用户提供的源项目、已有模板项目和目标输出目录为依据。