新增框架整合流程,方便后续新增SKILL等

This commit is contained in:
2026-05-02 03:00:36 +08:00
parent 94abd226af
commit 0ae4f752b2

View File

@@ -1,10 +1,12 @@
--- ---
name: opencode-init name: opencode-init
description: >- description: >-
初始化新项目的 .opencode 结构。两种触发方式: 初始化新项目的 .opencode 结构,以及将实际项目中孵化出的跨项目能力整合回模板框架。
三种触发方式:
1首次自动触发 —— 当 `.opencode/.init-done` sentinel 不存在时, 1首次自动触发 —— 当 `.opencode/.init-done` sentinel 不存在时,
AGENTS.md 会在会话首次响应前引导 Agent 主动执行本 Skill AGENTS.md 会在会话首次响应前引导 Agent 主动执行本 Skill
2关键词手动触发 —— "初始化opencode"、"opencode init"、"重置 opencode"、"补 gitignore" 等。 2关键词手动触发 —— "初始化opencode"、"opencode init"、"重置 opencode"、"补 gitignore" 等。
3框架整合 —— "整合到框架"、"合并到模板"、"加入框架白名单"、"template integration" 等。
流程清理模板残留的项目专用数据changelog/deferred/pitfalls/profile/distillery 流程清理模板残留的项目专用数据changelog/deferred/pitfalls/profile/distillery
可选生成 .gitignore 模板,最后写入 `.opencode/.init-done` 标记完成。 可选生成 .gitignore 模板,最后写入 `.opencode/.init-done` 标记完成。
已 init 仓库不会再自动触发,除非用户主动通过关键词请求。 已 init 仓库不会再自动触发,除非用户主动通过关键词请求。
@@ -43,6 +45,16 @@ description: >-
init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5 init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
``` ```
### 场景 D框架整合反向流程
```
1. 在实际项目开发中,孵化出了一个新的跨项目能力(新 Skill / 新数据文件 / 新依赖)
2. 用户认为该能力应成为模板框架的一部分
3. 用户说"把这个能力整合到 opencode 框架"
4. Agent 按"框架整合流程"清单逐项执行,更新本 SKILL.md 各截面
5. 框架整合流程**不**操作 .init-done**不**修改项目数据文件
```
## 触发条件 ## 触发条件
本 Skill 由 AGENTS.md 触发,两类入口: 本 Skill 由 AGENTS.md 触发,两类入口:
@@ -58,6 +70,12 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- 用户关键词:`补 gitignore` / `生成 gitignore` / `gitignore 模板` - 用户关键词:`补 gitignore` / `生成 gitignore` / `gitignore 模板`
- 跳过阶段 1-5 和阶段 7 的除"更新 gitignore_generated 字段"外的其他操作 - 跳过阶段 1-5 和阶段 7 的除"更新 gitignore_generated 字段"外的其他操作
### C. 框架整合(执行框架整合清单)
- 用户关键词:`整合到框架` / `合并到模板` / `加入框架白名单` / `template integration` / `framework sync` / `规模化这个 Skill` / `沉淀到模板`
- 口头描述"把这个能力加进模板"、"这个 Skill 应该是框架级的"
- 执行本文件"框架整合流程"章节的完整检核清单,不走阶段 0→7
## 执行原则(不可协商) ## 执行原则(不可协商)
1. **稳定准确 > token 成本**:每一步可以多读、多确认、让用户点头,不要图快 1. **稳定准确 > token 成本**:每一步可以多读、多确认、让用户点头,不要图快
@@ -139,6 +157,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
| `.opencode/data/profile/user-profile-log.md` | user-profile-log 模板 | | `.opencode/data/profile/user-profile-log.md` | user-profile-log 模板 |
| `.opencode/data/profile/project-profile.md` | project-profile 模板 | | `.opencode/data/profile/project-profile.md` | project-profile 模板 |
| `.opencode/data/profile/project-profile-log.md` | project-profile-log 模板 | | `.opencode/data/profile/project-profile-log.md` | project-profile-log 模板 |
| `.opencode/data/spec-docs/state.json` | state.json 模板 |
执行要点: 执行要点:
- 每个重置前**先 Read 现有内容预览前 10 行**给用户,避免误删有价值数据(特别是 deferred/pitfalls 用户可能想保留) - 每个重置前**先 Read 现有内容预览前 10 行**给用户,避免误删有价值数据(特别是 deferred/pitfalls 用户可能想保留)
@@ -257,6 +276,8 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `opencode.json` —— OpenCode 配置文件 - `opencode.json` —— OpenCode 配置文件
- `.opencode/.init-done` —— **阶段 7 写入**;模板仓库自身不应包含此文件 - `.opencode/.init-done` —— **阶段 7 写入**;模板仓库自身不应包含此文件
- `.opencode/.gitignore` —— node_modules 忽略规则 - `.opencode/.gitignore` —— node_modules 忽略规则
- `.opencode/package.json` —— opencode 插件运行时依赖声明(`@opencode-ai/plugin`
- `.opencode/package-lock.json` —— 依赖锁定文件,确保跨环境依赖版本一致
### Skills规范 Skill 目录白名单) ### Skills规范 Skill 目录白名单)
@@ -267,6 +288,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `.opencode/skills/pitfall-journal/` - `.opencode/skills/pitfall-journal/`
- `.opencode/skills/problem-distillery/` - `.opencode/skills/problem-distillery/`
- `.opencode/skills/profile-memory/` - `.opencode/skills/profile-memory/`
- `.opencode/skills/spec-docs/`
> **任何不在此白名单中的 skill 目录**,在阶段 3 中一律删除(视为源项目的项目级 Skill > **任何不在此白名单中的 skill 目录**,在阶段 3 中一律删除(视为源项目的项目级 Skill
@@ -277,6 +299,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `.opencode/data/pitfalls/pitfalls.md` - `.opencode/data/pitfalls/pitfalls.md`
- `.opencode/data/distillery/{problems.md, insights.md, golden-rules.md}` - `.opencode/data/distillery/{problems.md, insights.md, golden-rules.md}`
- `.opencode/data/profile/{user-profile.md, user-profile-log.md, project-profile.md, project-profile-log.md}` - `.opencode/data/profile/{user-profile.md, user-profile-log.md, project-profile.md, project-profile-log.md}`
- `.opencode/data/spec-docs/state.json`
--- ---
@@ -437,6 +460,16 @@ last_distill_date: {{DATE}}
## 记录 ## 记录
``` ```
### spec-docs/state.json
```json
{
"last_review_date": null,
"last_processed_changelog_id": null,
"review_count": 0
}
```
### .init-done ### .init-done
阶段 7 写入的 sentinelYAML 格式,字段固定: 阶段 7 写入的 sentinelYAML 格式,字段固定:
@@ -778,6 +811,123 @@ public/build/
--- ---
## 框架整合流程Template Integration
> 本清单是框架整合的**唯一检核入口**。当在实际项目中创建了新的跨项目级别能力需要合并回本模板时Agent 必须按本清单逐项执行,不得跳过任何一步。
### 触发关键词
`整合到框架` / `合并到模板` / `加入框架白名单` / `template integration` / `framework sync` / `规模化这个 Skill` / `沉淀到模板`
### 执行流程
1. **识别整合类型**:判断本次整合属于下方哪一(或几)类
2. **逐项执行该类的全部检核项**:打勾即改,不可只记 "后续补充"
3. **交叉验证**:执行完成后,用"框架截面自检"反向核对每项是否存在
4. **生成报告**:列出每个检核项的完成状态
---
### 整合类型与检核清单
#### 类型 1新增基础设施 Skill
> 触发条件:在项目中创建了一个服务于 opencode 自身元系统的新 Skill非项目业务 Skill
| # | 检核项 | 操作 |
|---|--------|------|
| 1.1 | Skill 目录存在 `SKILL.md` 且含正确 frontmatter | 验证 `name``description` 字段 |
| 1.2 | `opencode-init` 规范清单 → Skills 白名单 | 在 `### Skills规范 Skill 目录白名单)` 下新增条目 |
| 1.3 | `opencode-init` 清理清单 → 阶段 3 | 检查:新 Skill 如有数据文件,需在 B 组重置列表新增条目 |
| 1.4 | `epee-orchestrator/registry.md` | 新增条目(格式见 registry.md 注释),类型标注 `基础设施``个人级` |
| 1.5 | `AGENTS.md` | 检查:新 Skill 是否被 AGENTS.md 引用?若有,引用路径是否正确? |
| 1.6 | `opencode.json``instructions` | 检查:新 Skill 是否有数据文件需要注入到会话上下文?若有,追加路径 |
| 1.7 | Skill 自迭代日志 | 新 Skill 必须包含 `## 自迭代日志` 章节(空白即可) |
#### 类型 2新增数据文件
> 触发条件:新增或修改了 `.opencode/data/` 下的数据文件changelog/deferred/pitfalls/distillery/profile/spec-docs 等)
| # | 检核项 | 操作 |
|---|--------|------|
| 2.1 | `opencode-init` 规范清单 → 数据占位目录 | 在 `### 数据占位目录` 下新增路径 |
| 2.2 | `opencode-init` 清理清单 → B 组重置列表 | 在阶段 3 的 B 组表格中新增一行 |
| 2.3 | `opencode-init` → 模板内容 | 新增该文件的模板内容(最小化版本,含占位注释) |
| 2.4 | `opencode.json``instructions` | 若该数据文件应注入会话上下文,追加到 `instructions` 数组 |
| 2.5 | 所属 Skill 的 SKILL.md | 若数据文件归属某个 Skill该 Skill 应引用正确的文件路径 |
#### 类型 3新增运行时依赖
> 触发条件:新增或修改了 `.opencode/package.json` 中的 `dependencies`
| # | 检核项 | 操作 |
|---|--------|------|
| 3.1 | `opencode-init` 规范清单 → 顶层 | 确认 `.opencode/package.json` + `.opencode/package-lock.json` 在顶层 canonical 列表中 |
| 3.2 | `.opencode/.gitignore` | 确保 **不** 包含 `package.json``package-lock.json`(这些是基础设施文件,应被 git 跟踪) |
| 3.3 | `npm install``package-lock.json` 变更 | 提醒用户提交更新后的 `package-lock.json` |
| 3.4 | 根目录 `.gitignore`(如存在) | 确认未错误排除 `.opencode/package.json` |
#### 类型 4修改 AGENTS.md 规则
> 触发条件:在 AGENTS.md 中新增章节、修改规则逻辑、调整 Skill 调度条件
| # | 检核项 | 操作 |
|---|--------|------|
| 4.1 | AGENTS.md 引用新 Skill | 检查:新增的 Skill 是否已在 `opencode-init` Skills 白名单?是否已在 `epee-orchestrator/registry.md` 注册? |
| 4.2 | AGENTS.md 引用新数据文件 | 检查:路径是否在 `opencode.json``instructions` 中?是否在 `opencode-init` 数据占位目录中? |
| 4.3 | AGENTS.md 引用 `spec-docs` Skill | 检查:`spec-docs` Skill 是否已在 Skills 白名单?(此项为固定检查,因历史上发生过遗漏) |
| 4.4 | AGENTS.md 引用新 docs/ 文档 | 检查:`docs/` 下的文档路径是否存在frontmatter 是否完整?(见 `docs/README.md` 元数据标准) |
#### 类型 5修改 opencode.json 指令注入
> 触发条件:修改了 `opencode.json` 的 `instructions` 数组
| # | 检核项 | 操作 |
|---|--------|------|
| 5.1 | 新增路径指向的数据文件存在 | `read` 验证路径可访问 |
| 5.2 | 数据文件已在 `opencode-init` 数据占位目录中 | 确保 init 流程会保留/重置该文件 |
| 5.3 | 若路径指向 Skill 内部资源 | 确保该 Skill 在 Skills 白名单中 |
#### 类型 6新增 docs/ 规范文档
> 触发条件:在 `docs/` 下新增了架构方案/技术规范/项目约定文档,且是框架级别(非项目专属)
| # | 检核项 | 操作 |
|---|--------|------|
| 6.1 | `docs/README.md` 目录结构图 | 若新增了子目录分类,更新目录结构图 |
| 6.2 | 文档 frontmatter 完整 | `id` / `title` / `type` / `status` / `created` / `updated` / `related_changelogs` |
| 6.3 | 文档编号唯一 | 检查 `id` 不与已有文档重复 |
| 6.4 | `spec-docs` Skill 可覆盖 | 确认 `spec-docs` 操作 B周期审查能发现该文档 |
---
### 框架截面自检Cross-Section Verification
> 整合完成后Agent 必须运行此自检:逐一检查以下 "截面",确认所有被引用的组件在对应位置都存在。
| 截面 | 检查方式 |
|------|---------|
| `AGENTS.md` 引用的 Skill | grep Skill 名 → 必须在 `opencode-init` Skills 白名单中 |
| `AGENTS.md` 引用的数据文件 | grep 文件路径 → 必须在 `opencode-init` 数据占位目录中 |
| `AGENTS.md` 引用的 docs/ 文档 | glob 检查文件存在 |
| `opencode.json``instructions` 所列路径 | `read` 逐条验证文件存在 |
| `opencode.json``instructions` 所列路径 | 必须在 `opencode-init` 数据占位目录 或 顶层 canonical 中 |
| `epee-orchestrator/registry.md` 注册的 Skill | glob 检查对应 `SKILL.md` 存在 |
| `epee-orchestrator/registry.md` 注册的 Skill | 必须在 `opencode-init` Skills 白名单中(基础设施类 + 个人级) |
| `.opencode/skills/` 下的 Skill 目录 | 若不在 `epee-orchestrator/registry.md` 中 → 缺失注册 |
| `.opencode/skills/` 下的 Skill 目录 | 若不在 `opencode-init` Skills 白名单中且非项目级 → 警告 |
| `.opencode/data/` 下的数据文件 | 若不在 `opencode-init` 数据占位目录中 → 警告 |
| `.opencode/data/` 下的数据文件 | 若需要注入上下文 → 检查是否在 `opencode.json``instructions` 中 |
### 整合自检执行规则
1. **先整合后自检**:先完成所有类型检核项的修改,再跑截面自检
2. **自检发现缺口 → 回到对应类型的检核清单补充**,不可手动修补绕过
3. **每项自检必须输出结果**`✅ 通过` / `❌ 缺失:<具体描述>` / `⚠️ 跳过:<原因>`
4. **任何 ❌ 结果必须在最终报告前修复**
---
## 自迭代日志 ## 自迭代日志
本节记录使用本 Skill 过程中发现的必要检查项。 本节记录使用本 Skill 过程中发现的必要检查项。