一键导入
spec-start
当用户开始新的开发任务、需要启动完整 Spec 流程(需求对齐→探索→设计→实现→测试→收尾), 或需要为一个新 Spec 创建协作上下文和 GitHub Flow 工作分支时使用。 不要用于已有完成 Spec 的小迭代(用 spec-update)或项目首次初始化(用 spec-init)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
当用户开始新的开发任务、需要启动完整 Spec 流程(需求对齐→探索→设计→实现→测试→收尾), 或需要为一个新 Spec 创建协作上下文和 GitHub Flow 工作分支时使用。 不要用于已有完成 Spec 的小迭代(用 spec-update)或项目首次初始化(用 spec-init)。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
妙搭(Spark/Miaoda)应用开发与托管:应用创建、HTML静态站点发布、本地全栈开发、云端生成迭代。当用户要开发/新建一个系统·工具·平台·应用,或要本地开发 / 云端开发 / 修改 / 部署 / 发布 / 上线 / 拿可分享链接,或用 HTML 做页面·网站·部署到妙搭,或提到妙搭/Spark/Miaoda(应用运行时域名形如 *.aiforce.cloud)、应用数据库、可见范围时使用。不负责普通云盘文件上传(lark-drive)、飞书文档编辑(lark-doc)、原生幻灯片创建(lark-slides)。
飞书云文档(Docx / Wiki 文档,v2 API):读取和编辑飞书文档内容。当用户给出文档 URL 或 token,或需要查看、创建、编辑文档、插入或下载文档图片附件时使用。文档中嵌入的电子表格、多维表格、画板,先用本 skill 提取 token 再切到对应 skill。当用户给出 doubao.com 的 /docx/ 或 /wiki/ URL/token 时,也应直接使用本 skill;路由依据是 URL 路径模式和 token,而不是域名。不负责文档评论管理,也不负责表格或 Base 的数据操作。
飞书云空间(云盘/云存储):管理 Drive 文件和文件夹,包含上传/下载、创建文件夹、复制/移动/删除、查看元数据、评论/权限/订阅、标题、版本和本地文件导入。用户需要整理云盘目录、处理云空间资源 URL/token,或导入 Word/Markdown/Excel/CSV/PPTX/.base 为 docx/sheet/bitable/slides 时使用;doubao.com 云空间 URL/token 也按资源路径和 token 路由,不回退 WebFetch。不负责:文档内容编辑(走 lark-doc)、表格/Base 表内数据操作(走 lark-sheets/lark-base)、知识空间节点/成员管理(走 lark-wiki)、原生 Markdown 文件读写/patch/diff(走 lark-markdown)。
Lark/Feishu real-time event listening / subscribing / consuming: stream events as NDJSON via `lark-cli event consume <EventKey>` (covers IM messages/reactions/chat changes, VC meeting ended, Minutes generated, Whiteboard updated, etc.). Use for Lark bots, real-time message processing, long-running subscribers, streaming webhook/push handlers. Supports `--max-events` / `--timeout` bounded runs and a stderr ready-marker contract — designed for AI agents running as subprocesses.
飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复、发送应用内/短信/电话加急。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据时使用。
飞书邮箱:Use when user mentions 起草邮件、写邮件、草稿、发送/回复/转发邮件、查阅邮件、看邮件、搜索邮件、邮件文件夹、邮件标签、邮件联系人、监听新邮件、邮件收信规则等;use for mail/email intent only. Do not use for docs/sheets/calendar/auth setup/pure contact lookup/IM chat tasks.
| disable-model-invocation | true |
| name | spec-start |
| description | 当用户开始新的开发任务、需要启动完整 Spec 流程(需求对齐→探索→设计→实现→测试→收尾), 或需要为一个新 Spec 创建协作上下文和 GitHub Flow 工作分支时使用。 不要用于已有完成 Spec 的小迭代(用 spec-update)或项目首次初始化(用 spec-init)。 |
spec-start 只加载和唤起项目级角色,不内联维护角色 promptmain 创建独立工作分支,禁止直接在 main 上实现启动前检查项目是否已初始化:
ls spec/context/experience/index.md
ls .agents/roles/spec-explorer.md
如果 spec/ 目录或 .agents/roles/ 缺失,提示用户先执行 /spec-init 完成项目初始化。若是旧项目已初始化但缺少角色定义,可只补齐 spec-init 的项目级角色步骤。
同时检查 Git 状态:
git rev-parse --is-inside-work-tree
git status --short
如果不是 Git 仓库,询问用户是否继续无分支模式;如果工作区有无关改动,先让用户处理或使用 git worktree,不要直接切换到 main。
| 角色 | 调用的 Skill | 产出物 | 活跃阶段 |
|---|---|---|---|
| TeamLead(当前 Agent) | intent-confirmation | lead/team-context.md | 全程 |
| spec-explorer | spec-explore | explorer/exploration-report.md | 阶段二(前置) |
| spec-writer | spec-write | writer/plan.md | 阶段二 |
| spec-tester | spec-test | tester/test-plan.md, tester/test-report.md, tester/artifacts/test-logs/ | 阶段二 + 阶段四 |
| spec-executor | spec-execute | executor/summary.md | 阶段三 |
| spec-debugger | spec-debug | debugger/debug-xxx.md, debugger/debug-xxx-fix.md | 阶段三/四(按需) |
| spec-reviewer | spec-review | reviewer/review.md | 阶段四后(可选) |
| spec-ender | spec-end | ender/end-report.md | 阶段五 |
使用 intent-confirmation 与用户对齐:
需求对齐后,调用 /git-work 的“启动 Spec 分支”模式:
base_branch: main
branch_name: <type>/spec-<YYYYMMDD-HHMM>-<ascii-slug>
分支类型按任务主意图选择:
featfixrefactortestdocschore输出以下 Git 元数据,并在步骤 4 写入 lead/team-context.md:
git_branch: <branch-name>
base_branch: main
pr_url:
如果用户确认无分支模式,记录 git_branch: none 到 lead/team-context.md,并在 next_action 或 Blockers 中说明原因。
TeamLead 在阶段二开始前创建当前 Spec 根目录和角色目录。Spec 根目录仍按工作类型分类,目录名仍使用 YYYYMMDD-HHMM-任务描述:
spec/<01-05分类>/<YYYYMMDD-HHMM-中文任务描述>/
├── lead/
├── explorer/
├── writer/
├── tester/
│ └── artifacts/
│ └── test-logs/
├── executor/
├── debugger/
├── reviewer/
├── updater/
└── ender/
角色产物必须写入各自目录:
| 归属 | 路径 |
|---|---|
| TeamLead | lead/team-context.md |
| spec-explorer | explorer/exploration-report.md |
| spec-writer | writer/plan.md |
| spec-tester | tester/test-plan.md, tester/test-report.md, tester/artifacts/test-logs/<run-id>/ |
| spec-executor | executor/summary.md |
| spec-debugger | debugger/debug-xxx.md, debugger/debug-xxx-fix.md |
| spec-reviewer | reviewer/review.md, reviewer/update-xxx-review.md |
| spec-update | updater/update-xxx.md, updater/update-xxx-summary.md |
| spec-ender | ender/end-report.md |
根目录只作为当前 Spec 容器,不直接平铺角色产物。
创建团队:spec-{YYYYMMDD-HHMM}-{任务简称}
团队说明:Spec 驱动开发: {任务描述}
加载角色定义:
- .agents/roles/spec-explorer.md
- .agents/roles/spec-writer.md
- .agents/roles/spec-tester.md
- .agents/roles/spec-executor.md
- .agents/roles/spec-debugger.md
- .agents/roles/spec-reviewer.md
- .agents/roles/spec-ender.md
优先使用当前运行环境的项目级 Agent / Subagent 能力:
.omp/agents/<role-id>.md,TeamLead 通过 task 工具 spawn 角色,角色间协作用 irc 子 Agent 通信;OMP 只发现 .omp/agents/,不读 .claude/.codex.claude/agents/<role-id>.md.codex/agents/<role-id>.toml,spawn 时使用 TOML name 字段(如 spec_explorer).agents/roles/<role-id>.md 的中立角色协议Codex CLI 的 /agent 是活跃子 Agent 线程视图,不是项目 Agent 库视图;只有 TeamLead 明确 spawn 后,角色线程才会出现在 /agent 中。
如果运行环境支持恢复子 Agent 线程,TeamLead 记录每个角色的运行时 handle;后续多轮交互优先恢复同一角色线程。若运行环境没有团队/子代理能力,或角色线程不可恢复,由当前 Agent 按同一角色协议串行执行,并从已落盘文档重建上下文。
在当前 Spec 目录的 lead/team-context.md 记录本次运行实例状态。它只描述当前 Spec 的团队运行上下文,不替代项目级角色定义:
---
type: team-context
schema_version: 1
team_name: spec-{YYYYMMDD-HHMM}-{任务简称}
spec_dir: spec/<01-05分类>/<YYYYMMDD-HHMM-中文任务描述>
task_description: {任务描述}
status: running
phase: intent | exploration | spec-writing | implementation | testing | debugging | review | ending | archived
runtime: omp | claude-code | codex | generic
git_branch: <branch-name 或 none>
base_branch: main
pr_url:
created_at: {ISO8601}
updated_at: {ISO8601}
---
# Team Context
## Current Run Path
| step | phase | owner | action | status | artifact | gate | updated_at |
|------|-------|-------|--------|--------|----------|------|------------|
| 1 | intent | TeamLead | 需求对齐 | done/pending | lead/team-context.md | gate-1 | {ISO8601} |
## Task Progress
> 共享维护区:各角色只追加或更新自己负责的任务行。
| task_id | owner | task | status | artifact | completed_at | updated_by |
|---------|-------|------|--------|----------|--------------|------------|
| T-001 | spec-explorer | 探索项目背景 | pending | explorer/exploration-report.md | | spec-explorer |
## Problem Resolution Log
> 共享维护区:发现或解决问题的角色只追加或更新自己相关的问题行。
| issue_id | found_by | owner | problem | resolution | artifacts | status | updated_by |
|----------|----------|-------|---------|------------|-----------|--------|------------|
| I-001 | spec-tester | spec-debugger | 待记录 | 待记录 | debugger/debug-001.md / debugger/debug-001-fix.md | open | spec-tester/spec-debugger |
## Runtime Handles
| role_id | adapter | runtime_agent_name | agent_id | thread_id | session_id | status | resumable | last_artifact | updated_at |
|---------|---------|--------------------|----------|-----------|------------|--------|-----------|---------------|------------|
| spec-explorer | .claude/.codex/.agents | spec-explorer/spec_explorer | 运行时填写 | 运行时填写 | 运行时填写 | pending | unknown | | {ISO8601} |
## Artifact Registry
| artifact | owner | status | confirmed | updated_at |
|----------|-------|--------|-----------|------------|
| writer/plan.md | spec-writer | pending | no | |
## Gate Decisions
| gate | target | decision | decided_at | note |
|------|--------|----------|------------|------|
| gate-1 | 需求对齐 | pending | | |
## Handoffs
| from | to | reason | artifact | status | updated_at |
|------|----|--------|----------|--------|------------|
## Loop Budget
> 修复循环(spec-tester ↔ spec-debugger)的运行预算。值不写死在 Skill 中,
> 由 TeamLead 在进入阶段四修复循环前用 intent-confirmation 与用户确认后填入。
> 只跟踪两个上限:最大轮数、最大无进展轮数。
| loop | max_rounds | max_no_progress_rounds | rounds_used | no_progress_streak | status | confirmed_by_user | updated_at |
|------|-----------|------------------------|-------------|--------------------|--------|-------------------|------------|
| test-debug | 待确认 | 待确认 | 0 | 0 | not-started | no | |
- `max_rounds`:本次修复循环最多允许 tester→debugger→tester 走多少轮(建议默认 3,用户可改)。
- `max_no_progress_rounds`:连续多少轮没有新增进展就停止并升级给人(建议默认 2,用户可改)。
- `rounds_used` / `no_progress_streak`:由 spec-debugger 和 spec-tester 在每轮重验后更新。
- `status` 取值:`not-started` | `running` | `passed` | `stopped-budget` | `stopped-no-progress` | `escalated`。
## Open Questions / Blockers
| id | owner | question_or_blocker | status | resolution |
|----|-------|---------------------|--------|------------|
## Next Action
- 待记录 TeamLead 下一步动作。
记录规则:
lead/team-context.md 的结构、frontmatter、Current Run Path、Git/PR 元数据、Runtime Handles、Artifact Registry、Gate Decisions、Handoffs、Open Questions / Blockers 和 Next Action。Task Progress:只追加或更新自己负责的任务行,完成产物后立即记录 status、artifact、completed_at 和 updated_by。Problem Resolution Log:只追加或更新自己发现/处理的问题行,记录问题、解决方案摘要、关联产物、状态和 updated_by。lead/team-context.md 的控制面信息。lead/team-context.md,并在需要时校准共享完成流水。spec-init 配置 Hook 适配器,Hook 可以按 .agents/hooks/team-context-hook-contract.md 自动更新事实字段;未配置 Hook 时,TeamLead 和各角色按本节规则手动维护。Next Action、gate decision、handoff reason 或 blocker 业务判断。lead/team-context.md 是当前 Spec 的运行账本和 Git/PR 元数据权威来源;角色产物只链接它,不复制运行状态正文。Current Run Path 记录当前任务实际走过的流程路径;Task Progress 记录已经完成的任务;Problem Resolution Log 记录谁发现问题、谁解决问题、解决产物在哪里。Task Progress 和 Problem Resolution Log 外,非 TeamLead 角色不要直接修改其他区块;如需变更控制面信息,向 TeamLead 提交说明。agent_id、thread_id、session_id 是运行时 handle,不作为跨 Spec 的长期身份;跨 Spec 只复用项目级角色定义。task spawn 返回的 agent_id(agent://<id> 句柄)和子 Agent job id;角色间用 irc 协作时按角色 id(如 spec-tester)寻址,handoff 仍落盘到 Handoffs 与 Problem Resolution Log。agent_id 和对应 transcript/session 信息。/agent 可见线程或当前 session handle;如 CLI 不暴露稳定 ID,记录 runtime agent name、当前 session 线索和最近产物路径。lead/team-context.md 复制 plan 正文、测试日志、debug 细节或长篇总结;只记录路径、状态、决策和简短摘要。resumable 可取 yes、no、unknown;无法恢复时由 TeamLead 重新 spawn 同一项目级角色,并从 Spec 文档重建上下文。所有跨角色消息默认由 TeamLead 中转:
上游角色 → TeamLead:提交产物路径、结论、问题、建议下游角色
TeamLead → 下游角色:先查 lead/team-context.md;可恢复则继续同一角色线程,不可恢复则重新 spawn 同一项目级角色
下游角色 → TeamLead:返回产物路径和状态
角色可以在产物中声明建议接收方,但不假设运行环境支持直接 Agent-to-Agent 通信。例如,spec-tester 发现 bug 时向 TeamLead 提交 bug handoff,由 TeamLead 启动或恢复 spec-debugger;spec-debugger 修复完成后向 TeamLead 提交重新验证请求,由 TeamLead 启动或恢复 spec-tester。
需求对齐、分支准备、角色定义加载和通信规则建立后,TeamLead 启动或恢复 spec-explorer,并传递任务描述、探索范围、Spec 目录和 Git 元数据。
阶段一:需求对齐
TeamLead → intent-confirmation → 用户确认
↓ 【门禁 1 通过】
GitHub Flow 准备
TeamLead → git-work → 从 main 创建 Spec 工作分支
TeamLead → 记录 git_branch / base_branch / pr_url 到 lead/team-context.md
【团队初始化】
TeamLead 加载 .agents/roles/ 的 7 个项目级角色定义
TeamLead 按运行时能力创建或恢复本次 Spec 的角色实例
TeamLead 记录可恢复的角色 handle 到 lead/team-context.md(如运行时支持)
阶段二:Spec 创建
TeamLead → 启动/恢复 spec-explorer
spec-explorer → explorer/exploration-report.md → TeamLead
TeamLead → 启动/恢复 spec-writer,传递 explorer/exploration-report.md + lead/team-context.md
TeamLead → 启动/恢复 spec-tester,传递 explorer/exploration-report.md 并进入测试计划阶段
TeamLead 中转 spec-writer 与 spec-tester 的接口边界问题
spec-writer → writer/plan.md 定稿 → TeamLead
spec-tester → tester/test-plan.md 定稿 → TeamLead
TeamLead → 用户确认 writer/plan.md + tester/test-plan.md
↓ 【门禁 2 通过】
阶段三:实现
TeamLead → 启动/恢复 spec-executor
spec-executor → executor/summary.md → TeamLead
TeamLead → 用户确认 executor/summary.md
↓ 【门禁 3 通过】
阶段四:测试
TeamLead → 启动/恢复 spec-tester 执行测试
[如有 bug] spec-tester → bug handoff → TeamLead
TeamLead → 用 intent-confirmation 与用户确认本次修复循环预算
(max_rounds 建议 3,max_no_progress_rounds 建议 2,用户可改)
→ 写入 lead/team-context.md 的 Loop Budget,status=running
TeamLead → 启动/恢复 spec-debugger
spec-debugger 修复 → 更新 rounds_used / no_progress_streak → TeamLead
TeamLead → 启动/恢复 spec-tester 重新验证
spec-tester 验证 → 更新 Loop Budget 进展信号
[验证通过] Loop Budget status=passed → 继续
[仍失败且未触上限] 回到 spec-debugger 下一轮
[触发 max_rounds 或 max_no_progress_rounds]
→ spec-tester/spec-debugger 停止,status=stopped-budget/stopped-no-progress
→ TeamLead 升级给用户决定(继续加预算 / 改方案 / 暂停)
spec-tester → tester/test-report.md → TeamLead
TeamLead → 用户确认 tester/test-report.md
[可选审查] TeamLead → 启动/恢复 spec-reviewer
spec-reviewer → reviewer/review.md → TeamLead
TeamLead → 用户确认 reviewer/review.md
↓ 【门禁 4 通过】
阶段五:收尾
TeamLead → 启动/恢复 spec-ender
spec-ender → 向 TeamLead 请求多角色素材 + exp-reflect → 规范维护审查 → 询问用户归档
spec-ender → git-work 提交、推送、创建 PR
spec-ender → TeamLead,本次 Spec 团队实例结束,项目级角色定义保留
| 节点 | 由谁发起 | 确认内容 |
|---|---|---|
| 需求对齐 | TeamLead | 需求理解正确 |
| 分支准备 | TeamLead | 仅在工作区不干净、无 Git 仓库或需使用 worktree 时询问 |
| Spec 审阅 | TeamLead | writer/plan.md + tester/test-plan.md |
| 实现确认 | TeamLead | executor/summary.md |
| 修复循环预算 | TeamLead | 进入修复循环前确认 max_rounds 和 max_no_progress_rounds(带建议默认值,用户可改) |
| 诊断确认 | TeamLead | debugger/debug-xxx.md(如有) |
| 测试报告确认 | TeamLead | tester/test-report.md |
| 修复循环升级 | TeamLead | 触发预算上限或连续无进展时,确认继续加预算 / 改方案 / 暂停 |
| 归档确认 | spec-ender | 是否归档 + 提交 + 推送 + 创建 PR |
进入阶段四的 spec-tester ↔ spec-debugger 修复循环时,TeamLead 维护 lead/team-context.md 的 Loop Budget:
max_rounds 和 max_no_progress_rounds 不写死在 Skill 中。每次进入修复循环前,TeamLead 用 intent-confirmation 向用户确认,带建议默认值(3 轮 / 连续 2 轮无进展),用户可直接接受或改写。rounds_used 和 no_progress_streak。no_progress_streak 加一。rounds_used 达到 max_rounds,或 no_progress_streak 达到 max_no_progress_rounds 时,停止循环并由 TeamLead 升级给用户,不自行无限重试。启动完成后确认:
main 上开发git worktree)