@namewta/speculo 0.3.4 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/README.md +4 -5
  2. package/package.json +1 -1
  3. package/template/canonical/canonical-specdev-engineering-cognitive-mentor.md +5 -0
  4. package/template/canonical/canonical-specdev-goal-plan.md +366 -59
  5. package/template/canonical/canonical-specdev-grill-with-docs.md +153 -104
  6. package/template/canonical/canonical-specdev-spec.md +5 -0
  7. package/template/canonical/canonical-specdev-tickets.md +5 -0
  8. package/template/canonical/canonical-specdev-wayfinder.md +171 -249
  9. package/template/commands/docs-sync.md +3 -3
  10. package/template/skills/docs-sync/SKILL.md +4 -3
  11. package/template/skills/docs-sync/assets/report-template.md +1 -0
  12. package/template/skills/docs-sync/references/agents/agent-writing.md +75 -0
  13. package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/claude-redirect.md +1 -1
  14. package/template/skills/docs-sync/references/agents-contract.md +23 -1
  15. package/template/skills/typescript-standards-builder/README.md +53 -0
  16. package/template/skills/typescript-standards-builder/SKILL.md +245 -0
  17. package/template/skills/typescript-standards-builder/examples/sample-generated-tree.md +30 -0
  18. package/template/skills/typescript-standards-builder/examples/sample-interview-decisions.md +26 -0
  19. package/template/skills/typescript-standards-builder/manifest.txt +29 -0
  20. package/template/skills/typescript-standards-builder/references/00-governance-and-fixed-defaults.md +77 -0
  21. package/template/skills/typescript-standards-builder/references/01-project-discovery.md +100 -0
  22. package/template/skills/typescript-standards-builder/references/02-interview-workflow.md +129 -0
  23. package/template/skills/typescript-standards-builder/references/03-project-architecture-and-directory-layout.md +84 -0
  24. package/template/skills/typescript-standards-builder/references/04-file-directory-and-symbol-naming.md +92 -0
  25. package/template/skills/typescript-standards-builder/references/05-modules-imports-exports-and-dependencies.md +63 -0
  26. package/template/skills/typescript-standards-builder/references/06-typescript-type-system.md +64 -0
  27. package/template/skills/typescript-standards-builder/references/07-functions-async-errors-and-resources.md +42 -0
  28. package/template/skills/typescript-standards-builder/references/08-comments-jsdoc-and-documentation.md +51 -0
  29. package/template/skills/typescript-standards-builder/references/09-testing-strategy.md +58 -0
  30. package/template/skills/typescript-standards-builder/references/10-react-and-frontend.md +39 -0
  31. package/template/skills/typescript-standards-builder/references/11-node-cli-and-cross-platform.md +31 -0
  32. package/template/skills/typescript-standards-builder/references/12-formatting-lint-and-complexity.md +58 -0
  33. package/template/skills/typescript-standards-builder/references/13-configuration-dependencies-and-ci.md +71 -0
  34. package/template/skills/typescript-standards-builder/references/14-security-performance-and-i18n.md +32 -0
  35. package/template/skills/typescript-standards-builder/references/15-git-review-and-delivery.md +28 -0
  36. package/template/skills/typescript-standards-builder/references/16-adoption-exceptions-and-migration.md +61 -0
  37. package/template/skills/typescript-standards-builder/references/17-generation-contract.md +104 -0
  38. package/template/skills/typescript-standards-builder/references/README.md +37 -0
  39. package/template/skills/typescript-standards-builder/templates/agents-compat-skill/SKILL.md +1 -0
  40. package/template/skills/typescript-standards-builder/templates/claude-skill/SKILL.md +1 -0
  41. package/template/skills/typescript-standards-builder/templates/project-skill/SKILL.md.template +34 -0
  42. package/template/skills/typescript-standards-builder/templates/project-skill/references/00-project-profile.md.template +17 -0
  43. package/template/skills/typescript-standards-builder/templates/project-skill/references/10-review-checklist.md +23 -0
  44. package/template/skills/typescript-standards-builder/templates/project-skill/references/11-decisions-and-exceptions.md.template +19 -0
  45. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +78 -73
  46. package/template/workflows/specdev/G-grill-with-docs/design-tree-template.json +9 -0
  47. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +16 -35
  48. package/template/workflows/specdev/G-grill-with-docs/log-format.md +2 -0
  49. package/template/workflows/specdev/I-implement/I-implement.md +12 -10
  50. package/template/workflows/specdev/I-implement/design-it-twice.md +45 -6
  51. package/template/workflows/specdev/I-implement/evidence-template.md +7 -0
  52. package/template/workflows/specdev/I-implement/execution-preflight.md +6 -0
  53. package/template/workflows/specdev/INDEX.md +11 -4
  54. package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +23 -10
  55. package/template/workflows/specdev/P-goal-plan/completion-control.md +20 -7
  56. package/template/workflows/specdev/P-goal-plan/goal-plan-template.md +55 -3
  57. package/template/workflows/specdev/P-goal-plan/orchestration-protocol.md +42 -38
  58. package/template/workflows/specdev/P-goal-plan/planning-modes.md +36 -2
  59. package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +67 -80
  60. package/template/workflows/specdev/R-review-architecture/architecture-report-contract.md +123 -0
  61. package/template/workflows/specdev/R-review-architecture/architecture-review-report-template.html +103 -55
  62. package/template/workflows/specdev/R-review-architecture/architecture-review-template.md +20 -29
  63. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +76 -147
  64. package/template/workflows/specdev/W-wayfinder/investigation-ticket-template.md +8 -53
  65. package/template/workflows/specdev/W-wayfinder/local-tracker-contract.md +36 -0
  66. package/template/workflows/specdev/W-wayfinder/solution-comment-template.md +17 -0
  67. package/template/workflows/specdev/W-wayfinder/wayfinder-map-template.md +12 -65
  68. package/template/workflows/specdev/common/README.md +4 -0
  69. package/template/workflows/specdev/common/rules/artifact-contract.md +5 -0
  70. package/template/workflows/specdev/common/rules/codebase-design.md +148 -0
  71. package/template/workflows/specdev/common/schemas/design-tree.schema.json +35 -0
  72. package/template/workflows/specdev/common/schemas/wayfinder-ticket.schema.json +19 -0
  73. package/template/workflows/specdev/common/skills/subagent-delivery/SKILL.md +61 -0
  74. package/template/workflows/specdev/common/skills/subagent-delivery/references/external-web-subagent.md +32 -0
  75. package/template/workflows/specdev/common/skills/subagent-delivery/references/github-checkpoints.md +24 -0
  76. package/template/workflows/specdev/common/skills/subagent-delivery/references/native-subagent.md +35 -0
  77. package/template/workflows/specdev/common/skills/subagent-delivery/references/source-package.md +17 -0
  78. package/template/workflows/specdev/common/tools/validate-specdev.mjs +226 -5
  79. package/template/skills/agents-md-builder/SKILL.md +0 -30
  80. package/template/skills/typescript-engineering-standards/README.md +0 -36
  81. package/template/skills/typescript-engineering-standards/SKILL.md +0 -158
  82. package/template/skills/typescript-engineering-standards/examples/comment-patterns.md +0 -47
  83. package/template/skills/typescript-engineering-standards/examples/naming-patterns.md +0 -42
  84. package/template/skills/typescript-engineering-standards/examples/project-layouts.md +0 -75
  85. package/template/skills/typescript-engineering-standards/examples/review-output-example.md +0 -25
  86. package/template/skills/typescript-engineering-standards/examples/type-modeling-patterns.md +0 -66
  87. package/template/skills/typescript-engineering-standards/manifest.txt +0 -33
  88. package/template/skills/typescript-engineering-standards/references/00-standard-levels-and-precedence.md +0 -51
  89. package/template/skills/typescript-engineering-standards/references/01-project-architecture-and-directory-layout.md +0 -105
  90. package/template/skills/typescript-engineering-standards/references/02-file-directory-and-symbol-naming.md +0 -117
  91. package/template/skills/typescript-engineering-standards/references/03-modules-imports-exports-and-dependencies.md +0 -111
  92. package/template/skills/typescript-engineering-standards/references/04-typescript-type-system.md +0 -150
  93. package/template/skills/typescript-engineering-standards/references/05-functions-async-errors-and-resources.md +0 -142
  94. package/template/skills/typescript-engineering-standards/references/06-comments-jsdoc-and-documentation.md +0 -104
  95. package/template/skills/typescript-engineering-standards/references/07-testing-strategy.md +0 -84
  96. package/template/skills/typescript-engineering-standards/references/08-react-and-frontend.md +0 -91
  97. package/template/skills/typescript-engineering-standards/references/09-node-cli-and-cross-platform.md +0 -92
  98. package/template/skills/typescript-engineering-standards/references/10-formatting-lint-and-complexity.md +0 -107
  99. package/template/skills/typescript-engineering-standards/references/11-configuration-dependencies-and-ci.md +0 -86
  100. package/template/skills/typescript-engineering-standards/references/12-security-performance-and-i18n.md +0 -65
  101. package/template/skills/typescript-engineering-standards/references/13-git-review-and-delivery.md +0 -79
  102. package/template/skills/typescript-engineering-standards/references/14-adoption-exceptions-and-migration.md +0 -84
  103. package/template/skills/typescript-engineering-standards/references/15-orca-derived-observations.md +0 -54
  104. package/template/skills/typescript-engineering-standards/references/README.md +0 -45
  105. package/template/skills/typescript-engineering-standards/templates/.editorconfig +0 -12
  106. package/template/skills/typescript-engineering-standards/templates/AGENTS.typescript.md +0 -21
  107. package/template/skills/typescript-engineering-standards/templates/code-review-checklist.md +0 -37
  108. package/template/skills/typescript-engineering-standards/templates/package-scripts.json +0 -11
  109. package/template/skills/typescript-engineering-standards/templates/prettier.json +0 -6
  110. package/template/skills/typescript-engineering-standards/templates/pull-request-template.md +0 -37
  111. package/template/skills/typescript-engineering-standards/templates/tsconfig.base.json +0 -17
  112. package/template/skills/typescript-engineering-standards/templates/tsconfig.project-references.json +0 -8
  113. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +0 -12
  114. package/template/workflows/specdev/I-implement/deepening.md +0 -17
  115. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/content-contract.md +0 -0
  116. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/evidence-collection.md +0 -0
  117. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/manifest-discovery.md +0 -0
  118. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/role-classification.md +0 -0
  119. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/aggregator-AGENTS.md +0 -0
  120. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/capability-module-AGENTS.md +0 -0
  121. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/contract-module-AGENTS.md +0 -0
  122. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/repo-root-AGENTS.md +0 -0
  123. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/runnable-app-AGENTS.md +0 -0
  124. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/templates/scripts-docs-AGENTS.md +0 -0
  125. /package/template/skills/{agents-md-builder/references → docs-sync/references/agents}/writing-style.md +0 -0
@@ -13,191 +13,120 @@
13
13
  - 若本地项目提供 Speculo Node 校验器,可运行它补充结构校验;纯网页环境按本文内联的 schema、Ready 清单和完成标准逐项核对,并明确记录未运行的自动校验。
14
14
  - 提交、推送、合并、部署、发布、归档移动和不可逆迁移仍需用户明确授权。
15
15
 
16
- Wayfinder 用于“尚不知道怎样安全形成 Spec 或实现路线”的场景。它先命名**目标**,再把通往目标的路线绘制成一张**共享地图**——由一组可领取的调查 Ticket 组成,逐个关闭高影响未知项,直到路线清晰。地图刻意保持不完整:看得清的决策落成 Ticket,看不清的留在**战争迷雾**里,随每次调查完成而逐步散去。
16
+ 一个模糊的想法出现了——太大而无法放入单个 Agent 会话,且从当前状态到**目的地**的路径尚不可见。寻路就是找到那条路,而非冲向目标。此 work change state 中绘制一张**共享地图**,然后逐个处理其 Tickets,直到路径变得清晰。
17
17
 
18
- ## 两条核心纪律
18
+ 目的地可能是一份待移交和迭代的 Spec、一个在规划开始前需锁定的决策,或一项经说明允许在地图中完成的变更。命名目的地是第一步,它塑造每个 Ticket。
19
19
 
20
- - **规划而非执行**:本 work 产出的是**决策**,不是交付物。当你产生“顺手把它实现掉”的冲动时,通常意味着你已经走到了地图边缘——那是交接给实现 work 的信号,而不是继续动手的理由。用户可在地图笔记中显式授权把执行纳入地图,否则一律只产出决策。
21
- - **以名称指代**:共享地图和每个调查 Ticket 都是有标题的实体。凡是人会读到的叙述,一律用**名称**指代(如“调查:登录态跨域刷新策略”),而不是裸编号(`INV-03`)或裸路径。ID 与路径作为链接附在名称里,不单独充当称呼。一屏 `INV-03、INV-04、INV-05` 无法阅读。
20
+ ## 核心纪律
22
21
 
23
- ## 产物
22
+ ### 规划,而非执行
24
23
 
25
- - 共享地图:`specdev/changes/{change}/wayfinder-map.md`
26
- - 调查 Ticket 目录:`specdev/changes/{change}/investigation/`
27
- - 单个调查 Ticket:`specdev/changes/{change}/investigation/{investigation-id}.md`
28
- - 调查 Evidence:`specdev/changes/{change}/investigation/evidence/`
29
- - 全局领取状态:`specdev/status.json` 中当前 change 的 `claimed_investigations`
24
+ Wayfinder 默认进行**规划**:每个 Ticket 解决一个决策,当地图完成时路径就清晰了——在某人动手之前没有任何剩余决定。想要直接动手通常说明已经到达地图边缘,是时候移交。只有地图“说明”明确覆盖此行为时,task 才能把解除阻塞的执行带入地图。
30
25
 
31
- 模板:
26
+ ### 用名称引用
32
27
 
33
- - 下方 `<investigation-ticket-template>` 标签
34
- - 下方 `<wayfinder-map-template>` 标签
35
-
36
- ## 何时运行
37
-
38
- - 路径未知,无法安全写出 Ready Spec 或 Ticket;
39
- - 需要跨多个领域、技术栈或外部系统调查;
40
- - 调查量超出单个上下文,适合并行研究;
41
- - 存在多个相互依赖的高影响未知项;
42
- - 需要在若干候选方案中先获得事实证据再做决定。
43
-
44
- 若问题只是一个可在当前上下文通过短暂只读探索回答的事实,不创建 Wayfinder Map。若在命名目标、绘制前沿后发现根本没有迷雾——所有决策都已清楚——则不需要地图,停下并直接告知用户下一步。
45
-
46
- ## 两种调用模式
47
-
48
- Wayfinder 有两种入口,可分次进行:
49
-
50
- - **绘制地图**:用户带来一个粗略想法。命名目标 → 广度优先勾勒前沿 → 建立共享地图(写好目标与笔记,已定决策留空,迷雾写入“尚未指定”)→ 创建当前可明确表述的调查 Ticket 并二次连边补齐阻塞关系 → 并行触发 research 型 AFK 调查 → 停止。绘制本身不解决任何未知项。
51
- - **走完地图**:用户带来一张已存在的地图(可选带指定 Ticket)。加载低分辨率地图 → 选取并领取一个前沿 Ticket → 解决它 → 记录结论、释放领取、关闭 Ticket → 浮现新 Ticket、让已可表述的迷雾毕业、把越界工作移入范围之外。
52
-
53
- ## 流程
54
-
55
- ### 1. 命名目标与勾勒边界
56
-
57
- 命名目标是第一动作,它塑造每一个后续 Ticket。写明:
58
-
59
- - **最终目标**:一到两行描述“终点长什么样”。
60
- - **已知边界**:当前确定的前提、约束与不变量。
61
- - **当前不能决定的事项**:以及“为什么这些未知项阻塞规划”。
62
-
63
- 高影响未知项按**调查目的**分为四类:
64
-
65
- - **research**:答案可由代码、文档、实验或外部来源证实;
66
- - **decision**:事实已足够,但需要用户或架构 owner 做取舍;
67
- - **validation**:已有方案,需要实验验证关键可行性或风险;
68
- - **mapping**:需要建立调用链、数据流、依赖图或影响面。
69
-
70
- 每个调查 Ticket 还需标注**执行模式**:
28
+ 每张地图和每个 Ticket 都有一个名称。人类阅读的叙述和“已做出的决策”始终用名称引用;ID 和路径包裹在名称链接里,不以裸 `INV-01` 墙代替名称。
71
29
 
72
- - **AFK**(agent-only):可由子代理独立完成,无需人类在环,典型是 research 与 mapping。
73
- - **HITL**(human-in-the-loop):必须通过与用户的实时交流才能解决,代理不得替用户作答;典型是 decision,以及需要用户对原型或方案取舍反馈的 validation。
30
+ ### 每会话一个 Ticket
74
31
 
75
- 低影响实现细节不创建调查 Ticket,记录为实现者可自行决定。
32
+ 无论绘制还是遍历,**每个会话绝不解决超过一个 Ticket**。绘制地图的会话不解决任何 Ticket;并行 research 的每个独立 Agent 也只负责一个 Ticket。
76
33
 
77
- ### 2. 战争迷雾与前沿
34
+ ## 产物与适配
78
35
 
79
- 地图**刻意不完整**——不去绘制你还看不见的东西。
36
+ - 地图:`specdev/changes/{change}/wayfinder-map.md`
37
+ - 子 Tickets:`specdev/changes/{change}/investigation/`
38
+ - solution comments:`specdev/changes/{change}/investigation/comments/`
39
+ - assignment registry:`specdev/status.json` 的 `claimed_investigations`
80
40
 
81
- - **前沿**:地图上当前 `open`、依赖已满足(unblocked)、且尚未被领取(unclaimed)的调查 Ticket 集合。走完地图时只从前沿取 Ticket。
82
- - **战争迷雾**:范围内、你已隐约感到会出现、但此刻还无法精确表述的决策。它们写入共享地图的“尚未指定”区,不切成 Ticket。
83
- - **毕业判据**:能否**此刻精确陈述这个问题**(而非能否此刻回答它)。问题已经足够锐利就立 Ticket(即使仍被阻塞);还说不清就留在迷雾里。不要预先把迷雾切成 Ticket 大小的碎片。
41
+ 每次绘制或遍历前加载 下方 `<local-tracker-contract>` 标签。Ticket 和地图模板:
84
42
 
85
- 每解决一个 Ticket 都会驱散前方迷雾,让新可表述的问题从“尚未指定”毕业为新 Ticket。
86
-
87
- ### 3. 建立共享地图
88
-
89
- 使用 下方 `<wayfinder-map-template>` 标签 写入 `specdev/changes/{change}/wayfinder-map.md`。地图是**索引而非仓库**:每个决策只在一处存放(对应调查 Ticket 或 Evidence),地图只给出一行摘要并链接到详情。地图包含:
90
-
91
- - **目标**:终点,一到两行。
92
- - **笔记**:领域、需参考的 skills、固定偏好,以及是否显式授权把执行纳入地图。
93
- - **调查清单**:当前所有已表述 Ticket 的索引表(含 ID、类型、执行模式、问题、依赖、领取状态、结果指针),前沿由此表投影。
94
- - **调查 DAG**:阻塞关系图,避免多个调查重复回答同一问题;标记可并行与必须串行的决策点。
95
- - **已定决策**:每关闭一个 Ticket 追加一行结论,作为“实际走过的路线”索引。
96
- - **尚未指定**:范围内、尚不可表述为 Ticket 的迷雾。
97
- - **范围之外**:见第 4 节。
98
- - **停止条件**:整体收敛判据,不以“所有可能问题都研究完”为目标。
99
-
100
- 每个 Ticket 只关闭一个高影响未知项。
101
-
102
- ### 4. 范围之外
103
-
104
- 迷雾只朝目标方向聚集,目标一旦确定就固定了范围,因此超出目标的工作是**范围之外**,不是迷雾。它单独成节,列出被有意识排除的工作,写清摘要与理由。
105
-
106
- - 范围之外**永不毕业**回地图;只有在目标被重画时,作为新的 change 重新纳入。
107
- - 当一个已存在的 Ticket 被发现落在目标之外时,关闭它并在“范围之外”留一行摘要与原因,**不写入“已定决策”**——已定决策只记录实际走过的路线。
108
-
109
- ### 5. 领取与并行
43
+ - 下方 `<investigation-ticket-template>` 标签
44
+ - 下方 `<wayfinder-map-template>` 标签
45
+ - 下方 `<solution-comment-template>` 标签
110
46
 
111
- 调查者开始前原子地更新 `specdev/status.json` 的 `claimed_investigations`(领取即“认领”,先领取再动手):
47
+ ## Ticket 类型
112
48
 
113
- - 未领取且依赖满足(属于前沿)→ 设置 owner、session claimed 时间;
114
- - 已领取 → 跳过并选择其他前沿 Ticket;
115
- - 超过配置的 claim 超时且无进展 → 允许在记录原因后回收;
116
- - 完成或释放后从领取集合移除,并同步共享地图。
49
+ 每个 Ticket 要么是 **HITL**,与一个代表自己发言的人类一起工作;要么是 **AFK**,由 Agent 独立驱动。HITL Ticket 只能通过实时交流解决,Agent 绝不代替人类一方发言。
117
50
 
118
- 并行是有约束的:
51
+ - **Research(AFK)**:阅读文档、第三方 API 或知识库等资源,揭示某个决策等待的事实。调用 下方 `<research>` 标签。当需要当前工作目录之外的知识时使用。
52
+ - **Prototype(HITL)**:制作廉价、粗糙、具体的产物提高讨论保真度——大纲、粗略尝试、桩代码或 UI/逻辑原型。将原型链接为资产;当“它应是什么样”或“怎样表现”是关键问题时使用。
53
+ - **Grilling(HITL)**:对话。调用 “设计访谈能力” 的 grilling 与 domain-modeling 能力,但本会话只关闭当前 Wayfinder Ticket。
54
+ - **Task(HITL 或 AFK)**:在决策做出前必须完成的手动工作。它通过为决策解除阻塞赢得位置,不以交付目的地为目标。Agent 能独立驱动时使用 AFK,否则给人类精确清单。
119
55
 
120
- - **research / AFK 型调查可并行领取**,因为它们只读取事实、彼此独立,且不推进产品决策。并行调查使用独立上下文,只读取共享地图、当前调查 Ticket、相关上游工件和必要代码事实,不复制全部调查历史。
121
- - **decision 及其他 HITL 型 Ticket,单个会话一次只解决一个**。这类 Ticket 会实质改变方案走向、开启新的迷雾,逐个解决才能让地图稳定地生长;一次塞多个决策会污染前沿。因此除 research 型外,**同一会话不要在一轮里解决多个 HITL 型 Ticket**。
122
- - 用户可能在其他会话并行推进未阻塞的 Ticket,要预期对地图和领取状态的并发编辑,写回前先重读。
56
+ Ticket label 只能是 `wayfinder:research | wayfinder:prototype | wayfinder:grilling | wayfinder:task`。
123
57
 
124
- ### 6. 执行调查
58
+ ## 战争迷雾与范围
125
59
 
126
- 调查默认只读。允许:
60
+ 地图刻意不完整:不要绘制还看不到的内容。活跃 Tickets 之外是**战争迷雾**——能感觉即将到来、但依赖尚未解决问题而无法精确陈述的决策和调查。
127
61
 
128
- - 代码搜索与静态分析;
129
- - 文档、规范和官方来源研究;
130
- - 可撤销的临时实验、最小原型或插桩(原型用于让用户对“看起来/表现如何”作出反应,是手段不是最终架构);
131
- - 性能测量、调用点扫描、schema 对比或兼容性验证。
62
+ **迷雾还是 Ticket?** 判断标准是现在能否精确陈述问题,而非现在能否回答:
132
63
 
133
- 外部研究使用 下方 `<research>` 标签。
64
+ - 问题已经清晰时做成 Ticket,即使仍被阻塞;
65
+ - 还无法精确表述时留在“尚未明确”,不预先切成 Ticket 大小碎片。
134
66
 
135
- 禁止:
67
+ 目的地固定范围。目标之外的工作进入**超出范围**,不是战争迷雾。范围之外永不升级;只有重新命名目的地并创建新 change 时才重新考虑。越界 Ticket 关闭为 `out-of-scope`,链接进“超出范围”,不进入“已做出的决策”。
136
68
 
137
- - 顺手实现产品功能(想动手 = 到了地图边缘,交接而非继续);
138
- - 提交未经审查的实验代码;
139
- - 将原型视为最终架构;
140
- - 在没有证据时把建议写成事实;
141
- - 代 HITL 型 Ticket 的用户作答;
142
- - 无停止条件地持续研究。
69
+ ## 调用模式
143
70
 
144
- ### 7. 记录结果与影响
71
+ ### 绘制地图
145
72
 
146
- 每个调查结果区分:
73
+ 用户带着模糊想法调用:
147
74
 
148
- - 官方或规范事实;
149
- - 当前代码事实;
150
- - 实验结果;
151
- - 推断;
152
- - 建议;
153
- - 用户或 owner 决策。
75
+ 1. **命名目的地。** 运行一轮 G 的 grilling/domain-modeling,确定正在寻路的 Spec、决策或变更。
76
+ 2. **绘制前沿。** 再次质询,这次广度优先,在整个空间展开而非深入一条线索。如果没有浮现任何迷雾,停下并询问用户如何继续,不创建地图。
77
+ 3. **创建地图。** 使用模板填写目的地和说明;“已做出的决策”为空,迷雾写入“尚未明确”。
78
+ 4. **创建现在可明确的 Tickets。** 先创建全部 Ticket,再第二遍连接 `blocked_by`,因为 ID 必须先存在。
79
+ 5. **派出 research Agent。** 每个 research Ticket 使用独立上下文和 claim,各自只解决一个 Ticket;需要 Git 分支时先取得对应授权。
80
+ 6. 停止。绘制地图是一个会话的工作,它不亲手解决任何 Ticket。
154
81
 
155
- 写明来源、版本、置信度、适用范围、反例、仍未知项和对以下工件的影响:
82
+ **完成标准**:目的地、地图、当前可表述 Tickets、阻塞边和战争迷雾已持久化;绘图会话没有关闭 Ticket。
156
83
 
157
- - `specdev/changes/{change}/spec.md`;
158
- - `specdev/changes/{change}/ADR.md`;
159
- - `specdev/changes/{change}/ticket/NN-<ticket-name>.md`;
160
- - `specdev/changes/{change}/diagnosis.md`。
84
+ ### 遍历地图
161
85
 
162
- 调查完成、阻塞或释放时:
86
+ 用户带来地图,可选指定 Ticket:
163
87
 
164
- 1. 同步调查 Ticket、调查 Evidence、领取状态;
165
- 2. 在共享地图的“已定决策”追加一行结论索引(越界的则移入“范围之外”);
166
- 3. 让新可表述的迷雾从“尚未指定”毕业为新 Ticket,并二次连边补齐阻塞关系;作废或被替代的 Ticket 及时更新或删除;
167
- 4. 返回 investigation 名称、状态及三份工件(调查 Ticket、Evidence、共享地图)的完整路径。
88
+ 1. 加载地图的低分辨率视图,不加载每个 Ticket 正文。
89
+ 2. 用户指定 Ticket 时使用它;否则按本地 tracker contract 查询并选择第一个 frontier Ticket。
90
+ 3. 在任何工作前领取 Ticket。已领取时跳过并选择其他 frontier。
91
+ 4. 按需缩放:只读取当前 Ticket、相关或已关闭 Ticket 的详情,以及“说明”指定的能力。
92
+ 5. 解决当前唯一 Ticket,使用下一个未占用编号写 solution comment,原子关闭 Ticket 并释放 claim。
93
+ 6. 在地图“已做出的决策”追加名称链接和一句概括;越界则写入“超出范围”。
94
+ 7. 创建新浮现的 Tickets,第二遍连接阻塞;从“尚未明确”删除每个已升级补丁;更新或关闭被答案判定无效的 Tickets。
168
95
 
169
- 状态使用 `open | claimed | confirmed | disproved | decision-needed | unresolved | superseded | cancelled`。
96
+ 写回前重读地图、Ticket claims,预期其他会话并发编辑。
170
97
 
171
- ### 8. 收敛与退出
98
+ **完成标准**:本会话只关闭一个 Ticket;Ticket、solution comment、claim、地图和新 frontier 一致。
172
99
 
173
- 当剩余未知项不再阻止目标、行为、架构、风险或验证决策时停止。根据结果进入:
100
+ ## 收敛与路由
174
101
 
175
- - 需要产品或架构取舍 → “设计访谈能力”;
176
- - 外部行为已清楚 → “编写 Spec 阶段”;
177
- - Spec 已 Ready 且只是实现拆分未知 → “拆分 Tickets 阶段”;
178
- - Bug 根因路径已收敛 → “Bug 诊断阶段”;
179
- - 仍存在高影响未知项 → 保持 blocked,并明确下一调查或用户决策。
102
+ 当前沿为空且“尚未明确”不再包含阻塞目的地的内容时,路径清晰:
180
103
 
181
- 长期有效且经实现验证的研究,只有在归档时由 “归档与沉淀阶段” 提升。
104
+ - 需要产品或架构取舍:“设计访谈能力”;
105
+ - 外部行为已清楚:“编写 Spec 阶段”;
106
+ - Spec Ready、只需拆分:“拆分 Tickets 阶段”;
107
+ - Bug 根因路线收敛:“Bug 诊断阶段”;
108
+ - 仍有高影响未知项:保持 active/blocked 并返回下一 frontier Ticket 名称。
182
109
 
183
110
  ## 完成标准
184
111
 
185
- - 目标已命名,并塑造了地图上的每个 Ticket
186
- - 共享地图、调查 Ticket 和领取状态一致;
187
- - 地图作为索引,每个决策只在一处存放;
188
- - 每个调查只关闭一个高影响未知项;
189
- - 结论区分事实、实验、推断、建议和决定;
190
- - 来源、版本、置信度和停止条件可追踪;
191
- - 前沿、战争迷雾与范围之外划分清晰,迷雾按“能否精确表述”毕业;
192
- - 并行调查没有重复领取或互相覆盖,且未在一轮里解决多个 HITL Ticket;
193
- - 调查状态及 Ticket、Evidence、共享地图路径已按名称返回;
194
- - 没有把产品实现藏在调查中;
195
- - 已明确下一 work 或阻塞决策。
112
+ - 目的地塑造每个 Ticket 并固定范围;
113
+ - 地图是低分辨率索引,不列开放 Tickets,不复制答案详情;
114
+ - 四类 Ticket 与 HITL/AFK 语义正确;
115
+ - frontier 由 open、unblocked、unclaimed 事实查询;
116
+ - 名称用于人类叙述,裸 ID 只作内部标识;
117
+ - 战争迷雾、Ticket 与超出范围按可精确表述性和范围区分;
118
+ - 每会话最多解决一个 Ticket,HITL 用户没有被 Agent 代答;
119
+ - 每个关闭 Ticket solution comment,资产通过链接引用;
120
+ - claim、阻塞、地图与 Ticket 状态一致;
121
+ - 路径清晰时返回下一 work,不把产品实现藏进寻路。
196
122
 
197
123
  ## 子文件引用
198
124
 
199
- - 调查 Ticket 模板:下方 `<investigation-ticket-template>` 标签
200
- - 共享地图模板:下方 `<wayfinder-map-template>` 标签
125
+ - 本地 Tracker:下方 `<local-tracker-contract>` 标签
126
+ - Ticket 模板:下方 `<investigation-ticket-template>` 标签
127
+ - Solution comment:下方 `<solution-comment-template>` 标签
128
+ - 地图模板:下方 `<wayfinder-map-template>` 标签
129
+ - Ticket schema:下方 `<wayfinder-ticket-schema>` 标签
201
130
 
202
131
  ---
203
132
 
@@ -212,66 +141,21 @@ Wayfinder 有两种入口,可分次进行:
212
141
  生成该工件时,将以下字段写在文档开头的 YAML frontmatter 中:
213
142
 
214
143
  ```yaml
215
- artifact: investigation-ticket
144
+ artifact: wayfinder-ticket
216
145
  id: INV-01
217
- name: <简短问题名称,供人按名称指代>
218
- type: research
219
- mode: AFK
146
+ name: <精确问题名称>
147
+ parent_map: specdev/changes/{change}/wayfinder-map.md
148
+ label: wayfinder:grilling
220
149
  status: open
221
150
  blocked_by: []
222
- owner: unassigned
223
- claimed_by: null
224
- claimed_at: null
151
+ resolution: null
225
152
  ```
226
153
 
227
- # 调查:<问题名称>
228
-
229
- > 本 Ticket 只关闭**一个**高影响未知项,产出的是决策而非交付物。想“顺手实现”时即到了地图边缘,交接而非动手。
230
-
231
- - **调查文件:** `specdev/changes/{change}/investigation/INV-01-<name>.md`
232
- - **共享地图:** `specdev/changes/{change}/wayfinder-map.md`
233
- - **Evidence:** `specdev/changes/{change}/investigation/evidence/INV-01.md`
234
-
235
- ## 0. 分类
236
-
237
- - **Type:** research / decision / validation / mapping
238
- - **模式:** AFK(子代理独立完成)/ HITL(须与用户实时交流,代理不代答)
239
-
240
- ## 1. 决策用途
241
-
242
- - 要回答或决定什么(一个精确问题):
243
- - 为什么阻塞规划:
244
- - 结果由哪个工件消费:
154
+ # <精确问题名称>
245
155
 
246
- ## 2. 已知事实与假设
156
+ ## 问题
247
157
 
248
- ### 已知事实
249
-
250
- ### 待验证假设
251
-
252
- ## 3. 调查契约
253
-
254
- - **允许的代码探索:** `project/relative/path/**`
255
- - **允许的实验 / 原型:**(原型仅供用户反应,不作最终架构)
256
- - **禁止的产品实现:**
257
- - **来源优先级:**
258
- - **停止条件:**
259
- - **时间或资源边界:**
260
-
261
- ## 4. 结果
262
-
263
- - **状态:** confirmed / disproved / decision-needed / unresolved / superseded / cancelled
264
- - **结论:**
265
- - **证据:**
266
- - **置信度:** high / medium / low
267
- - **适用范围与版本:**
268
- - **反例或限制:**
269
- - **对 Spec 的影响:** 无 / `specdev/changes/{change}/spec.md`
270
- - **对 ADR 的影响:** 无 / `specdev/changes/{change}/ADR.md`
271
- - **对 Ticket 的影响:** 无 / `specdev/changes/{change}/ticket/NN-<ticket-name>.md`
272
- - **浮现的新迷雾 / 新 Ticket:**
273
- - **是否越界(移入范围之外):** 否 / 是(理由:)
274
- - **下一步:**
158
+ <此 Ticket 要解决的一个决策、调查或解除阻塞工作。>
275
159
 
276
160
  </investigation-ticket-template>
277
161
 
@@ -287,84 +171,97 @@ change: <YYYY-MM-DD-topic>
287
171
  status: active
288
172
  ```
289
173
 
290
- # Wayfinder Map: <目标名称>
174
+ # Wayfinder Map: <地图名称>
291
175
 
292
- > 本地图是**索引而非仓库**:每个决策只在一处存放,地图只给一行摘要并链接到详情。凡是人会读到的叙述,用**名称**指代 Ticket,不用裸编号。
176
+ ## 目的地
293
177
 
294
- - **共享地图:** `specdev/changes/{change}/wayfinder-map.md`
295
- - **调查目录:** `specdev/changes/{change}/investigation/`
296
- - **领取状态:** `specdev/status.json`
178
+ <到达此地图终点时的样子——此工作正在寻路的 spec、决策或变更。一到两行;每个会话在挑选 Ticket 之前以其为定位。>
297
179
 
298
- ## 1. 目标
180
+ ## 说明
299
181
 
300
- <终点长什么样,一到两行。目标是第一动作,塑造每一个 Ticket,并固定范围。>
182
+ <领域;每个会话应咨询的 skills;此工作的常设偏好;是否明确把执行带入地图。>
301
183
 
302
- ## 2. 笔记
184
+ ## 已做出的决策
303
185
 
304
- - **领域:**
305
- - **需参考的 skills:**
306
- - **固定偏好 / 约束:**
307
- - **执行授权:** 默认只产出决策不产出交付物;如需把执行纳入地图,在此显式写明。
186
+ <!-- 索引——每个已关闭 Ticket 一行:足以判断相关性,然后放大链接查看 solution comment 持有的详细信息。开放 Tickets 通过本地 tracker 查询,不列在这里。 -->
308
187
 
309
- ## 3. 调查清单(前沿由此表投影)
188
+ - **<已关闭 Ticket 标题>:** `specdev/changes/{change}/investigation/comments/INV-01/01-solution.md` —— <答案的一句话概括>
310
189
 
311
- > 前沿 = `open` + 依赖已满足(unblocked)+ 尚未领取(unclaimed)的行。走完地图时只从前沿取 Ticket。
190
+ ## 尚未明确
312
191
 
313
- | 名称 | ID | Type | 模式 | 问题 | Blocked By | Owner/Claim | 状态 | Result |
314
- |---|---|---|---|---|---|---|---|---|
315
- | 示例:登录态跨域刷新策略 | INV-01 | research | AFK | ... | — | unassigned | open | `specdev/changes/{change}/investigation/INV-01-<name>.md` |
192
+ <!-- 范围内但尚无法精确表述为 Ticket 的战争迷雾;随着前沿推进而升级。 -->
316
193
 
317
- - Type:research(可证实)/ decision(需取舍)/ validation(需实验验证)/ mapping(建立调用链/影响面)。
318
- - 模式:AFK(子代理独立完成,典型 research/mapping)/ HITL(须与用户实时交流,代理不代答,典型 decision)。
194
+ ## 超出范围
319
195
 
320
- ## 4. 调查 DAG
196
+ <!-- 被裁定在目的地之外的工作;已关闭,永不升级。 -->
321
197
 
322
- ```text
323
- INV-01
324
- ├─→ INV-02
325
- └─→ INV-03
326
- ```
198
+ </wayfinder-map-template>
199
+
200
+ <local-tracker-contract>
327
201
 
328
- - 标记可并行调查与必须串行的决策点,避免多个调查重复回答同一问题。
202
+ # Wayfinder 本地 Tracker 适配
329
203
 
330
- ## 5. 并行与领取规则
204
+ 最新版 Wayfinder 以 issue tracker 为物理载体。SpecDev 的默认 tracker 是 change state 内的本地 Markdown/JSON;本文件只映射物理原语,不改写 Wayfinder 的地图、Ticket、战争迷雾或遍历语义。
331
205
 
332
- - 最大并发来自 `specdev/config.json`。
333
- - 当前领取集合以 `specdev/status.json` 为权威。
334
- - 同一调查 Ticket 只能有一个 owner/session。
335
- - **research / AFK 型可并行领取**;**decision 及其他 HITL 型,单会话一次只解决一个**(research 除外),逐个解决让地图稳定生长。
336
- - 共享地图是状态投影,领取变更后必须同步;写回前先重读,预期并发编辑。
206
+ | Tracker 原语 | 本地实现 |
207
+ |---|---|
208
+ | 地图 issue | `specdev/changes/{change}/wayfinder-map.md` |
209
+ | issue | `specdev/changes/{change}/investigation/{investigation-id}.md` |
210
+ | label | Ticket frontmatter 的 `wayfinder:research|prototype|grilling|task` |
211
+ | 阻塞关系 | Ticket frontmatter 的 `blocked_by` |
212
+ | assignment | `specdev/status.json` 当前 change 的 `claimed_investigations` |
213
+ | solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` |
214
+ | 关闭 issue | Ticket frontmatter 的 `status: closed` 与 `resolution` |
337
215
 
338
- ## 6. 已定决策(实际走过的路线)
216
+ ## 查询前沿
339
217
 
340
- > 每关闭一个 Ticket 追加一行结论索引。越界工作不写这里,移入“范围之外”。
218
+ 扫描当前地图的全部子 Ticket。一个 Ticket 同时满足以下条件时属于**前沿**:
341
219
 
342
- | 名称 | 结论(一行) | 置信度 | 消费工件 | 详情指针 |
343
- |---|---|---|---|---|
220
+ 1. `status: open`;
221
+ 2. `blocked_by` 中的每个 Ticket 都是 `status: closed`;
222
+ 3. `claimed_investigations` 中没有相同 `id`。
344
223
 
345
- ## 7. 尚未指定(战争迷雾)
224
+ 按文件名中的数字 ID 升序返回。地图正文不缓存开放 Ticket 列表;每次选择前沿都从 Ticket 与 claim 事实重新查询。
346
225
 
347
- > 范围内、已隐约感到会出现、但此刻还无法**精确表述**的决策。看得清就毕业成第 3 节的 Ticket,看不清就留在这里。不要预先切成 Ticket 大小的碎片。
226
+ ## 原子领取
348
227
 
349
- - ...
228
+ 开始任何工作前,重读全局状态并原子写入 `id`、`owner`、可选 `session` 和 `claimed_at`。已领取则选择下一前沿 Ticket。写回结果前再次重读;完成、释放或取消时删除 claim。
350
229
 
351
- ## 8. 范围之外
230
+ Ticket 文件不重复保存 assignee,地图不重复保存 claim。全局 assignment registry 是领取的单一事实源。
352
231
 
353
- > 超出目标的工作。永不毕业回地图;目标被重画时作为新 change 处理。已存在 Ticket 若被发现越界,关闭后在此留一行摘要与理由。
232
+ ## 解决方案评论
354
233
 
355
- | 被排除的工作 | 理由 |
356
- |---|---|
234
+ Ticket 正文只保存问题。答案写入下一个未占用的 solution comment 文件,资产从评论链接,不粘贴进 Ticket。关闭 Ticket 后,地图的“已做出的决策”只追加名称链接和一句概括;`out-of-scope` 不进入决策索引。
357
235
 
358
- ## 9. 停止条件
236
+ **完成标准**:地图、Ticket、claim、阻塞和 solution comment 可以重建相同前沿;同一事实没有第二份可写副本。
359
237
 
360
- - [ ] 目标已命名,并塑造了地图上的每个 Ticket。
361
- - [ ] 所有高影响未知项已 confirmed、disproved,或明确转为用户/owner 决策。
362
- - [ ] 战争迷雾中不再有阻塞目标、且已可精确表述却未立 Ticket 的问题。
363
- - [ ] 可以形成 Ready Spec、Ticket、诊断契约或架构决策。
364
- - [ ] 没有把产品实现留在调查 Ticket 中。
365
- - [ ] 所有 claim 已释放或转为明确 blocked。
238
+ </local-tracker-contract>
366
239
 
367
- </wayfinder-map-template>
240
+ <solution-comment-template>
241
+
242
+ ## 产物 YAML 头部
243
+
244
+ 生成该工件时,将以下字段写在文档开头的 YAML frontmatter 中:
245
+
246
+ ```yaml
247
+ artifact: wayfinder-solution-comment
248
+ ticket: INV-01
249
+ sequence: 1
250
+ resolution: answered
251
+ ```
252
+
253
+ # Solution: <Ticket 名称>
254
+
255
+ - **Ticket:** `specdev/changes/{change}/investigation/INV-01.md`
256
+ - **答案:** <此 Ticket 关闭的决定或已完成的解除阻塞工作>
257
+ - **事实与来源:**
258
+ - **资产:** 无 / `project/relative/path` / `<Url>https://example.com</Url>`
259
+ - **后续 Ticket 所依赖的事实:** 无 / ...
260
+ - **新浮现的 Tickets:** 无 / <按名称列出>
261
+ - **升级的战争迷雾:** 无 / ...
262
+ - **对现有 Tickets 的影响:** 无 / update / close / supersede
263
+
264
+ </solution-comment-template>
368
265
 
369
266
  <research>
370
267
 
@@ -871,3 +768,28 @@ INV-01
871
768
  ```
872
769
 
873
770
  </change-status-schema>
771
+
772
+ <wayfinder-ticket-schema>
773
+
774
+ ```json
775
+ {
776
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
777
+ "$id": "urn:speculo:specdev:wayfinder-ticket:v1",
778
+ "title": "SpecDev Wayfinder Ticket Frontmatter",
779
+ "type": "object",
780
+ "required": ["artifact", "id", "name", "parent_map", "label", "status", "blocked_by", "resolution"],
781
+ "properties": {
782
+ "artifact": { "const": "wayfinder-ticket" },
783
+ "id": { "type": "string", "pattern": "^INV-[0-9]{2,}$" },
784
+ "name": { "type": "string", "minLength": 1 },
785
+ "parent_map": { "type": "string", "minLength": 1 },
786
+ "label": { "enum": ["wayfinder:research", "wayfinder:prototype", "wayfinder:grilling", "wayfinder:task"] },
787
+ "status": { "enum": ["open", "closed"] },
788
+ "blocked_by": { "type": "array", "items": { "type": "string", "pattern": "^INV-[0-9]{2,}$" } },
789
+ "resolution": { "enum": [null, "answered", "out-of-scope", "superseded", "cancelled"] }
790
+ },
791
+ "additionalProperties": false
792
+ }
793
+ ```
794
+
795
+ </wayfinder-ticket-schema>
@@ -2,7 +2,7 @@
2
2
  id: docs-sync
3
3
  type: command
4
4
  name: Docs Sync
5
- description: 清洁并提交工作区,以可复现 Git 区间和确认范围同步项目文档与 workflow 知识
5
+ description: 清洁并提交工作区,以可复现 Git 区间和确认范围同步项目文档、Agent 手册与 workflow 知识
6
6
  keywords: [docs-sync, readme, changelog, agents, documentation]
7
7
  ---
8
8
 
@@ -19,8 +19,8 @@ keywords: [docs-sync, readme, changelog, agents, documentation]
19
19
  ## 执行
20
20
 
21
21
  1. 读取 `../skills/docs-sync/SKILL.md`,解析 `speculo/config.json` 与 `speculo/.speculo/workspace.json`(不存在时以默认值静默降级),获取全部已安装 workflow/state 根。
22
- 2. 将 runtime context、报告路径、全局 state 路径与 Git 副作用责任传给 skill,按 skill 流程执行(清理工作区 确认范围 生命周期审计 → 同步文档 → 验证)。
22
+ 2. 将 runtime context、报告路径、全局 state 路径、Git 副作用责任和 `handbook_mode` 传给 skill。`handbook_mode` 默认为 `incremental`;用户明确要求、手册缺失或 manifest 拓扑变化时使用 `rebuild`。
23
23
  3. 整文件/目录删除和受保护知识仍逐次确认;skill 返回原子写入内容后,由本命令显式暂存并创建同步或 no-op commit。
24
24
  4. 重新读取 Git、state、报告与 sidecar;只有工作区干净、节点可复现且所有文件已提交时完成。
25
25
 
26
- 完成标准:报告含输入节点、checkpoint、确认范围、生命周期动作和验证;全局 state 与每个 workflow sidecar 有效;`git status --short` 为空。
26
+ 完成标准:报告含输入节点、checkpoint、确认范围、handbook mode、生命周期动作和验证;全局 state 与每个 workflow sidecar 有效;`git status --short` 为空。
@@ -2,7 +2,7 @@
2
2
  id: docs-sync
3
3
  type: skill
4
4
  name: Docs Sync
5
- description: 基于可复现 Git 区间、用户确认范围和 workflow 规则,清洁工作区并全量审计同步项目文档与知识资产。
5
+ description: 文档同步:基于可复现 Git 区间、确认范围和 workflow 规则审计项目文档,并在增量维护或重建分支中生成可预测的 AGENTS.md / CLAUDE.md 手册树。
6
6
  ---
7
7
 
8
8
  # Docs Sync
@@ -16,7 +16,8 @@ description: 基于可复现 Git 区间、用户确认范围和 workflow 规则
16
16
  1. 读取 `references/git-state-contract.md`,清理并提交可验证的既有工作区改动,解析上次基线与本次输入节点。完成标准:输入工作区干净,或已无损阻塞。
17
17
  2. 读取 `references/workflow-scope-contract.md`,发现全部已安装 workflow,并解析全局范围与每个 workflow 的确认清单。完成标准:首次运行已统一确认范围,每个 workflow 状态根都有合法 sidecar。
18
18
  3. 读取 `references/document-lifecycle-contract.md`,把输入区间和 workflow 证据映射为 `add | update | delete | merge | keep | propose-only`。完成标准:每个受影响资产已整份审计,而非只追加新段落。
19
- 4. 更新 README 时读取 `references/readme-contract.md`(同步规则)与 `references/readme-writing-guide.md`(内容写作规范);更新 CHANGELOG 时读取 `references/changelog-contract.md`;更新代理手册时读取 `references/agents-contract.md`。需要创建或重建多层代理手册树时改用 `../agents-md-builder/SKILL.md`。
20
- 5. 验证项目和文档,按 `assets/report-template.md`、`assets/state-template.json` `assets/workflow-scope-template.json` 返回原子写入内容。调用方提交显式文件列表并再次确认工作区干净。
19
+ 4. 更新 README 时读取 `references/readme-contract.md`(同步规则)与 `references/readme-writing-guide.md`(内容写作规范);更新 CHANGELOG 时读取 `references/changelog-contract.md`;更新代理手册时读取 `references/agents-contract.md`,由该契约选择 `incremental` 或 `rebuild` 分支。完成标准:每个命中文档只加载所属分支的规则,未发生分支泄漏。
20
+ 5. 生成或修改任何 Agent 消费的手册、入口或上下文指针时,读取 `references/agents/agent-writing.md`,逐项应用上下文指针、信息层级、完成标准、引导词和精简规则。完成标准:每个含义只有一个事实源,每个分支有可到达的指针,逐句通过相关性与无效指令检查。
21
+ 6. 验证项目和文档,按 `assets/report-template.md`、`assets/state-template.json` 与 `assets/workflow-scope-template.json` 返回原子写入内容。调用方提交显式文件列表并再次确认工作区干净。
21
22
 
22
23
  完成标准:项目文档与当前事实一致,过期和重复内容已删除或合并;报告可复现输入区间;state 与 sidecar 已提交;没有未确认的越权写入或遗留工作区改动。
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  command: docs-sync
3
3
  mode: <bootstrap|incremental|no-op>
4
+ handbook_mode: <incremental|rebuild>
4
5
  scope: <workspace|multi-workflow|workflow>
5
6
  workflows: []
6
7
  changes: []