Skip to content

Commit b3f5dc7

Browse files
CodeCasterXclaude
andcommitted
feat(opencode): 新增 OpenCode CLI 自定义命令配置
添加 .opencode/ 目录,包含项目任务管理和开发工作流的命令模板: - 任务管理:analyze-issue, plan, implement, review, refine, complete, block, task-status - Git/PR 管理:commit, create-pr, sync-issue, sync-pr, refine-title - 依赖/安全:upgrade-dependency, analyze-security, close-security - 测试:test Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 530cf1b commit b3f5dc7

18 files changed

+1539
-0
lines changed

.opencode/README.md

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
# OpenCode 配置说明
2+
3+
本目录包含 FIT Framework 项目的 OpenCode 配置和自定义命令。
4+
5+
## 📁 目录结构
6+
7+
```
8+
.opencode/
9+
├── README.md # 本文件
10+
└── commands/ # 自定义 Slash Commands
11+
├── analyze-issue.md
12+
├── analyze-security.md
13+
├── block.md
14+
├── close-security.md
15+
├── commit.md
16+
├── complete.md
17+
├── create-pr.md
18+
├── implement.md
19+
├── plan.md
20+
├── refine-title.md
21+
├── refine.md
22+
├── review.md
23+
├── sync-issue.md
24+
├── sync-pr.md
25+
├── task-status.md
26+
├── test.md
27+
└── upgrade-dependency.md
28+
```
29+
30+
## 📋 可用命令
31+
32+
### 任务管理工作流
33+
34+
完整的任务管理工作流命令:
35+
36+
1. **`/analyze-issue <issue-number>`** - 分析 GitHub Issue 并创建需求分析文档
37+
2. **`/plan <task-id>`** - 为任务设计技术方案并输出实施计划
38+
3. **`/implement <task-id>`** - 根据技术方案实施任务并输出实现报告
39+
4. **`/review <task-id>`** - 审查任务实现并输出代码审查报告
40+
5. **`/refine <task-id>`** - 处理代码审查反馈并修复问题
41+
6. **`/task-status <task-id>`** - 查看任务的当前状态和进度
42+
7. **`/complete <task-id>`** - 标记任务完成并归档到 completed 目录
43+
8. **`/block <task-id>`** - 标记任务阻塞并记录阻塞原因
44+
45+
### Git 和 PR 管理
46+
47+
代码提交和 PR 相关命令:
48+
49+
- **`/commit`** - 提交当前变更到 Git(自动检查版权头年份)
50+
- **`/create-pr [branch-name]`** - 创建 Pull Request(默认到 3.6.x 分支)
51+
- **`/sync-issue <task-id>`** - 将任务进度同步到 GitHub Issue 评论
52+
- **`/sync-pr <task-id>`** - 将任务进度同步到 Pull Request 评论
53+
- **`/refine-title <id>`** - 深度分析 Issue/PR 内容并重构标题为 Conventional Commits 格式
54+
55+
### 依赖和安全管理
56+
57+
依赖升级和安全告警处理命令:
58+
59+
- **`/upgrade-dependency <package> <from> <to>`** - 升级项目依赖
60+
- **`/analyze-security <alert-number>`** - 分析 Dependabot 安全告警并创建修复任务
61+
- **`/close-security <alert-number>`** - 关闭 Dependabot 安全告警(需提供合理理由)
62+
63+
### 测试
64+
65+
- **`/test`** - 执行完整的测试流程
66+
67+
## 🚀 使用示例
68+
69+
### 完整的功能开发流程
70+
71+
```bash
72+
# 1. 分析 Issue #207
73+
/analyze-issue 207
74+
75+
# 2. 设计技术方案
76+
/plan TASK-20260120-104654
77+
78+
# 3. 实施功能
79+
/implement TASK-20260120-104654
80+
81+
# 4. 代码审查
82+
/review TASK-20260120-104654
83+
84+
# 5. 如果有问题需要修复
85+
/refine TASK-20260120-104654
86+
87+
# 6. 提交代码
88+
/commit
89+
90+
# 7. 创建 PR
91+
/create-pr
92+
93+
# 8. 标记任务完成
94+
/complete TASK-20260120-104654
95+
```
96+
97+
### 依赖升级流程
98+
99+
```bash
100+
# 1. 升级依赖
101+
/upgrade-dependency swagger-ui 5.30.0 5.30.2
102+
103+
# 2. 提交变更
104+
/commit
105+
```
106+
107+
### 安全告警处理流程
108+
109+
```bash
110+
# 1. 分析安全告警
111+
/analyze-security 23
112+
113+
# 2. 设计修复方案
114+
/plan TASK-20260120-110000
115+
116+
# 3. 实施修复
117+
/implement TASK-20260120-110000
118+
119+
# 4. 提交修复
120+
/commit
121+
122+
# 或者如果是误报
123+
/close-security 23
124+
```
125+
126+
## 🔧 命令语法说明
127+
128+
### Shell 输出注入
129+
130+
OpenCode 支持使用 `!` 符号注入 bash 命令输出:
131+
132+
```markdown
133+
!`date +%Y` # 注入当前年份
134+
!`git status` # 注入 git 状态
135+
!`gh issue view $1 --json title` # 注入 Issue 信息
136+
```
137+
138+
### 文件引用
139+
140+
使用 `@` 符号引用文件内容:
141+
142+
```markdown
143+
@src/components/Button.tsx # 引用文件内容
144+
```
145+
146+
### 参数占位符
147+
148+
- `$ARGUMENTS` - 所有参数
149+
- `$1` - 第一个参数
150+
- `$2` - 第二个参数
151+
- `$3` - 第三个参数
152+
- ...
153+
154+
## 📝 自定义命令格式
155+
156+
所有命令文件使用 Markdown 格式,带有 YAML frontmatter:
157+
158+
```markdown
159+
---
160+
description: 命令描述
161+
agent: general # 使用的 agent (general/explore/build)
162+
subtask: false # 是否作为子任务运行
163+
model: anthropic/claude-3-5-sonnet-20241022 # 可选:指定模型
164+
---
165+
166+
命令的 prompt template 内容...
167+
168+
可以使用:
169+
- !`shell command` 注入命令输出
170+
- @file-path 引用文件
171+
- $1, $2 访问参数
172+
```
173+
174+
## 🎯 最佳实践
175+
176+
1. **使用完整工作流**:按照 analyze → plan → implement → review → commit 的顺序执行
177+
2. **人工检查点**:在 plan 和 review 步骤后进行人工审查
178+
3. **任务状态管理**:使用 `/task-status` 随时查看任务进度
179+
4. **及时同步**:使用 `/sync-issue``/sync-pr` 保持沟通
180+
5. **阻塞处理**:遇到无法解决的问题及时使用 `/block` 标记
181+
182+
## 📚 相关文档
183+
184+
- [OpenCode 官方文档](https://opencode.ai/docs/commands)
185+
- [FIT Framework AI 协作指南](../.ai-agents/README.md)
186+
- [AI 协作快速开始](../.ai-agents/QUICKSTART.md)
187+
188+
## 🤝 贡献
189+
190+
如需添加新命令或修改现有命令:
191+
192+
1.`commands/` 目录创建 `.md` 文件
193+
2. 按照上述格式编写命令
194+
3. 测试命令是否正常工作
195+
4. 更新本 README 文档
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
description: 分析 GitHub Issue 并创建需求分析文档
3+
agent: explore
4+
subtask: false
5+
---
6+
7+
分析 GitHub Issue #$1 并创建任务文件。
8+
9+
执行以下步骤:
10+
11+
1. 获取 Issue 信息:
12+
- 使用 gh issue view $1 --json number,title,body,labels 获取 Issue 详情
13+
- 如果 Issue 不存在,提示用户检查 Issue 编号
14+
15+
2. 创建任务目录:
16+
- 创建 .ai-workspace/active/TASK-!`date +%Y%m%d-%H%M%S`/ 目录
17+
- 使用 .ai-agents/templates/task.md 模板创建 task.md 文件
18+
- 填写任务元数据: issue_number, title, created_at, workflow 等
19+
20+
3. 执行需求分析:
21+
- 阅读并理解 Issue 描述
22+
- 搜索相关代码文件(使用 glob/grep)
23+
- 分析代码结构和影响范围
24+
- 识别潜在的技术风险和依赖
25+
- 评估工作量和复杂度
26+
27+
4. 输出分析文档到 analysis.md,包含:
28+
- 需求理解(重新描述需求)
29+
- 相关文件列表(带文件路径和行号)
30+
- 影响范围评估(直接影响和间接影响)
31+
- 技术风险
32+
- 依赖关系
33+
- 工作量和复杂度评估
34+
35+
5. 更新任务状态:
36+
- current_step: requirement-analysis
37+
- updated_at: 当前时间
38+
- 标记 analysis.md 为已完成
39+
40+
6. 告知用户:
41+
- 输出任务ID、标题、工作流
42+
- 显示输出文件路径
43+
- 提示下一步使用 /plan $TASK_ID 设计技术方案
44+
45+
**注意事项**:
46+
- 严格遵循 .ai-agents/workflows/feature-development.yaml 工作流定义
47+
- 分析完成后建议人工审查
48+
- 如果已存在相关任务,询问是否重新分析
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
---
2+
description: 分析 Dependabot 安全告警并创建修复任务
3+
agent: general
4+
subtask: false
5+
---
6+
7+
分析 Dependabot 安全告警 #$1,评估安全风险并创建修复任务。
8+
9+
执行以下步骤:
10+
11+
1. 获取安全告警信息:
12+
!`gh api repos/<owner>/<repo>/dependabot/alerts/$1`
13+
14+
提取关键信息:
15+
- number, state, severity
16+
- security_advisory: ghsa_id, cve_id, summary, description
17+
- dependency: package.name, package.ecosystem, manifest_path
18+
- security_vulnerability: first_patched_version, vulnerable_version_range
19+
20+
2. 创建任务文件:
21+
- 检查是否已存在该安全告警的任务
22+
- 如果没有,创建新任务目录: .ai-workspace/active/TASK-!`date +%Y%m%d-%H%M%S`/
23+
- 使用 .ai-agents/templates/task.md 模板创建 task.md
24+
- 填写任务元数据:
25+
```yaml
26+
security_alert_number: $1
27+
severity: <critical/high/medium/low>
28+
cve_id: <CVE-ID>
29+
ghsa_id: <GHSA-ID>
30+
```
31+
32+
3. 分析受影响范围:
33+
- 识别受影响的依赖包和版本
34+
- 搜索项目中使用该依赖的所有位置(使用 grep)
35+
- 检查依赖文件(pom.xml, requirements.txt, package.json 等)
36+
- 分析是否直接使用了漏洞代码路径
37+
- 评估漏洞的实际影响(是否可被利用)
38+
- 识别依赖关系(直接依赖 vs 传递依赖)
39+
40+
4. 制定修复方案:
41+
42+
**优先方案**:
43+
1. 升级到安全版本
44+
- 检查是否有修复版本
45+
- 评估升级的兼容性风险
46+
- 检查是否有破坏性变更
47+
48+
2. 替换依赖(如果无法升级)
49+
- 寻找替代库
50+
- 评估迁移成本
51+
52+
3. 缓解措施(临时方案)
53+
- 配置调整
54+
- 代码层面的防护
55+
- 网络隔离等
56+
57+
5. 输出分析文档到 security-analysis.md,包含:
58+
- 告警基本信息(编号、严重程度、GHSA/CVE ID)
59+
- 漏洞详情(描述、受影响的依赖、依赖文件位置)
60+
- 影响范围评估(直接影响、漏洞可利用性分析)
61+
- 修复方案(推荐方案、备选方案、临时缓解措施)
62+
- 测试策略
63+
- 参考链接
64+
65+
6. 更新任务状态:
66+
- current_step: security-analysis
67+
- updated_at: 当前时间
68+
- 标记 security-analysis.md 为已完成
69+
70+
7. 告知用户:
71+
```
72+
🔒 安全告警 #$1 分析完成
73+
74+
**漏洞信息**:
75+
- 严重程度: <severity>
76+
- CVE/GHSA: <cve-id> / <ghsa-id>
77+
- 受影响包: <package-name>
78+
79+
**任务信息**:
80+
- 任务ID: <task-id>
81+
- 任务标题: <title>
82+
- 风险等级: <高/中/低>
83+
84+
**输出文件**:
85+
- 任务文件: .ai-workspace/active/<task-id>/task.md
86+
- 分析文档: .ai-workspace/active/<task-id>/security-analysis.md
87+
88+
**修复建议**: <简短的修复建议摘要>
89+
90+
**下一步**:
91+
审查安全分析后,使用以下命令设计修复方案: /plan <task-id>
92+
93+
如果是误报,可以使用以下命令关闭告警: /close-security $1
94+
```
95+
96+
**注意事项**:
97+
- Critical/High: 立即处理
98+
- Medium: 计划处理
99+
- Low: 可延后处理
100+
- 区分直接依赖和传递依赖
101+
- 特别注意跨大版本升级的兼容性风险

0 commit comments

Comments
 (0)