@namewta/speculo 1.0.1 → 1.0.2
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.
- package/README.md +3 -2
- package/package.json +2 -2
- package/template/AGENTS.md +12 -1
- package/template/canonical/canonical-specdev-goal-plan.md +10 -1
- package/template/canonical/canonical-specdev-grill-with-docs.md +7 -0
- package/template/canonical/canonical-specdev-orchestrate-implementation.md +18 -2
- package/template/canonical/canonical-specdev-spec.md +7 -0
- package/template/canonical/canonical-specdev-tickets.md +13 -6
- package/template/canonical/canonical-specdev-wayfinder.md +7 -0
- package/template/commands/archive-and-consolidate.md +1 -2
- package/template/commands/docs-sync.md +1 -1
- package/template/commands/git-repository-audit.md +1 -1
- package/template/commands/handoff.md +1 -1
- package/template/commands/retro.md +1 -1
- package/template/commands/status.md +1 -1
- package/template/skills/archive-and-consolidate/SKILL.md +9 -168
- package/template/skills/archive-and-consolidate/references/entry-procedure.md +170 -0
- package/template/skills/docs-sync/SKILL.md +9 -11
- package/template/skills/docs-sync/references/entry-procedure.md +18 -0
- package/template/skills/engineering-standards-builder/SKILL.md +9 -148
- package/template/skills/engineering-standards-builder/references/entry-procedure.md +154 -0
- package/template/skills/git-history-squash/SKILL.md +9 -88
- package/template/skills/git-history-squash/references/entry-procedure.md +94 -0
- package/template/skills/github-npm-ops/SKILL.md +9 -18
- package/template/skills/github-npm-ops/references/entry-procedure.md +25 -0
- package/template/skills/optimize-codex-config/SKILL.md +12 -72
- package/template/skills/optimize-codex-config/references/entry-procedure.md +78 -0
- package/template/skills/source-code-zip/SKILL.md +10 -559
- package/template/skills/source-code-zip/references/entry-procedure.md +565 -0
- package/template/skills/speculo-retro/SKILL.md +9 -16
- package/template/skills/speculo-retro/references/entry-procedure.md +23 -0
- package/template/skills/upstream-fork-sync/SKILL.md +10 -72
- package/template/skills/upstream-fork-sync/references/entry-procedure.md +78 -0
- package/template/skills/writing-great-skills/SKILL.md +9 -73
- package/template/skills/writing-great-skills/references/entry-procedure.md +79 -0
- package/template/workflows/learning/A-archive/A-archive.md +7 -0
- package/template/workflows/learning/A-assess-and-plan/A-assess-and-plan.md +7 -0
- package/template/workflows/learning/C-consolidate/C-consolidate.md +7 -0
- package/template/workflows/learning/H-homework/H-homework.md +8 -1
- package/template/workflows/learning/I-init-setup/I-init-setup.md +7 -0
- package/template/workflows/learning/INDEX.md +2 -0
- package/template/workflows/learning/L-lesson/L-lesson.md +7 -0
- package/template/workflows/learning/R-review/R-review.md +8 -1
- package/template/workflows/learning/README.md +3 -1
- package/template/workflows/learning/common/rules/activation-and-memory.md +20 -0
- package/template/workflows/ops/A-archive-and-learn/A-archive-and-learn.md +7 -0
- package/template/workflows/ops/E-execute-and-stabilize/E-execute-and-stabilize.md +8 -1
- package/template/workflows/ops/I-intake-and-assess/I-intake-and-assess.md +7 -0
- package/template/workflows/ops/INDEX.md +2 -0
- package/template/workflows/ops/P-plan-and-approve/P-plan-and-approve.md +8 -1
- package/template/workflows/ops/README.md +3 -0
- package/template/workflows/ops/common/rules/activation-and-memory.md +20 -0
- package/template/workflows/person/INDEX.md +2 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +9 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/books/README.md +1 -1
- package/template/workflows/person/S-steelman-deliberation/S-steelman-deliberation.md +7 -0
- package/template/workflows/person/common/rules/activation-and-memory.md +20 -0
- package/template/workflows/specdev/A-archive-and-consolidate/A-archive-and-consolidate.md +7 -0
- package/template/workflows/specdev/C-code-review/C-code-review.md +7 -0
- package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +7 -0
- package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +7 -0
- package/template/workflows/specdev/I-implement/I-implement.md +7 -0
- package/template/workflows/specdev/I-implement/execution-preflight.md +1 -1
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +7 -0
- package/template/workflows/specdev/INDEX.md +2 -0
- package/template/workflows/specdev/L-learn-change/L-learn-change.md +7 -0
- package/template/workflows/specdev/O-orchestrate-implementation/O-orchestrate-implementation.md +10 -1
- package/template/workflows/specdev/P-goal-plan/P-goal-plan.md +10 -1
- package/template/workflows/specdev/P-prototype/P-prototype.md +7 -0
- package/template/workflows/specdev/R-review-architecture/R-review-architecture.md +7 -0
- package/template/workflows/specdev/README.md +3 -0
- package/template/workflows/specdev/S-spec/S-spec.md +7 -0
- package/template/workflows/specdev/T-tickets/T-tickets.md +10 -3
- package/template/workflows/specdev/T-tickets/ticket-template.md +2 -2
- package/template/workflows/specdev/T-tickets/tickets-map-template.md +1 -1
- package/template/workflows/specdev/T-triage/T-triage.md +7 -0
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +7 -0
- package/template/workflows/specdev/common/README.md +1 -0
- package/template/workflows/specdev/common/rules/activation-and-memory.md +20 -0
package/README.md
CHANGED
|
@@ -67,12 +67,13 @@ After initialization, the target project gains the following AI agent-callable a
|
|
|
67
67
|
| `engineering-standards-builder` | Interview-driven generator that produces a project-specific TypeScript/JS/React/Node standards skill |
|
|
68
68
|
| `writing-great-skills` | Authoring guidance for agent skills |
|
|
69
69
|
|
|
70
|
-
###
|
|
70
|
+
### 4 Workflow Packages
|
|
71
71
|
|
|
72
72
|
| Workflow | Work Entries | Description |
|
|
73
73
|
|---|---:|---|
|
|
74
74
|
| **learning** | 7 | Evidence-aware learning for projects, products, subjects, languages, and skills: complete 30–40 minute plain-language lessons, single-file homework review, optional retention review, and provenance-preserving topic synthesis |
|
|
75
|
-
| **specdev** |
|
|
75
|
+
| **specdev** | 15 | Local-first specification-driven development: archive, code review, diagnosis, grilling, implementation, setup, goal planning, prototyping, architecture review, specs, tickets, triage, and wayfinding |
|
|
76
|
+
| **ops** | 4 | Operations assessment, approval, execution, verification, and archival knowledge |
|
|
76
77
|
| **person** | 2 | Persona-methodology and rigorous deliberation workflows (Mao Zedong Cognitive OS; Bidirectional Steelman Deliberation) |
|
|
77
78
|
|
|
78
79
|
Every workflow ships an `INDEX.md` as its auto-generated work catalog. Work entries follow `<Letter>-<work_name>/<Letter>-<work_name>.md` naming with progressive-disclosure sub-files, and resolve runtime paths via `<Path>{roots.xxx}/...</Path>` pointers in `workspace.json`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namewta/speculo",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Workflow-packaged AI collaboration assets with state-safe refresh tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"pretest": "pnpm build",
|
|
14
14
|
"generate-canonical": "node scripts/generate-specdev-canonical.mjs",
|
|
15
15
|
"validate-source-parity": "node scripts/check-specdev-source-parity.mjs",
|
|
16
|
-
"validate-assets": "node scripts/check-specdev-source-parity.mjs && node scripts/generate-specdev-canonical.mjs --check && node scripts/validate-refresh-contracts.mjs && node scripts/validate-framework-assets.mjs && node scripts/check-template-links.mjs",
|
|
16
|
+
"validate-assets": "node scripts/check-specdev-source-parity.mjs && node scripts/generate-specdev-canonical.mjs --check && node scripts/validate-refresh-contracts.mjs && node scripts/validate-framework-assets.mjs && node scripts/check-template-links.mjs && node scripts/validate-workflow-disclosure.mjs",
|
|
17
17
|
"check": "pnpm test && pnpm validate-assets",
|
|
18
18
|
"verify-bin": "node scripts/verify-bin.mjs",
|
|
19
19
|
"eval:scenarios": "node scripts/evaluate-scenarios.mjs",
|
package/template/AGENTS.md
CHANGED
|
@@ -1 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Speculo runtime guide
|
|
2
|
+
|
|
3
|
+
先按当前任务定位相关 workflow、command、skill 或 change,再读取对应入口和分支 reference;不默认整读 `speculo/` 或永久知识索引。
|
|
4
|
+
|
|
5
|
+
- 被动发现:读取 `speculo/workflows/<workflow>/INDEX.md`,只定位与当前请求相关的永久知识条目。
|
|
6
|
+
- 激活 workflow:再读取对应 `README.md`、状态投影和当前 Work;只加载当前分支需要的规则、schema、模板与工具。
|
|
7
|
+
- 记忆检索:先定位索引 entry,再回读少量原文和 provenance;没有匹配证据时停止猜测。
|
|
8
|
+
- 记忆写入:先解析 owner/gateway,检查 pending transaction、lock 和 recovery evidence;网关未知时阻塞该写入并继续独立工作。
|
|
9
|
+
- 只读探索、静态编辑和本地测试可直接进行;提交、推送、发布、部署、远程写入、归档移动、永久知识改写和不可逆操作必须由拥有该动作的入口取得明确授权。
|
|
10
|
+
- 失败、漂移、schema 冲突、越界路径或 owner 不明时停止受影响分支,保留证据并报告恢复路径。
|
|
11
|
+
|
|
12
|
+
详细状态、所有权和副作用合同由各 workflow 的 `INDEX.md`、`README.md`、`common/rules/` 和 schema 定义。
|
|
@@ -19,6 +19,13 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
|
|
|
19
19
|
|
|
20
20
|
产物写入 `specdev/changes/{change}/goal-plan.md`。
|
|
21
21
|
|
|
22
|
+
## 读取范围
|
|
23
|
+
|
|
24
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
25
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
26
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
27
|
+
|
|
28
|
+
|
|
22
29
|
## 何时运行
|
|
23
30
|
|
|
24
31
|
满足任一条件时运行:
|
|
@@ -38,7 +45,7 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
|
|
|
38
45
|
|
|
39
46
|
- `specdev/changes/{change}/spec.md`
|
|
40
47
|
- `specdev/changes/{change}/tickets-map.md`
|
|
41
|
-
- `specdev/changes/{change}/ticket
|
|
48
|
+
- `specdev/changes/{change}/ticket/`:先枚举 Ticket 入口的 frontmatter、依赖和状态,按 DAG、路径和风险定位需要完整读取的 Ticket。
|
|
42
49
|
- `specdev/config.json`
|
|
43
50
|
|
|
44
51
|
按存在情况读取:
|
|
@@ -51,6 +58,8 @@ Goal Plan 只拥有单个 Ticket 无法独立决定的事情:整体 Outcome、
|
|
|
51
58
|
- 永久领域上下文:`specdev/context/`
|
|
52
59
|
- 用户提供的合同、标准、参考实现、环境限制、发布窗口和批准策略。
|
|
53
60
|
|
|
61
|
+
非当前分支的 ADR、CONTEXT、LOG、Diagnosis、Evidence、研究资料和永久目录先通过索引、状态和关键词定位;只有被当前 Gate、依赖、冲突或恢复条件命中的条目才回读原文。Tickets Map、当前计划和决定 DAG 的 Ticket frontmatter 是权威编排输入,仍需完整读取。
|
|
62
|
+
|
|
54
63
|
永久目录可以为空,静默继续。缺少 Spec 或 Tickets Map 时返回 “编写 Spec 阶段” 或 “拆分 Tickets 阶段”;当前 ADR/CONTEXT 缺失且规划依赖对应决定时返回 “设计访谈能力”,不在 Goal Plan 中补造上游权威。
|
|
55
64
|
|
|
56
65
|
## 流程
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
本 work 只把访谈写成当前 change 的可恢复工件:设计树保存进度,LOG 保存讨论轨迹,CONTEXT 保存本 change 已确认的规范语言,ADR 保存已成为本 change 下游合同的架构决定。这些工件不等于项目永久知识,也不构成实现授权;永久 namespace 对 G 只读,只有 “归档与沉淀阶段” 能在实现证据、毕业评估和用户确认通过后执行提升。
|
|
21
21
|
|
|
22
|
+
## 读取范围
|
|
23
|
+
|
|
24
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
25
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
26
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
27
|
+
|
|
28
|
+
|
|
22
29
|
## 输入与产物
|
|
23
30
|
|
|
24
31
|
按存在情况读取:
|
|
@@ -19,6 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
父 change 的主产物是 `specdev/changes/{change}/implementation-map.md` 与 `specdev/changes/{change}/implementation-plan.md`;整体验证写入 `specdev/changes/{change}/evidence/implementation-orchestration.md`。
|
|
21
21
|
|
|
22
|
+
## 读取范围
|
|
23
|
+
|
|
24
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
25
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
26
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
27
|
+
|
|
28
|
+
|
|
22
29
|
## 激活输入
|
|
23
30
|
|
|
24
31
|
创建模式必须获得至少两个用户明确指定的 change。恢复模式由用户指定父 change,或从 active change 中唯一满足 `current_work=specdev/orchestrate-implementation` 且存在父实现产物者确定。
|
|
@@ -29,10 +36,12 @@
|
|
|
29
36
|
- 每个成员的 `specdev/changes/{member-change}/.status.json`;
|
|
30
37
|
- 每个成员的 `specdev/changes/{member-change}/spec.md`;
|
|
31
38
|
- 每个成员的 `specdev/changes/{member-change}/tickets-map.md`;
|
|
32
|
-
- 每个成员的 `specdev/changes/{member-change}/ticket
|
|
39
|
+
- 每个成员的 `specdev/changes/{member-change}/ticket/`:先枚举所有 Ticket frontmatter、依赖、状态和可写路径,再按 super-DAG、冲突和当前 frontier 回读相关正文;
|
|
33
40
|
- 存在时读取子 Goal Plan、ADR、CONTEXT、LOG、Diagnosis 与 Evidence;
|
|
34
41
|
- 当前 repository、branch、HEAD、dirty 状态、项目 Agent 指令与可用验证命令。
|
|
35
42
|
|
|
43
|
+
成员的 Spec、Tickets Map、Ticket frontmatter、状态和父级编排证据是 super-DAG 的权威输入,必须完整读取;成员的 ADR、CONTEXT、LOG、Diagnosis、Evidence、研究资料和项目 Skills 先按索引、状态和关键词定位,只读取命中的条目。恢复、冲突、漂移和集成失败时按本 Work 的证据合同扩展为全量读取。
|
|
44
|
+
|
|
36
45
|
加载 下方 `<input-readiness>` 标签 和 下方 `<parent-implementation-orchestration>` 标签。任何成员未实现就绪、已归档、等于父 change、属于另一个未完成父实现 change,或本身是父实现 change 时,不创建父 change。
|
|
37
46
|
|
|
38
47
|
## 流程
|
|
@@ -438,6 +447,13 @@ ready_for_execution: true
|
|
|
438
447
|
|
|
439
448
|
若当前 change 是未完成父 Implementation Map 的成员,必须读取 下方 `<parent-implementation-orchestration>` 标签、父 Map 与父 Plan。父 Plan 提供跨 change dependency/serialization、全局 workspace 策略、组合派单标识、implementation agent cap 和 integration queue;子 Goal Plan 只能增加子内 Gate,不能放宽或冲突。
|
|
440
449
|
|
|
450
|
+
## 读取范围
|
|
451
|
+
|
|
452
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
453
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
454
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
455
|
+
|
|
456
|
+
|
|
441
457
|
## 执行模式
|
|
442
458
|
|
|
443
459
|
### Ticket 模式(默认)
|
|
@@ -629,7 +645,7 @@ Ticket 模式返回 Ticket/change 状态、Evidence 完整路径、workspace loc
|
|
|
629
645
|
|
|
630
646
|
- [ ] Ticket frontmatter 可解析,`ready: true`,`status: ready`。
|
|
631
647
|
- [ ] Tickets Map 已完整读取,包含总体实施背景和项目 Skill 读取矩阵;当前 Ticket 被 `ALL` 或自身 ID 覆盖。
|
|
632
|
-
- [ ] 当前 Ticket 映射的项目 Skill 路径均为真实存在的项目根相对入口文件,Lead
|
|
648
|
+
- [ ] 当前 Ticket 映射的项目 Skill 路径均为真实存在的项目根相对入口文件,Lead 已读取入口并完整展开命中的 Skill;implementation subagent Packet 包含 Map 与同一最低必读集合。
|
|
633
649
|
- [ ] 项目 Agent 指令或当前实现范围没有触发矩阵外的未读项目 Skill;发现新匹配项时由 Lead 更新 Map、重新运行 tickets 校验后再恢复项目写入。
|
|
634
650
|
- [ ] 所有 `blocked_by` Ticket 为 done 且 Evidence 存在。
|
|
635
651
|
- [ ] Spec、ADR、Ticket 与 Goal Plan 无冲突;旧 Goal Plan schema 必须重跑 P-goal-plan。
|
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
|
|
18
18
|
Spec 决定“为什么、为谁、系统应表现为何”。它可以锁定影响公共接口、数据、兼容、安全或验收的实现约束,但不写逐文件施工计划。
|
|
19
19
|
|
|
20
|
+
## 读取范围
|
|
21
|
+
|
|
22
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
23
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
24
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
25
|
+
|
|
26
|
+
|
|
20
27
|
## 输入
|
|
21
28
|
|
|
22
29
|
按存在情况读取:
|
|
@@ -17,6 +17,13 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
|
|
|
17
17
|
|
|
18
18
|
本 work 保留原有能力:代码库探索、prefactor 识别、曳光弹垂直切片、真实阻塞边、用户粒度核对、宽重构的 expand-contract 排序、Ticket 独立文件和总体 Tickets Map。
|
|
19
19
|
|
|
20
|
+
## 读取范围
|
|
21
|
+
|
|
22
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
23
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
24
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
25
|
+
|
|
26
|
+
|
|
20
27
|
## 输入
|
|
21
28
|
|
|
22
29
|
优先读取:
|
|
@@ -37,7 +44,7 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
|
|
|
37
44
|
|
|
38
45
|
### 1. 输入预检
|
|
39
46
|
|
|
40
|
-
1.
|
|
47
|
+
1. 先读取上游工件索引,按当前 Ticket 的依赖、缺口和冲突关键词定位,再回读相关工件;
|
|
41
48
|
2. 检查 `specdev/changes/{change}/spec.md` 的 `ready_for_tickets`;
|
|
42
49
|
3. 按 下方 `<artifact-contract>` 标签 处理 Spec、ADR、用户决定与代码事实的冲突;
|
|
43
50
|
4. 将未知项分类为可发现事实、高影响用户决定和低影响实现细节;
|
|
@@ -61,8 +68,8 @@ Ticket 是**决策完备的微型执行计划**:它消除执行者在目标、
|
|
|
61
68
|
#### 项目 Skill 路由
|
|
62
69
|
|
|
63
70
|
1. 读取项目 Agent 指令,确定项目声明的 Skill 根;至少枚举 `.agents/skills/**/SKILL.md`,存在其他项目级 Skill 根时一并枚举;
|
|
64
|
-
2. 先读取候选 Skill 的 frontmatter
|
|
65
|
-
3.
|
|
71
|
+
2. 先读取候选 Skill 的 frontmatter 与入口路由;只有命中当前 change 的 scope、路径、技术域或验证条件时才完整读取,并按其 Skill Map 路由到当前 change 需要的领域 Skill;
|
|
72
|
+
3. 根据 change 索引、每个 Ticket 的 frontmatter、路径、技术域、公共契约、迁移与验证范围,确定 `ALL` 或具体 Ticket 的最低必读集合;只把真实存在且触发条件匹配的项目 Skill 纳入;
|
|
66
73
|
4. 使用项目根相对 Path 记录每个 Skill 的入口文件,同时记录触发 scope、读取时机和用途;不得把 Speculo 自带 Skill 或机器绝对路径伪装成项目 Skill;
|
|
67
74
|
5. 未发现适用项目 Skill 时,记录已扫描的 Skill 根和“无适用项”,不生成虚假路径;项目 Skill 清单是最低集合而非 allowlist。
|
|
68
75
|
|
|
@@ -397,7 +404,7 @@ shared_path_owners: []
|
|
|
397
404
|
- **上游 Spec:** `specdev/changes/{change}/spec.md`
|
|
398
405
|
- **完成 Evidence:** `specdev/changes/{change}/evidence/T-01.md`
|
|
399
406
|
|
|
400
|
-
实现本 Ticket 时,Lead 与 implementation subagent 必须按顺序完整读取总体 Map
|
|
407
|
+
实现本 Ticket 时,Lead 与 implementation subagent 必须按顺序完整读取总体 Map,读取项目 Skill 的 frontmatter 与入口并只展开适用于 `ALL`/`T-01` 的匹配项,再读取本 Ticket 与相关上游工件。Map 中的 Skill 是最低必读集合;新的匹配项先由 Lead 同步到 Map 并重新校验。
|
|
401
408
|
|
|
402
409
|
## 1. 战略与来源
|
|
403
410
|
|
|
@@ -496,7 +503,7 @@ E2E 由实际跨边界行为与风险决定,不限于 UI;required 模式不
|
|
|
496
503
|
## 10. 验收标准
|
|
497
504
|
|
|
498
505
|
- [ ] `AC-001`:<可判定结果>。
|
|
499
|
-
- [ ] 实现开始前已完整读取 Tickets Map
|
|
506
|
+
- [ ] 实现开始前已完整读取 Tickets Map,已读取项目 Skill 入口并完整展开其中适用于 `ALL`/`T-01` 的匹配项;新发现的匹配 Skill 已由 Lead 同步回 Map。
|
|
500
507
|
- [ ] 验证矩阵全部执行并记录到 `specdev/changes/{change}/evidence/T-01.md`。
|
|
501
508
|
- [ ] 实际项目修改未超出 `writable_paths`,shared path 由指定 owner 修改。
|
|
502
509
|
- [ ] Ticket 已按 Goal Plan 策略形成非空 implementation/source commit,direct-parent 或 candidate 验证通过且父分支 result 已记录。
|
|
@@ -537,7 +544,7 @@ status: draft
|
|
|
537
544
|
|
|
538
545
|
### 项目 Skill 读取矩阵
|
|
539
546
|
|
|
540
|
-
每个 Ticket 的 Lead 或 implementation subagent 都必须先完整读取本 Map
|
|
547
|
+
每个 Ticket 的 Lead 或 implementation subagent 都必须先完整读取本 Map,再读取候选项目 Skill 的 frontmatter 与入口;只有适用于 `ALL` 或当前 Ticket ID、且 scope/路径/技术域/验证条件命中的 Skill 才完整读取,最后进入当前 Ticket。下表是发布时已确认的**最低必读集合,不是 Skill allowlist**;项目 Agent 指令或实现范围触发其他项目 Skill 时,先定位并读取其入口,由 Lead 更新本 Map、重新校验后继续。
|
|
541
548
|
|
|
542
549
|
项目 Skill 使用项目根相对 Path,例如 `.agents/skills/{skill-name}/SKILL.md`;不得写机器绝对路径。若没有适用项目 Skill,保留一行 `无(已扫描项目 Skill 入口,未发现适用项)`,并在 Trigger / Scope 中记录实际扫描范围。
|
|
543
550
|
|
|
@@ -17,6 +17,13 @@
|
|
|
17
17
|
|
|
18
18
|
目的地可能是一份待移交和迭代的 Spec、一个在规划开始前需锁定的决策,或一项经说明允许在地图中完成的变更。命名目的地是第一步,它塑造每个 Ticket。
|
|
19
19
|
|
|
20
|
+
## 读取范围
|
|
21
|
+
|
|
22
|
+
1. 先读取 SpecDev 的激活合同 与当前 Work 的状态入口。
|
|
23
|
+
2. 再读取 SpecDev 的按需读取与记忆写入协议,按当前分支、状态和关键词定位最小相关工件。
|
|
24
|
+
3. 只在本 Work 明确要求恢复、冲突、执行安全或归档证据时扩展为全量读取;缺少匹配证据或 owner/gateway 时停止受影响分支。
|
|
25
|
+
|
|
26
|
+
|
|
20
27
|
## 核心纪律
|
|
21
28
|
|
|
22
29
|
### 规划,而非执行
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
id: archive-and-consolidate
|
|
3
3
|
type: command
|
|
4
4
|
name: Archive and Consolidate
|
|
5
|
-
description:
|
|
6
|
-
统一入口:Learning 先做用户确认的主题整合或冷归档,其他 workflow 继续使用各自的归档合同。
|
|
5
|
+
description: Archive or consolidate a user-selected completed change and its knowledge under the owning workflow contract.
|
|
7
6
|
keywords: [archive, consolidate, learning, topic, cold-archive, 归档, 综合]
|
|
8
7
|
---
|
|
9
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: docs-sync
|
|
3
3
|
type: command
|
|
4
4
|
name: Docs Sync
|
|
5
|
-
description:
|
|
5
|
+
description: Synchronize project documentation and agent handbooks for a confirmed reproducible Git range.
|
|
6
6
|
keywords: [docs-sync, readme, changelog, agents, documentation]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: git-repository-audit
|
|
3
3
|
type: command
|
|
4
4
|
name: Git Repository Audit
|
|
5
|
-
description:
|
|
5
|
+
description: Produce a read-only reproducible audit for explicitly selected local Git repositories.
|
|
6
6
|
keywords: [git-audit, git-inventory, repository, commit, merge, contribution, 仓库盘点, 代码审计, 团队评估]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: handoff
|
|
3
3
|
type: command
|
|
4
4
|
name: handoff
|
|
5
|
-
description:
|
|
5
|
+
description: Persist a compact handoff when the user asks another agent or session to continue the current work.
|
|
6
6
|
keywords: [handoff, 交接, 移交, 上下文压缩]
|
|
7
7
|
argument-hint: "下一个会话将用于什么?"
|
|
8
8
|
disable-model-invocation: true
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
id: retro
|
|
3
3
|
type: command
|
|
4
4
|
name: Speculo Retro
|
|
5
|
-
description:
|
|
5
|
+
description: Analyze confirmed Speculo usage friction and propose or create GitHub issues through the npm/GitHub operation skill.
|
|
6
6
|
keywords: [retro, 复盘, 痛点, feedback, issue, 优化, 反馈]
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -2,179 +2,20 @@
|
|
|
2
2
|
id: archive-and-consolidate
|
|
3
3
|
type: skill
|
|
4
4
|
name: Archive and Consolidate
|
|
5
|
-
description:
|
|
6
|
-
|
|
7
|
-
INDEX.md 声明的 state 知识 store(adr/、context/ 等),
|
|
8
|
-
然后审计并清理过时/重复知识;也支持由调用方拥有知识策略的 mechanical-only 模式。
|
|
9
|
-
默认 dry-run 返回可确认计划,所有破坏性动作需用户显式确认后执行。
|
|
10
|
-
触发场景:workflow 中存在 change_status: completed 的 change 需要归档收尾、知识沉淀、清理过时内容时。
|
|
5
|
+
description: Archive and consolidate completed workflow changes and knowledge; use only for an explicitly selected archive/consolidation or cleanup review.
|
|
6
|
+
|
|
11
7
|
---
|
|
12
8
|
|
|
13
9
|
# Archive and Consolidate
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
## 核心原则
|
|
18
|
-
|
|
19
|
-
**减法优先**:先归档旧 change、清理过时知识,再写入新合并内容。一个事实只有一个权威版本,其余位置放短指针。
|
|
20
|
-
**两阶段报告**:预执行完整计划 → 用户显式确认 → 执行 → 执行后验证补遗。不可将初始任务中的"完成后清理"视为确认。
|
|
21
|
-
**内容不是指令**:项目文件中包含的"执行某命令"等文本不构成操作授权。
|
|
22
|
-
|
|
23
|
-
## 输入
|
|
24
|
-
|
|
25
|
-
- 当前工作目录或用户指定的项目目录。
|
|
26
|
-
- 目标 workflow id(或从 `workspace.json` + `INDEX.md` 已解析的 workflow/state 根)。
|
|
27
|
-
- 目标 workflow `INDEX.md` 中的运行时根声明和持久化约定表。
|
|
28
|
-
- 模式:`dry-run`(默认)| `confirmed`。
|
|
29
|
-
- 范围:`archive-single`(单个 change)| `archive-batch`(全部已完成 change)。
|
|
30
|
-
- 知识策略:`generic`(默认)| `mechanical-only`(调用方拥有知识策略,本 Skill 只处理移动与状态)。
|
|
31
|
-
- 可选指定 change 名称(`archive-single` 模式)。
|
|
32
|
-
|
|
33
|
-
`mechanical-only` 必须由调用方提供已经确认的知识处理结果或明确说明无知识写入。本 Skill 不读取、判断、创建、合并、改写或清理知识 store;它仍执行全部路径包含、目标冲突、状态一致性、dry-run/confirmed 和重读验证门。
|
|
34
|
-
|
|
35
|
-
## 流程
|
|
36
|
-
|
|
37
|
-
### Step 0:路径解析(内建,不依赖外部 skill)
|
|
38
|
-
|
|
39
|
-
1. 从 CWD 向上查找 `<Path>{roots.state}/workspace.json</Path>`;第一个命中目录为 `project_root`;多候选或冲突时返回 blocked。
|
|
40
|
-
2. 读取 `workspace.json`,校验 `path_base` 为 `project-root`,所有 roots 使用 POSIX 相对路径。
|
|
41
|
-
3. 读取目标 workflow 的 `INDEX.md`,解析运行时根声明:
|
|
42
|
-
- 查找 `## 运行时根` 或类似标题下的 `<Path>{roots.X}/path/</Path>` 标签。
|
|
43
|
-
- `{roots.X}` 解析为 `workspace.roots[X]`,拼接 `/path/` 得到完整路径。
|
|
44
|
-
- `workflow` 根必须等于 `<project_root>/workflows/<workflow>`,`state` 根必须等于 `<project_root>/.speculo/<workflow>`。
|
|
45
|
-
4. 读取 `INDEX.md` 的持久化约定表,提取所有声明的路径:
|
|
46
|
-
- 表通常包含名称、路径(`<Path>...</Path>` 格式)、说明三列。
|
|
47
|
-
- 识别操作型路径:`status.json`、`changes/`、`archive/`。
|
|
48
|
-
- 识别知识型 store:`adr/`、`context/` 及任何标注为"永久"的目录(其内容在 change 完成后提升至此)。
|
|
49
|
-
- 每个路径解析为完整的项目相对路径。
|
|
50
|
-
5. 派生固定路径:`changes_root = state_root/changes`、`archive_root = state_root/archive`;`commands_root` 从公共 `<Path>{roots.state}/commands</Path>` 解析,不放进 workflow 私有 state root。
|
|
51
|
-
6. 读取 `<Path>{roots.config}</Path>`(若存在);不存在时静默降级为默认值(`language: "en"`、`confirm_before_external_write: true`)。
|
|
52
|
-
7. 对每个已解析路径执行真实路径包含检查;符号链接逃逸或不存在的静态引用阻塞。
|
|
53
|
-
8. 读取 `status.json`;扫描 changes 时校验 change 名称格式 `^\d{4}-\d{2}-\d{2}-[a-z0-9]+(-[a-z0-9]+)*$`,无日期前缀的历史 change 标注遗留但不阻塞。
|
|
54
|
-
|
|
55
|
-
### Step 1:扫描知识 stores(仅 `generic`)
|
|
56
|
-
|
|
57
|
-
1. 从 `INDEX.md` 持久化约定表中提取所有知识型 store(名称含"永久"或在 `adr/`、`context/` 等公认目录下)。
|
|
58
|
-
2. 验证 store 路径在 state 根下真实存在。若不存在:
|
|
59
|
-
- `adr/` 和 `context/` 目录首次写入时自动创建(lazy)。
|
|
60
|
-
- 其他非标准 store 标注为 `missing` 并跳过写入,仍可审计。
|
|
61
|
-
3. 映射 store 到规范目标:
|
|
62
|
-
- `adr/` — 架构决策记录目录,每个决策一个 `NNNN-slug.md` 文件。
|
|
63
|
-
- `context/` — 领域词汇表目录,存放提升后的术语定义文件。
|
|
64
|
-
- 若 INDEX.md 声明了其他知识 store,纳入合并范围。
|
|
65
|
-
4. 若未声明任何知识 store,合并阶段跳过(仅归档+基本清理)。
|
|
66
|
-
|
|
67
|
-
### Step 2:扫描已完成 changes
|
|
68
|
-
|
|
69
|
-
1. 枚举 `changes_root/` 下所有目录,读取各自的 `.status.json`。
|
|
70
|
-
2. 筛选 `change_status: completed` 的 change。
|
|
71
|
-
3. 对每个候选 change 收集 `.status.json`,以及实际存在的 source、triage、diagnosis、Spec、Tickets Map、Goal Plan、Evidence、reviews、prototypes、questionnaires、ADR、LOG、CONTEXT 和 workflow 自定义产物;不存在的可选项静默跳过。
|
|
72
|
-
4. `archive-single` 模式用户选择一个;`archive-batch` 全选所有 completed。
|
|
73
|
-
|
|
74
|
-
### Step 3:生成归档计划
|
|
75
|
-
|
|
76
|
-
读取 `references/archive-rules.md`,执行:
|
|
77
|
-
|
|
78
|
-
1. 对每个候选 change 执行共同预检:名称格式、`.status.json` 可解析、源存在、目标不存在、状态与 `status.json` 一致。
|
|
79
|
-
2. 生成 `changes_root/<change>` → `archive_root/<YYYY-MM>/<change>` 映射(YYYY-MM 从 change 名称提取)。
|
|
80
|
-
3. **批量原子性**:所有预检通过 → ready;任一失败 → 整批 blocked,报告具体阻塞原因。
|
|
81
|
-
4. 生成计划表格(使用 `assets/archive-plan-template.md` 格式)。
|
|
82
|
-
|
|
83
|
-
### Step 4:生成知识合并计划(仅 `generic`)
|
|
84
|
-
|
|
85
|
-
读取 `references/consolidation-rules.md` 和 `references/knowledge-graduation.md`,执行:
|
|
86
|
-
|
|
87
|
-
1. 对每个 change 的知识产物分类,应用毕业标准:
|
|
88
|
-
- **稳定机制**?→ 提取;**重复教训**(>1 change 涉及)?→ 提取;**接手者必知**?→ 提取
|
|
89
|
-
- 否则 → `ephemeral`(留在归档 change,不提取)
|
|
90
|
-
2. 对通过毕业标准的知识,映射目标 store:
|
|
91
|
-
- 架构决策 → `adr/<NNNN>-<slug>.md`(自动分配序号)
|
|
92
|
-
- 领域术语 → `context/` 目录(合并到现有术语文件或创建新条目)
|
|
93
|
-
- 如有 INDEX.md 声明的其他知识 store,按类型映射
|
|
94
|
-
3. 对每个目标检查冲突:重复术语、已存在同主题 ADR、矛盾规则。
|
|
95
|
-
4. 对冲突项标记 `needs-confirmation`,提供双方版本和建议。
|
|
96
|
-
5. 生成合并计划表格(使用 `assets/consolidation-plan-template.md` 格式)。
|
|
97
|
-
|
|
98
|
-
### Step 5:生成清理候选清单(仅 `generic`)
|
|
99
|
-
|
|
100
|
-
读取 `references/cleanup-rules.md`,执行:
|
|
101
|
-
|
|
102
|
-
1. 扫描所有 `INDEX.md` 持久化约定表中声明且真实存在的知识 stores。
|
|
103
|
-
2. 生成候选并分类:
|
|
104
|
-
- `delete`:被取代 ADR(>30 天无引用)、空文件(>60 天)、无引用孤立术语、重复副本
|
|
105
|
-
- `merge`:相似 lessons、多处复制的规则
|
|
106
|
-
- `rewrite`:格式不规范、含相对时间的条目
|
|
107
|
-
- `keep`:仍被引用、创建不足 30 天的新 ADR
|
|
108
|
-
- `needs-confirmation`:RULES 修改、术语冲突、ADR/context 改写、非标准 store 修改
|
|
109
|
-
3. 交叉验证:确认标记为 delete 的候选无 active change 或代码引用。
|
|
110
|
-
4. 扫描反模式(历史叙事占位、多版本自称现役、会话残留)。
|
|
111
|
-
5. 生成清理候选表格(使用 `assets/cleanup-candidate-template.md` 格式)。
|
|
112
|
-
|
|
113
|
-
### Step 6:呈现两阶段报告(dry-run 默认)
|
|
114
|
-
|
|
115
|
-
1. 组合三部分计划为一个完整报告:
|
|
116
|
-
- **阶段一**:归档移动 + 知识合并写入
|
|
117
|
-
- **阶段二**:清理候选
|
|
118
|
-
- `mechanical-only` 只展示归档移动和状态变化,并注明知识动作由调用方策略拥有
|
|
119
|
-
2. 报告内容:每项含来源、目标、动作、理由、风险等级。
|
|
120
|
-
3. 显式标注所有破坏性动作(移动、删除、改写)。
|
|
121
|
-
4. 报告摘要:待归档 change 数、待合并知识项数、待清理候选数、需确认项数。
|
|
122
|
-
5. 呈现给用户并显式声明:**"未修改任何文件。此为 dry-run 计划,请确认后执行。"**
|
|
123
|
-
6. dry-run 到此完成;调用方负责将报告写入 `commands_root/archive-and-consolidate/<YYYY-MM-DD>-<scope>-<topic>[-NN].md`(`<scope>` 为目标 workflow 名,`<topic>` 为 change 名或 `batch`)。
|
|
124
|
-
|
|
125
|
-
### Step 7:执行已确认动作
|
|
126
|
-
|
|
127
|
-
**仅在 mode=`confirmed` 且用户显式批准后执行:**
|
|
128
|
-
|
|
129
|
-
1. **重新验证**:路径包含检查、预检重跑(确认计划生成后无新 change 插入);`generic` 额外重验 store 存在性。
|
|
130
|
-
2. **执行顺序**:
|
|
131
|
-
a. **归档移动**(原子批处理):创建月目录 → 移动 change 目录 → 按调用方 workflow 的状态 schema 更新归档 `.status.json` → 从全局 `status.json` 的 `active` 移除对应条目,将 change 名称去重追加到 `archived`。不得写入调用方 schema 未声明的 SpecDev 专属字段
|
|
132
|
-
b. **知识合并写入**(仅 `generic`):创建 lazy stores(如 `adr/`、`context/` 不存在则创建)→ 写入新 ADR → 合并术语到 `context/` → 标记 superseded ADR
|
|
133
|
-
c. **清理**(仅 `generic`):删除已批准文件 → 合并已批准内容 → 改写已批准条目
|
|
134
|
-
3. 任一步骤失败:报告已完成/失败清单,停止,不猜测成功。
|
|
135
|
-
|
|
136
|
-
### Step 8:重新验证所有状态变更
|
|
137
|
-
|
|
138
|
-
1. 重读源路径:归档 change 必须不存在于 `changes_root/`。
|
|
139
|
-
2. 重读目标路径:归档 change 完整存在于 `archive_root/<YYYY-MM>/`;`generic` 同时验证知识 store 内容正确。
|
|
140
|
-
3. 重读 `status.json`:`active` 数组不包含已归档 change,`archived` 数组已追加其名称,二者没有重叠。
|
|
141
|
-
4. 重读归档 `.status.json`:按调用方 workflow schema 验证归档终态和 archive path;只有 schema 声明 `archived` 布尔字段时才要求 `archived: true`。
|
|
142
|
-
5. `generic` 对照知识 stores:新内容存在,无不期望的修改;`mechanical-only` 验证知识路径未被本 Skill 修改。
|
|
143
|
-
6. 任一不一致 → `blocked`,报告具体差异;全部通过 → `verified`。
|
|
144
|
-
7. 验证结果作为补遗追加到原 dry-run 报告。
|
|
145
|
-
|
|
146
|
-
## 输出
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
{
|
|
150
|
-
mode: "dry-run" | "executed",
|
|
151
|
-
scope: "archive-single" | "archive-batch",
|
|
152
|
-
knowledge_policy: "generic" | "mechanical-only",
|
|
153
|
-
path_context: { project_root, workflow_root, state_root, changes_root, archive_root, commands_root },
|
|
154
|
-
knowledge_stores: [{ name, path, exists }],
|
|
155
|
-
archive_plan: [{ source, target, status: "ready" | "blocked" | "moved" | "failed", notes }],
|
|
156
|
-
consolidation_plan: [{ source_change, target_store, action: "create" | "merge" | "append", content_summary, graduation_criterion, status }],
|
|
157
|
-
cleanup_candidates: [{ file_path, classification: "delete" | "merge" | "rewrite" | "keep" | "needs-confirmation", rationale, risk }],
|
|
158
|
-
conflicts_needing_confirmation: [{ item, options, recommendation }],
|
|
159
|
-
verification: { re_read_passed: boolean, inconsistencies: [], verdict: "verified" | "blocked" }
|
|
160
|
-
}
|
|
161
|
-
```
|
|
11
|
+
This file is the routing entry. Read [`references/entry-procedure.md`](references/entry-procedure.md) only after this skill is selected. Read a named reference there only for the active branch.
|
|
162
12
|
|
|
163
|
-
##
|
|
13
|
+
## Scope
|
|
164
14
|
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
- 未确认或 mode=`dry-run` 时无文件系统修改。
|
|
169
|
-
- 执行后重读验证通过或不一致已记录。
|
|
170
|
-
- 本 skill 未自行选择报告路径或自行持久化。
|
|
15
|
+
- Trigger: Archive and consolidate completed workflow changes and knowledge; use only for an explicitly selected archive/consolidation or cleanup review.
|
|
16
|
+
- Output and write owner remain those declared by the entry procedure and the owning command/workflow.
|
|
17
|
+
- Do not infer missing scope, credentials, target, or authorization.
|
|
171
18
|
|
|
172
|
-
##
|
|
19
|
+
## Stop
|
|
173
20
|
|
|
174
|
-
-
|
|
175
|
-
- `references/consolidation-rules.md`:构建合并计划(Step 4)或写入知识 stores(Step 7)时读取。
|
|
176
|
-
- `references/knowledge-graduation.md`:判定知识是否值得提取(Step 4)时读取。
|
|
177
|
-
- `references/cleanup-rules.md`:生成清理候选(Step 5)或执行清理(Step 7)时读取。
|
|
178
|
-
- `assets/archive-plan-template.md`:生成归档计划报告时读取。
|
|
179
|
-
- `assets/consolidation-plan-template.md`:生成合并计划报告时读取。
|
|
180
|
-
- `assets/cleanup-candidate-template.md`:生成清理候选报告时读取。
|
|
21
|
+
Stop before side effects when the required input, owner, reference, confirmation, schema, or recovery evidence is missing; report the exact blocker and preserve any dry-run evidence.
|