@namewta/speculo 0.1.21 → 0.2.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.
- package/README.md +68 -78
- package/dist/src/cli.js +57 -34
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +1 -3
- package/dist/src/index.js +128 -168
- package/dist/src/index.js.map +1 -1
- package/dist/src/migrate.d.ts +38 -0
- package/dist/src/migrate.js +646 -0
- package/dist/src/migrate.js.map +1 -0
- package/dist/src/workflows.d.ts +7 -37
- package/dist/src/workflows.js +49 -123
- package/dist/src/workflows.js.map +1 -1
- package/package.json +6 -4
- package/template/.speculo/README.md +20 -0
- package/template/.speculo/workspace.json +12 -0
- package/template/commands/docs-sync.md +28 -0
- package/template/commands/finalize.md +37 -0
- package/template/commands/knowledge-prune.md +20 -0
- package/template/commands/retro.md +15 -8
- package/template/commands/status.md +8 -51
- package/template/skills/agents-md-builder/SKILL.md +14 -101
- package/template/skills/change-lifecycle/SKILL.md +25 -0
- package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-summary-template.md +2 -2
- package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-verification-template.md +1 -1
- package/template/skills/change-lifecycle/references/completion-gate.md +19 -0
- package/template/skills/change-lifecycle/references/finalize-archive.md +32 -0
- package/template/skills/docs-sync/SKILL.md +22 -0
- package/template/skills/docs-sync/assets/report-template.md +45 -0
- package/template/skills/docs-sync/assets/state-template.json +20 -0
- package/template/skills/docs-sync/assets/workflow-scope-template.json +9 -0
- package/template/skills/docs-sync/references/agents-contract.md +43 -0
- package/template/skills/docs-sync/references/changelog-contract.md +39 -0
- package/template/skills/docs-sync/references/document-lifecycle-contract.md +38 -0
- package/template/skills/docs-sync/references/git-state-contract.md +67 -0
- package/template/skills/docs-sync/references/readme-contract.md +44 -0
- package/template/skills/docs-sync/references/workflow-scope-contract.md +50 -0
- package/template/skills/github-npm-ops/SKILL.md +14 -39
- package/template/skills/github-npm-ops/references/failure-recovery.md +1 -1
- package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
- package/template/skills/github-npm-ops/references/release-notes-injection.md +1 -1
- package/template/skills/github-npm-ops/references/release-pipeline.md +13 -13
- package/template/skills/github-npm-ops/references/version-bump-flow.md +3 -3
- package/template/skills/knowledge-prune/SKILL.md +29 -0
- package/template/skills/knowledge-prune/references/audit-rules.md +24 -0
- package/template/skills/runtime-context/SKILL.md +43 -0
- package/template/skills/runtime-context/references/path-resolution.md +32 -0
- package/template/skills/speculo-retro/SKILL.md +13 -37
- package/template/skills/speculo-retro/references/friction-taxonomy.md +3 -3
- package/template/skills/speculo-retro/references/issue-drafting-sop.md +3 -3
- package/template/skills/worktree-isolation/SKILL.md +10 -46
- package/template/skills/worktree-isolation/references/audit-branch-tree.md +2 -2
- package/template/skills/worktree-isolation/references/create-worktree.md +6 -6
- package/template/skills/worktree-isolation/references/merge-and-cleanup.md +5 -5
- package/template/vendor/README.md +11 -10
- package/template/vendor/matt-pocock/README.md +41 -0
- package/template/vendor/matt-pocock/engineering/README.md +28 -0
- package/template/vendor/matt-pocock/engineering/ask-matt/SKILL.md +76 -0
- package/template/vendor/matt-pocock/engineering/code-review/SKILL.md +89 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/DEEPENING.md +37 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
- package/template/vendor/matt-pocock/engineering/codebase-design/SKILL.md +114 -0
- package/template/vendor/matt-pocock/engineering/diagnosing-bugs/SKILL.md +134 -0
- package/template/vendor/matt-pocock/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/ADR-FORMAT.md +47 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/CONTEXT-FORMAT.md +60 -0
- package/template/vendor/matt-pocock/engineering/domain-modeling/SKILL.md +74 -0
- package/template/vendor/matt-pocock/engineering/grill-with-docs/SKILL.md +7 -0
- package/template/vendor/matt-pocock/engineering/implement/SKILL.md +15 -0
- package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
- package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/SKILL.md +66 -0
- package/template/vendor/matt-pocock/engineering/prototype/LOGIC.md +79 -0
- package/template/vendor/matt-pocock/engineering/prototype/SKILL.md +30 -0
- package/template/vendor/matt-pocock/engineering/prototype/UI.md +112 -0
- package/template/vendor/matt-pocock/engineering/research/SKILL.md +12 -0
- package/template/vendor/matt-pocock/engineering/resolving-merge-conflicts/SKILL.md +14 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/SKILL.md +127 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/domain.md +51 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
- package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
- package/template/vendor/matt-pocock/engineering/tdd/SKILL.md +36 -0
- package/template/vendor/matt-pocock/engineering/tdd/mocking.md +59 -0
- package/template/vendor/matt-pocock/engineering/tdd/tests.md +77 -0
- package/template/vendor/matt-pocock/engineering/to-spec/SKILL.md +75 -0
- package/template/vendor/matt-pocock/engineering/to-tickets/SKILL.md +113 -0
- package/template/vendor/matt-pocock/engineering/triage/AGENT-BRIEF.md +204 -0
- package/template/vendor/matt-pocock/engineering/triage/OUT-OF-SCOPE.md +104 -0
- package/template/vendor/matt-pocock/engineering/triage/SKILL.md +112 -0
- package/template/vendor/matt-pocock/engineering/wayfinder/SKILL.md +127 -0
- package/template/vendor/matt-pocock/in-progress/README.md +10 -0
- package/template/vendor/matt-pocock/in-progress/claude-handoff/SKILL.md +18 -0
- package/template/vendor/matt-pocock/in-progress/loop-me/SKILL.md +32 -0
- package/template/vendor/matt-pocock/in-progress/wizard/SKILL.md +45 -0
- package/template/vendor/matt-pocock/in-progress/wizard/template.sh +211 -0
- package/template/vendor/matt-pocock/in-progress/writing-beats/SKILL.md +67 -0
- package/template/vendor/matt-pocock/in-progress/writing-fragments/SKILL.md +78 -0
- package/template/vendor/matt-pocock/in-progress/writing-shape/SKILL.md +79 -0
- package/template/vendor/matt-pocock/productivity/README.md +18 -0
- package/template/vendor/matt-pocock/productivity/grill-me/SKILL.md +7 -0
- package/template/vendor/matt-pocock/productivity/grilling/SKILL.md +12 -0
- package/template/vendor/matt-pocock/productivity/handoff/SKILL.md +16 -0
- package/template/vendor/matt-pocock/productivity/teach/GLOSSARY-FORMAT.md +35 -0
- package/template/vendor/matt-pocock/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
- package/template/vendor/matt-pocock/productivity/teach/MISSION-FORMAT.md +31 -0
- package/template/vendor/matt-pocock/productivity/teach/RESOURCES-FORMAT.md +32 -0
- package/template/vendor/matt-pocock/productivity/teach/SKILL.md +140 -0
- package/template/vendor/matt-pocock/productivity/writing-great-skills/GLOSSARY.md +201 -0
- package/template/vendor/matt-pocock/productivity/writing-great-skills/SKILL.md +83 -0
- package/template/workflows/matt-pocock/WORKFLOW.md +145 -0
- package/template/workflows/matt-pocock/_state/status.json +5 -0
- package/template/workflows/matt-pocock/routes/architecture.md +24 -0
- package/template/workflows/matt-pocock/routes/diagnose.md +22 -0
- package/template/workflows/matt-pocock/routes/experimental.md +18 -0
- package/template/workflows/matt-pocock/routes/idea-to-delivery.md +63 -0
- package/template/workflows/matt-pocock/routes/merge-conflicts.md +19 -0
- package/template/workflows/matt-pocock/routes/productivity.md +25 -0
- package/template/workflows/matt-pocock/routes/research-prototype.md +20 -0
- package/template/workflows/matt-pocock/routes/review.md +19 -0
- package/template/workflows/matt-pocock/routes/setup.md +42 -0
- package/template/workflows/matt-pocock/routes/triage.md +25 -0
- package/template/workflows/matt-pocock/routes/wayfinder.md +27 -0
- package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +74 -59
- package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +5 -5
- package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +2 -2
- package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +4 -4
- package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -3
- package/template/workflows/person/WORKFLOW.md +68 -0
- package/template/workflows/person/_state/.config/LESSONS.md +3 -0
- package/template/workflows/person/_state/.config/RULES.md +3 -0
- package/template/workflows/person/_state/changes/.gitkeep +1 -0
- package/template/workflows/person/_state/status.json +5 -0
- package/template/.speculo/.config/LESSONS.md +0 -9
- package/template/.speculo/.config/RULES.md +0 -11
- package/template/.speculo/AGENTS.md +0 -30
- package/template/.speculo/archive/AGENTS.md +0 -28
- package/template/.speculo/archive/dev/.gitkeep +0 -0
- package/template/.speculo/archive/person/.gitkeep +0 -0
- package/template/.speculo/dev/.gitkeep +0 -0
- package/template/.speculo/dev/docs-sync-state.json +0 -14
- package/template/.speculo/dev-status.json +0 -3
- package/template/.speculo/doc-status.json +0 -3
- package/template/.speculo/person/.gitkeep +0 -0
- package/template/.speculo/person-status.json +0 -1
- package/template/commands/archive.md +0 -68
- package/template/commands/caveman.md +0 -50
- package/template/commands/config-prune.md +0 -59
- package/template/commands/grill-me.md +0 -48
- package/template/commands/handoff.md +0 -59
- package/template/commands/scaffold-exercises.md +0 -56
- package/template/commands/write-a-skill.md +0 -52
- package/template/skills/caveman/SKILL.md +0 -38
- package/template/skills/caveman/references/compression-rules.md +0 -102
- package/template/skills/config-prune/SKILL.md +0 -44
- package/template/skills/config-prune/references/audit-rules.md +0 -38
- package/template/skills/grill-me/SKILL.md +0 -40
- package/template/skills/handoff/SKILL.md +0 -73
- package/template/skills/scaffold-exercises/SKILL.md +0 -41
- package/template/skills/scaffold-exercises/references/exercise-structure.md +0 -85
- package/template/skills/scaffold-exercises/references/lint-and-git.md +0 -54
- package/template/skills/speculo-write/SKILL.md +0 -56
- package/template/skills/speculo-write/references/asset-selection-sop.md +0 -67
- package/template/skills/speculo-write/references/authoring-quality-levers.md +0 -61
- package/template/skills/speculo-write/references/command-authoring-sop.md +0 -98
- package/template/skills/speculo-write/references/migration-sop.md +0 -101
- package/template/skills/speculo-write/references/persistence-contract-sop.md +0 -271
- package/template/skills/speculo-write/references/skill-authoring-sop.md +0 -212
- package/template/skills/speculo-write/references/validation-checklist.md +0 -85
- package/template/skills/speculo-write/references/workflow-authoring-sop.md +0 -165
- package/template/vendor/codebase-design/DEEPENING.md +0 -37
- package/template/vendor/codebase-design/DESIGN-IT-TWICE.md +0 -44
- package/template/vendor/codebase-design/SKILL.md +0 -114
- package/template/vendor/officecli/SKILL.md +0 -415
- package/template/vendor/resolving-merge-conflicts/SKILL.md +0 -14
- package/template/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +0 -107
- package/template/workflows/dev/01-grill-with-docs/grill-context-scan.md +0 -30
- package/template/workflows/dev/01-grill-with-docs/grill-decision.md +0 -38
- package/template/workflows/dev/02-prd/02-prd.md +0 -70
- package/template/workflows/dev/02-prd/prd-synthesis.md +0 -30
- package/template/workflows/dev/02-prd/prd-zoom-out.md +0 -29
- package/template/workflows/dev/03-tdd/03-tdd.md +0 -55
- package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +0 -34
- package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +0 -34
- package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +0 -34
- package/template/workflows/dev/03-tdd/mocking.md +0 -43
- package/template/workflows/dev/03-tdd/refactoring.md +0 -10
- package/template/workflows/dev/03-tdd/tdd-finish.md +0 -34
- package/template/workflows/dev/03-tdd/tdd-loop.md +0 -36
- package/template/workflows/dev/03-tdd/tdd-plan.md +0 -37
- package/template/workflows/dev/03-tdd/tests.md +0 -61
- package/template/workflows/dev/04-finalize/04-finalize.md +0 -57
- package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +0 -35
- package/template/workflows/dev/04-finalize/completion-gate.md +0 -41
- package/template/workflows/dev/04-finalize/finalize-archive.md +0 -55
- package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +0 -60
- package/template/workflows/dev/A-improve-architecture/HTML-REPORT.md +0 -123
- package/template/workflows/dev/A-improve-architecture/architecture-grill.md +0 -30
- package/template/workflows/dev/A-improve-architecture/architecture-review.md +0 -29
- package/template/workflows/dev/A-improve-architecture/architecture-scan.md +0 -37
- package/template/workflows/dev/AGENTS.md +0 -95
- package/template/workflows/dev/D-docs-sync/D-docs-sync.md +0 -140
- package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +0 -34
- package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +0 -34
- package/template/workflows/dev/D-docs-sync/agents-contract.md +0 -95
- package/template/workflows/dev/D-docs-sync/changelog-contract.md +0 -155
- package/template/workflows/dev/D-docs-sync/config-contract.md +0 -75
- package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +0 -86
- package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +0 -37
- package/template/workflows/dev/D-docs-sync/docs-sync-state.md +0 -47
- package/template/workflows/dev/D-docs-sync/docs-sync-update.md +0 -44
- package/template/workflows/dev/D-docs-sync/knowledge-extract.md +0 -66
- package/template/workflows/dev/D-docs-sync/readme-contract.md +0 -124
- package/template/workflows/dev/D-docs-sync/state-json-schema.md +0 -172
- package/template/workflows/dev/H-diagnose/H-diagnose.md +0 -108
- package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +0 -33
- package/template/workflows/dev/H-diagnose/agents/fix-agent.md +0 -34
- package/template/workflows/dev/H-diagnose/diagnose-fix.md +0 -34
- package/template/workflows/dev/H-diagnose/diagnose-guide.md +0 -144
- package/template/workflows/dev/H-diagnose/diagnose-loop.md +0 -41
- package/template/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +0 -41
- package/template/workflows/dev/I-to-issues/I-to-issues.md +0 -79
- package/template/workflows/dev/I-to-issues/issues-slices.md +0 -211
- package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +0 -74
- package/template/workflows/dev/M-domain-modeling/CONTEXT-FORMAT.md +0 -67
- package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +0 -102
- package/template/workflows/dev/R-review/R-review.md +0 -75
- package/template/workflows/dev/R-review/agents/engineering-review-agent.md +0 -33
- package/template/workflows/dev/R-review/agents/spec-review-agent.md +0 -34
- package/template/workflows/dev/R-review/agents/standards-review-agent.md +0 -34
- package/template/workflows/dev/R-review/code-quality-checklist.md +0 -118
- package/template/workflows/dev/R-review/removal-checklist.md +0 -53
- package/template/workflows/dev/R-review/review-axes.md +0 -61
- package/template/workflows/dev/R-review/review-setup.md +0 -111
- package/template/workflows/dev/R-review/review-verdict.md +0 -43
- package/template/workflows/dev/R-review/security-checklist.md +0 -126
- package/template/workflows/dev/R-review/solid-checklist.md +0 -73
- package/template/workflows/dev/_templates/diagnosis-template.md +0 -20
- package/template/workflows/dev/_templates/docs-sync-report-template.md +0 -45
- package/template/workflows/dev/_templates/docs-sync-state-template.json +0 -14
- package/template/workflows/dev/_templates/domain-model-log-template.md +0 -20
- package/template/workflows/dev/_templates/grill-context-map-template.md +0 -20
- package/template/workflows/dev/_templates/grill-decision-log-template.md +0 -20
- package/template/workflows/dev/_templates/issues-slices-template.md +0 -106
- package/template/workflows/dev/_templates/overview-template.md +0 -19
- package/template/workflows/dev/_templates/prd-template.md +0 -26
- package/template/workflows/dev/_templates/regression-template.md +0 -20
- package/template/workflows/dev/_templates/review-report-template.md +0 -30
- package/template/workflows/dev/_templates/review-sources-template.md +0 -33
- package/template/workflows/dev/_templates/review-verdict-template.md +0 -33
- package/template/workflows/dev/_templates/tdd-log-template.md +0 -23
- package/template/workflows/dev/_templates/tdd-plan-template.md +0 -35
- package/template/workflows/dev/_templates/tdd-verification-template.md +0 -26
- package/template/workflows/doc/AGENTS.md +0 -80
- package/template/workflows/doc/B-writing-beats/B-writing-beats.md +0 -79
- package/template/workflows/doc/B-writing-beats/writing-beats-append.md +0 -31
- package/template/workflows/doc/B-writing-beats/writing-beats-options.md +0 -29
- package/template/workflows/doc/E-edit-article/E-edit-article.md +0 -79
- package/template/workflows/doc/E-edit-article/edit-article-plan.md +0 -30
- package/template/workflows/doc/E-edit-article/edit-article-rewrite.md +0 -31
- package/template/workflows/doc/F-writing-fragments/F-writing-fragments.md +0 -80
- package/template/workflows/doc/F-writing-fragments/writing-fragments-interview.md +0 -32
- package/template/workflows/doc/F-writing-fragments/writing-fragments-log.md +0 -29
- package/template/workflows/doc/S-writing-shape/S-writing-shape.md +0 -81
- package/template/workflows/doc/S-writing-shape/writing-shape-block.md +0 -32
- package/template/workflows/doc/S-writing-shape/writing-shape-opening.md +0 -27
- package/template/workflows/doc/T-teach/T-teach.md +0 -64
- package/template/workflows/doc/T-teach/teach-lesson-wrap.md +0 -63
- package/template/workflows/doc/T-teach/teach-lesson.md +0 -53
- package/template/workflows/doc/T-teach/teach-mission.md +0 -33
- package/template/workflows/doc/T-teach/teach-resources.md +0 -36
- package/template/workflows/doc/_templates/edit-article-plan-template.md +0 -25
- package/template/workflows/doc/_templates/edit-article-template.md +0 -7
- package/template/workflows/doc/_templates/teach-glossary-template.md +0 -26
- package/template/workflows/doc/_templates/teach-learning-record-template.md +0 -38
- package/template/workflows/doc/_templates/teach-lesson-html-template.md +0 -24
- package/template/workflows/doc/_templates/teach-mission-template.md +0 -19
- package/template/workflows/doc/_templates/teach-resources-template.md +0 -18
- package/template/workflows/doc/_templates/writing-article-template.md +0 -7
- package/template/workflows/doc/_templates/writing-beat-options-template.md +0 -21
- package/template/workflows/doc/_templates/writing-fragments-template.md +0 -7
- package/template/workflows/doc/_templates/writing-interview-log-template.md +0 -21
- package/template/workflows/doc/_templates/writing-shape-log-template.md +0 -25
- package/template/workflows/person/AGENTS.md +0 -72
- /package/template/{.speculo/.config/adr → workflows/matt-pocock/_state/archive}/.gitkeep +0 -0
- /package/template/{.speculo/.config/context → workflows/matt-pocock/_state/changes}/.gitkeep +0 -0
- /package/template/{.speculo/archive/doc → workflows/person/_state/.config/context}/.gitkeep +0 -0
- /package/template/{.speculo/doc → workflows/person/_state/archive}/.gitkeep +0 -0
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/prd
|
|
3
|
-
category: dev
|
|
4
|
-
name: PRD
|
|
5
|
-
description: 通过 zoom-out 全景理解与 to-prd 综合产出开发 PRD
|
|
6
|
-
keywords: [prd, zoom-out, 需求, 计划]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# PRD 工作流执行指引
|
|
10
|
-
|
|
11
|
-
本工作流用于把已知上下文综合为当前 Speculo change 内的 overview 和 PRD。zoom-out 全景理解与 PRD 综合能力已内置在本 workflow 目录中。
|
|
12
|
-
|
|
13
|
-
> **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-user-auth`)。产物写入 `speculo/.speculo/dev/<change>/`。
|
|
14
|
-
|
|
15
|
-
## 内置指引
|
|
16
|
-
|
|
17
|
-
### Zoom Out
|
|
18
|
-
|
|
19
|
-
当 agent 对某段代码或业务区域不熟悉,需要先建立全局视角再继续 PRD、设计、诊断或实现时使用。用项目领域术语表给出相关模块、调用者、关键边界、上下游依赖和需要进一步确认的问题。
|
|
20
|
-
|
|
21
|
-
### PRD Synthesis
|
|
22
|
-
|
|
23
|
-
当 dev workflow 已完成足够上下文探索,需要把当前对话和代码理解沉淀成 PRD 时使用。不要重复访谈已明确的信息;综合当前对话、代码库事实、领域术语、ADR、模块候选和测试目标。
|
|
24
|
-
|
|
25
|
-
PRD 综合统一使用 `speculo/.speculo/.config/context/CONTEXT.md` 的通用语言;若 PRD 引入或锐化了 CONTEXT 中尚不存在的领域术语,按横向工作流 `../M-domain-modeling/M-domain-modeling.md` 主动沉淀(用户确认后写入 `.config/context/`),不要让术语只活在 PRD 里。
|
|
26
|
-
|
|
27
|
-
PRD 只写入 `speculo/.speculo/dev/<change>/prd.md`,overview 只写入 `speculo/.speculo/dev/<change>/overview.md`。不写项目根下的任意规划文档,不默认发布外部 issue。只有 tracker 已配置且用户明确要求时,才进入外部发布动作。
|
|
28
|
-
|
|
29
|
-
(`<change>` 格式:`YYYY-MM-DD-<kebab-name>`)
|
|
30
|
-
|
|
31
|
-
## 阶段
|
|
32
|
-
|
|
33
|
-
### 1. Zoom Out — 全景理解
|
|
34
|
-
- 规范:`prd-zoom-out.md`
|
|
35
|
-
- 模板:`../_templates/overview-template.md`
|
|
36
|
-
- 产物:`overview.md`
|
|
37
|
-
- 完成准则:
|
|
38
|
-
- 已说明相关模块、调用者、边界和未知点
|
|
39
|
-
- `overview.md` 无残留 `[TODO:]`
|
|
40
|
-
|
|
41
|
-
### 2. PRD Synthesis — PRD 综合
|
|
42
|
-
- 规范:`prd-synthesis.md`
|
|
43
|
-
- 模板:`../_templates/prd-template.md`
|
|
44
|
-
- 产物:`prd.md`
|
|
45
|
-
- 完成准则:
|
|
46
|
-
- PRD 包含问题、方案、用户故事、实现决策、测试决策、范围边界
|
|
47
|
-
- 已确认模块候选和测试目标
|
|
48
|
-
- `prd.md` 无残留 `[TODO:]`
|
|
49
|
-
|
|
50
|
-
## 依赖
|
|
51
|
-
|
|
52
|
-
- 软依赖:`../01-grill-with-docs/01-grill-with-docs.md`,scope: same-change
|
|
53
|
-
- 硬依赖:无
|
|
54
|
-
|
|
55
|
-
## 状态扩展字段
|
|
56
|
-
|
|
57
|
-
本工作流需在同 change 的 `.status.json` 追加:
|
|
58
|
-
|
|
59
|
-
- `dev_entry` (string) — 固定为 `dev/02`
|
|
60
|
-
- `embedded_guides` (array) — 包含 `zoom-out`、`to-prd`
|
|
61
|
-
- `prd_slug` (string) — PRD 短 slug
|
|
62
|
-
- `module_candidates` (array) — 候选模块或边界
|
|
63
|
-
- `test_targets` (array) — 用户确认的测试目标
|
|
64
|
-
- `issue_tracker_mode` (disabled | local-only | publish-requested | published) — issue tracker 使用状态
|
|
65
|
-
|
|
66
|
-
## 完成与状态更新
|
|
67
|
-
|
|
68
|
-
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
69
|
-
- 默认把 PRD 写入当前 change 的 `prd.md`;不默认写项目根下的任意规划文档。
|
|
70
|
-
- 本 workflow 完成后不自动完成 change;默认移交 `../I-to-issues/I-to-issues.md` 或 `../03-tdd/03-tdd.md`。
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# PRD Synthesis Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `speculo/.speculo/dev/<change>/overview.md`
|
|
6
|
-
- 可选的 `context-map.md`、`decision-log.md`、用户故事或 issue
|
|
7
|
-
- `02-prd.md` 中的 PRD Synthesis 内置指引
|
|
8
|
-
|
|
9
|
-
## 产物
|
|
10
|
-
|
|
11
|
-
- `speculo/.speculo/dev/<change>/prd.md`,由 `../_templates/prd-template.md` 填写
|
|
12
|
-
|
|
13
|
-
## 填写引导
|
|
14
|
-
|
|
15
|
-
1. 遵循 `02-prd.md` 的 PRD Synthesis 内置指引。
|
|
16
|
-
2. 综合已有上下文,不重复访谈已明确的信息。
|
|
17
|
-
3. 与用户确认模块候选和需要测试的行为。
|
|
18
|
-
4. 默认只生成本地 `prd.md`;只有 tracker 已配置且用户明确要求时才发布 issue。
|
|
19
|
-
5. PRD 中避免易过时的具体文件路径和代码片段,除非它们表达不可替代的决策。
|
|
20
|
-
|
|
21
|
-
## 边界
|
|
22
|
-
|
|
23
|
-
- 不进行 issue 切片;切片由 `../I-to-issues/I-to-issues.md` 负责。
|
|
24
|
-
- 不修改业务代码。
|
|
25
|
-
- 不把 change 标记为 completed。
|
|
26
|
-
|
|
27
|
-
## 完成准则
|
|
28
|
-
|
|
29
|
-
- `prd.md` 无残留 `[TODO:]`
|
|
30
|
-
- `test_targets`、`prd_slug`、`issue_tracker_mode` 已写入 `.status.json`
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# Zoom Out Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- 用户目标、已有 `context-map.md` 或 `decision-log.md`
|
|
6
|
-
- 相关代码区域、架构文档、ADR 和配置
|
|
7
|
-
- `02-prd.md` 中的 Zoom Out 内置指引
|
|
8
|
-
|
|
9
|
-
## 产物
|
|
10
|
-
|
|
11
|
-
- `speculo/.speculo/dev/<change>/overview.md`,由 `../_templates/overview-template.md` 填写
|
|
12
|
-
|
|
13
|
-
## 填写引导
|
|
14
|
-
|
|
15
|
-
1. 遵循 `02-prd.md` 的 Zoom Out 内置指引。
|
|
16
|
-
2. 用项目领域术语说明相关模块和调用者。
|
|
17
|
-
3. 标明现有行为、缺失能力、接口边界、上下游依赖和风险。
|
|
18
|
-
4. 输出服务于 PRD 综合的事实,不提前写实现步骤。
|
|
19
|
-
|
|
20
|
-
## 边界
|
|
21
|
-
|
|
22
|
-
- 不发布 issue。
|
|
23
|
-
- 不修改代码。
|
|
24
|
-
- 不创建 PRD;PRD 留到下一阶段。
|
|
25
|
-
|
|
26
|
-
## 完成准则
|
|
27
|
-
|
|
28
|
-
- `overview.md` 无残留 `[TODO:]`
|
|
29
|
-
- `.status.json` 已记录 `module_candidates`
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/tdd
|
|
3
|
-
category: dev
|
|
4
|
-
name: TDD Implementation
|
|
5
|
-
description: 按垂直切片执行红绿重构,实现功能或回归修复
|
|
6
|
-
keywords: [tdd, implement, red-green-refactor, 实现, 测试]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# TDD Implementation 工作流执行指引
|
|
10
|
-
|
|
11
|
-
本工作流用于把 PRD、issue、诊断结论或用户明确任务实现为经过验证的代码变更。TDD 细节见同目录 phase 文件;设计词汇统一引用 `../../../vendor/codebase-design/SKILL.md`。
|
|
12
|
-
|
|
13
|
-
> **产物目录:** `speculo/.speculo/dev/<change>/tdd/<phase-id>/`。`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。
|
|
14
|
-
|
|
15
|
-
## 阶段
|
|
16
|
-
|
|
17
|
-
| Phase | id | agent | 规范 | 模板 | 产物 |
|
|
18
|
-
|-------|-----|-------|------|------|------|
|
|
19
|
-
| 1. TDD Plan | `tdd-plan` | `agents/tdd-plan-agent.md` | `tdd-plan.md` | `../_templates/tdd-plan-template.md` | `tdd/<phase-id>/tdd-plan.md` |
|
|
20
|
-
| 2. Slice Loop | `slice-loop` | `agents/tdd-implement-agent.md` | `tdd-loop.md` | `../_templates/tdd-log-template.md` | `tdd/<phase-id>/implementation-log.md` |
|
|
21
|
-
| 3. Finish | `tdd-finish` | `agents/tdd-finish-agent.md` | `tdd-finish.md` | `../_templates/tdd-verification-template.md` | `tdd/<phase-id>/verification.md` |
|
|
22
|
-
|
|
23
|
-
### 1. TDD Plan — 行为与接口计划
|
|
24
|
-
- id:`tdd-plan`
|
|
25
|
-
- 完成准则:公共接口与测试优先级已确认;`tdd-plan.md` 无残留 `[TODO:]`
|
|
26
|
-
|
|
27
|
-
### 2. Slice Loop — 红绿重构循环
|
|
28
|
-
- id:`slice-loop`
|
|
29
|
-
- 完成准则:每切片有 RED/GREEN/REFACTOR 记录;`implementation-log.md` 无残留 `[TODO:]`
|
|
30
|
-
|
|
31
|
-
### 3. Finish — 验证与收尾
|
|
32
|
-
- id:`tdd-finish`
|
|
33
|
-
- 完成准则:验证已运行;slices 状态已翻转(若有);`verification.md` 无残留 `[TODO:]`
|
|
34
|
-
|
|
35
|
-
slices 消费契约、Git 基线、XML 阶段状态见 `tdd-plan.md` 与 `tdd-finish.md`。
|
|
36
|
-
|
|
37
|
-
## 依赖
|
|
38
|
-
|
|
39
|
-
- 软依赖:`../02-prd/02-prd.md` 或 `../I-to-issues/I-to-issues.md`,scope: same-change
|
|
40
|
-
- 硬依赖:无
|
|
41
|
-
|
|
42
|
-
## 状态扩展字段
|
|
43
|
-
|
|
44
|
-
- `dev_entry` (string) — 固定为 `dev/03`
|
|
45
|
-
- `tdd_phase_id` (string)
|
|
46
|
-
- `slice_source` (prd | issues | diagnosis | user-request)
|
|
47
|
-
- `red_green_refactor_cycles` (array)
|
|
48
|
-
- `verification_commands` (array)
|
|
49
|
-
- `implementation_status` (planned | in-progress | verified | blocked)
|
|
50
|
-
|
|
51
|
-
## 完成与状态更新
|
|
52
|
-
|
|
53
|
-
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
54
|
-
- Finish 验证通过后把 slices 中该阶段 `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
|
|
55
|
-
- 全部实现边界完成并验证后,移交 `../04-finalize/04-finalize.md` 或 `../R-review/R-review.md`;不得自行写入 `change_status: completed`。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/03-tdd/tdd-finish-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: TDD Finish Agent
|
|
5
|
-
description: 隔离执行 Finish phase:验证收尾与 slices 状态翻转
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
完成 TDD 收尾验证,产出 `verification.md`,并将 slices 中对应阶段标记为 `已实现`。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`tdd-finish`
|
|
16
|
-
- 上游产物:`tdd/<phase-id>/implementation-log.md`、`tdd/<phase-id>/tdd-plan.md`、`slices.md`(若存在)
|
|
17
|
-
- 模板:`../_templates/tdd-verification-template.md`
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 按 `../tdd-finish.md` 运行验证命令,记录完整输出。
|
|
22
|
-
- 运行 slices 验收切片;删除型切片须含残留扫描证据。
|
|
23
|
-
- 验证通过后把 `slices.md` 中 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(无 slices 则跳过)。
|
|
24
|
-
- 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/verification.md`。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`tdd/<phase-id>/verification.md`
|
|
29
|
-
- `.status.json`:更新 `current_phase: tdd-finish`、`verification_commands`、`implementation_status: verified`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 不越过本 phase;不把 slices 置为 `已验证`(属 `dev/04`)。
|
|
34
|
-
- 不写 `change_status`;完成后移交 `../../04-finalize/04-finalize.md` 或 `../../R-review/R-review.md`。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/03-tdd/tdd-implement-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: TDD Implement Agent
|
|
5
|
-
description: 隔离执行 Slice Loop phase:红绿重构循环与测试实现
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
在当前 change 的 `<phase-id>` 下执行红绿重构循环,产出 `implementation-log.md` 与对应代码变更。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`slice-loop`
|
|
16
|
-
- 上游产物:`tdd/<phase-id>/tdd-plan.md`、`slices.md`(若存在)
|
|
17
|
-
- 模板:`../_templates/tdd-log-template.md`
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 按 `../tdd-loop.md` 执行 RED → GREEN → REFACTOR 循环。
|
|
22
|
-
- 测试设计读 `../tests.md`;mock 边界读 `../mocking.md`;重构读 `../refactoring.md`。
|
|
23
|
-
- 守护 slices 契约:保留/不动清单、现场核对行号、横切铁律见 `../../I-to-issues/issues-slices.md`。
|
|
24
|
-
- 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/implementation-log.md`。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`tdd/<phase-id>/implementation-log.md`、对应源代码与测试
|
|
29
|
-
- `.status.json`:更新 `current_phase: slice-loop`、`red_green_refactor_cycles`、`implementation_status: in-progress`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 不越过本 phase;不执行 Finish 验证或 slices 状态翻转。
|
|
34
|
-
- 不写 `change_status`。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/03-tdd/tdd-plan-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: TDD Plan Agent
|
|
5
|
-
description: 隔离执行 TDD Plan phase:确认公共接口、行为与测试优先级
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
为当前 change 的单个 `<phase-id>` 产出 `tdd-plan.md`,不进入实现循环。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`tdd-plan`
|
|
16
|
-
- 上游产物:`slices.md`(若存在)、`prd.md` / `overview.md`、诊断结论或用户任务描述
|
|
17
|
-
- 模板:`../_templates/tdd-plan-template.md`
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 读取 `../03-tdd.md` 的 Git 基线要求,先记录分支与 dirty 状态。
|
|
22
|
-
- 按 `../tdd-plan.md` 填写行为与接口计划;slices 消费契约见 `../tdd-plan.md` 与 `../../I-to-issues/issues-slices.md`。
|
|
23
|
-
- 设计词汇引用 `../../../../vendor/codebase-design/SKILL.md`,不复制正文。
|
|
24
|
-
- 产物写入 `speculo/.speculo/dev/<change>/tdd/<phase-id>/tdd-plan.md`。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`tdd/<phase-id>/tdd-plan.md`
|
|
29
|
-
- `.status.json`:更新 `current_phase: tdd-plan`、`tdd_phase_id`、`implementation_status: planned`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 不越过本 phase;不写测试实现、不修改源代码。
|
|
34
|
-
- 不写 `change_status`;不执行 Slice Loop 或 Finish。
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Mock 边界与可 Mock 性
|
|
2
|
-
|
|
3
|
-
> **依赖类别**(进程内 / 本地可替换 / 端口与适配器 / 真正外部)与「在接缝处注入端口、生产用真实适配器、测试用内存或 mock 适配器」的判定,是设计词汇的一部分,见单一事实源 `../../../vendor/codebase-design/DEEPENING.md`。本文只覆盖**写测试时**的 mock 取舍与 SDK 风格接口。
|
|
4
|
-
|
|
5
|
-
## 只在系统边界处 mock
|
|
6
|
-
|
|
7
|
-
- 外部 API(支付、邮件等)
|
|
8
|
-
- 数据库(有时——优先考虑测试数据库 / 本地可替换实现)
|
|
9
|
-
- 时间 / 随机性
|
|
10
|
-
- 文件系统(有时)
|
|
11
|
-
|
|
12
|
-
不要 mock:
|
|
13
|
-
|
|
14
|
-
- 你自己的类 / 模块
|
|
15
|
-
- 内部协作者
|
|
16
|
-
- 任何你能控制的东西
|
|
17
|
-
|
|
18
|
-
> 依赖注入(接受依赖而非内部创建)是让边界可 mock 的前提;该原则见 `../../../vendor/codebase-design/SKILL.md`「为可测试性设计」,本文不复制。
|
|
19
|
-
|
|
20
|
-
## 优先 SDK 风格接口,而非通用 fetcher
|
|
21
|
-
|
|
22
|
-
为每个外部操作创建专用函数,而不是一个带条件逻辑的通用函数:
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
// 好:每个函数都可以独立 mock
|
|
26
|
-
const api = {
|
|
27
|
-
getUser: (id) => fetch(`/users/${id}`),
|
|
28
|
-
getOrders: (userId) => fetch(`/users/${userId}/orders`),
|
|
29
|
-
createOrder: (data) => fetch('/orders', { method: 'POST', body: data }),
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
// 坏:mock 时需要在内部写条件逻辑
|
|
33
|
-
const api = {
|
|
34
|
-
fetch: (endpoint, options) => fetch(endpoint, options),
|
|
35
|
-
};
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
SDK 方式意味着:
|
|
39
|
-
|
|
40
|
-
- 每个 mock 返回一种特定的数据结构
|
|
41
|
-
- 测试准备中不需要条件逻辑
|
|
42
|
-
- 更容易看出测试覆盖了哪些端点
|
|
43
|
-
- 每个端点都有类型安全
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
# Finish Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `implementation-log.md`
|
|
6
|
-
- 项目验证命令和变更 diff
|
|
7
|
-
- `03-tdd.md` 中的内置 TDD 指引和同目录 `refactoring.md`
|
|
8
|
-
|
|
9
|
-
## 产物
|
|
10
|
-
|
|
11
|
-
- `speculo/.speculo/dev/<change>/tdd/<phase-id>/verification.md`,由 `../_templates/tdd-verification-template.md` 填写
|
|
12
|
-
|
|
13
|
-
## 填写引导
|
|
14
|
-
|
|
15
|
-
1. 运行与变更相关的测试、类型检查、lint 或构建命令。
|
|
16
|
-
2. **运行本切片「验收切片」**:执行切片记录的验收命令/步骤;**删除型切片须做残留扫描**(`grep -rn "<符号>" <范围>` 应 0 命中),记录证据。
|
|
17
|
-
3. **核对「保留/不动」未被破坏**:确认实现未触碰切片冻结的常量 / 共享依赖 / 邻近功能。
|
|
18
|
-
4. 记录无法运行的命令和阻塞原因。
|
|
19
|
-
5. 搜索临时调试标记、一次性脚本和推测性实现。
|
|
20
|
-
6. 验证通过后,把 slices 中该阶段 `<phase id="<phase-id>">` 的 `status` 由 `未开始` 置为 `已实现`(契约见 `03-tdd.md`「phase 阶段状态(XML 契约)」;本工作流只做这一跳,`已验证` 由 `dev/04` 置入;无 slices 则跳过)。
|
|
21
|
-
7. 如有可沉淀经验,记录在 `verification.md` 的后续建议中;在用户允许或项目规则允许时追加到 `speculo/.speculo/.config/LESSONS.md`。
|
|
22
|
-
|
|
23
|
-
## 边界
|
|
24
|
-
|
|
25
|
-
- 不自动归档 change;归档由 `commands/archive.md` 负责。
|
|
26
|
-
- 不修改 `speculo/.speculo/.config/RULES.md` 或用户未明确授权的项目规则文档。
|
|
27
|
-
|
|
28
|
-
## 完成准则
|
|
29
|
-
|
|
30
|
-
- 本切片「验收切片」已运行通过(删除型切片含残留扫描 `grep` 0 命中),并在 `verification.md` 留证
|
|
31
|
-
- 「保留/不动」清单经核对未被破坏
|
|
32
|
-
- 多阶段 slices:该阶段 `<phase>` 的 `status` 已由 `未开始` 置为 `已实现`(无 slices 则不适用)
|
|
33
|
-
- `verification.md` 无残留 `[TODO:]`
|
|
34
|
-
- `.status.json` 的 `implementation_status` 为 `verified` 或 `blocked`
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Slice Loop Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `tdd-plan.md`
|
|
6
|
-
- `slices.md` 或用户确认的切片顺序
|
|
7
|
-
- `tdd-plan.md` 中记录的执行前 git 基线;每轮开始前核对本轮触及文件是否存在未知改动
|
|
8
|
-
- `03-tdd.md` 中的内置 TDD 指引和同目录辅助文档
|
|
9
|
-
|
|
10
|
-
## 产物
|
|
11
|
-
|
|
12
|
-
- `speculo/.speculo/dev/<change>/tdd/<phase-id>/implementation-log.md`,由 `../_templates/tdd-log-template.md` 填写
|
|
13
|
-
- 可选:`tdd/<phase-id>/tasks/00-INDEX.md` 与 `tdd/<phase-id>/tasks/TNN.md`,由 workflow 自治创建
|
|
14
|
-
|
|
15
|
-
## 填写引导
|
|
16
|
-
|
|
17
|
-
1. 每次只选择一个切片和一个行为。
|
|
18
|
-
2. RED:写一个通过公共接口验证行为的失败测试。
|
|
19
|
-
3. GREEN:写最少实现使当前测试通过。
|
|
20
|
-
4. REFACTOR:只在绿色状态下整理设计。
|
|
21
|
-
5. 每轮记录测试名、失败信号、实现摘要、重构摘要、验证命令和 git 状态变化摘要。
|
|
22
|
-
6. 每轮检查:测试描述行为而非实现;测试只使用公共接口;测试能经受内部重构;代码是当前测试的最少实现;没有添加推测性功能;**未触碰本切片「保留/不动」清单**;引用代码以现场为准(不照搬切片行号);未覆盖未知 dirty/staged 改动。
|
|
23
|
-
|
|
24
|
-
## 边界
|
|
25
|
-
|
|
26
|
-
- 不预实现未来切片。
|
|
27
|
-
- 不使用内部实现细节作为主要断言。
|
|
28
|
-
- 不在 RED 状态下重构。
|
|
29
|
-
- 不触碰本切片「保留/不动」清单(冻结常量 / 共享依赖 / 邻近功能)。
|
|
30
|
-
- 不回退、覆盖或格式化与本切片无关的已有改动。
|
|
31
|
-
|
|
32
|
-
## 完成准则
|
|
33
|
-
|
|
34
|
-
- 每个完成切片都有 RED/GREEN/REFACTOR 记录
|
|
35
|
-
- `implementation-log.md` 无残留 `[TODO:]`
|
|
36
|
-
- `.status.json` 已追加 `red_green_refactor_cycles`
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# TDD Plan Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `prd.md`、`slices.md`、`diagnosis.md` 或用户明确任务
|
|
6
|
-
- 多阶段:本阶段对应切片的 **保留/不动**、**关键核实结论**、**验收切片** 与 §4 横切铁律(`slices.md`)
|
|
7
|
-
- 项目测试命令、现有测试样式和公共接口
|
|
8
|
-
- 当前仓库 git 基线:分支、`git status --short --branch`、`git diff --stat`、`git diff --cached --stat`
|
|
9
|
-
- `03-tdd.md` 中的内置 TDD 指引(含「消费 slices 切片契约」)和同目录辅助文档
|
|
10
|
-
|
|
11
|
-
## 产物
|
|
12
|
-
|
|
13
|
-
- `speculo/.speculo/dev/<change>/tdd/<phase-id>/tdd-plan.md`,由 `../_templates/tdd-plan-template.md` 填写(`<phase-id>` 见 `03-tdd.md`「TDD 产物目录与阶段标识」)
|
|
14
|
-
|
|
15
|
-
## 填写引导
|
|
16
|
-
|
|
17
|
-
1. 遵循 `03-tdd.md` 的内置 TDD 指引,并先完成「执行前 Git 基线」检查。
|
|
18
|
-
2. 在计划中记录当前分支、dirty/staged/untracked 摘要和 diff stat;已有改动默认视为用户工作,不能回退或覆盖。
|
|
19
|
-
3. 按需读取同目录 `tests.md` / `mocking.md`,以及设计词汇单一事实源 `../../../vendor/codebase-design/`(`SKILL.md` 深模块与可测试接口设计、`DEEPENING.md` 依赖类别与接缝、`DESIGN-IT-TWICE.md` 备选接口)。
|
|
20
|
-
4. 与用户确认公共接口、最重要的行为和测试覆盖优先级。
|
|
21
|
-
5. 拆出第一个 tracing slice,避免水平切片。
|
|
22
|
-
6. 探索代码库时使用项目领域术语表,确保测试名称和接口词汇与项目语言一致,并尊重触及区域的 ADR。
|
|
23
|
-
7. 写任何代码前确认接口变更、优先测试的行为、deep module 机会、可测试接口设计和行为列表。
|
|
24
|
-
8. **承载切片契约**:把本阶段对应切片的 **保留/不动** 与 **关键核实结论** 记入计划作为实现约束;切片行号为近似、以现场代码为准(现场核对);存疑分支按 `../I-to-issues/issues-slices.md`「存疑时的提问协议」一次一问、带推荐、逐步锁定。
|
|
25
|
-
|
|
26
|
-
## 边界
|
|
27
|
-
|
|
28
|
-
- 本阶段不写代码。
|
|
29
|
-
- 不批量预写所有测试。
|
|
30
|
-
|
|
31
|
-
## 完成准则
|
|
32
|
-
|
|
33
|
-
- 产物顶部「阶段标识」段已填写 `<phase-id>`(多阶段 slices 须与 `<phase>` 的 `id` 一致)
|
|
34
|
-
- 已记录执行前 git 基线和未知/重叠改动处理结论
|
|
35
|
-
- 多阶段:已记录本切片 **保留/不动** 约束与 **现场核对** 结论
|
|
36
|
-
- `tdd-plan.md` 无残留 `[TODO:]`
|
|
37
|
-
- `.status.json` 的 `implementation_status` 为 `planned`
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# 好测试与坏测试
|
|
2
|
-
|
|
3
|
-
## 好测试
|
|
4
|
-
|
|
5
|
-
**集成式**:通过真实接口测试,而不是 mock 内部组件。
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
// 好:测试可观察的行为
|
|
9
|
-
test("用户可以用有效购物车结算", async () => {
|
|
10
|
-
const cart = createCart();
|
|
11
|
-
cart.add(product);
|
|
12
|
-
const result = await checkout(cart, paymentMethod);
|
|
13
|
-
expect(result.status).toBe("confirmed");
|
|
14
|
-
});
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
特征:
|
|
18
|
-
|
|
19
|
-
- 测试用户/调用者关心的行为
|
|
20
|
-
- 只使用公共 API
|
|
21
|
-
- 能经受住内部重构
|
|
22
|
-
- 描述「做什么」,而不是「怎么做」
|
|
23
|
-
- 每个测试一个逻辑断言
|
|
24
|
-
|
|
25
|
-
## 坏测试
|
|
26
|
-
|
|
27
|
-
**实现细节测试**:与内部结构耦合。
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
// 坏:测试实现细节
|
|
31
|
-
test("checkout 调用了 paymentService.process", async () => {
|
|
32
|
-
const mockPayment = jest.mock(paymentService);
|
|
33
|
-
await checkout(cart, payment);
|
|
34
|
-
expect(mockPayment.process).toHaveBeenCalledWith(cart.total);
|
|
35
|
-
});
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
危险信号:
|
|
39
|
-
|
|
40
|
-
- mock 内部协作者
|
|
41
|
-
- 测试私有方法
|
|
42
|
-
- 断言调用次数/顺序
|
|
43
|
-
- 重构时测试坏了但行为没变
|
|
44
|
-
- 测试名称描述的是「怎么做」而不是「做什么」
|
|
45
|
-
- 通过外部手段验证而不是通过接口
|
|
46
|
-
|
|
47
|
-
```typescript
|
|
48
|
-
// 坏:绕过接口来验证
|
|
49
|
-
test("createUser 保存到数据库", async () => {
|
|
50
|
-
await createUser({ name: "Alice" });
|
|
51
|
-
const row = await db.query("SELECT * FROM users WHERE name = ?", ["Alice"]);
|
|
52
|
-
expect(row).toBeDefined();
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
// 好:通过接口验证
|
|
56
|
-
test("createUser 使用户可被检索", async () => {
|
|
57
|
-
const user = await createUser({ name: "Alice" });
|
|
58
|
-
const retrieved = await getUser(user.id);
|
|
59
|
-
expect(retrieved.name).toBe("Alice");
|
|
60
|
-
});
|
|
61
|
-
```
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/finalize
|
|
3
|
-
category: dev
|
|
4
|
-
name: Finalize & Archive
|
|
5
|
-
description: 在用证据证明 change 真正完成后,改变其状态并归档;没有新鲜验证证据不许宣称完成
|
|
6
|
-
keywords: [finalize, verify, complete, archive, 归档, 收尾, 完成验证]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Finalize & Archive 工作流执行指引
|
|
10
|
-
|
|
11
|
-
本工作流是 `dev/04` 入口:先用证据证明"真的完成了",再改变状态并归档。
|
|
12
|
-
|
|
13
|
-
> **铁律:** 没有新鲜的验证证据,不许宣称完成。门控函数全文见 `completion-gate.md`。
|
|
14
|
-
|
|
15
|
-
> **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`。归档目标为 `speculo/.speculo/archive/dev/<YYYY-MM>/<change>/`。
|
|
16
|
-
|
|
17
|
-
## 阶段
|
|
18
|
-
|
|
19
|
-
| Phase | id | agent | 规范 | 模板 | 产物 |
|
|
20
|
-
|-------|-----|-------|------|------|------|
|
|
21
|
-
| 1. Completion Verification | `completion-verification` | `agents/completion-gate-agent.md` | `completion-gate.md` | `../_templates/completion-verification-template.md` | `completion-verification.md` |
|
|
22
|
-
| 2. Merge Back & Cleanup | `merge-cleanup` | — | `../../../skills/worktree-isolation/SKILL.md` | — | 合并后的 base 分支 |
|
|
23
|
-
| 3. Finalize & Archive | `finalize-archive` | — | `finalize-archive.md` | `../_templates/completion-summary-template.md` | `completion-summary.md` |
|
|
24
|
-
|
|
25
|
-
### 1. Completion Verification — 完成前验证(门控)
|
|
26
|
-
- id:`completion-verification`
|
|
27
|
-
- 完成准则:每条结论有本次运行证据;`verification_status` 为 `verified` 或 `blocked`
|
|
28
|
-
|
|
29
|
-
### 2. Merge Back & Cleanup — 合并回原分支(仅 worktree 模式)
|
|
30
|
-
- id:`merge-cleanup`
|
|
31
|
-
- 完成准则:非 worktree 模式标记 `skipped`;worktree 已合并并清理
|
|
32
|
-
|
|
33
|
-
### 3. Finalize & Archive — 状态收尾与归档
|
|
34
|
-
- id:`finalize-archive`
|
|
35
|
-
- 完成准则:`change_status` 置 `completed` 并归档;已从 `dev-status.json` 移除
|
|
36
|
-
|
|
37
|
-
## 依赖
|
|
38
|
-
|
|
39
|
-
- 软依赖:`../03-tdd/03-tdd.md` 或 `../R-review/R-review.md`,scope: same-change
|
|
40
|
-
- 硬依赖:无;但归档要求通过完成前验证
|
|
41
|
-
|
|
42
|
-
## 状态扩展字段
|
|
43
|
-
|
|
44
|
-
- `dev_entry` (string) — 固定为 `dev/04`
|
|
45
|
-
- `verification_commands` (array)
|
|
46
|
-
- `requirements_checklist` (array)
|
|
47
|
-
- `verification_status` (verified | blocked)
|
|
48
|
-
- `archived` (boolean)
|
|
49
|
-
- `archive_path` (string|null)
|
|
50
|
-
- `worktree_status` (created | active | merged | removed)
|
|
51
|
-
|
|
52
|
-
## 完成与状态更新
|
|
53
|
-
|
|
54
|
-
- `verification_status: blocked` 时停在本工作流,回到 `../03-tdd/03-tdd.md` 或 `../H-diagnose/H-diagnose.md`。
|
|
55
|
-
- `verified` 且用户确认后:worktree 模式先 Phase 2,再置 `change_status: completed` → 归档 → `archived`。
|
|
56
|
-
|
|
57
|
-
与 `../../../commands/archive.md` 的关系:本工作流面向单个 change 引导式收尾;archive 命令面向批量归档。
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/04-finalize/completion-gate-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: Completion Gate Agent
|
|
5
|
-
description: 隔离执行完成前验证门控,防自证完成
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
独立验证 change 是否真正完成,产出 `completion-verification.md`,给出 `verified` 或 `blocked` 结论。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`completion-verification`
|
|
16
|
-
- 上游产物:PRD / slices / 实现产物、`tdd/<phase-id>/verification.md`(若存在)
|
|
17
|
-
- 模板:`../_templates/completion-verification-template.md`
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 按 `../completion-gate.md` 执行门控函数:确定命令 → 运行 → 阅读输出 → 验证结论。
|
|
22
|
-
- 每条完成结论必须有**本次运行**的命令与输出证据。
|
|
23
|
-
- 对照来源逐项核对需求清单。
|
|
24
|
-
- 产物写入 `speculo/.speculo/dev/<change>/completion-verification.md`。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`completion-verification.md`
|
|
29
|
-
- `.status.json`:写入 `verification_commands`、`requirements_checklist`、`verification_status`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 不越过本 phase;不执行归档或 worktree 合并。
|
|
34
|
-
- 只有 `verified` 时主流程才可进入归档 phase;`blocked` 时停止。
|
|
35
|
-
- 本 agent 可建议置 `change_status: completed`,但**只有主流程 `finalize-archive` phase** 实际写入。
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Completion Verification Phase(门控)
|
|
2
|
-
|
|
3
|
-
本阶段是归档前的门控。**没有本次运行的验证证据,不许进入下一阶段。**
|
|
4
|
-
|
|
5
|
-
## 输入
|
|
6
|
-
|
|
7
|
-
- 当前 change 目录:`speculo/.speculo/dev/<change>/` 下的实现产物(多阶段在 `tdd/<phase-id>/` 下的 `implementation-log.md`、`verification.md` 等)
|
|
8
|
-
- 来源:PRD、issue、slices、诊断结论或用户明确任务
|
|
9
|
-
- 项目的测试 / 类型检查 / lint / 构建命令
|
|
10
|
-
- 变更 diff(VCS)
|
|
11
|
-
|
|
12
|
-
## 产物
|
|
13
|
-
|
|
14
|
-
- `speculo/.speculo/dev/<change>/completion-verification.md`,由 `../_templates/completion-verification-template.md` 填写
|
|
15
|
-
|
|
16
|
-
## 填写引导
|
|
17
|
-
|
|
18
|
-
按 `04-finalize.md` 的门控函数,对每个完成结论"确定命令 → 运行 → 读输出 → 验证 → 才下结论"。
|
|
19
|
-
|
|
20
|
-
1. **运行验证命令**:跑与变更相关的测试、类型检查、lint、构建。逐条记录**命令、退出码、通过/失败计数**。无法运行的命令记录原因,对应结论不得声称通过。
|
|
21
|
-
2. **逐项核对需求**:重读来源(PRD / issue / slices / 用户任务),建立需求清单,逐项标 `satisfied | missing | partial` 并引用来源;测试通过不能替代需求核对。
|
|
22
|
-
3. **回归证据**(若本 change 修了 bug):确认回归测试经过红-绿验证(写 → 通过 → 回退修复必须失败 → 恢复 → 通过),而不是只通过一次。
|
|
23
|
-
4. **代理产物核对**(若部分工作委派给子代理):检查 VCS diff 验证实际变更,不信任代理的"成功"报告。
|
|
24
|
-
5. **调试残留检查**:搜索临时日志、DEBUG 标记、一次性脚本、推测性 / 未启用功能并清理。
|
|
25
|
-
6. **下结论**:全部结论均有新鲜证据支撑 → `verification_status: verified`;任一关键项缺证据或失败 → `verification_status: blocked`,并写明实际状态与缺口。
|
|
26
|
-
|
|
27
|
-
## 边界
|
|
28
|
-
|
|
29
|
-
- 不夸大、不用"应该""大概""似乎"等措辞;信心 ≠ 证据。
|
|
30
|
-
- 不依赖上一轮的旧结果或部分检查。
|
|
31
|
-
- `blocked` 时不进入归档;回到 `../03-tdd/03-tdd.md` 或 `../H-diagnose/H-diagnose.md` 修复后重跑本阶段。
|
|
32
|
-
- 不修改 `speculo/.speculo/.config/RULES.md` 或用户未授权的项目规则文档。
|
|
33
|
-
|
|
34
|
-
## 完成准则
|
|
35
|
-
|
|
36
|
-
- `completion-verification.md` 记录了每条结论的命令与输出证据
|
|
37
|
-
- 需求清单逐项核对完成,含来源引用
|
|
38
|
-
- 调试残留已清理或明确说明
|
|
39
|
-
- `completion-verification.md` 无残留 `[TODO:]`
|
|
40
|
-
- 多阶段 slices:本阶段对应的 `<phase>` 状态已由 `已实现` 置为 `已验证`(无 slices 则不适用)
|
|
41
|
-
- `.status.json` 写入 `verification_commands`、`requirements_checklist`、`verification_status`
|