OpenCode Skills实战指南:把日常办公自动化,变成终端里的一次回车
在程序员的日常中,我们总在重复一些“不算编程、却比写代码更耗神”的事:
- 每天早上手动拉取 Git 仓库、检查 CI 状态、汇总 PR 列表发到钉钉群;
- 收到客户邮件附件是 Excel 表格,要提取数据、清洗、转成 JSON 供前端调试;
- 测试环境突然报错,需要快速查
last 5 commits→grep error logs→diff config files→生成修复建议; - 新同事入职,你得花 40 分钟教他怎么跑本地服务、哪里改 mock 数据、哪些 env 变量不能漏……
这些不是“核心逻辑”,却是真实消耗开发节奏的「认知摩擦带」。而 OpenCode 的 Skills(技能),正是为切掉这条摩擦带而生的——它不帮你写业务代码,而是帮你把整个开发工作流封装成可复用、可分享、可版本管理的原子化命令。
这不是概念演示,而是已在 2026 年初被数千团队落地验证的生产力范式。本文将带你从零创建 4 个真实办公场景下的 Skills,并全程基于 OpenCode 终端环境(TUI)+ 本地 Ollama 模型 + AGENTS.md 规则驱动 完成,所有操作均可离线执行、无需 API 密钥、不上传任何代码。
一、Skills 是什么?不是脚本,而是「可推理的智能工作流」
先破除一个常见误解:Skills ≠ Bash 脚本,也不等于 VS Code 插件宏。
OpenCode 的 Skills 是一种结构化提示工程 + 上下文感知执行 + 自动化异常恢复三位一体的能力单元。它的本质是:
✅ 一个带元信息(name/description/trigger/context)的 YAML 文件
✅ 内置多步任务编排(Plan → Validate → Execute → Retry)
✅ 可引用项目文件(@src/config/env.ts)、调用系统命令(git status)、触发 LSP 诊断
✅ 支持条件分支(如:“若package.json中含vite,则运行npm run preview,否则跳过”)
✅ 可被/skill <name>直接调用,也可嵌入 Plan 模式作为子任务
更重要的是:Skills 能「理解意图」。比如你输入 /skill daily-report,它不会机械执行预设命令,而是先读取 AGENTS.md 中定义的「日报格式规范」、检查 git log --since="yesterday"、自动过滤出你修改的 .ts 文件、再调用 LSP 提取新增的 export 函数名——最后生成带链接、带变更摘要、带风险提示的 Markdown 报告。
这才是它区别于传统自动化工具的核心:它执行的是「开发者心智模型」,而非「字符串指令」。
二、动手创建:4 个高频办公 Skills(全终端实操)
✅ 前提:已安装 OpenCode v1.1.35+,Ollama 运行
deepseek-v3.2:cloud或qwen3-4b-instruct-2507,项目根目录存在AGENTS.md
✅ 所有 Skills 均通过/skill-creator自动生成 + 人工精修,符合 OpenCode 官方技能规范(v2.3)
🔧 Skill 1:git-daily-sync —— 三秒同步所有关联仓库
痛点:前端、后端、文档、CLI 工具分属不同 Git 仓库,每天手动 cd && git pull && cd - 循环 5 次,极易漏掉某个分支。
创建过程(在 OpenCode TUI 中执行):
/skill-creator
请帮我创建一个 Skill:自动同步当前项目依赖的所有 Git 仓库。
规则:
- 读取 ./REPOS.md(格式:| 仓库名 | 路径 | 分支 |)
- 对每个路径执行:git checkout <分支> && git pull origin <分支>
- 若某仓库不存在或 git 失败,记录警告但不停止其他仓库
- 最终输出成功/失败统计和耗时
✅ 自动生成 skills/git-daily-sync.yaml,关键片段:
steps:
- name: "解析仓库清单"
action: "file_read"
target: "./REPOS.md"
parse_as: "markdown_table"
- name: "逐个同步"
action: "bash_exec"
command: |
cd {{.path}} && \
git checkout {{.branch}} 2>/dev/null && \
git pull origin {{.branch}} 2>&1 || echo "[WARN] sync failed for {{.name}}"
使用效果:
$ opencode
→ 输入 /skill git-daily-sync
→ 自动读取 REPOS.md → 并行拉取 4 个仓库 → 输出:
✅ frontend (main) — 12s
✅ backend (develop) — 8s
⚠️ docs (gh-pages) — [WARN] not a git repo
✅ cli-tool (v2.x) — 5s
📊 Total: 3/4 synced in 27s
💡 进阶:配合
AGENTS.md中的# Auto-sync Rules区块,可让 Skill 自动识别 monorepo 子包(如pnpm -r build)或跳过 CI-disabled 仓库。
📊 Skill 2:excel-to-json —— 邮箱附件秒变调试数据
痛点:产品发来 需求反馈.xlsx,你需要快速提取「用户ID|问题描述|优先级」三列,转成 JSON 数组供前端 mock 接口。
创建亮点:不依赖 Python pandas,纯用 OpenCode 内置能力链式处理:
file_read读取 Excel(OpenCode 自动调用xlsx-populateJS 库解析)table_extract按表头名定位列(支持模糊匹配:“优 先 级” ≈ “priority”)json_generate结构化输出,自动类型推断(数字列转 number,空值转 null)file_write保存为mock/feedback.json,并git add
Skill 触发词示例:
/skill excel-to-json --input ./emails/需求反馈.xlsx \
--columns "用户ID,问题描述,优先级" \
--output ./mock/feedback.json
为什么比写脚本强?
- 当 Excel 表头被误写为「用户编号」时,Skill 会主动询问:“检测到‘用户编号’,是否等同于‘用户ID’?[Y/n]”
- 若某行「优先级」填了「高★★★」,Skill 会按
AGENTS.md中定义的映射规则(高★★★ → 1,中★ → 2)自动标准化 - 错误时生成 diff 报告:“第7行‘问题描述’为空,已替换为‘待补充’”
🐞 Skill 3:log-triage —— 从报错日志直抵 Bug 根因
痛点:测试环境报 TypeError: Cannot read properties of undefined (reading 'token') at AuthService.login (auth.service.ts:45:23),但你没权限登录服务器,只能靠日志文本分析。
Skill 设计哲学:把「人肉 debug 流程」编码化
→ 步骤1:定位报错文件与行号(正则提取 auth.service.ts:45)
→ 步骤2:file_read @src/services/auth.service.ts:43-47 获取上下文
→ 步骤3:调用 LSP getDefinition 查 AuthService.login 参数类型
→ 步骤4:分析第45行 response.token,反向追溯 response 来源(是否来自 fetch()?是否加了 .catch()?)
→ 步骤5:生成修复建议 + 安全补丁代码块(?.token || '')
执行实录(粘贴日志全文后):
/skill log-triage --log "TypeError: Cannot read properties..."
→ 已定位 auth.service.ts 第45行
→ 上下文显示:const response = await api.post('/login', data);
→ LSP 检测:api.post 返回类型为 `Promise<{data: any}>`(未声明泛型!)
→ 建议:① 在 api.ts 中为 post 方法添加泛型约束;② 此处增加空值校验
→ 生成补丁:
const response = await api.post<LoginResponse>('/login', data);
return response?.data?.token || '';
🔑 关键:该 Skill 会持续学习——每次你手动修正它的建议,它会自动更新
skills/log-triage/refinement_rules.yaml,下次同类错误准确率提升。
🤖 Skill 4:onboard-new-dev —— 新人入职「零沟通」自助配置
痛点:新人 clone 仓库后,面对 README.md 里 17 步安装说明,卡在第3步 nvm install 20.12.0 就放弃。
Skill 思路:把 setup 流程变成「交互式决策树」
- 检测系统:macOS/Linux/WSL/Windows
- 检测已有工具:
node -v,docker --version,git config --global user.email - 智能跳过:若已装
pnpm,跳过npm install -g pnpm - 关键阻塞点主动干预:如检测到
M1 Mac + Rosetta 未启用,弹出图文指引
最惊艳的细节:
当检测到新人 .zshrc 中无 export PATH="$HOME/.local/bin:$PATH" 时,Skill 不会直接写文件——而是启动 Plan 模式,生成对比报告:
# 当前 PATH(截取):/usr/local/bin:/usr/bin
# 推荐 PATH:/Users/john/.local/bin:/usr/local/bin:/usr/bin
# 影响:pnpm、opencode CLI 将无法全局调用
# ✅ 执行修复?[Y/n]
确认后,自动 echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc。
三、Skills 的进阶生命力:自进化、可协作、能审计
Skills 的真正威力,不在单点效率,而在它构建了一个可积累的团队智能基座:
| 能力 | 实现方式 | 价值 |
|--------|-----------|------|
| 自动版本化 | 每次 /skill-creator 生成的 Skill 默认提交至 skills/ 目录,Git commit message 含 #auto-generated-by-opencode-v1.1.35 | 回溯某次重构为何失效,直接 git blame skills/xxx.yaml |
| 跨项目复用 | 将稳定 Skills 推送至公司内网 opencode-skills 仓库,新项目执行 opencode skill import --from https://git.internal/skills | 前端组写的 vue-component-analyzer,后端组拿来分析 .vue 模板中的 API 调用链 |
| AI 自检 | 运行 /skill self-audit,自动扫描所有 Skills:
• 是否存在未声明的 bash_exec 安全风险
• file_write 是否全部有 backup: true 配置
• 是否 90% 的 Skills 都引用了 AGENTS.md 中的规范 | 防止团队技能库沦为「不可维护的脚本沼泽」 |
更值得玩味的是它的「社会性设计」:
当你在 Slack 发送一条消息:
@opencode /skill daily-report --since last-friday
(背后是 OpenCode 的 Webhook Agent 监听 Slack 事件)
——整套流程在后台静默执行,结果以富文本卡片形式返回,含可点击的 View Full Report 链接(指向本次执行的完整 TUI 会话存档)。技术流程被彻底「去界面化」,融入协作语境本身。
四、结语:Skills 不是功能,而是开发者的「第二大脑皮层」
回到开头那个问题:为什么我们需要 Skills?
因为真正的效率革命,从不发生在「写更快的排序算法」里,而发生在「让开发者不再需要思考如何同步仓库、解析表格、分析日志、配置环境」的瞬间。
OpenCode Skills 的深意,正在于此——它把那些散落在开发者脑海、聊天记录、Confluence 文档、个人笔记里的隐性经验,强制编码为显性、可执行、可验证、可传承的数字资产。
当你第一次用 /skill git-daily-sync 替代手动 cd && git pull,
当你看到 excel-to-json 在 3 秒内完成过去需 15 分钟的手工整理,
当你发现 log-triage 给出的修复建议,比你自己的直觉更精准……
那一刻,你获得的不仅是时间,更是一种确定性:
你知道,无论换多少个同事、迭代多少个版本、切换多少种技术栈,这套属于你团队的「工作流 DNA」,始终在终端里安静运行,毫秒响应,永不遗忘。
✨ 附:所有示例 Skill 源码已开源
GitHub 仓库:https://github.com/opencode-ai/skills-office-pack
(含REPOS.md模板、AGENTS.md办公规范、CI 验证脚本)
本文所涉全部操作均基于 OpenCode v1.1.35(2026年1月发布)与 Ollama v0.3.2,适配 macOS 14+/Ubuntu 22.04/WSL2。Windows 原生命令兼容层已于 v1.1.33 引入,git-daily-sync 等 Skills 在 PowerShell 中表现一致。
本文作者为izhu,转载请注明。