Community写作与编辑github.com

brenoacker/agent-skills

端到端多智能体软件工厂(DISCOVER → PLAN → CHECKS → BUILD → VERIFY),采用薄编排器每阶段子智能体架构,支持 Antigravity、Claude Code 和 Codex。通过 EARS 准则和可证明的检查冻结义务,将每个繁重阶段委托给全新的隔离子智能体以保护主上下文窗口,并由独立的验证器控制完成。

agent-skills 是什么?

Software Factory 是一个端到端的多智能体软件工程技能,采用薄编排器(Thin Orchestrator)和每阶段严格隔离的子智能体架构,将复杂特性开发拆分为五个严格分离的阶段:DISCOVER、PLAN、CHECKS、BUILD 和 VERIFY。 其核心设计哲学是解决大语言模型编码智能体在复杂功能上的两个主要痛点:上下文窗口膨胀(通过子智能体隔离解决)和未经确认的需求与自审盲点(通过 EARS 准则和独立验证器解决)。主聊天窗口作为协调者始终保持在~15k tokens 以下,所有代码库探索、工件创建、编码、测试和验证均在隔离的临时子智能体中完成,通过磁盘上的 `.specs/features/<feature>/` 文件和 git 提交进行通信。 该技能支持 Antigravity、Claude Code 和 Codex 平台,通过 `orchestrate.py` 脚本进行子智能体调度和阶段门控。用户可以通过“software-factory”、“discover feature”、“plan feature”、“specify feature”、“write the checks”、“build this plan”或“verify work”等短语触发。关键约束包括:零未确认假设(`Confirmed? y`)、严格的 1 子智能体/阶段边界、每个检查必须是 observable claim + 具体证明、测试只验证检查而非实现、独立验证器必须是全新子智能体,以及完成门控必须是脚本退出码(`validate_verification.py` exit 0)。

兼容平台✓Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/brenoacker/agent-skills/tree/HEAD/skills/software-factory

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

软件工厂 (Software Factory)

先消除所有范围疑问。冻结义务。将每个繁重阶段委托给全新的子智能体。由未编写代码的独立验证器证明完成。

┌──────────┐   ┌──────┐   ┌────────┐   ┌───────┐   ┌────────┐
│ 发现阶段  │ → │ 规划阶段│ → │ 检查阶段│ → │ 构建阶段│ → │ 验证阶段│
└──────────┘   └──────┘   └────────┘   └───────┘   └────────┘
 0 个疑问     确认       义务         批次        作者 != 验证者

五步动作,三个持久工件位于 .specs/features/<feature>/ 下,以及一个主聊天中薄编排器,永不让其上下文窗口膨胀。

  1. 发现 (DISCOVER):一个只读的 scout 子智能体扫描代码库,返回一个紧凑的(约30行)歧义简报。主聊天用具体选项和推荐默认值采访用户,直到零个未确认的假设(每行 Confirmed? y)。参见 discovery.md。
  2. 规划 (PLAN):一个 planner 子智能体编写 .specs/features/<feature>/plan.md(问题、流程、影响、关系、界面、落地、标准、范围外、假设、可观察项、来源)并运行 validate_plan.py。用户在 plan.md 上快速签署。参见 plan.md。
  3. 检查 (CHECKS):在 plan.md 签署后,自主后规划循环开始。一个 specifier 子智能体生成 .specs/features/<feature>/checks.md(声明+证明、覆盖率连接、测试策略、清扫范围、交接算术)并运行 validate_checks.py。参见 checks.md。
  4. 构建 (BUILD):每个切片/批次一个 builder 子智能体严格按照检查编写测试,实现代码,运行证明,更新 checks.md,并使用 check_commit.py 提交。参见 build.md。
  5. 验证(与修复循环)(VERIFY and FIX loop):一个独立的 verifier 子智能体(决不是构建者)审计 <特性基准>..HEAD 对每一项检查,编写 .specs/features/<feature>/verification.md,并运行 validate_verification.py。如果任何检查失败,一个 fixer 子智能体解决排名差距,然后一个新的 verifier 重新验证(最多3轮)。参见 verify.md 和 orchestration.md。

为何采用这种形式

编码智能体在复杂特性上因两个可预测的原因而失败:

  1. 上下文窗口膨胀:当单个聊天会话探索仓库、采访用户、编写计划、派生检查、编写测试和代码,并验证自身工作时,上下文窗口会填满并触发有损压缩。
  2. 未确认的需求与自我审查盲点:默默地猜测产品行为(Confirmed? n)或让作者自我认证完成会传递作者自己的盲点。

software-factory 解决了这两个问题:

  • 薄编排器(主聊天中<15k tokens):主聊天严格担任协调者和用户采访者。所有代码库读取、工件创作、编码、测试和验证都在隔离的临时子智能体(scout、planner、specifier、builder、verifier、fixer)中运行,这些子智能体仅通过磁盘上的 .specs/features/<feature>/ 文件和 git 提交进行通信。完整调度协议:orchestration.md。
  • 小且冻结的义务集 + 独立验证器:没有细粒度的任务清单或组件目录(每个类的Purpose/Location/Interfaces)会过时。单向门在 Landing 中获得字面形状;可逆放置根据差异决定。

关键规则

固定集。这些规则在每个配置中都适用:

  1. 零未确认假设(Confirmed? y)。永远不要默默地猜测产品或范围行为。DISCOVER期间出现的每个灰色区域都必须用具体选项和推荐默认值询问,或由用户明确委托(Confirmed? y)。validate_plan.py 拒绝任何 Confirmed? 为 n 或空白的行。
  2. 薄编排器 & 严格的每阶段单子智能体边界(scout != planner != specifier != builder != verifier)。保持主聊天在~15k tokens 以下。切勿将两个阶段合并到单个子智能体调用中:
    • scout 仅探索并返回约30行的歧义简报。
    • planner 仅编写 plan.md + 运行 validate_plan.py,然后停止并退出。
    • specifier 仅编写 checks.md + 运行 validate_checks.py,然后停止并退出(它绝不能编写测试文件或实现代码,或继续进入 BUILD)。
    • builder 仅在 specifier 返回后运行。对于多切片特性(S1、S2、...),按顺序调度每个切片一个独立的 builder 子智能体,以便每个切片在一个新的上下文窗口中执行并向用户报告进度。
    • verifier 仅在最终 builder 提交后在一个全新的子智能体中运行。
  3. 每个检查是一个可观察的声明,具有具体值和证明——确切的测试选择器或命令,其退出代码解决了该检查。没有证明,就没有检查。
  4. 测试断言检查所说的内容,而不是代码恰好所做的。切勿通过读取实现来编写测试。
  5. 切勿削弱断言、删除测试或跳过测试以使测试套件通过。一个真正错误的检查是停下来询问,而不是编辑。
  6. 检查和Test policy行一旦批准即固定。在 plan.md 中,Landing、Relations 和 Surface 是加法性的——在构建时发现的门会在关闭它的代码之前获得一行,而用户批准的行永远不会被重写。Flow 和 Impact 在改变路径的提交中保持真实。
  7. 验证器是一个全新的子智能体,绝不是作者,绝不是可选的,绝不需要等待被询问。编排器在特性的最后一个提交落地到 <特性基准>..HEAD 且每个检查通过后立即调度它。
  8. 配置是底线,并由 validate_verification.py 强制执行。
  9. 完成门控是脚本,而不是感觉:validate_verification.py 必须退出码为0。
  10. 爆炸半径: 已批准的规范授权本地编辑和本地提交。git push、部署和生产数据更改需要对该操作的明确批准。

配置

项目在 AGENTS.md 或等效文件中声明运行多少内容。若无声明:light。

## software-factory

profile: light
budget: 150k
配置增加内容无法捕获
light (默认)证明在 HEAD 运行,每个命名测试显示存在并运行,每个检查一个定位断言,级别和采样差距,Swept existing 重新读取没有证明的集合成员;在错误实现下会通过的测试
standard重新计算 Coverage 连接,Test policy 行带有各自的结论,每个断言表面一个故障与绑定源矛盾的检查;没有人构建的屏幕
ui打开并比较绑定源,逐个屏幕枚举文案和布局仅间距、颜色和类型粗细,逐个屏幕枚举

validate_verification.py 拒绝配置与批准 checks.md 时不同的报告,拒绝没有故障行或没有重新计算覆盖率的 standard 报告,拒绝没有绑定源部分的 ui 报告。

工件

.specs/
├── STATE.md                    # 决策日志 (AD-NNN) + 交接快照
├── LESSONS.md                  # 由 scripts/lessons.py 渲染 - 绝不手动编辑
├── lessons.json                # 机器拥有
└── features/<feature>/
    ├── plan.md                 # 问题、流程、影响、关系、界面、落地、标准、假设(全部 y)、可观察项
    ├── checks.md               # 声明+证明、覆盖率连接、测试策略、清扫范围、交接批次
    └── verification.md         # 独立验证器的报告

在其阶段产生内容时创建每个文件。对于大约三个文件以下且没有单向门且零范围歧义的更改,仅编写带有 ## Intent 段落的 checks.md 并跳过 plan.md。

plan.md 中的五个有界设计部分

部分审查内容排除内容
Flow路径,每跳一行任何既不存在也未由门创建的模块——那是放置
Impact底层变化:术语和现有数据风险登记册
Relations实体、基数、单向约束列和类型
Surface路由、输入、输出、状态请求体规范和检查 ID——那些还不存在
Landing单向门,带有字面形状和被拒绝的替代方案任何重构可以逆转的东西

流程

  • 发现 (Discover) — 调度只读的 scout 子智能体检查仓库、.specs/STATE.md 和 .specs/LESSONS.md,并返回约30行的歧义简报。引导用户解决真正的产品和范围灰色区域(每轮最多2个问题,具体选项和推荐默认值),涵盖 Observable 表面和9个隐含维度,直到0个疑问:discovery.md。
  • 规划 (Plan) — 调度 planner 子智能体,将确认的发现决策传递给编写 .specs/features/<feature>/plan.md 并通过 validate_plan.py。向用户展示 plan.md 以快速签署:plan.md。
  • 检查 (Checks) — 一旦 plan.md 获批,自主运行。调度一个专门的 specifier 子智能体生成本节 .specs/features/<feature>/checks.md(声明+证明、Coverage 连接、Swept 和 ## Handoff 批次大小调整)并通过 validate_checks.py,然后在编写任何代码或测试之前终止该子智能体:checks.md。
  • 构建 (Build) — 在 specifier 完成后,按顺序为每个切片(S1、S2、...)调度一个全新的 builder 子智能体。每个构建者从检查中为其分配的切片编写测试,实现,运行证明,在 checks.md 中记录 Boundary,使用 check_commit.py 提交,然后退出:build.md。
  • 验证与修复 (Verify & Fix) — 调度一个全新的 verifier 子智能体覆盖 <特性基准>..HEAD 以编写 verification.md 并运行 validate_verification.py。如果失败,调度一个 fixer 子智能体并重新验证(最多3轮):verify.md。
  • 编排与子智能体调度 (Orchestration & Subagent Dispatch) — 薄编排器规则、上下文窗口预算和多智能体映射(antigravity、claude、codex):orchestration.md。
  • 持久记忆 (Durable Memory) — 项目决策 (STATE.md)、会话交接和基于验证的经验教训 (lessons.py):memory.md。

脚本

将 <skill-dir> 解析为包含此 SKILL.md 的目录,并调用 python3 <skill-dir>/scripts/<name>.py。当当前工作目录与项目根目录不同时,传递 --root。非零退出码表示停止并修复。

时机命令
检查流水线阶段和下一个子智能体角色orchestrate.py status <feature> --root <dir>
生成隔离子智能体提示`orchestrate.py prompt --role <scout
通过编排器运行阶段门控`orchestrate.py gate --phase <plan
通过 CLI 调度子智能体(或 --dry-run)`orchestrate.py dispatch --role --agent <antigravity
在展示 plan.md 之前validate_plan.py <feature>
在开始 BUILD 之前validate_checks.py <feature>
每次提交之前check_commit.py --message "<msg>"
在声明完成之前validate_verification.py <feature>
在提炼时lessons.py add ...
在编辑了验证器、脚本或模板之后selftest.py

子智能体与交接

每个阶段严格隔离在自己的子智能体调用中(scout -> planner -> specifier -> builder [S1] -> builder [S2] -> ... -> verifier -> fixer)。切勿在同一子智能体中组合 specifier(CHECKS)和 builder(BUILD)。在 BUILD 期间,当特性有多个切片(S1、S2、...)时,按顺序为每个切片调度一个独立的 builder 子智能体,以便每个构建者从一个干净的上下文窗口开始,快速完成,在其切片变绿时提交,并向薄编排器返回进度更新。

当最终的构建者切片返回绿色时,编排器立即在同一轮次中调度独立的 verifier 子智能体,无需询问用户。

知识链

严格按照顺序:现有代码和约定、项目文档、库文档(Context7 可用时)、网络搜索,然后标记为不确定。切勿发明 API、标志、命令或行为。

输出行为

生成工件;不要叙述阶段。以结论开头。果断陈述决策。去除填充和机械性犹豫。保持部分标题为英文(它们是门控验证的模式)。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相关技能