# Yy Create Template Project

> 从用户提供的现有项目中提炼脱敏、可复用的模板项目，或优化完善已有模板项目。 当用户需要生成、整理、补齐或优化模板项目时触发，不用于直接创建业务项目、迁移成熟系统或复制含敏感数据的完整项目。

- Skill: `bulls-cows/yy-create-template-project` (Agent Skill)
- Install (CLI): `npx skillmds@latest add bulls-cows/yy-create-template-project`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bulls-cows/yy-create-template-project/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bulls-cows (https://skillmd.com/u/bulls-cows)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bulls-cows/yy-create-template-project

---


# 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. 输出结果

输出以下内容：

1. **生成结果**：说明源项目、模板名称、输出目录和生成模式
2. **修改原因和影响范围**：说明为什么这样提炼，以及影响到哪些目录或文件
3. **目录结构**：列出模板项目的关键目录和文件
4. **脱敏与过滤摘要**：说明已排除、改写、占位或待确认的内容
5. **模板使用说明**：说明模板项目的结构、运行方式、验证方式和可定制边界
6. **lint 补齐状态**：说明是否检测并触发 `yy-enable-lint`，以及补齐或跳过原因
7. **验证状态**：说明已执行的检查和命令；如未执行，说明建议命令
8. **用户影响**：说明该模板生成后，后续技能或脚手架会如何复用它

## 安全边界

- 不修改源项目，除非用户明确要求并授权具体文件
- 不默认覆盖、删除或清空已有模板目录
- 未完成步骤 4 的确认流程前，不写入、覆盖、删除或生成模板文件，除非用户明确要求直接执行且边界已充分明确
- 不复制真实 `.env`、密钥、令牌、证书、Cookie、账号或私有配置
- 不复制真实业务数据、日志、运行产物、缓存、依赖安装产物或大体积二进制资源
- 不默认执行安装、构建、测试、打包、部署、发布、网络请求或外部程序调用
- 不手动修改技能市场配置文件或其他派生索引文件
- 不把源项目的私有业务术语、客户信息、设备信息、接口地址或内部系统路径保留到模板中

## 相关资源

无内置辅助资源。执行时以用户提供的源项目、已有模板项目和目标输出目录为依据。

