新增框架整合流程,方便后续新增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
description: >-
初始化新项目的 .opencode 结构。两种触发方式:
初始化新项目的 .opencode 结构,以及将实际项目中孵化出的跨项目能力整合回模板框架。
三种触发方式:
1首次自动触发 —— 当 `.opencode/.init-done` sentinel 不存在时,
AGENTS.md 会在会话首次响应前引导 Agent 主动执行本 Skill
2关键词手动触发 —— "初始化opencode"、"opencode init"、"重置 opencode"、"补 gitignore" 等。
3框架整合 —— "整合到框架"、"合并到模板"、"加入框架白名单"、"template integration" 等。
流程清理模板残留的项目专用数据changelog/deferred/pitfalls/profile/distillery
可选生成 .gitignore 模板,最后写入 `.opencode/.init-done` 标记完成。
已 init 仓库不会再自动触发,除非用户主动通过关键词请求。
@@ -43,6 +45,16 @@ description: >-
init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
```
### 场景 D框架整合反向流程
```
1. 在实际项目开发中,孵化出了一个新的跨项目能力(新 Skill / 新数据文件 / 新依赖)
2. 用户认为该能力应成为模板框架的一部分
3. 用户说"把这个能力整合到 opencode 框架"
4. Agent 按"框架整合流程"清单逐项执行,更新本 SKILL.md 各截面
5. 框架整合流程**不**操作 .init-done**不**修改项目数据文件
```
## 触发条件
本 Skill 由 AGENTS.md 触发,两类入口:
@@ -58,6 +70,12 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- 用户关键词:`补 gitignore` / `生成 gitignore` / `gitignore 模板`
- 跳过阶段 1-5 和阶段 7 的除"更新 gitignore_generated 字段"外的其他操作
### C. 框架整合(执行框架整合清单)
- 用户关键词:`整合到框架` / `合并到模板` / `加入框架白名单` / `template integration` / `framework sync` / `规模化这个 Skill` / `沉淀到模板`
- 口头描述"把这个能力加进模板"、"这个 Skill 应该是框架级的"
- 执行本文件"框架整合流程"章节的完整检核清单,不走阶段 0→7
## 执行原则(不可协商)
1. **稳定准确 > token 成本**:每一步可以多读、多确认、让用户点头,不要图快
@@ -139,6 +157,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
| `.opencode/data/profile/user-profile-log.md` | user-profile-log 模板 |
| `.opencode/data/profile/project-profile.md` | project-profile 模板 |
| `.opencode/data/profile/project-profile-log.md` | project-profile-log 模板 |
| `.opencode/data/spec-docs/state.json` | state.json 模板 |
执行要点:
- 每个重置前**先 Read 现有内容预览前 10 行**给用户,避免误删有价值数据(特别是 deferred/pitfalls 用户可能想保留)
@@ -257,6 +276,8 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `opencode.json` —— OpenCode 配置文件
- `.opencode/.init-done` —— **阶段 7 写入**;模板仓库自身不应包含此文件
- `.opencode/.gitignore` —— node_modules 忽略规则
- `.opencode/package.json` —— opencode 插件运行时依赖声明(`@opencode-ai/plugin`
- `.opencode/package-lock.json` —— 依赖锁定文件,确保跨环境依赖版本一致
### Skills规范 Skill 目录白名单)
@@ -267,6 +288,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `.opencode/skills/pitfall-journal/`
- `.opencode/skills/problem-distillery/`
- `.opencode/skills/profile-memory/`
- `.opencode/skills/spec-docs/`
> **任何不在此白名单中的 skill 目录**,在阶段 3 中一律删除(视为源项目的项目级 Skill
@@ -277,6 +299,7 @@ init 后用户说"补一下 gitignore"或"生成 gitignore" → 只跑阶段 5.5
- `.opencode/data/pitfalls/pitfalls.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/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
阶段 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 过程中发现的必要检查项。