single-session-dev-flow
Skill1 starsChanged 8 days agoMITView on GitHub
单会话研发流的入口,pqw-mode 的「大改动」一路:定阶段、顺序、交接期,指出每个环节加载哪个技能,不写环节的做法。用户提出复杂系统新增领域、跨多领域的功能纵线、子系统重构或较大规模改造,说「开一程」「按这条流来」,或点名 /single-session-dev-flow 时加载。小修、原型、小规模增量接口不走这条流,不加载,按场景做的加载 pqw-mode;问这套流怎么用的,加载 teach-pqw-skills。本技能开头的「写代码的四条」(先做对;再做好一轮;不过度设计、不提前优化;找本质解)对一切写代码的工作适用,走不走这条流都一样。
In this repository28 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- candid-friendSkill
- cleanupSkill
- clear-writingSkill
- context-packSkill
- delegate-briefSkill
- detailed-domain-designSkill
- domain-impact-analysisSkill
- formal-docs-landingSkill
- formal-guardSkill
- one-lesson-ruleSkill
- pass-the-batonSkill
- pqw-modeSkill
- progress-artifactsSkill
- requirement-and-invariantsSkill
- slice-closeoutSkill
- spec-and-planSkill
- teach-pqw-skillsSkill
- tech-research-and-reuseSkill
- think-closed-loopSkill
- think-evidenceSkill
- think-model-firstSkill
- think-orthogonalSkill
- think-ought-vs-isSkill
- think-right-then-wellSkill
- think-unknownsSkill
- write-agents-mdSkill
The file
Files
单会话研发流
一程研发通常在一个会话里走完:人主导的定义期,代理自主的交付期,中间一段交接期。交接期像接力赛的接力区:设计会话在区里和人定好这一程的承诺与大小,把棒交出去;这一程交回来之后,人回到设计会话收回。定义期与交付期也可以分两个会话顺序交接,见「边界」。本技能只定阶段、顺序、交接期和每个环节加载哪个技能,环节的做法归各环节技能。
一句话
先在动手前把不确定性尽量消掉,再把执行放手给代理,再用固定节拍从顶层回看。人的注意力只花在定义边界和高层判断上。
怎么想:七个思维模型
流程回答现在走到哪一步,思维模型回答做这一步时怎么想。七个模型各回答一个问题,各是一个技能,随时可以单独加载,不走这条流时也适用。各环节技能与模板在要用到的那一步上有一行指路;哪个环节用到哪个模型,全表在仓库 README 的「思维模型」一节,机读的唯一源是 design/context-map.json。
| 模型 | 回答的问题 | 技能 |
| 应然与实然 | 这件事的工作到底是什么 | think-ought-vs-is |
| 正交、分形、矩阵 | 这个问题的空间怎么拆 | think-orthogonal |
| 建模先于代码 | 代码该长成什么形状 | think-model-first |
| 先做对,再做好 | 按什么顺序建,怎样算好 | think-right-then-well |
| 用确定性证据说话 | 怎么知道它是真的 | think-evidence |
| 闭环 | 这件事该由谁做,一次做多大,多久看一次 | think-closed-loop |
| 不知为不知 | 没说清的地方,凭什么定 | think-unknowns |
放在一件事上的自然次序是拆、找差异、定形、建、证。一程、一个切片、一次小修走的都是这五步,只是篇幅不同。闭环讲这件事在人和代理之间转手,任何一步要交出去时用:交接期、派发、上下文压缩、向人汇报。不知为不知讲没说清的地方凭什么定,任何一步碰到两种读法或不知道的事时用:读需求、填全化表、写验收、没有人可问。
两句总纲管着七个模型,一程从头到尾都按它:
少即是多。 少的是范围与产出,不是验证:差异之外不做,同一个结构只设计一次,能自己做的不转手。管拆、找差异、转手。
慢即是快。 慢的是不可逆的和决定后面很多步的地方,不是所有地方:先定形再写,先对再好,先有证据再说完成,先查再定。管定形、建、证、问。
写代码的四条里,前两条属于慢,后两条属于少。两句打架时看限定语:验证不在可以少的东西里,可逆的小事不在要慢的地方里。
另有一个流程轴上的横切技能 candid-friend(诤友),它不是思维模型。七个模型管代理自己怎么想,诤友管代理对人说什么:需求不清、不值得做,或一程大过人验得完的量时,说一次,带依据和建议,人定了就照做。
两句总纲,加七个模型与诤友各一句,就是常驻卡片。接入的项目把它原样放进自己的常驻入口文件,代理在加载任何技能之前就看得到。常驻入口文件里没有这张卡片时,开工先读它一遍:每个想法一行,行末是要展开时加载的技能名。
写代码的四条
这四条对一切写代码的工作适用,走不走这条流都一样;主代理自己写、派子代理写都按它。出处是 ub-mode 的「先做对,再做好,守实践」,完整原则加载技能 ub-mode。每条是一句结论,道理与做法在所属的思维模型技能里。
- 先做对。 先让需求要的能力正确兑现,验收标准逐条过,测试先红后绿,这一轮不打磨。先做对,再单独做好一轮。做法加载技能
think-right-then-well。 - 再做好一轮。 做对之后单独留一轮,不加能力,只改实现,spec 写明的性能要求不退化。先做对,再单独做好一轮。做法加载技能
think-right-then-well。 - 不过度设计,不提前优化。 差异之外的不做:只建当前需求要的东西,不变式排除的状态不处理,没有测量证明的瓶颈不优化。先答三问:应然、实然、差异。做法加载技能
think-ought-vs-is。 - 找本质解。 本质解就是应然与实然的差异本身,同一个前提下两次修补都失败就写出那个前提并推翻它。先答三问:应然、实然、差异。做法加载技能
think-ought-vs-is。
风险前置
设计错了,越晚发现越贵,损失按已经投入的量放大。所以写代码之前先论证设计是对的:定义期第 5 步的「方案论证」、每个切片开工包里的「方案论证」,论证不过不进下一步。领域建模与 SOLID 的对象建模每次设计都做;全化表碰到状态与操作就做;模型检查与证明只在命中第 4 步的触发时加做。先把状态与操作写成偏函数并全化,再翻成领域模型与对象模型。做法加载技能 think-model-first。工作量越大,论证越要做足。
圈外的问题
一程只对自己的承诺负责。定义期第 2 步把受影响的领域分成重点、次要、连带三级,按的是它们与本程改动的关系:重点是为兑现本程承诺而改的;次要、连带是因为本程的改动而必须跟着改或跟着验的,包括本程改动的每一个承诺的消费者。spec 的「责任分级」一节把这三级写成路径,那是写 spec 时的枚举,不是定义。三级之外都是圈外:改它的理由与本程的改动无关。
长程交付中会碰到圈外的东西:别的模块已有的缺陷、产品上设计了但还没实现的机制、和本程无关的失败用例、别人文档里与本程不一致的说法。它们不是本程的职责,也不是本程要先解决的冲突。修它要别人的设计上下文,还会越过原拥有者的治理权;为它停下来,要花人的注意力,而人的注意力最贵。
碰到问题时,先判它在哪一级,再按下表处置。主代理自己做和派出去的子代理都按它。
| 它在哪 | 处置 |
| 重点 | 是本程的,修 |
| 次要、连带 | 只做 spec 写定的那类改动(次要:契约与消费者同步;连带:接口与回归)。需要超出这类的改动,而且它不是本程的改动带出来的,按圈外处置,它是别人的设计 |
| 本程改动的承诺有未列出的消费者 | 它是连带,不是圈外:把路径补进 spec 的责任分级并升修订,照连带同步 |
| 圈外,不挡本程任何一条验收标准 | 在 plan 的「圈外发现」记一行:位置、现象、一条证据。然后继续。不调查、不修、不停、不问人 |
| 圈外,挡住了某条验收标准 | 先找圈内的绕法:替身、按现有契约的保守做法、把这条验收按 spec 待决规则收窄并写明。有绕法就绕,再记一行。没有绕法,只停依赖它的切片,在「圈外发现」写清挡住了哪条,把它列进收口时交给人的清单,其余切片继续 |
判圈的几条:
- 先问关系,再看路径:它要改、要验,是不是因为本程的改动?是,就在三级之内,路径没列就补上。不是,再看它落在「责任分级」哪一行的路径下,都对不上的就是圈外。例:本程改了「依赖不可用时等待」这条承诺,循环的转移表要为它加一条边,转移表是连带,哪怕 spec 没列它的路径;同一个转移表里一条与本程无关的旧缺陷是圈外。
- 产品正文写了、但 spec 没有采用的机制是圈外,不是本程的缺口。
- 「挡住」只看 spec 的验收标准:没有它,某条验收做不到或证不了。「有了它更好」「顺手就修了」不算挡住。
- 圈外发现在一程收口时一次交给人,不中途逐条上报。人要在中途知道的只有一类:圈外的东西挡住了验收而且没有绕法。
先判断够不够格
| 走这条流 | 不走这条流 |
| 复杂系统新增一个领域 | 小的缺陷修复 |
| 跨多个领域的功能纵线交付 | 快速原型,验证一个想法 |
| 子系统重构 | 小规模的增量接口设计与实现 |
| 较大规模的改造 | 一处局部修改,影响范围一眼看得清 |
判据是影响范围:改动会触及领域边界、跨域协作或系统全局的架构时才走。够格也有上限:一程的大小由人在一个验收窗口里验得完多少决定。这里只粗判,量明显超出时在第一条回复里说;细核在交接期的定程,见 candid-friend 的「一程的大小」。不够格的工作整条流都不走,不走缩水版:按场景做,加载技能 pqw-mode。人问的是这条流怎么用、自己该做什么,不是要开工,加载技能 teach-pqw-skills。
开工动作
- 第一条回复先用自己的话复述人的目标、要解决的问题、预计的影响范围,不等确认。加载技能
pstack:in-your-own-words。证据排除了人要的改动,或看得出它解决不了人说的那个问题时,给出证据并停下。需求明显是几天的量时,同一条回复里先说一句「这可能要分几程」。看到人这一侧的风险就说一次:提醒、依据、建议、选择。做法加载技能candid-friend。 - 把下表的 13 个环节与交接期的四件事按表的顺序写进会话的任务清单,排在任何任务专有待办之前。宿主有任务清单工具就用它;没有就在项目 tmp 下本程目录写
todo.md。不做的环节留在清单里,写「跳过:<理由>」,不删。 - 会话中途人说「新任务」或提出另一个需求,重新从够不够格判起。交付中人往这一程里追加范围,不在这一程里谈:回一句它会记成下一程的输入,由设计会话收回时定;一个会话走完时,交回之后同一个代理切回设计会话的角色做这件事。
- 手里有一份交接信息包、要从交付期开工时:先跑
check-plan --handoff <包>核结构,包在工单正文里时用--handoff -从标准输入读;第 1 步的复述改成对照包答四问;第 2 步的清单里第 1 到 6 环节与定约、定程、交出写「跳过:已在设计会话完成,见交接信息包」,收回写「跳过:归设计会话」,从第 7 步开工,不重走定义期。包里答不出四问或与架构与规格对不上:退包,写明哪一处对不上,交回设计会话,然后停。这不是谈判,是包没合格。
阶段与环节
| 阶段 | 环节 | 加载的技能 | 产出 |
| 定义期 | 1 需求与不变式 | requirement-and-invariants | 需求与不变式单:用户可见差异、不变式清单 |
| 定义期 | 2 领域影响与顶层设计 | domain-impact-analysis | 领域影响分级表:重点、次要、连带领域;总边界 |
| 定义期 | 3 技术调研与复用 | tech-research-and-reuse | 复用论证单:直接复用、二次开发、二次封装或自造 |
| 定义期 | 4 形式化守护 | formal-guard | 形式化触发建议单;偏函数全化、模型与证明;转契约测试的清单 |
| 定义期 | 5 细化领域设计 | detailed-domain-design | 细化设计清单:领域模型、关系模型、仓储设计 |
| 定义期 | 6 正式落盘 | formal-docs-landing | 落盘决定表;约束已落到拥有者并过评审 |
| 交接期 | 定约 | pass-the-baton;写 spec 加载 spec-and-plan | spec.md,人认可 |
| 交接期 | 定程 | pass-the-baton;一程多大加载 candid-friend | 切片大纲与人的验收窗口;分程时的路线图 |
| 交接期 | 交出 | pass-the-baton 的交接点核对单 | 这一程的交接信息包;人可以把注意力移开 |
| 交付期 | 7 plan | spec-and-plan | plan.md |
| 交付期 | 8 前置消熵 | context-pack | 整程上下文包与关键设计;每切片的开工包:上下文增量、技术设计与验证、细化推进方案、里程碑待办清单 |
| 交付期 | 9 派发 | delegate-brief | 过派发门;目标、边界、规格、信息包四件齐全的简报 |
| 交付期 | 10 定期回看 | one-lesson-rule | 哨兵定时唤醒的汇报;每 45 到 60 分钟的顶层回看记录 |
| 交付期 | 11 切片收口 | slice-closeout | 收口清单:类型检查与 lint、对照 spec、结构读数与差分变异(只打关键位置)、去 slop、证明可用;全部切片收口后一次整程全量读数 |
| 交付期 | 12 向人汇报 | progress-artifacts | 可视化、可上手、用完即弃的汇报件 |
| 交付期 | 13 清理 | cleanup | 每切片一次中间产物清理;一程交付后一次全盘清理与交付声明 |
| 交接期 | 收回 | pass-the-baton | 人的验收结果记进路线图;打回与没做的有了去处 |
怎样走
- 定义期 1 到 6 顺序走,每步加载对应技能,产出填该技能的模板。人在场,代理不替人认可。
- 交接期:定约写 spec,定程写切片大纲、问人的验收窗口、做尺寸核对,交出走核对单、写交接信息包。一程的承诺、大小与交出收回归交接期,由设计会话做,人在场。做法加载技能
pass-the-baton。交出之后人可以离开;交付期可以在同一个会话里接着走,也可以换一个会话从包开工。 - 交付期先 7 写 plan:切片大纲是起点,可以在本程边界内重切,不改承诺。再 8 的整程包,然后按 plan 的切片循环:切片开工包(8)、做对(TDD,验收标准逐条过)、做好一轮(不加能力,只改实现)、收口(11)、汇报(12)、切片清理(13)。做对与做好一轮的分法加载技能
think-right-then-well。10 从第一个切片开工起常驻。9 只在派子代理时加载。 - 全部切片完成后先做一程全量读数(11),再做一程清理与交付声明(13),出最后一份汇报件(12)。交付声明就是交回的东西。
- 交回之后人回到设计会话收回:读交付声明,上手验收,记进路线图,按结果修订后面各程,再定约下一程或结束。
实施本身:方法加载技能 mattpocock-skills:tdd;执行风格加载技能 pstack:poteto-mode。
不可商量的
顺序。 需求先于不变式,不变式先于领域,领域先于架构,架构先于实施。走了这条流,定义期每一步都要有明确产出或明确的「本次不需要」结论,不能默认跳过。形式化守护里的模型检查与证明由代理建议、人确认,不自行投入;全化表碰到状态与操作就做,不等人确认。
交接。 交出是物理条件,不是感觉:边界要算定好,这一程依赖的约束须已在各自的拥有者处并过评审。约束指架构与领域边界、规格、静态检查与形式化件;这一程自己的材料留在交接信息包与过程目录。设计会话是编排者,分不分程、次序与路线图都归它;交付会话只知道自己这一程,不和人谈范围。一次只交出一程。转手会丢信息,回路越紧越稳,一块多大由接的一方验得完多少定。做法加载技能 think-closed-loop。
验收。 切片和一程的完成只认 spec 的验收标准,不认任何子代理对自己工作的报告。验收与评审用确定性上下文:测试、证明、读数、变异、对照 spec 逐条核。不做对抗性评审。每个结论带证据,证据要真的检验了它声称检验的东西。做法加载技能 think-evidence。
派发。 主代理自己做是默认。派子代理是例外,要说出 delegate-brief 的两个判据落在哪一格、命中派发门哪一问。计划者就是执行者:plan 由主代理写,结果回来就修订,不交给别人规划再交给别人执行。
自主。 一程和每个切片都带时间预算,到了预算就回看,不继续跑。自主推进时按写代码的四条,不陷进细节。一程的大小由人在验收窗口里验得完多少决定,不由代理做得动多少决定,在定程时定;预计收尾滑出窗口时,按规则截程交付,或在处置里写明为什么继续,不问人。人睡前交一程夜里做是允许的:夜里只做机器判得出对错的活,只做人点名授权的不可逆动作,做完就停,早上第一行写等人决定的事。睡前交接与夜里的六样防法见 candid-friend 的「夜间一程」。看到人这一侧的风险就说一次:提醒、依据、建议、选择。做法加载技能 candid-friend。
边界。 一个会话里只有一个主代理和它的子代理。定义期与交付期可以在两个会话里顺序完成:设计会话交出交接信息包,交付会话从包开工,交回交付声明;两个会话之间怎么传,见 pass-the-baton 的「跨会话协调」。不做多会话并行协作。汇报件统一放系统临时目录下本会话本程的子目录,不进仓库;一程交付完毕的声明包含清理已做。各环节技能按需加载,不一次全读。项目的命令与位置(含跨会话协调用什么、交接信息包与路线图放哪)从消费者 AGENTS.md 的「pqw-skills 接入」一节取;没填的槽位按「未提供」处理,不猜。
没有人在场。 批量任务、自动化评测这类运行里,任务说明就是全部的要求,没有人可以问,也没有人验收。这时不走定义期与交接期,把无人卡片接在常驻卡片后面:要求清单替人把边界定下来,交付期的切片、收口与证据照做。
容易混的环节
pass-the-baton管一程怎样交出去、收回来,spec 在它的定约里写;spec-and-plan是写 spec 与 plan 的做法;context-pack写动手前要知道的事。先有 plan,再做整程包与开工包。one-lesson-rule是节拍,progress-artifacts是内容。哨兵醒了先回看,回看有结论才出汇报件。slice-closeout核承诺有没有做到;delegate-brief的验收防作弊只管子代理交回的东西怎么核,不替代收口。cleanup切片级只清中间产物;一程级连汇报件一起清,并出交付声明。formal-guard的模型检查与证明是代理建议、人确认的守护;tech-research-and-reuse的调研不替代它。- 七个
think-技能不是环节,不进任务清单。环节技能在要用到的那一步上指过去,做法仍在环节技能里。 candid-friend也不是环节,是流程轴上的横切:one-lesson-rule是代理回头看自己,candid-friend是代理回头看人。它只提醒,人定了就照做,不替人判断价值。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

