@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,75 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/R-review
|
|
3
|
-
category: dev
|
|
4
|
-
name: Review
|
|
5
|
-
description: 从固定比较点开始,按 Spec、Engineering、Standards 三个独立维度审查当前 diff,并给出带严重度的裁决
|
|
6
|
-
keywords: [review, diff, spec, engineering, standards, security, solid, pr, 审查]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Review 工作流执行指引
|
|
10
|
-
|
|
11
|
-
本工作流是 `dev/R` 入口,用于审查 `HEAD` 与用户提供的固定点之间的 diff。审查以**资深工程师视角**进行,结果必须分成三个**互相独立、互不掩盖**的维度,每条 finding 带严重度,最后给出整体裁决。
|
|
12
|
-
|
|
13
|
-
> **目录命名:** `<change>` 必须为 `YYYY-MM-DD-<kebab-name>`(例:`2026-06-12-review-auth-module`)。审查产物写入 `speculo/.speculo/dev/<change>/`。
|
|
14
|
-
|
|
15
|
-
## 何时使用
|
|
16
|
-
|
|
17
|
-
当用户想审查分支、PR、进行中的变更,或要求 `review since <fixed-point>` 时使用。
|
|
18
|
-
|
|
19
|
-
## 三个审查维度
|
|
20
|
-
|
|
21
|
-
| 维度 | 问题 | 关注 |
|
|
22
|
-
|------|------|------|
|
|
23
|
-
| **Spec** | 做对了吗? | 是否忠实实现来源 issue / PRD / spec |
|
|
24
|
-
| **Engineering** | 做好了吗? | 工程质量:SOLID、安全、错误处理、性能、边界、死代码 |
|
|
25
|
-
| **Standards** | 合规吗? | 是否违反仓库已记录的标准 |
|
|
26
|
-
|
|
27
|
-
详细严重度模型、独立进入流程与来源深度搜索见 `review-setup.md`。
|
|
28
|
-
|
|
29
|
-
## 阶段
|
|
30
|
-
|
|
31
|
-
| Phase | id | agent | 规范 | 模板 | 产物 |
|
|
32
|
-
|-------|-----|-------|------|------|------|
|
|
33
|
-
| 1. Review Setup | `review-setup` | — | `review-setup.md` | `../_templates/review-sources-template.md` | `review-sources.md` |
|
|
34
|
-
| 2. Multi-Axis Review | `multi-axis-review` | `agents/spec-review-agent.md`、`agents/engineering-review-agent.md`、`agents/standards-review-agent.md` | `review-axes.md` | `../_templates/review-report-template.md` | `review-report.md` |
|
|
35
|
-
| 3. Verdict & Next Steps | `verdict-next-steps` | — | `review-verdict.md` | `../_templates/review-verdict-template.md` | `review-verdict.md` |
|
|
36
|
-
|
|
37
|
-
### 1. Review Setup — 固定点、范围与来源收集
|
|
38
|
-
- id:`review-setup`
|
|
39
|
-
- 完成准则:fixed point、diff 命令、来源清单已记录;`review-sources.md` 无残留 `[TODO:]`
|
|
40
|
-
|
|
41
|
-
### 2. Multi-Axis Review — 三维度审查
|
|
42
|
-
- id:`multi-axis-review`
|
|
43
|
-
- 完成准则:三维度分区独立呈现;每条 finding 带 P0–P3 严重度;`review-report.md` 无残留 `[TODO:]`
|
|
44
|
-
|
|
45
|
-
### 3. Verdict & Next Steps — 裁决与后续确认
|
|
46
|
-
- id:`verdict-next-steps`
|
|
47
|
-
- 完成准则:整体裁决与 clean-review 声明已给出;未经确认不实施修复;`review-verdict.md` 无残留 `[TODO:]`
|
|
48
|
-
|
|
49
|
-
## 依赖
|
|
50
|
-
|
|
51
|
-
- 硬依赖:无;用户提供 fixed point 即可进入
|
|
52
|
-
- 软依赖:同 change 下若有 `prd.md`、`slices.md` 等可继承增强 Spec 维度;缺失时自行采集,不阻塞流程
|
|
53
|
-
|
|
54
|
-
## 状态扩展字段
|
|
55
|
-
|
|
56
|
-
- `dev_entry` (string) — 固定为 `dev/R`
|
|
57
|
-
- `review_fixed_point` (string)
|
|
58
|
-
- `review_diff_command` (string)
|
|
59
|
-
- `review_axes` (array) — `spec` | `engineering` | `standards`
|
|
60
|
-
- `standards_sources` (array)
|
|
61
|
-
- `spec_sources` (array)
|
|
62
|
-
- `severity_summary` (object) — `{ "p0": n, "p1": n, "p2": n, "p3": n }`
|
|
63
|
-
- `review_verdict` (approve | request_changes | comment | null)
|
|
64
|
-
- `review_status` (collecting | reviewing | judged | completed | blocked)
|
|
65
|
-
|
|
66
|
-
## 完成与状态更新
|
|
67
|
-
|
|
68
|
-
- 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
|
|
69
|
-
- 完成 setup 后写入 fixed point、diff 命令、`review_axes` 和来源清单。
|
|
70
|
-
- 完成报告后更新 `severity_summary`,置 `review_status: judged`。
|
|
71
|
-
- 完成裁决后写入 `review_verdict`,置 `review_status: completed`;不自动完成 change —— 是否进入修复(`../03-tdd/03-tdd.md`)、收尾(`../04-finalize/04-finalize.md`)由用户决定。
|
|
72
|
-
|
|
73
|
-
### 缺少 change 目录时
|
|
74
|
-
|
|
75
|
-
若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/R-review/engineering-review-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: Engineering Review Agent
|
|
5
|
-
description: 隔离执行 Engineering 维度审查:做好了吗
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
独立审查 diff 的 Engineering 维度:SOLID、安全、错误处理、性能、边界、死代码。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
-
- 上游产物:`review-sources.md`
|
|
17
|
-
- 清单:`../solid-checklist.md`、`../security-checklist.md`、`../code-quality-checklist.md`、`../removal-checklist.md`
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 使用 `review-sources.md` 中的 diff 命令。
|
|
22
|
-
- Engineering 维度始终执行,不依赖外部 spec。
|
|
23
|
-
- 按需读取同目录清单;每条 finding 带 P0–P3 严重度与清单引用。
|
|
24
|
-
- 产出写入 `review-report.md` 的 Engineering 分区。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`review-report.md`(Engineering 分区)
|
|
29
|
-
- `.status.json`:追加 `review_axes` 含 `engineering`;更新 `severity_summary`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 只写 Engineering 分区;不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/R-review/spec-review-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: Spec Review Agent
|
|
5
|
-
description: 隔离执行 Spec 维度审查:做对了吗
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
独立审查 diff 的 Spec 维度:是否忠实实现来源 issue / PRD / spec。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
-
- 上游产物:`review-sources.md`(fixed point、diff 命令、spec 来源)
|
|
17
|
-
- 规范:`../review-axes.md`(Spec 分区)
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 使用 `review-sources.md` 中的 diff 命令与 spec 来源。
|
|
22
|
-
- 无 spec 时报告 `no spec available`,不编造需求。
|
|
23
|
-
- 每条 finding 带 P0–P3 严重度、文件/行依据与 spec 引用。
|
|
24
|
-
- 产出写入 `review-report.md` 的 Spec 分区(与 Engineering、Standards 分区独立)。
|
|
25
|
-
|
|
26
|
-
## 产物与状态
|
|
27
|
-
|
|
28
|
-
- 产物:`review-report.md`(Spec 分区)
|
|
29
|
-
- `.status.json`:追加 `review_axes` 含 `spec`;更新 `severity_summary`
|
|
30
|
-
|
|
31
|
-
## 边界
|
|
32
|
-
|
|
33
|
-
- 只写 Spec 分区;不合并或重排其他维度 findings。
|
|
34
|
-
- 不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: dev/R-review/standards-review-agent
|
|
3
|
-
type: agent
|
|
4
|
-
name: Standards Review Agent
|
|
5
|
-
description: 隔离执行 Standards 维度审查:合规吗
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 使命
|
|
9
|
-
|
|
10
|
-
独立审查 diff 的 Standards 维度:是否违反仓库已记录的标准。
|
|
11
|
-
|
|
12
|
-
## 输入契约
|
|
13
|
-
|
|
14
|
-
- change 路径:`speculo/.speculo/dev/<change>/`
|
|
15
|
-
- `current_phase` / phase-id:`multi-axis-review`
|
|
16
|
-
- 上游产物:`review-sources.md`(standards 来源清单)
|
|
17
|
-
- 规范:`../review-axes.md`(Standards 分区)
|
|
18
|
-
|
|
19
|
-
## 执行规范
|
|
20
|
-
|
|
21
|
-
- 使用 `review-sources.md` 中的 diff 命令与 standards 来源。
|
|
22
|
-
- 无成文标准时报告覆盖空白,不把缺失当作无问题。
|
|
23
|
-
- 机器已强制的标准(lint / 类型)只记录来源,不重复人工检查。
|
|
24
|
-
- 每条 finding 带 P0–P3 严重度与标准引用。
|
|
25
|
-
- 产出写入 `review-report.md` 的 Standards 分区。
|
|
26
|
-
|
|
27
|
-
## 产物与状态
|
|
28
|
-
|
|
29
|
-
- 产物:`review-report.md`(Standards 分区)
|
|
30
|
-
- `.status.json`:追加 `review_axes` 含 `standards`;更新 `severity_summary`
|
|
31
|
-
|
|
32
|
-
## 边界
|
|
33
|
-
|
|
34
|
-
- 只写 Standards 分区;不修改代码;不写 `change_status`;不产出最终 verdict。
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
# 代码质量清单
|
|
2
|
-
|
|
3
|
-
服务 `R-review.md` 的 **Engineering 维度**。审查 diff 的错误处理、性能与边界条件时读取本文。重点标记会导致**静默失败**或**生产事故**的问题,并按下方"严重度提示"定级。
|
|
4
|
-
|
|
5
|
-
## 错误处理
|
|
6
|
-
|
|
7
|
-
### 需要标记的反模式
|
|
8
|
-
|
|
9
|
-
- **吞掉异常**:空 catch,或只打日志的 catch
|
|
10
|
-
```javascript
|
|
11
|
-
try { ... } catch (e) { } // 静默失败
|
|
12
|
-
try { ... } catch (e) { console.log(e) } // 打了日志就不管
|
|
13
|
-
```
|
|
14
|
-
- **过宽的 catch**:捕获 `Exception` / `Error` 基类而非具体类型
|
|
15
|
-
- **错误信息泄露**:把堆栈或内部细节暴露给用户
|
|
16
|
-
- **缺少错误处理**:可失败操作(I/O、网络、解析)周围没有 try-catch
|
|
17
|
-
- **异步错误处理**:未处理的 promise rejection、缺 `.catch()`、无 error boundary
|
|
18
|
-
|
|
19
|
-
### 应核对的最佳实践
|
|
20
|
-
|
|
21
|
-
- [ ] 错误在恰当的边界被捕获
|
|
22
|
-
- [ ] 错误信息对用户友好(不暴露内部细节)
|
|
23
|
-
- [ ] 错误带足够上下文记录,便于调试
|
|
24
|
-
- [ ] 异步错误被正确传播或处理
|
|
25
|
-
- [ ] 可恢复错误有定义好的兜底行为
|
|
26
|
-
- [ ] 关键错误触发告警 / 监控
|
|
27
|
-
|
|
28
|
-
### 追问
|
|
29
|
-
- "这个操作失败时会发生什么?"
|
|
30
|
-
- "调用方会知道出错了吗?"
|
|
31
|
-
- "有足够上下文调试这个错误吗?"
|
|
32
|
-
|
|
33
|
-
## 性能与缓存
|
|
34
|
-
|
|
35
|
-
### CPU 密集操作
|
|
36
|
-
- **热路径上的昂贵操作**:循环中编译正则、解析 JSON、做加密
|
|
37
|
-
- **阻塞主线程**:同步 I/O、无 worker / async 的重计算
|
|
38
|
-
- **重复计算**:同一计算被多次执行
|
|
39
|
-
- **缺少记忆化**:相同输入反复调用的纯函数
|
|
40
|
-
|
|
41
|
-
### 数据库与 I/O
|
|
42
|
-
- **N+1 查询**:循环里每个元素查一次,而非批量
|
|
43
|
-
```javascript
|
|
44
|
-
// 差:N+1
|
|
45
|
-
for (const id of ids) {
|
|
46
|
-
const user = await db.query(`SELECT * FROM users WHERE id = ?`, id)
|
|
47
|
-
}
|
|
48
|
-
// 好:批量
|
|
49
|
-
const users = await db.query(`SELECT * FROM users WHERE id IN (?)`, ids)
|
|
50
|
-
```
|
|
51
|
-
- **缺索引**:在未建索引的列上查询
|
|
52
|
-
- **过度取数**:只需几列却 SELECT *
|
|
53
|
-
- **无分页**:把整个数据集加载进内存
|
|
54
|
-
|
|
55
|
-
### 缓存问题
|
|
56
|
-
- **昂贵操作缺缓存**:重复的 API 调用、DB 查询、计算
|
|
57
|
-
- **缓存无 TTL**:脏数据被无限期返回
|
|
58
|
-
- **缓存无失效策略**:数据更新了但缓存没清
|
|
59
|
-
- **缓存键碰撞**:键唯一性不足
|
|
60
|
-
- **把用户私有数据全局缓存**:安全 / 隐私问题
|
|
61
|
-
|
|
62
|
-
### 内存
|
|
63
|
-
- **无界集合**:不断增长的数组 / map
|
|
64
|
-
- **大对象滞留**:持有引用阻止 GC
|
|
65
|
-
- **循环中字符串拼接**:应改用 StringBuilder / join
|
|
66
|
-
- **整文件加载**:应改用流式
|
|
67
|
-
|
|
68
|
-
### 追问
|
|
69
|
-
- "这个操作的时间复杂度是多少?"
|
|
70
|
-
- "数据量 10 倍 / 100 倍时行为如何?"
|
|
71
|
-
- "结果可缓存吗?该缓存吗?"
|
|
72
|
-
- "能批量代替逐条吗?"
|
|
73
|
-
|
|
74
|
-
## 边界条件
|
|
75
|
-
|
|
76
|
-
### Null / Undefined 处理
|
|
77
|
-
- **缺空值检查**:在可能为 null 的对象上访问属性
|
|
78
|
-
- **truthy / falsy 混淆**:`if (value)` 而 `0` 或 `""` 是合法值
|
|
79
|
-
- **过度可选链**:`a?.b?.c?.d` 掩盖了结构性问题
|
|
80
|
-
- **null 与 undefined 不一致**:混用且无明确约定
|
|
81
|
-
|
|
82
|
-
### 空集合
|
|
83
|
-
- **未处理空数组**:代码假设数组非空
|
|
84
|
-
- **空对象边界**:在空对象上 `for...in` 或 `Object.keys`
|
|
85
|
-
- **首 / 末元素访问**:`arr[0]` 或 `arr[arr.length-1]` 未先判空
|
|
86
|
-
|
|
87
|
-
### 数值边界
|
|
88
|
-
- **除零**:除法前缺检查
|
|
89
|
-
- **整数溢出**:超出安全整数范围的大数
|
|
90
|
-
- **浮点比较**:用 `===` 而非 epsilon 比较
|
|
91
|
-
- **负值**:本不该为负的索引或计数
|
|
92
|
-
- **off-by-one**:循环边界、数组切片、分页
|
|
93
|
-
|
|
94
|
-
### 字符串边界
|
|
95
|
-
- **空字符串**:未作为边界处理
|
|
96
|
-
- **纯空白字符串**:通过 truthy 检查但实际为空
|
|
97
|
-
- **超长字符串**:无长度上限导致内存 / 展示问题
|
|
98
|
-
- **Unicode 边界**:emoji、RTL 文本、组合字符
|
|
99
|
-
|
|
100
|
-
### 需要标记的危险模式
|
|
101
|
-
```javascript
|
|
102
|
-
const name = user.profile.name // 危险:无空值检查
|
|
103
|
-
const first = items[0] // 危险:数组访问未判空
|
|
104
|
-
const avg = total / count // 危险:除法未判零
|
|
105
|
-
if (value) { ... } // 危险:truthy 检查排除了 0、""、false
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### 追问
|
|
109
|
-
- "如果它是 null / undefined 会怎样?"
|
|
110
|
-
- "如果集合为空会怎样?"
|
|
111
|
-
- "这个数的合法范围是什么?"
|
|
112
|
-
- "边界值(0、-1、MAX_INT)处会怎样?"
|
|
113
|
-
|
|
114
|
-
## 严重度提示
|
|
115
|
-
|
|
116
|
-
- 会导致正确性 bug、数据损坏或生产事故的静默失败 → **P0 / P1**
|
|
117
|
-
- 性能回退、可维护性隐患、未覆盖的边界 → **P1 / P2**
|
|
118
|
-
- 局部健壮性改进 → **P3**
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# 删除候选与迭代计划清单
|
|
2
|
-
|
|
3
|
-
服务 `R-review.md` 的 **Engineering 维度**。审查 diff 引入或暴露的死代码、冗余、关停特性时读取本文。区分**现在可安全删除**与**需计划后再删**,审查阶段只给出候选与计划,**不在审查中直接删除代码**。
|
|
4
|
-
|
|
5
|
-
## 优先级
|
|
6
|
-
|
|
7
|
-
- [ ] **P0**:需立即删除(安全风险、显著成本、阻塞其他工作)
|
|
8
|
-
- [ ] **P1**:本迭代删除
|
|
9
|
-
- [ ] **P2**:进 backlog / 下个迭代
|
|
10
|
-
|
|
11
|
-
## 现在可安全删除
|
|
12
|
-
|
|
13
|
-
### 候选项:[名称 / 描述]
|
|
14
|
-
|
|
15
|
-
| 字段 | 内容 |
|
|
16
|
-
|------|------|
|
|
17
|
-
| **位置** | `path/to/file.ts:line` |
|
|
18
|
-
| **理由** | 为什么应该删除 |
|
|
19
|
-
| **证据** | 无引用、死特性开关、已废弃 API |
|
|
20
|
-
| **影响** | 无 / 低 —— 无活跃消费者 |
|
|
21
|
-
| **删除步骤** | 1. 删代码 2. 删测试 3. 删配置 |
|
|
22
|
-
| **验证** | 跑测试、确认无运行时错误、观察日志 |
|
|
23
|
-
|
|
24
|
-
## 推迟删除(需计划)
|
|
25
|
-
|
|
26
|
-
### 候选项:[名称 / 描述]
|
|
27
|
-
|
|
28
|
-
| 字段 | 内容 |
|
|
29
|
-
|------|------|
|
|
30
|
-
| **位置** | `path/to/file.ts:line` |
|
|
31
|
-
| **为何推迟** | 有活跃消费者、需迁移、需干系人签字 |
|
|
32
|
-
| **前置条件** | 特性开关关闭 2 周、遥测显示 0 使用 |
|
|
33
|
-
| **破坏性变更** | 列出 API / 契约变更 |
|
|
34
|
-
| **迁移计划** | 消费者迁移步骤 |
|
|
35
|
-
| **时间线** | 目标日期或迭代 |
|
|
36
|
-
| **负责人** | 责任人 / 团队 |
|
|
37
|
-
| **验证** | 确认可安全删除的指标(错误率、使用计数) |
|
|
38
|
-
| **回滚计划** | 出问题时如何恢复 |
|
|
39
|
-
|
|
40
|
-
## 删除前核对
|
|
41
|
-
|
|
42
|
-
- [ ] 全代码库搜索过所有引用(`rg`、`grep`)
|
|
43
|
-
- [ ] 检查过动态 / 反射式调用
|
|
44
|
-
- [ ] 确认无外部消费者(API、SDK、文档)
|
|
45
|
-
- [ ] 复核过特性开关遥测(如适用)
|
|
46
|
-
- [ ] 测试已更新 / 删除
|
|
47
|
-
- [ ] 文档已更新
|
|
48
|
-
- [ ] 已通知团队(如为共享代码)
|
|
49
|
-
|
|
50
|
-
## 严重度提示
|
|
51
|
-
|
|
52
|
-
- 引入的死代码 / 冗余本身一般是 **P3**;但当它**掩盖了正确性或安全风险**,或带来显著维护 / 成本负担时升级到 **P2 / P1**。
|
|
53
|
-
- 审查只产出删除候选与计划;实际删除交由后续 `../03-tdd/03-tdd.md` 或专门的清理任务执行。
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
# Multi-Axis Review Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `speculo/.speculo/dev/<change>/review-sources.md`
|
|
6
|
-
- `git diff <fixed-point>...HEAD`
|
|
7
|
-
- spec 来源文件或 `no spec available`
|
|
8
|
-
- standards 来源文件或覆盖空白说明
|
|
9
|
-
- Engineering 深度清单:同目录 `solid-checklist.md`、`security-checklist.md`、`code-quality-checklist.md`、`removal-checklist.md`
|
|
10
|
-
|
|
11
|
-
## 产物
|
|
12
|
-
|
|
13
|
-
- `speculo/.speculo/dev/<change>/review-report.md`,由 `../_templates/review-report-template.md` 填写
|
|
14
|
-
|
|
15
|
-
## 填写引导
|
|
16
|
-
|
|
17
|
-
三个维度各自独立成区,每条 finding 都要带**严重度(P0–P3)**、**文件/行或 hunk 依据**、**引用来源**,并尽量给出**可执行的修复建议**。
|
|
18
|
-
|
|
19
|
-
### Spec 维度(做对了吗)
|
|
20
|
-
|
|
21
|
-
1. 先读 spec(若有),再读 diff;若无 spec 且 `review-setup.md` 记录为 `no spec available`,则从以下自推断来源检查一致性:
|
|
22
|
-
- **commit message 推断**:commit message 中描述的需求是否在 diff 中完整实现
|
|
23
|
-
- **测试推断**:新增/修改的测试所描述的预期行为是否在 diff 中正确实现
|
|
24
|
-
- **代码注释推断**:diff 中 TODO/FIXME/HACK 标记的意图是否被正确落实
|
|
25
|
-
- **自推断仍不足时**:整区写 `no spec available — unable to verify spec compliance`
|
|
26
|
-
2. 报告:缺失需求、范围蔓延(spec 外的实现)、看似实现但有问题的需求。
|
|
27
|
-
3. 每条引用 spec 原文(若有)或推断来源(commit message/测试/注释)。
|
|
28
|
-
|
|
29
|
-
### Engineering 维度(做好了吗)
|
|
30
|
-
|
|
31
|
-
按需读取四份清单,逐项扫描 diff:
|
|
32
|
-
|
|
33
|
-
1. **SOLID 与架构**(`solid-checklist.md`):SRP/OCP/LSP/ISP/DIP 违背、代码异味;提重构时说明为何改善内聚 / 降低耦合,非平凡重构给增量计划。
|
|
34
|
-
2. **安全与可靠性**(`security-checklist.md`):注入 / XSS / SSRF / 路径穿越、认证授权、密钥泄露、竞态(TOCTOU、共享状态、DB 并发)、密码学、运行时风险;每条说明可利用性与影响。
|
|
35
|
-
3. **代码质量**(`code-quality-checklist.md`):错误处理(吞异常、异步错误)、性能(N+1、热路径昂贵操作、缓存)、边界条件(null、空集合、数值 / 字符串边界、off-by-one)。
|
|
36
|
-
4. **删除候选**(`removal-checklist.md`):死代码、冗余、关停特性;区分可安全删除与需计划,只产出候选与计划,不在审查中删代码。
|
|
37
|
-
|
|
38
|
-
### Standards 维度(合规吗)
|
|
39
|
-
|
|
40
|
-
1. 先读已记录标准(RULES、ADR、CONTRIBUTING、配置),再读 diff。
|
|
41
|
-
2. 报告违反**已成文**标准的位置,引用标准来源。
|
|
42
|
-
3. 工具已机器强制的项不重复人工检查;无成文标准时说明覆盖空白。
|
|
43
|
-
|
|
44
|
-
### 并行与隔离
|
|
45
|
-
|
|
46
|
-
- 如果可用,使用三个并行子代理分别审查 Spec、Engineering、Standards。
|
|
47
|
-
- 如果没有子代理,分三个独立小节顺序执行,不让任一维度的结论影响另一维度。
|
|
48
|
-
- 最终报告在 `## Spec`、`## Engineering`、`## Standards` 下并排呈现,可轻微清理措辞,但不要合并或重排 findings。
|
|
49
|
-
|
|
50
|
-
## 边界
|
|
51
|
-
|
|
52
|
-
- 不修复代码(review-first)。
|
|
53
|
-
- 不把三个维度混成一个优先级列表。
|
|
54
|
-
- 缺少 spec 时跳过 Spec 维度并明确写 `no spec available`;Engineering 维度始终执行。
|
|
55
|
-
- 严重度按各清单的"严重度提示"判定,不凭印象拔高或压低。
|
|
56
|
-
|
|
57
|
-
## 完成准则
|
|
58
|
-
|
|
59
|
-
- `review-report.md` 已按 Spec / Engineering / Standards 三区呈现
|
|
60
|
-
- 每条 finding 有严重度、明确依据和来源引用
|
|
61
|
-
- `.status.json` 写入 `severity_summary`,`review_status: judged`
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
# Review Setup Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- 用户提供的 fixed point;如果缺失,先询问
|
|
6
|
-
- 当前 git 仓库
|
|
7
|
-
- 当前 change 目录:`speculo/.speculo/dev/<change>/`
|
|
8
|
-
|
|
9
|
-
## 严重度模型
|
|
10
|
-
|
|
11
|
-
每条 finding 必须标注严重度:
|
|
12
|
-
|
|
13
|
-
| 级别 | 名称 | 含义 | 动作 |
|
|
14
|
-
|------|------|------|------|
|
|
15
|
-
| **P0** | Critical | 安全漏洞、数据丢失风险、正确性 bug | 必须阻断合并 |
|
|
16
|
-
| **P1** | High | 逻辑错误、显著 SOLID 违背、性能回退、关键需求缺失 | 合并前应修复 |
|
|
17
|
-
| **P2** | Medium | 代码异味、可维护性隐患、轻微 SOLID 违背、范围蔓延 | 本 PR 修或建后续项 |
|
|
18
|
-
| **P3** | Low | 风格、命名、小建议 | 可选改进 |
|
|
19
|
-
|
|
20
|
-
## 执行原则
|
|
21
|
-
|
|
22
|
-
- 用户说的任何东西都是固定点。若用户没有指定固定点,先询问;拿到前不要继续。
|
|
23
|
-
- 比较命令使用三点语法:`git diff <fixed-point>...HEAD`,同时记录 `git log <fixed-point>..HEAD --oneline`。
|
|
24
|
-
- **Worktree 模式**:若当前 change 为 worktree 隔离模式(`.status.json` 的 `worktree_enabled` 为真),fixed point 默认取 `base_branch`,且审查必须完整覆盖 change 分支树 `base_branch..change_branch` 的**每一个 commit**。此时读取 `../../../skills/worktree-isolation/SKILL.md` 的 `references/audit-branch-tree.md`。
|
|
25
|
-
- **Review-first**:本工作流默认只产出审查结论,**不修改代码**;除非用户在看到 findings 后明确授权修复。
|
|
26
|
-
- **诚实优先**:无法覆盖的区域要显式声明(见 `review-verdict.md` 的 clean-review 要求)。
|
|
27
|
-
- 机器已强制的标准(lint / 类型 / 格式)只记录来源,不重复人工检查。
|
|
28
|
-
- 如果环境支持并行子代理,三个维度应并行执行;否则按三个独立上下文顺序执行。
|
|
29
|
-
|
|
30
|
-
## 独立进入流程
|
|
31
|
-
|
|
32
|
-
本工作流**零硬依赖**。只需用户提供 fixed point + 当前 git 仓库即可启动。
|
|
33
|
-
|
|
34
|
-
1. **fixed point**:若用户未指定,先询问;worktree 模式下默认取 `base_branch`。
|
|
35
|
-
2. **change 目录**:若无 active change,执行 `../AGENTS.md` 进入协议步骤 3(原子三步),不得内联自初始化 JSON。
|
|
36
|
-
3. **信息自采集**:若同 change 下无上游产物,按下方「来源深度搜索」自行采集审查上下文。
|
|
37
|
-
4. **深度搜索**:Spec 和 Standards 来源仍不足时,对关键路径执行额外考古;检查测试文件推断预期行为。
|
|
38
|
-
5. **诚实优先**:找不到 spec 时记录 `no spec available`;找不到成文标准时记录覆盖空白。Engineering 维度始终执行。
|
|
39
|
-
|
|
40
|
-
## 独立进入时的来源深度搜索
|
|
41
|
-
|
|
42
|
-
当本工作流独立进入(无上游 PRD、slices、decision-log 等产物)时,在收集 spec 和 standards 来源时执行以下扩展搜索。**不要求用户先执行 dev/01、dev/02 或其他工作流。**
|
|
43
|
-
|
|
44
|
-
### Spec 来源的扩展发现(按优先级)
|
|
45
|
-
|
|
46
|
-
1. **commit message 提取**:`git log <fixed-point>..HEAD --oneline` + `git log <fixed-point>..HEAD --format="%B"` 提取全部 commit message 正文,搜索 issue/PR 引用(`#\d+`、`fixes #`、`closes #`、JIRA key 模式)
|
|
47
|
-
2. **commit message 全文搜索**:`git log <fixed-point>..HEAD --grep="<关键词>"` 搜索与变更主题相关的 commit
|
|
48
|
-
3. **代码注释/TODO 提取**:在 diff 涉及的文件中搜索注释、TODO、FIXME 和 HACK 标记——这些常包含需求意图
|
|
49
|
-
4. **本地 spec 文档搜索**:搜索仓库中与分支名、变更模块名匹配的 `.md` 文档、`docs/` 目录、`spec/` 目录
|
|
50
|
-
5. **Speculo 文档搜索**:搜索 `speculo/.speculo/doc/`、`speculo/.speculo/archive/` 中与变更模块相关的领域文档
|
|
51
|
-
6. **测试文件读取**:读取 diff 中测试文件的变更——新增测试描述了预期行为
|
|
52
|
-
7. **上游产物继承**(若存在):`speculo/.speculo/dev/<change>/prd.md`、`slices.md`、`decision-log.md`
|
|
53
|
-
8. **以上均无时**:记录 `no spec available`——Spec 维度跳过,不编造来源
|
|
54
|
-
|
|
55
|
-
### Standards 来源的扩展发现
|
|
56
|
-
|
|
57
|
-
1. **Speculo 配置搜索**:`speculo/.speculo/.config/RULES.md`、`speculo/.speculo/.config/adr/`、`speculo/.speculo/.config/context/`
|
|
58
|
-
2. **项目根文档搜索**:`AGENTS.md`、`CONTRIBUTING.md`、`CLAUDE.md`、`README.md`
|
|
59
|
-
3. **工具配置搜索**:`.editorconfig`、`eslint.config.*`、`biome.json`、`prettier.config.*`、`tsconfig.json`、`pyproject.toml`
|
|
60
|
-
4. **全部缺失时**:记录覆盖空白说明(如"仓库无 RULES.md、无 ADR、无 CONTRIBUTING.md——Standards 维度仅检查通用工程实践"),不把缺失当作"无问题"
|
|
61
|
-
|
|
62
|
-
## 产物
|
|
63
|
-
|
|
64
|
-
- `speculo/.speculo/dev/<change>/review-sources.md`,由 `../_templates/review-sources-template.md` 填写
|
|
65
|
-
|
|
66
|
-
## 填写引导
|
|
67
|
-
|
|
68
|
-
1. 沿用用户提供的 fixed point,不自行替换为其他分支。**Worktree 模式**(`.status.json` 的 `worktree_enabled` 为真)下,若用户未另行指定,fixed point 默认取 `base_branch`,并按 `../../../skills/worktree-isolation/SKILL.md` 的 `references/audit-branch-tree.md` 用 `git log <base_branch>..<change_branch> --oneline` 记录 change 分支树**全部 commit**、`git diff <base_branch>...<change_branch>` 取全量 diff,确保审查覆盖每个 commit。
|
|
69
|
-
2. 记录 `git diff <fixed-point>...HEAD` 和 `git log <fixed-point>..HEAD --oneline`。
|
|
70
|
-
3. 用 `git diff <fixed-point>...HEAD --stat` 评估 diff 规模并定分批策略:
|
|
71
|
-
- **无变更**:`git diff` 为空时,告知用户并询问是否改审 staged 变更或某个 commit 区间,拿到前不继续。
|
|
72
|
-
- **大 diff(> 500 行)**:先按文件 / 模块汇总,再按模块或功能分批审查。
|
|
73
|
-
- **混合关注点**:按逻辑功能分组,不只按文件顺序。
|
|
74
|
-
4. 标识关键路径:auth / 授权、支付 / 金额、数据写入、网络 / 外部调用、并发 —— 这些区域在 Engineering 维度需重点审查。
|
|
75
|
-
5. 寻找 spec 来源,按「独立进入时的来源深度搜索」中的 Spec 扩展发现顺序执行:
|
|
76
|
-
- commit message 中的 issue / PR 引用 → commit message 全文搜索
|
|
77
|
-
- 用户作为参数传入的路径
|
|
78
|
-
- 代码注释/TODO/FIXME 中的需求线索
|
|
79
|
-
- 仓库中与分支名或功能匹配的规格文档
|
|
80
|
-
- `speculo/.speculo/dev/<change>/prd.md`、`slices.md`、`decision-log.md`(若存在)
|
|
81
|
-
- `speculo/.speculo/doc/` 和 `speculo/.speculo/archive/` 中的领域文档
|
|
82
|
-
- 以上均无时记录 `no spec available`
|
|
83
|
-
6. 寻找 standards 来源,按「独立进入时的来源深度搜索」中的 Standards 扩展发现顺序执行:
|
|
84
|
-
- `speculo/.speculo/.config/RULES.md`
|
|
85
|
-
- `speculo/.speculo/.config/context/`
|
|
86
|
-
- `speculo/.speculo/.config/adr/`
|
|
87
|
-
- `AGENTS.md`、`CONTRIBUTING.md`、`CLAUDE.md`
|
|
88
|
-
- `.editorconfig`、`eslint.config.*`、`biome.json`、`prettier.config.*`、`tsconfig.json`
|
|
89
|
-
- 全部缺失时记录覆盖空白说明
|
|
90
|
-
7. 机器强制的标准只记录来源,不重复检查工具已覆盖的内容。
|
|
91
|
-
8. Engineering 维度不需要外部来源,但记录将依据同目录的 `solid-checklist.md`、`security-checklist.md`、`code-quality-checklist.md`、`removal-checklist.md`(进入 Engineering 审查时按需读取)。
|
|
92
|
-
|
|
93
|
-
## 渐进披露(Engineering 维度深度清单)
|
|
94
|
-
|
|
95
|
-
- `solid-checklist.md`:SOLID 违背与架构异味
|
|
96
|
-
- `security-checklist.md`:安全漏洞、竞态、密钥、密码学
|
|
97
|
-
- `code-quality-checklist.md`:错误处理、性能、边界条件
|
|
98
|
-
- `removal-checklist.md`:死代码与删除候选
|
|
99
|
-
|
|
100
|
-
## 边界
|
|
101
|
-
|
|
102
|
-
- 不开始主观审查,先完成来源与范围收集。
|
|
103
|
-
- 找不到 spec 时不要编造;记录 `no spec available`。
|
|
104
|
-
- 找不到成文标准时记录覆盖空白,不把缺失当作"无问题"。
|
|
105
|
-
|
|
106
|
-
## 完成准则
|
|
107
|
-
|
|
108
|
-
- fixed point、diff 命令、commit 列表、diff 规模与分批策略已记录
|
|
109
|
-
- worktree 模式下已记录 change 分支树 `base_branch..change_branch` 的全部 commit
|
|
110
|
-
- standards 来源、spec 来源、关键路径已记录
|
|
111
|
-
- `.status.json` 写入 `review_fixed_point`、`review_diff_command`、`review_axes`、`standards_sources`、`spec_sources`,`review_status: collecting`
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
# Verdict & Next Steps Phase
|
|
2
|
-
|
|
3
|
-
## 输入
|
|
4
|
-
|
|
5
|
-
- `speculo/.speculo/dev/<change>/review-report.md`(三维度 findings)
|
|
6
|
-
- `.status.json` 的 `severity_summary`
|
|
7
|
-
|
|
8
|
-
## 产物
|
|
9
|
-
|
|
10
|
-
- `speculo/.speculo/dev/<change>/review-verdict.md`,由 `../_templates/review-verdict-template.md` 填写
|
|
11
|
-
|
|
12
|
-
## 填写引导
|
|
13
|
-
|
|
14
|
-
1. **严重度汇总**:统计三维度合计的 P0 / P1 / P2 / P3 计数。
|
|
15
|
-
2. **整体裁决**,依据汇总给出其一:
|
|
16
|
-
- `REQUEST_CHANGES`:存在任何 P0,或存在合并前应修复的 P1
|
|
17
|
-
- `COMMENT`:无 P0/P1,但有值得跟进的 P2/P3
|
|
18
|
-
- `APPROVE`:无阻断项,至多少量 P3
|
|
19
|
-
3. **Clean-review 诚实声明**(无论是否发现问题都必须写):
|
|
20
|
-
- **检查了什么**:覆盖到的文件 / 模块 / 维度(worktree 模式下须确认已覆盖 `base_branch..change_branch` 的每个 commit)
|
|
21
|
-
- **未覆盖什么**:未审的区域及原因(如 "未验证数据库迁移"、"大 diff 仅抽样审查了 X 模块")
|
|
22
|
-
- **残留风险**:建议补充的测试或后续验证
|
|
23
|
-
4. **后续选项**:向用户给出明确选项并等待选择,未经确认不实施修复:
|
|
24
|
-
1. 修复全部
|
|
25
|
-
2. 仅修复 P0 / P1
|
|
26
|
-
3. 修复指定项(由用户点名)
|
|
27
|
-
4. 不改动,审查到此为止
|
|
28
|
-
- 若选择修复且仓库支持,移交 `../03-tdd/03-tdd.md` 的红绿重构循环
|
|
29
|
-
- 若选择不改动且 change 已完成其使命,可移交 `../04-finalize/04-finalize.md` 归档
|
|
30
|
-
- 独立进入时(无上下游工作流),以上移交均为可选推荐,由用户决定后续路径
|
|
31
|
-
5. 用户选择修复时,移交 `../03-tdd/03-tdd.md` 的红绿重构循环执行,并在该 change 内继续维护状态。
|
|
32
|
-
|
|
33
|
-
## 边界
|
|
34
|
-
|
|
35
|
-
- 不修复代码;本阶段只裁决与确认。
|
|
36
|
-
- 不夸大或弱化裁决;裁决必须与 `severity_summary` 一致。
|
|
37
|
-
- 不把"未覆盖"伪装成"无问题"。
|
|
38
|
-
|
|
39
|
-
## 完成准则
|
|
40
|
-
|
|
41
|
-
- `review-verdict.md` 含整体裁决、严重度汇总、clean-review 三项声明、后续选项
|
|
42
|
-
- `review-verdict.md` 无残留 `[TODO:]`
|
|
43
|
-
- `.status.json` 写入 `review_verdict`,`review_status: completed`
|