158 lines
3.9 KiB
Markdown
158 lines
3.9 KiB
Markdown
# OpenCode 全局规则
|
||
|
||
## 缩写
|
||
- **oc** = opencode
|
||
|
||
---
|
||
|
||
## 1. 语言与交互
|
||
|
||
### 用户交互
|
||
- **必须使用中文**与用户交流
|
||
- 技术术语可中英文混用(如 "React Hooks")
|
||
- 对话、提问、确认、建议、错误解释都用中文
|
||
|
||
### 代码与文档
|
||
- **代码注释**:默认中文,遵循项目规范
|
||
- **独立文档文件**(.md、.txt):默认英文
|
||
- **工具输出**:可保持原语言,但解释用中文
|
||
|
||
---
|
||
|
||
## 2. 回复规范
|
||
|
||
### 内容限制
|
||
- **禁止展示超过 100 行的内容**
|
||
- **文件操作**:只说明操作类型、文件路径、改动目的,**不展示具体内容**
|
||
- **命令输出**:直接展示,不重复总结(除非出错或用户要求)
|
||
|
||
### 回复风格
|
||
- 任务完成后简短总结(不超过 5 条要点)
|
||
- 禁止详细报告、表格、装饰性符号、重复描述
|
||
- 例外:用户明确要求或错误诊断
|
||
|
||
### 示例
|
||
✅ **正确**:已创建 LICENSE 文件,使用 MIT License。
|
||
❌ **错误**:[展示完整的 License 文本内容]
|
||
|
||
---
|
||
|
||
## 3. Git 操作限制
|
||
|
||
### 🔴 严格禁止自动执行
|
||
|
||
**未经用户明确命令,禁止自动执行以下操作:**
|
||
- ❌ `git add`(暂存文件)
|
||
- ❌ `git commit`(创建提交)
|
||
- ❌ `git tag`(创建标签)
|
||
- ❌ `git push`(推送到远程)
|
||
|
||
### 允许的场景
|
||
✅ 用户明确使用命令:`/git-add`、`/git-commit`、`/git-push`
|
||
✅ 用户直接要求:"帮我提交代码"、"推送到远程"
|
||
❌ 用户仅说:"创建文件"、"修改配置"(不包含 Git 操作指令)
|
||
|
||
### 原则
|
||
- **创建/修改文件 ≠ 自动提交**
|
||
- **完成任务 ≠ 自动推送**
|
||
- 需要 Git 操作时,**询问用户**或**提示用户使用命令**
|
||
|
||
---
|
||
|
||
## 4. 开发规范
|
||
|
||
### Git 提交
|
||
- 遵循 [Conventional Commits](https://www.conventionalcommits.org/)
|
||
- 格式:`<type>(<scope>): <subject>`(中文)
|
||
- 类型:feat、fix、docs、style、refactor、test、chore、ci、build、perf
|
||
- 主分支:`main`
|
||
|
||
详见 `skill/git/SKILL.md`
|
||
|
||
### 代码风格(JavaScript/TypeScript)
|
||
- 缩进:2 空格
|
||
- 分号:使用
|
||
- 引号:双引号
|
||
- 命名:camelCase、PascalCase、UPPER_SNAKE_CASE
|
||
|
||
### 分支命名
|
||
- `feature/描述`、`fix/描述`、`docs/描述`
|
||
|
||
---
|
||
|
||
## 5. 批量修改策略
|
||
|
||
**原则:先修改一个,验证通过后再批量修改**
|
||
|
||
### 步骤
|
||
1. 选择样本(最具代表性)
|
||
2. 修改样本
|
||
3. 验证功能
|
||
4. 批量应用
|
||
5. 最终验证
|
||
|
||
### 例外
|
||
- 简单修改(如批量重命名)
|
||
- 已有测试覆盖
|
||
- 用户明确要求
|
||
|
||
---
|
||
|
||
## 6. 工具使用策略
|
||
|
||
| 工具 | 用途 |
|
||
|------|------|
|
||
| **Task** | 探索代码库、多步骤分析、全局搜索 |
|
||
| **Bash** | Git 操作、构建、测试命令 |
|
||
| **Read/Edit/Write** | 文件读写(不用 cat/sed/echo) |
|
||
| **Glob/Grep** | 文件查找和内容搜索 |
|
||
| **TodoWrite** | 任务管理(超过 3 步必须使用) |
|
||
|
||
---
|
||
|
||
## 7. 任务管理
|
||
|
||
### TodoWrite 使用原则
|
||
- 任务超过 3 步时创建 todo 列表
|
||
- 立即标记完成(不批量完成)
|
||
- 同时只有 1 个 `in_progress`
|
||
|
||
### 状态
|
||
- `pending`、`in_progress`、`completed`、`cancelled`
|
||
|
||
---
|
||
|
||
## 8. 代码质量
|
||
|
||
### 测试
|
||
- 新功能必须包含测试
|
||
- 覆盖率 ≥ 50%
|
||
|
||
### 构建
|
||
- 类型检查零错误
|
||
- 修复所有 Linter 警告
|
||
|
||
### 安全
|
||
- 不提交敏感信息(.env、密钥)
|
||
- 输入验证和输出编码
|
||
|
||
---
|
||
|
||
## 快速参考
|
||
|
||
| 场景 | 操作 |
|
||
|------|------|
|
||
| 用户说"创建文件" | 创建文件,**不自动提交** |
|
||
| 用户说"提交代码" | 可以执行 `git commit` |
|
||
| 用户使用 `/git-push` | 执行完整推送流程 |
|
||
| 创建超过 100 行的文件 | 只说明路径和用途,**不展示内容** |
|
||
| 命令输出已完整 | 直接展示,**不重复总结** |
|
||
| 批量修改 10 个文件 | 先改 1 个验证,再批量 |
|
||
|
||
---
|
||
|
||
详细指南:
|
||
- Git 工作流:`skill/git/SKILL.md`
|
||
- Gitea 集成:`skill/gitea/SKILL.md`
|
||
- 开发规范:各 `skill/*/SKILL.md`
|