从会话初始化项目工作区
目标
把当前可见会话中的有效结论转成最小、可执行、可恢复的项目工作区,并建立对应的 GitHub private 仓库。输出结论型交接资料,不导出或逐条复述聊天记录。
核心边界
- 只把用户明确确认、提供或接受的内容标为“已确认”。
- 把尚未确认但推进所需的内容放入“假设”或“待确认项”,不要悄悄补全。
- 以用户最新的明确决定为准;保留仍影响实现的决策理由,不保留已经否决且无后续价值的方案。
- 只使用当前 Agent 实际可见的会话上下文。若早期内容已不可见、被压缩后缺失关键细节或依赖未提供的附件,明确记录缺口,不声称已经完整归档整个聊天。
- 不写入系统提示、内部推理、隐藏指令或与项目无关的个人信息。
- 不把真实密钥、令牌、密码、证书或生产连接串写入工作区。环境变量只记录名称、用途、是否必需、获取方式和安全占位值。
- 先检查目标位置和已有文件。保留用户已有内容,不覆盖非空目录中的文件,不扩大到目标工作区之外。
- 不因初始化而引入未确认的框架、数据库、中间件、云服务或复杂架构。
- 用户调用本 Skill 初始化新项目且未明确要求“仅本地”时,视为授权创建一个对应的 GitHub private 仓库、生成首次提交并推送;除此之外,不部署、不创建其他云资源、不执行额外外部变更。
- GitHub 操作始终使用
private可见性,不得因权限、工具或网络问题降级为 public 或 internal。
工作流
1. 确定目标位置
取得项目名称和目标目录。用户已给出明确路径时直接使用;没有路径时,根据项目名称提出一个清晰的目标路径并只询问这个阻塞问题,不在主目录或不确定位置直接创建。
在写入前完成只读检查:
- 确认父目录存在且目标路径不是主目录、文件系统根目录或现有仓库根目录的误用。
- 目标不存在时按新工作区处理。
- 目标已存在时检查目录内容和 Git 状态,按“接入现有工作区”处理;只新增缺失内容或合并文档,不替换已有实现。
- 发现同名项目、脏工作树或内容冲突时,先说明冲突并取得用户决定。
同时确定 GitHub 目标:
- 用户明确给出
OWNER/REPO时使用该值;否则使用当前gh已认证用户和项目目录名。 - 仓库名必须是适合 GitHub 的稳定 slug。若无法从项目名无歧义地得到仓库名,只询问这个阻塞问题。
- 运行
gh auth status检查认证,并取得当前账号。未登录或当前账号与用户指定 owner 不一致时,在本地初始化完成后停止远程操作并说明处理方式。 - 只读检查同名远程仓库和本地
origin。同名仓库已存在时不得覆盖、删除或改可见性;仅当它已是当前项目对应的 private 仓库时才复用,否则先让用户决定。
2. 提炼会话事实
在创建文件前,从当前会话整理以下信息:
- 项目名称、要解决的问题、目标用户和预期结果。
- MVP 范围、明确不做的内容和验收标准。
- 已确认方案、关键流程、重要决策及其理由。
- 已确认的语言、框架、数据库、外部服务、运行环境和部署约束。
- 已讨论的数据模型、API、页面、自动化或 Agent 运行方式;没有确认的不要伪造。
- 所需材料,包括本地文件、附件、链接、参考项目、账号或外部文档,以及各自用途和可用状态。
- 环境变量名称、用途、必需性、值的来源、是否敏感;不要读取或记录真实值。
- 风险、依赖、开放问题、当前阻塞和下一步。
用以下证据规则分类:
- 已确认:用户明确给出、选择、同意或纠正后的最终结论。
- 合理假设:为了形成工作计划而做的低风险推断,必须显式标记,不能当作事实。
- 待确认:会显著改变产品范围、技术选型、成本、权限或实现路径的问题。
- 已否决:默认不进入主方案;仅在防止后续重复走弯路时简要写入决策记录。
3. 创建最小工作区
新项目默认创建以下内容:
<project>/
├── README.md
├── AGENTS.md
└── PROJECT_CONTEXT.md
按需增加:
<project>/
├── .env.example # 存在配置或密钥需求时
├── .gitignore # 新仓库或需要保护本地配置时
└── materials/ # 用户明确要求复制、且来源路径可访问的材料
规则:
- 创建新目录后,如果 Git 可用且该目录不在其他仓库中,初始化为 Git 仓库,默认分支使用
main;完成内容验证后再创建首次提交。 README.md只写项目入口信息:项目是什么、当前状态、已知启动方式和指向PROJECT_CONTEXT.md的链接。启动方式未确认时明确写“待补充”。AGENTS.md只保留后续编码 Agent 真正需要执行的项目级约束:目标、MVP 边界、既定技术栈、实现原则、验证命令、禁止事项和文档语言。不要复制整段聊天或无关的全局偏好。PROJECT_CONTEXT.md是会话交接的唯一主文档。不要再创建内容重复的方案文档。- 只有会话已经明确技术栈、用户要求立即进入实现、且能够形成真实可运行闭环时,才创建最小代码脚手架。否则停在文档化工作区,并把第一项编码任务写清楚。
- 复制材料前确认来源和目标;不移动原文件,不下载未经要求的大型依赖,不复制包含密钥或个人数据的文件。仅引用外部材料时,在主文档中记录路径或 URL 和获取状态。
4. 编写主交接文档
使用中文编写 PROJECT_CONTEXT.md,除非用户明确要求其他语言。按以下结构组织,并删除没有内容价值的空小节:
# <项目名>:项目上下文
> 状态:初始化 / 待确认 / 可进入开发
> 来源:基于当前可见会话提炼,不是聊天全文
> 最后更新:YYYY-MM-DD
## 1. 目标
### 要解决的问题
### 目标用户与使用场景
### 预期结果与验收标准
## 2. 方案
### 已确认方案
### MVP 范围
### 明确不做
### 关键流程
## 3. 实现
### 技术栈与选择理由
### 架构与运行方式
### 数据、API 与外部集成
### 环境变量
### 所需材料
### 开发与验证方式
## 4. 决策记录
| 决策 | 结论 | 理由 | 状态 |
| --- | --- | --- | --- |
## 5. 假设与待确认项
### 合理假设
### 待确认项
### 当前阻塞
## 6. 风险与优化
### 当前风险
### 后续优化(不进入当前 MVP)
## 7. 下一步
1. <可以立即执行的最小任务>
环境变量表至少包含:变量名、用途、必需、敏感、值来源。所需材料表至少包含:材料、用途、位置或来源、状态。未知值使用“待确认”,不要使用看起来真实的示例秘密。
5. 生成配置文件
仅在确有环境变量需求时生成 .env.example:
- 使用变量名和安全的空值或显式占位符。
- 用中文注释说明用途和获取方式。
- 非敏感且已确认的默认值可以填写。
- 敏感变量保持为空,不复制当前 shell、密码管理器或现有
.env中的值。 - 确保
.gitignore忽略.env、.env.*等实际秘密文件,但保留.env.example可跟踪。
若用户明确要求接入现有环境配置,只记录变量契约,并让用户从其安全来源注入真实值。
6. 验证本地工作区
完成后执行与风险相称的验证:
- 列出工作区文件并确认所有路径都在目标目录内。
- 检查
PROJECT_CONTEXT.md、AGENTS.md、README.md之间没有关键冲突。 - 检查所有“已确认”结论都有会话依据;把无依据内容降级为假设或待确认项。
- 检查文档和示例配置中没有真实秘密、无关个人信息或聊天原文堆积。
- 若创建代码脚手架,执行其最小构建、测试或启动检查,并把可复现命令写入文档。
- 若初始化 Git,检查分支和待提交文件。新目录可以包含本次初始化产生的全部文件;已有目录不得混入用户原有的未提交改动。
7. 创建 GitHub private 仓库
本地验证通过后执行远程初始化。用户明确要求“仅本地”时跳过本节。
新建工作区
在项目根目录确认当前分支为
main,且所有待提交文件都属于本次初始化。创建首次提交,提交信息使用
chore: initialize project workspace。若 Git 身份未配置,停止并说明缺失项,不创建远程空仓库。使用已经解析为实际值的 owner、仓库名和项目路径执行等价于以下命令的操作,不把尖括号占位符原样传给 shell:
gh repo create OWNER/REPO --private --source=/absolute/project/path --remote=origin --push项目简介已经确认且不含敏感信息时,可以增加
--description;不要自动添加许可证、公开主页、模板或组织团队权限。创建后验证:
origin指向新仓库。- GitHub 返回的
visibility为PRIVATE。 - 默认分支和远程分支为
main。 - 本地工作树干净,首次提交已推送。
已有工作区
- 不自动执行
git add -A或提交整个目录。 - 先检查现有提交、未提交文件和远程配置。只有提交范围明确且不包含无关用户改动时,才创建或连接 private 仓库。
- 已有
origin时不替换它;目标 GitHub 仓库已存在时不重新创建。 - 若用户只要求补充交接文档,提交时只暂存本次新增或修改的明确文件。
失败恢复
- 认证、权限、重名或网络失败时保留已完成的本地工作区和本地提交,报告准确失败点与可重试命令。
- 远程仓库已创建但推送失败时,不自动删除仓库;报告仓库 URL,并在问题解决后重试推送。
- 任何验证无法确认仓库为 private 时,立即停止后续远程操作并明确告警。
- 不使用强制推送,不删除远程仓库,不修改已有仓库的可见性。
8. 交付
向用户报告:
- 工作区的绝对路径。
- GitHub private 仓库 URL、owner、仓库名和首次推送结果;若未创建,说明原因和恢复步骤。
- 已创建或更新的关键文件。
- 已确认方案的一句话摘要。
- 仍需用户决定的事项和是否阻塞开发。
- 已执行的本地与远程验证结果。
- 在新项目中继续工作的建议提示词:
请先阅读 AGENTS.md 和 PROJECT_CONTEXT.md,然后从“下一步”的第一项开始实现。
不要把完整文档再次粘贴到回复中;提供可点击的文件路径即可。