Skip to content
This repository was archived by the owner on Sep 28, 2026. It is now read-only.

需求两条拆成实践加活动:switch-interview、ears、specification-by-example 进 practices,requirement-elicitation、requirement-specification 进 flow-steps,flow 指向新名,评测齐(#119) - #129

Merged
Eridanus117 merged 1 commit into
mainfrom
Eridanus117/as119-split-requirements
Sep 19, 2026

Conversation

@Eridanus117

Copy link
Copy Markdown
Owner

做了什么

  • plugins/practices(0.1.1)新增三条自建实践 skill,从 plugins/workcoding 的 requirement-insight、requirement-translation 拆出:switch-interview(JTBD 切换访谈:只问过去、四种力读答案、改断言旧句留着)、ears(五种句式、一句一条规则、名词只用原话与领域词汇表、29148 四条属性)、specification-by-example(每句一条关键例子、边界两侧、推不出的规则交回主人、例子变测试)。各带 references/ 一对输入输出(场景与评测用例不同:工单、会员积分)。
  • plugins/flow-steps(0.1.2)新增两条活动 skill:requirement-elicitation(需求获取;ISO/IEC/IEEE 29148)、requirement-specification(需求规约)。只有「什么时候用」「步骤」两节,点名上面三条实践,每步带完成判据。
  • flow 可选活动那两句改指新名(只改这两个名字;票8 证:evidence-regression、release-observe 拆成实践加薄步 #122 合入的另两处改名已在 rebase 时合在同一句里)。
  • 装配:.claude-plugin/marketplace.json 版本跟 plugin.json(practices 0.1.1、flow-steps 0.1.2,与 票8 证:evidence-regression、release-observe 拆成实践加薄步 #122 一致);两份 manifest 各加五条;目录页重生成(38 个 Skill)。
  • 评测:practices 七个用例(switch-interview 3、ears 2、specification-by-example 2)、flow-steps 四个用例(两条活动各一正一反),两份 evals/README.md 各加一段(用例构成、基线观察、实跑记录、噪声结论);基线、门评测与按用例重跑的 aggregate-result.json 都洗过用户名后提交。
  • 旧的 workcoding 两条正文不删不动,归档归 票9 收口:归档 workcoding、删旧词别名、更新工作方法地图 #123;验收条「旧正文里对应段落不再重复」由 票9 收口:归档 workcoding、删旧词别名、更新工作方法地图 #123 关闭。

判两件事(按 skill-authoring):本票改了 flow 的点名关系,属路由 skill,第 2 阶段方案对齐已由 spec agent-system#115 与主人预授权覆盖,直接从第 4 阶段进;五条都是模型可拿的(model-invoked),frontmatter 只有 name 与 description,Claude 侧 name-only 进 agent-config 的上线清单(待建,见下)。

为什么

Closes #119。agent-system#115 第三批:实践与规程分两层(ADR-0006),实践一处真源、规程只点名。做法的落点:抄原话与断言→switch-interview 第 1 步与 requirement-elicitation 第 1 步(各管各的输入);三个只问过去的问题、四种力、纠偏留痕→switch-interview;查现成写「未查到」、三行加一句→requirement-elicitation;拆用例判据(Cockburn)→requirement-specification 第 3 步;五种句式与 29148 四条→ears;一句一例、边界、缺一个数、例子变测试→specification-by-example。旧正文里「提出方问不到时的降级」与「pre-mortem」两条本就标着「还没经主人定」「大改动才加」,没有带过来;缺一个数时「起 system-analysis 去查」没点名,因为 #120 正在改它的名字,收口票再补。

三处有意的取舍写在这:活动 skill 的评测沙箱只装 flow-steps,点名的实践读不到,所以两条活动正文各带一句「这一步交出什么」(不带做法),是它们能守住的那层;flow 与 plugins/*/plugin.json 的版本按主人「只改自己那两条名字」没为本票再加;两个 plugin.json 的描述 rebase 时取了 main 上 #122 的写法。

怎么验证的

  • node plugins/tests/skills.test.ts:退出 0,PASS: 13 个 Plugin、38 个 Skill,目录页一致,词汇表 26 条带英文与出处。

  • claude plugin validate plugins/practices、claude plugin validate plugins/flow-steps:都 Validation passed。

  • node plugins/tests/skill-evaluation.test.ts 通过;python contracts/tools/validate.py:validation passed: 3 schemas, 6 examples, 2 Issue Forms, 12 execution-loop tests;python -m scripts.entry_sync check --scope repository:三项 OK;python scripts/test_federated_entry.py:通过。

  • 公共面门禁 bun packages/mounts/src/cli.ts assess-public-tree --repo . --rev HEAD --policy .github/public-tree-policy.json:status: allowed (scanned 1676)。

  • 评测(裁判 sonnet,每用例 3 次两组,--max-cost-usd 20 每个 plugin)。practices 被测默认模型(claude-opus-5),连基线 15.2 美元;flow-steps 被测 sonnet,连基线 7.0 美元。最终数字取各用例最后一轮(轮次与每轮改了什么在两份 README):

    用例 有 skill 组 对照组 差值
    switch-interview-prepare-questions 0.89 0 +0.89
    switch-interview-read-answers 0.67 0 +0.67
    switch-interview-own-itch 1.0 1.0 0
    ears-rewrite 0.33 0.67 −0.33
    ears-plain-question 1.0 1.0 0
    specification-by-example-attach 0.67 0 +0.67
    specification-by-example-cannot-example 0.67 0 +0.67
    requirement-elicitation-prepare 1.0 0.33 +0.67
    requirement-elicitation-already-closed 1.0 0 +1.0
    requirement-specification-translate 0.67 0.20 +0.47
    requirement-specification-not-closed 1.0 1.0 0

    practices 平均差值 +0.37,flow-steps +0.54。四条两组同分只作回归守卫。门上待裁的:五条没到 1.0 硬线。ears-rewrite 三轮有 skill 组 0.67、0、0.33、对照组 0.33、0、0.67,十八条回复的三个动作一样(拆三句标句式、「快」不编数、类名表名不进句),ears-form 三面合一,裁判读严哪一面就整条败,真差值接近 0、噪声大于差值;read-answers、两个 sbe 用例、prepare-questions 各是一次裁判三票分裂或 regex 找错位置,回复与过了的两次做的是同一套;translate 0.67 的两次失败是真行为差(把没定的规则写成「缺一个数」备注、句子本身没了),正文审查后补了一句、没有重跑。按主人定的「评分噪声查明后写进 README,不为 1.0 硬线反复重跑」,到此为止,要不要再跑由主人定。

  • 两轴审查已接(两个子代理并行)。Standards 轴违例 12 条:描述里的 instead of(部署门禁拦词)、三处术语缺英文原词、plugin.json 与 README 里的旧名「薄步」、practices README 待填,都已修;六条「多面 llm grader」按 flow-steps:第 4、6、7 段的四条步——建工作树加基线、验证取证、接审查意见、收尾;flow 升 0.1.1 改点名(#113) #114、practices:Matt 四条实践复制入库——grilling、domain-modeling、tdd、code-review 改中文与两节骨架,评测齐(#118) #125 先例作判断题留着(README 记了理由),只在 translate 那条拆成三面以查败因。Spec 轴违例 3 条:practices 结果未洗、README 待填(当时评测还在跑,现已补)、requirement-specification 第 5 步抄了 SbE 的做法——已缩回一句点名,「退回的句子照写、只空那个数」归到 SbE 第 3 步。判断题采纳:ears 的 CONTEXT.md 指明是项目领域词汇表;requirement-elicitation 第 5 步不再重述纠偏写法;README 里 spec-list 的说法改成拆后的三条。审查后正文改动六处均未重跑,各条在 README「实跑记录」末尾列出。

  • 所有 as119 结果 JSON 跑过 scrub-eval-results.ts,grep Morni 零命中;HTML 报告按 .gitignore 不提交。

怎么回退

revert 本 PR:五个 skill 目录、十一个用例目录、两份 README 的新段、两份 manifest 的五条、flow 那两句里的两个名字一起回去;marketplace 与 plugin.json 的版本号与 #122 共用,revert 后保持 #122 的值即可,目录页重生成。本 PR 不改 agent-config,本机 junction 由上线清单驱动(待建:五条 model-invoked 的 name-only 与描述检查),revert 后无需清理外部状态。

🤖 Generated with Claude Code

…s,requirement-elicitation、requirement-specification 进 flow-steps,flow 可选活动改指新名,评测齐(#119)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

票5 拆:requirement-insight、requirement-translation 拆成实践加薄步

2 participants