Install
openclaw skills install multica-sdd-workflowSDD + Multica 多智能体开发工作流。当用户提到"新建任务"、"发布给 multica"、"创建小队"、 "分配 issue"、"开始新功能"、"组建小队执行"、"按 SDD 流程"、"新增功能"、"功能更新"时触发。 覆盖从 SDD 规范文档编写、multica 小队创建、Issue 发布执行,到完成后记录归档的完整流程。
openclaw skills install multica-sdd-workflow每次新增或更新功能,必须留有完整的 SDD 记录。流程如下:
0. 编写 SDD 规范文档(开工前必须)
↓
1. 读取项目配置 + 确认小队
↓
2. 创建父 Issue + 子 Issue + Leader Kickoff
↓
3. 依赖链规划
↓
4. 监控进度
↓
5. 完成后更新 SDD 记录(收尾必须)
宪法 Article II § 2.2(API First)+ Article IX § 9.2(Required Documentation)
任何功能,必须先写规范文档,再创建 Issue,再执行。
检测 specs/ 是否已有规范文档:
specs/ 目录 → 进入 0-A 新建模式specs/ 目录 → 进入 0-B 续接模式目标:不重写已有规范,只补全缺失信息,确保任何 agent 能直接接手。
1. 扫描未完成任务:读取所有 specs/*/tasks.md,统计 [ ] 条目,了解当前进度。
2. 补全格式缺口:对每个未完成的 Task,确认它有 Steps 和 Acceptance Criteria。缺失的就地补全,不新建文件。格式要求见下方 0-A 的 tasks.md 规范。
3. 更新 CLAUDE.md:将「下一步行动」章节精确同步到当前未完成任务,按依赖顺序列出,标注 TDD 阶段(RED/GREEN)和目标文件路径。
完成后直接进入 Step 1,基于现有 specs 继续创建 Issue。
tasks.md和CLAUDE.md是唯一真相来源,无需生成额外文档。
specs/
└── <NNN>-<feature-name>/ # NNN 三位数字序号,如 002-ipc-handlers
├── spec.md # 需求规范
├── plan.md # 技术方案
└── tasks.md # 任务清单
三个文档的格式规范见 sdd-templates.md。
在执行任何后续步骤前,必须先从 .multica/squad.md 读取配置。
PROJECT_ID=$(grep '| project-id' .multica/squad.md | cut -d'`' -f2)
SQUAD_ID=$(grep '| squad-id' .multica/squad.md | cut -d'`' -f2)
LEADER_ID=$(grep '| leader-id' .multica/squad.md | cut -d'`' -f2)
EXECUTOR_ID=$(grep '| executor-id' .multica/squad.md | cut -d'`' -f2)
EXECUTOR_NAME=$(grep '| executor-name' .multica/squad.md | cut -d'`' -f2)
WORK_DIR=$(grep '| work-dir' .multica/squad.md | cut -d'`' -f2)
TEST_CMD=$(grep '| test-cmd' .multica/squad.md | cut -d'`' -f2)
TYPECHECK_CMD=$(grep '| typecheck-cmd' .multica/squad.md | cut -d'`' -f2)
# 验证——任何变量为空说明 squad.md 格式有误
echo "PROJECT_ID: $PROJECT_ID"
echo "SQUAD_ID: $SQUAD_ID"
echo "LEADER_ID: $LEADER_ID"
echo "EXECUTOR_ID: $EXECUTOR_ID"
echo "EXECUTOR_NAME: $EXECUTOR_NAME"
echo "WORK_DIR: $WORK_DIR"
echo "TEST_CMD: $TEST_CMD"
echo "TYPECHECK_CMD: $TYPECHECK_CMD"
multica agent list --output json | grep -E '"name"|"status"'
multica squad list --output json
如果项目尚未有小队,执行以下步骤一次性配置:
# 1. 在 multica 创建项目
multica project create --name "<项目名>" --output json
# 记录返回的 project-id → 填入 .multica/squad.md
# 2. 创建小队
multica squad create --name "<squad-name>" --description "<desc>" \
--leader "$LEADER_ID" --output json
# 记录返回的 squad-id → 填入 .multica/squad.md
# 3. 添加执行 agent 到小队
multica squad member add "$SQUAD_ID" --member-id "$EXECUTOR_ID" --role member
.multica/squad.md 配置表格式(8 个字段,字段名固定):
| 字段 | 值 |
|------|---|
| project-id | `<multica-project-uuid>` |
| squad-id | `<multica-squad-uuid>` |
| leader-id | `<leader-agent-uuid>` |
| executor-id | `<executor-agent-uuid>` |
| executor-name | `<EXECUTOR-AGENT-NAME>` |
| work-dir | `<项目绝对路径>` |
| test-cmd | `<测试命令,如 npm test>` |
| typecheck-cmd | `<类型检查命令,如 npm run typecheck>` |
multica issue create \
--project "$PROJECT_ID" \
--title "Phase N: <阶段名>(Tasks N.1-N.M)" \
--description-file /tmp/phase_desc.txt \
--assignee-id "$SQUAD_ID" \
--priority high \
--output json
父 Issue、子 Issue、Leader Kickoff 三个 description 模板见 issue-templates.md。
根据 tasks.md 中的 Dependencies 字段,将任务分批派发:
无依赖任务 → 第1批并行
↓(第1批全部 in_review 或 done 后触发)
依赖第1批的任务 → 第2批并行
↓
汇总任务(集成测试、公共 API 导出等)→ 最后单独一批
示例:Phase N 有 6 个子 Issue:
WS-01(Task N.1 RED, 无依赖) ─┐
WS-02(Task N.3 RED, 无依赖) ├─ 第1批并行派发
WS-03(Task N.5 RED, 无依赖) ─┘
↓
WS-04(Task N.2 GREEN, 依赖 WS-01)─┐
WS-05(Task N.4 GREEN, 依赖 WS-02) ├─ 第2批并行派发
WS-06(Task N.6 GREEN, 依赖 WS-03)─┘
↓
WS-07(集成测试, 依赖 WS-04~06)────── 第3批(单独)
划分规则:
in_review 或 done 后再派# 先加载配置(新 shell 时)
PROJECT_ID=$(grep '| project-id' .multica/squad.md | cut -d'`' -f2)
LEADER_ID=$(grep '| leader-id' .multica/squad.md | cut -d'`' -f2)
# 查看所有 Issue 状态
multica issue list --project "$PROJECT_ID" --output json \
| grep -E '"identifier"|"title"|"status"'
# 查看单个 Issue
multica issue get <WS-XX>
# Leader 无响应时重新触发
multica issue assign <kickoff-id> --to "$LEADER_ID"
状态流转:todo → in_progress → in_review → done
宪法 Article IX § 9.1(Living Documentation)+ Article XI § 11.1(Git Workflow)
Phase 完成后,必须同步更新以下记录,再提交。
将完成的任务 checkbox 从 [ ] 改为 [x],并统计完成情况:
# 确认还有哪些未完成
grep -n "\[ \]" specs/<NNN>-<feature>/tasks.md
# 统计完成进度
DONE_COUNT=$(grep -c "\[x\]" specs/<NNN>-<feature>/tasks.md)
TOTAL_COUNT=$(grep -c "^### Task" specs/<NNN>-<feature>/tasks.md)
echo "完成进度: $DONE_COUNT / $TOTAL_COUNT"
## 开发进度
**总进度**: <已完成>/<总任务> 任务完成
### Phase N: <阶段名> ✅ 完成(完成数/本阶段总数 任务)
| 任务 | 状态 | 描述 |
|------|------|------|
| N.1 | ✅ | ... |
| N.2 | ✅ | ... |
**已完成成果**:
- ✅ <文件或功能点>
CLAUDE.md 需更新的字段:
**项目状态** 百分比**总进度** 任务数(从 tasks.md 动态统计,不要写死)🔄 进行中 改为 ✅ 完成**最后更新** 日期DONE_COUNT=$(grep -c "\[x\]" specs/<NNN>-<feature>/tasks.md)
TOTAL_COUNT=$(grep -c "^### Task" specs/<NNN>-<feature>/tasks.md)
git add specs/<NNN>-<feature>/tasks.md CLAUDE.md
git commit -m "docs(sdd): mark Phase N complete, update progress to ${DONE_COUNT}/${TOTAL_COUNT}"
在 .multica/squad.md 的 Issue 历史清单中追加本次新建的 Issue:
| WS-XX | Phase N: <阶段名>(父) | — | ✅ done |
| WS-YY | Task N.X+N.Y: <功能> | WS-XX | ✅ done |
| 约束 | 来源 |
|---|---|
| TDD:RED 先提交,GREEN 后提交 | 宪法 Article III |
禁止 git push、git add . | AGENTS.md |
提交格式:<type>(<scope>): <desc> (Task N.X RED/GREEN) | AGENTS.md |
| 生产依赖 ≤ 10 个 | 宪法 Article IV § 4.2 |
| TypeScript strict 零错误 | 宪法 Article V § 5.2 |
| 启动 < 2s,操作 < 100ms | 宪法 Article VI § 6.1 |
| 零网络调用 | 宪法 Article VII § 7.1 |
| 单元测试覆盖率 ≥ 80% | 宪法 Article III § 3.2 |
注意:以上约束来自 memo-desktop 项目的宪法。其他项目使用此 skill 时,应根据自身 AGENTS.md 和宪法文档替换此约束表。