8.8 KiB
8.8 KiB
技能需求文档模板
这份文档用于给技术人员、产品人员和实施人员统一描述某个 skill 的研发需求。
建议原则:
- 一个 skill 对应一份主需求文档
- 需求先写清楚,再进入开发
- 文档描述“要做什么”和“做到什么程度”,不要在这里堆实现细节
- 实现方式、代码结构、发布流程,分别放到
DEVELOPMENT.md、CLI.md、SCHEMA.md、RUNTIME.md
如果你是从 skill-template 复制新技能,请复制本文件后,把下面所有占位内容替换成你的真实项目内容。
REQUIREMENTS
1. 文档目标
说明这份需求文档的作用,以及它解决什么问题。
模板写法:
- 本文档用于明确
【技能名称】的研发范围、交付标准、依赖关系和验收要求。 - 技术人员应以本文件作为开发范围依据,以避免实现偏差、范围蔓延或理解不一致。
示例:
- 本文档用于明确
weibo-publisher的研发需求,约束该 skill 的功能边界、输入输出和验收标准,作为开发、测试和上线验证的统一依据。
2. 业务背景
说明为什么要做这个 skill,它服务什么业务场景,解决什么实际问题。
模板写法:
- 当前业务场景中,用户需要在
【目标平台】完成【业务动作】。 - 现有流程主要依赖人工处理,存在
【效率低 / 容易出错 / 不可批量 / 不可追踪】等问题。 - 因此需要开发
【技能名称】,将该流程标准化、自动化,并接入匠厂技能体系中。
示例:
- 当前内容运营团队需要将内容库中的文章批量发布到微博平台,但人工登录后台、复制文章、填写标题和确认发布的流程效率较低,且不便于统一记录发布历史。
- 因此需要开发
weibo-publisher,用于把内容库文章按规范发布到微博平台,并记录发布结果,支持后续排查与复用。
3. 开发目标
说明本次开发希望最终交付什么结果。
模板写法:
- 完成
【技能名称】的标准目录结构搭建 - 完成 CLI 入口与基础命令
- 完成核心业务流程
- 完成与兄弟技能或外部系统的必要集成
- 完成正式环境发布验证
示例:
- 完成
weibo-publisher的标准 skill 结构建设 - 提供
health、version、publish、logs、log-get等命令 - 支持从兄弟技能读取账号与文章,并执行微博发布流程
- 支持记录发布日志,并可在正式环境中安装验证
4. 功能范围
说明这次开发明确要实现哪些功能。
模板写法:
- 支持
【命令1】 - 支持
【命令2】 - 支持读取
【数据来源】 - 支持执行
【核心业务动作】 - 支持记录
【日志 / 状态 / 结果】
建议将功能拆成“必须实现”和“可后续扩展”。
示例:
必须实现
- 支持
python scripts/main.py health - 支持
python scripts/main.py version - 支持
python scripts/main.py publish - 支持从
account-manager获取可用账号 - 支持从
content-manager获取待发布文章 - 支持执行微博后台发布流程
- 支持写入发布日志
可后续扩展
- 支持定时发布
- 支持失败自动重试
- 支持多账号轮询发布
5. 非功能要求
说明除功能外,对稳定性、可维护性、目录规范、日志、编码等方面的要求。
模板写法:
- 目录结构必须符合当前 skill 模板规范
- 入口必须统一为
scripts/main.py - 输出格式应尽量机读友好
- 错误前缀统一为
ERROR: - Windows 环境下需保证 UTF-8 输出兼容
- 必须具备基本日志能力
示例:
- 项目结构必须对齐
skill-template - CLI 入口统一使用
scripts/main.py - 关键执行结果应可通过 JSON 或固定文本结构返回
- 发布日志必须可追踪
- 不允许重新引入旧模板中的
docs/、optional/或scripts/skill_main.py
6. 输入输出要求
说明这个 skill 接收什么输入,产出什么输出。
模板写法:
输入
【输入参数1】【输入参数2】【依赖系统返回的数据】
输出
【标准输出】【错误输出】【数据库记录】【日志文件】
示例:
输入
account_id:可选,指定发布账号article_id:可选,指定发布文章account-manager返回的账号信息content-manager返回的文章信息
输出
- 发布成功时返回成功结果
- 发布失败时返回
ERROR:或FAIL:前缀的错误信息 - 在本地数据库中写入
publish_logs - 在日志目录中写入执行日志
7. 依赖的兄弟技能或外部系统
说明开发该 skill 时依赖哪些内部技能或外部平台。
模板写法:
兄弟技能依赖
【skill-a】:作用是【用途】【skill-b】:作用是【用途】
外部系统依赖
【平台名】:作用是【用途】【浏览器 / API / 第三方服务】:作用是【用途】
示例:
兄弟技能依赖
account-manager:提供账号信息content-manager:提供文章数据
外部系统依赖
- 微博后台:目标发布平台
- Chromium / Chrome / Edge:用于浏览器自动化
- Gitea:用于代码托管和发布工作流
- 匠厂客户端:用于正式环境安装与验证
8. 不在本次范围内的内容
这一节非常重要,用来明确本次“不做什么”,避免研发越做越散。
模板写法:
- 本次不实现
【功能A】 - 本次不处理
【平台B】 - 本次不做
【高级能力】 - 本次不兼容
【旧结构 / 旧逻辑】
示例:
- 本次不实现多平台统一发布
- 本次不实现定时任务调度
- 本次不实现自动重试机制
- 本次不兼容旧模板中的历史目录结构
9. 验收标准
说明什么情况下才算真正开发完成。
模板写法:
- 代码结构符合模板规范
- 最小命令可运行
- 核心命令可运行
- 正式环境可安装
- 匠厂中可看到最新版本
- 可以在新建任务中实际使用
示例:
health、version命令执行正常publish主流程可运行- 发布后 Gitea 工作流成功
- 匠厂技能市场能看到最新版本
- skill 可以正常安装
- 安装后可在“新建任务”中调用
10. 开发注意事项
说明研发过程中必须特别注意的事项。
模板写法:
- 不要修改无关 skill
- 不要破坏现有模板规范
- 优先遵守目录和分层约定
- 不要在 CLI 层堆业务逻辑
- 发布前必须先做本地最小验证
示例:
- 只允许修改当前 skill 仓库,不要改动其他兄弟项目
- 如使用浏览器自动化,优先复用已验证过的定位器和流程
cli只做参数解析,核心逻辑统一放到service- 发布前必须完成本地验证、工作流验证和正式环境安装验证
11. 变更记录
这一节用于记录需求文档本身的变化,不是 git 提交记录的替代,而是给技术人员看“需求范围怎么变了”。
模板写法:
| 日期 | 版本 | 变更人 | 变更内容 |
|---|---|---|---|
| 2026-04-13 | v1.0 | 张三 | 初版需求文档 |
| 2026-04-14 | v1.1 | 李四 | 增加正式环境验收要求 |
建议使用方式
建议每个新 skill 开发时,按下面顺序使用文档:
- 先写
references/REQUIREMENTS.md - 再按
references/DEVELOPMENT.md进入开发 - 开发过程中补充
CLI.md、SCHEMA.md、RUNTIME.md - 发布前回到
REQUIREMENTS.md对照验收标准逐项检查
最小模板示例
下面给出一个可直接参考的简化版示例:
# REQUIREMENTS
## 1. 文档目标
本文档用于明确 `weibo-publisher` 的研发需求、范围和验收标准,作为开发与测试的统一依据。
## 2. 业务背景
运营团队需要将内容库中的文章发布到微博平台,现有人工操作效率低,且缺少统一的发布记录。
## 3. 开发目标
- 完成 `weibo-publisher` 的标准 skill 结构
- 支持文章发布主流程
- 支持发布日志记录
## 4. 功能范围
- 支持 `health`
- 支持 `version`
- 支持 `publish`
- 支持查询发布日志
## 5. 非功能要求
- 入口统一为 `scripts/main.py`
- 保持 UTF-8 输出
- 结构符合 skill 模板规范
## 6. 输入输出要求
### 输入
- `account_id`
- `article_id`
### 输出
- 成功结果
- 错误信息
- 发布日志记录
## 7. 依赖的兄弟技能或外部系统
- `account-manager`
- `content-manager`
- 微博后台
## 8. 不在本次范围内的内容
- 不实现定时发布
- 不实现自动重试
## 9. 验收标准
- 命令可运行
- 能完成正式环境安装验证
- 能在新建任务中使用
## 10. 开发注意事项
- 不修改无关项目
- 不引入旧模板结构
## 11. 变更记录
| 日期 | 版本 | 变更人 | 变更内容 |
|------|------|--------|----------|
| 2026-04-13 | v1.0 | 张三 | 初版 |