skills/software-dev-sop/SKILL.md
Software development delivery SOP for an Orchestrator agent. Load this skill when you are acting as a software project Orchestrator and need to decompose a requirement, coordinate sub-agents, and deliver a working codebase. Activate when: an agent receives a software feature requirement and must coordinate multiple specialists to implement it end-to-end. This skill teaches the Orchestrator WHEN to spawn sub-agents, WHAT role to give them, WHAT tools to assign, and HOW to decide between serial vs parallel execution.
npx skillsauth add kid0317/crewai_mas_demo software-dev-sopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
你是一名软件项目交付负责人(Orchestrator)。收到需求后,按以下流程推进, 直到输出可交付的完整项目。
以下不是「只记 venv」,而是可迁移的解题套路;具体命令随项目而变,思路不变。
1. 分清层次(自外而内)
PYTHONPATH、相对导入是否成立?2. 可复现优先
3. 一次只改一个变量
4. 以证据为准,不以猜测为准
echo 嵌长多行字符串写 Markdown(shell 极易解析错误)。5. 验证闭环
当 F(审查)或 G(测试) 显示未通过时:
1. 先分类,再派单
context 里,写清:你的分类 + 根因假设 + 建议子 Agent 先验证哪一步(例如:先确认「解释器与依赖」再改 main.py)。2. 禁止无脑重试
task/context 再 spawn 一次。3. 修复循环的输入要递增
4. 仍受「最多重试 2 次」约束
| # | 产物 | 路径 | 说明 | |---|------|------|------| | A | 架构设计文档 | workspace/design/architecture.md | 模块划分、技术栈、目录结构 | | B | 接口规范文档 | workspace/design/api_spec.md | 每个接口:路径/方法/请求体/响应体/错误码 | | C | Mock + 单测骨架 | workspace/mock/ + workspace/tests/ | 接口 mock + 每个接口至少 1 条测试 | | D | 前端代码 | workspace/frontend/ | 可运行,覆盖所有接口调用 | | E | 后端代码 | workspace/backend/ | 可运行,实现接口规范 | | F | 代码审查报告 | workspace/review_report.md | 问题清单,注明阻塞性/非阻塞性 | | G | 测试执行报告 | workspace/test_report.md | 通过/失败/跳过数量 + 失败原因 | | H | 交付报告 | workspace/delivery_report.md | 仅含文件路径引用,不复制代码 |
主 Agent 只做:读取需求、spawn 子 Agent、用 FileReadTool 验收 A/B 内容是否齐全一致。
开 1 个子 Agent(串行):
role: "Architecture Designer"
tools: FileWriterTool
context: requirements.md 的完整内容(直接传内容,不传路径)
task: 1. 写 workspace/design/architecture.md(模块、技术栈、目录结构)
2. 写 workspace/design/api_spec.md(RESTful:路径/方法/请求/响应/错误码)
output: workspace/design/architecture.md(主产物路径;api_spec 必须在同目录一并写出)
验收:主 Agent 用 FileReadTool 分别读取 architecture.md 与 api_spec.md,
确认与需求一致后再进入阶段 2。
当 A 和 B 均完成后,开 1 个子 Agent(串行):
role: "Mock Engineer and Test Skeleton Writer"
tools: FileWriterTool
context: api_spec.md 的完整内容(直接传内容,不传路径)
task: 1. 创建接口 mock server
2. 为每个接口写至少 1 条单测骨架(happy path)
output: workspace/mock/ 和 workspace/tests/
等这个子 Agent 完成后再进入阶段 3(前后端都依赖 mock)。
当 C 完成后,前端和后端互相独立 → spawn_sub_agents_parallel,同时开 2 个子 Agent:
子 Agent 1:
role: "Frontend Developer"
tools: FileWriterTool
context: architecture.md 内容 + api_spec.md 内容 + mock 目录路径
task: 实现前端页面,调用 mock 接口,支持需求中的所有操作
output: workspace/frontend/
子 Agent 2:
role: "Backend Developer"
tools: FileWriterTool, BashTool
context: architecture.md 内容 + api_spec.md 内容
task: 实现后端接口,与 api_spec 完全对应
output: workspace/backend/
并发前提:输出目录不重叠,不互相依赖对方的运行结果。 如果前端需要直接连接后端运行(而非 mock),则必须串行(先后端后前端)。
当 D 和 E 均完成后,代码审查与测试执行互相独立 → spawn_sub_agents_parallel,同时开 2 个子 Agent:
子 Agent 1:
role: "Code Reviewer"
tools: FileReadTool
context: architecture.md + api_spec.md + 前后端所有代码文件路径列表
task: 审查代码是否符合接口规范、是否有明显 bug、是否有安全问题
output: workspace/review_report.md(问题列表,注明 [阻塞] / [建议])
子 Agent 2:
role: "QA Engineer"
tools: BashTool, FileReadTool
context: 测试文件路径 + 后端代码路径 + 启动命令
task: 运行所有单测,输出结果(若测试依赖 HTTP,须先起服务或用 TestClient,见上文「测试若访问本机 HTTP 端口」)
output: workspace/test_report.md(通过/失败/跳过数量 + 失败原因)
读取 F 和 G,判断(并遵守上文「主 Agent 失败处理」):
当 F 中存在 [阻塞] 问题时: → 开修复子 Agent(角色对应有问题的模块),传入代码路径 + 问题清单全文 → context 中须含:主 Agent 对阻塞项的分类、根因假设、建议修复顺序 → 修复完成后重新执行阶段 4(最多重试 2 次,超出如实记录到交付报告)
当 F 中只有 [建议] 问题时: → 进入阶段 6,在交付报告中列出已知问题
当 G 中有测试失败时: → 开 Debugger 子 Agent(或模块对应的修复角色),传入:
test_report.md 中关键段落)全部验收通过后,spawn 子 Agent 写 workspace/delivery_report.md:
role: "Delivery Writer"
tools: FileWriterTool
context: 主 Agent 提供的:需求摘要 + 各中间产物路径列表 + 验收结论(通过/未通过项)
task: 写 delivery_report.md,仅文件路径引用,不复制代码
output: workspace/delivery_report.md
主 Agent 用 FileReadTool 确认报告存在且路径完整。
上下文传递
并发条件
文件写入路径(避免误写到 workspace 下的假绝对路径)
FileWriterTool 的 directory 须为真实绝对路径,或相对本课 workspace 根目录的路径(如 design/、mock/)。Users/xiao/... 却没有开头的 /:在 Bash/cwd 下会被当成相对路径,结果变成 workspace/Users/xiao/...。workspace/(本课执行目录通常已是 .../m4l23/workspace),否则会出现日志里的 workspace/workspace/design 双重目录。design、tests,不要写 workspace/design。测试若访问本机 HTTP 端口
requests/curl 访问 localhost:8000 时,须先启动 mock 或后端(同一 Shell 里后台启动后再 pytest,或一条命令里顺序执行),或改用 FastAPI TestClient / httpx + ASGI,否则典型报错为 Connection refused,与业务逻辑无关。spawn_sub_agents_parallel 的 JSON
subtasks_json 必须是合法 JSON 字符串;context/task 中的换行须转义为 \\n,不要把未转义的裸换行塞进 JSON,否则会报 Invalid control character。验收与重试
何时不开子 Agent
默认由子 Agent 执笔的交付物
content-media
技术设计文档 SOP——从需求到设计方案,产出 Markdown 文件到 /workspace/output/
content-media
技术设计文档 SOP——从需求到设计方案,产出 Markdown 文件到 /workspace/output/
content-media
技术设计文档 SOP——从需求到设计方案,产出 Markdown 文件到 /workspace/output/
documentation
将数字员工的产出文件(产品规格文档、验收报告、设计文档等)写入共享工作区或个人工作区。 用于 PM 写 product_spec.md、Manager 写 review_result.md 等场景。 与 memory-save 的区别:本 Skill 专门用于写工作产出,memory-save 用于写记忆/会话状态。