@guanlin4924/devflow-pi 0.1.93 → 0.1.94
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 +6 -6
- package/package.json +1 -1
- package/plugins/devflow-core/extensions/devflow-core.ts +87 -33
- package/plugins/devflow-core/runtime/hooks/context_sync_gate.py +3 -3
- package/plugins/devflow-core/runtime/hooks/hook_common.py +65 -11
- package/plugins/devflow-core/runtime/hooks/start.py +13 -13
- package/plugins/devflow-core/skills/wireframe-proposal/SKILL.md +2 -2
- package/plugins/devflow-core/skills/wireframe-validate/SKILL.md +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/SKILL.md +19 -19
- package/plugins/devflow-core/skills/workflow-orchestrator/agents/openai.yaml +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/acceptance_test_runner.py +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/advance_state.rb +9 -9
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/api_test_matrix.py +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_assessment.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_brief.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/architecture_feasibility.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_invalidation.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_commit.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_model_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/business_source_resolver.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/checker_adapter.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/control_io.rb +51 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/cross_track_consistency_check.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/execution_contract.rb +6 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/gate_runtime.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_state.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/init_workflow.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/inspect_state.rb +13 -13
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/machine_evidence.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/manage_lessons.rb +7 -7
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_recover.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/parallel_run.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/phase_ownership.rb +6 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/repair_control_plane.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_coverage.rb +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/requirement_graph.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_preflight.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/review_run.py +18 -18
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/runtime_context_collector.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/session_rollover.rb +4 -4
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/static_runtime_context_collector.rb +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/sync_artifacts.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/tdd_evidence.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_command_policy.py +2 -2
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/test_task_binding_check.py +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/update_triage_route.rb +3 -3
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/validate_state.rb +6 -6
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_commit.rb +5 -5
- package/plugins/devflow-core/skills/workflow-orchestrator/scripts/wireframe_validate.py +1 -1
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/acceptance-remediation.yaml +12 -12
- package/plugins/devflow-core/skills/workflow-orchestrator/templates/feature-development.yaml +205 -205
- package/plugins/devflow-core/skills/workflow-pipeline/SKILL.md +3 -3
- package/plugins/devflow-core/skills/workflow-pipeline/references/pipeline-flow.md +10 -10
- package/plugins/devflow-core/skills/workflow-project-context/SKILL.md +14 -14
- package/plugins/devflow-core/skills/workflow-project-context/assets/agents-md-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-backend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-frontend-spec-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/codebase-navigation-template.md +1 -1
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-domain-index-template.md +4 -4
- package/plugins/devflow-core/skills/workflow-project-context/assets/context-spec-index-template.md +10 -10
- package/plugins/devflow-core/skills/workflow-project-context/assets/execution-contract-template.md +2 -2
- package/plugins/devflow-core/skills/workflow-project-context/assets/navigation-index-template.md +18 -18
- package/plugins/devflow-core/skills/workflow-project-context/assets/project-initialization-template.md +32 -32
- package/plugins/devflow-core/skills/workflow-project-context/assets/rules-index-template.md +30 -30
- package/plugins/devflow-core/skills/workflow-project-context/assets/state-template.md +7 -7
- package/plugins/devflow-core/skills/workflow-project-context/references/navigation-guide.md +37 -37
- package/plugins/devflow-core/skills/workflow-project-context/scripts/validate_initialization.py +16 -16
- package/plugins/devflow-design/skills/workflow-api-call-guide/SKILL.md +4 -4
- package/plugins/devflow-design/skills/workflow-api-contract/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-api-supplement/SKILL.md +5 -5
- package/plugins/devflow-design/skills/workflow-architecture-feasibility/SKILL.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/SKILL.md +39 -39
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/assets/backend-spec-template.md +10 -10
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/code-explore-guide.md +1 -1
- package/plugins/devflow-design/skills/workflow-backend-tech-spec/references/project-rule-contract.md +20 -20
- package/plugins/devflow-design/skills/workflow-design-rule-pack/SKILL.md +8 -8
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/index.md +3 -3
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/accessibility.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/component-library.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/design-systems.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/responsive-grid.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/stack-guidelines.md +6 -6
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/recommendations/ux-patterns.md +2 -2
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tokens/project-tokens.md +1 -1
- package/plugins/devflow-design/skills/workflow-design-rule-pack/assets/design/tools/ui-ux-pro-max/SKILL.md +12 -12
- package/plugins/devflow-design/skills/workflow-design-rule-pack/scripts/install.py +2 -2
- package/plugins/devflow-design/skills/workflow-feature-breakdown/SKILL.md +30 -30
- package/plugins/devflow-design/skills/workflow-feature-breakdown/assets/output-template.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/SKILL.md +41 -41
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/assets/frontend-spec-template.md +15 -15
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/affected-module-exploration.md +2 -2
- package/plugins/devflow-design/skills/workflow-frontend-tech-spec/references/project-rule-contract.md +25 -25
- package/plugins/devflow-design/skills/workflow-integration-verify/SKILL.md +13 -13
- package/plugins/devflow-design/skills/workflow-ui-spec/SKILL.md +23 -23
- package/plugins/devflow-design/skills/workflow-ui-spec/assets/ui-spec-template.md +3 -3
- package/plugins/devflow-implementation/agents/implementation-worker.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/SKILL.md +9 -9
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/lesson-format.md +2 -2
- package/plugins/devflow-implementation/skills/workflow-bug-fix/references/root-cause-ladder.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/SKILL.md +17 -17
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/code-conventions.md +1 -1
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/output-template.md +3 -3
- package/plugins/devflow-implementation/skills/workflow-change-plan/references/project-rule-contract.md +16 -16
- package/plugins/devflow-implementation/skills/workflow-execute-phase/SKILL.md +38 -38
- package/plugins/devflow-implementation/skills/workflow-execute-phase/references/execute-phase.md +1 -1
- package/plugins/devflow-intel/agents/project-scout.md +1 -1
- package/plugins/devflow-intel/extensions/devflow-intel.ts +20 -19
- package/plugins/devflow-intel/skills/code-index-query/SKILL.md +6 -6
- package/plugins/devflow-intel/skills/workflow-code-index/SKILL.md +12 -12
- package/plugins/devflow-intel/skills/workflow-code-index/references/discovery.md +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/references/query-guide.md +1 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/code_index.py +8 -8
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/discovery.py +2 -2
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/core/scanner.py +4 -1
- package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py +4 -4
- package/plugins/devflow-intel/skills/workflow-context-sync/SKILL.md +14 -14
- package/plugins/devflow-intel/skills/workflow-context-sync/scripts/context_sync_cursor.py +2 -2
- package/plugins/devflow-intel/skills/workflow-update-navigation/SKILL.md +26 -26
- package/plugins/devflow-intel/skills/workflow-update-navigation/references/incremental-update-guide.md +2 -2
- package/plugins/devflow-quality/skills/code-review/SKILL.md +12 -12
- package/plugins/devflow-quality/skills/code-review/references/spec-checklist.md +1 -1
- package/plugins/devflow-quality/skills/workflow-acceptance-test-design/SKILL.md +8 -8
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/SKILL.md +6 -6
- package/plugins/devflow-quality/skills/workflow-gen-test-guide/legacy/SKILL.md +14 -14
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/SKILL.md +23 -23
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/codebase-discovery.md +9 -9
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/references/project-dsl-contract.md +1 -1
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py +2 -2
- package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/discover_codebases.py +2 -2
- package/plugins/devflow-quality/skills/workflow-release-closeout/SKILL.md +15 -15
- package/plugins/devflow-quality/skills/workflow-run-acceptance-tests/SKILL.md +5 -5
- package/plugins/devflow-requirements/skills/requirement-feasibility-review/SKILL.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-demand-clarify/SKILL.md +10 -10
- package/plugins/devflow-requirements/skills/workflow-domain-modeling/SKILL.md +25 -25
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/SKILL.md +49 -49
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/assets/baseline-template.md +22 -22
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/antipatterns.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/challenge-review-guide.md +3 -3
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/project-context-guide.md +11 -11
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/questioning.md +1 -1
- package/plugins/devflow-requirements/skills/workflow-requirement-baseline/references/requirement-review-checklist.md +4 -4
- package/plugins/devflow-requirements/skills/workflow-requirement-triage/SKILL.md +16 -16
- package/plugins/devflow-requirements/skills/workflow-wayfinder/SKILL.md +6 -6
- package/src/cli.ts +15 -0
- package/src/constants.ts +1 -1
- package/src/initialization-store.ts +3 -2
- package/src/project-context.ts +36 -14
- package/src/project-documents.ts +61 -61
- package/src/project-initializer.ts +9 -8
- package/src/project-layout.ts +217 -0
- package/src/runtime.ts +3 -3
- package/templates/commands/start.md +4 -4
- package/templates/omp/AGENTS.md +1 -1
- package/templates/omp/hook-config.json +7 -7
- package/templates/omp/index-policy.json +8 -8
|
@@ -10,10 +10,10 @@ description: "Use after workflow-execute-phase to bind frozen API/page TC accept
|
|
|
10
10
|
## Hard Rules
|
|
11
11
|
|
|
12
12
|
- MUST NOT hardcode `platform-backend` or `platform-frontend`.
|
|
13
|
-
- MUST derive code roots from `.planning/navigation` and `.context/spec`.
|
|
14
|
-
- MUST use `.planning/code-index/` for fine-grained entrypoint, route, component, API, call, import, and data-flow evidence when present.
|
|
13
|
+
- MUST derive code roots from `.devflow/planning/navigation` and `.devflow/context/spec`.
|
|
14
|
+
- MUST use `.devflow/planning/code-index/` for fine-grained entrypoint, route, component, API, call, import, and data-flow evidence when present.
|
|
15
15
|
- MUST only generate `api-mainflow` and `ui-mainflow` cases.
|
|
16
|
-
- MUST read the frozen `.planning/requirements/{feature}/tests.json` before selecting case scope. Only frozen positive `TC-*` with `test_type: api` or `page` may produce mainflow cases. Core-generated API TC carrying `execution.expect.error_code` is a negative/exception case and is excluded here; it is executed by `run-acceptance-tests`.
|
|
16
|
+
- MUST read the frozen `.devflow/planning/requirements/{feature}/tests.json` before selecting case scope. Only frozen positive `TC-*` with `test_type: api` or `page` may produce mainflow cases. Core-generated API TC carrying `execution.expect.error_code` is a negative/exception case and is excluded here; it is executed by `run-acceptance-tests`.
|
|
17
17
|
- MUST NOT read `SUMMARY.md`, delivery self-reports, or diffs to decide what to test. Current code is allowed only to bind an already frozen TC to an entrypoint, selector, request, or runner adapter.
|
|
18
18
|
- MUST run `scripts/compile_dsl.py` before final output.
|
|
19
19
|
- MUST run `scripts/validate_case_payloads.py` before reporting success.
|
|
@@ -32,14 +32,14 @@ The workflow step id is `generate-mainflow-cases`, order `86`, and it depends on
|
|
|
32
32
|
|
|
33
33
|
Always create or update:
|
|
34
34
|
|
|
35
|
-
- `.planning/generated-cases/{feature}/source-map.md`
|
|
36
|
-
- `.planning/generated-cases/{feature}/mainflow-analysis.md`
|
|
37
|
-
- `.planning/generated-cases/{feature}/case-descriptions.json`
|
|
38
|
-
- `.planning/generated-cases/{feature}/case-import-payloads.json`
|
|
39
|
-
- `.planning/generated-cases/{feature}/validation-report.md`
|
|
40
|
-
- `.planning/phases/{phase}/MAINFLOW-CASES.md`
|
|
35
|
+
- `.devflow/planning/generated-cases/{feature}/source-map.md`
|
|
36
|
+
- `.devflow/planning/generated-cases/{feature}/mainflow-analysis.md`
|
|
37
|
+
- `.devflow/planning/generated-cases/{feature}/case-descriptions.json`
|
|
38
|
+
- `.devflow/planning/generated-cases/{feature}/case-import-payloads.json`
|
|
39
|
+
- `.devflow/planning/generated-cases/{feature}/validation-report.md`
|
|
40
|
+
- `.devflow/planning/phases/{phase}/MAINFLOW-CASES.md`
|
|
41
41
|
|
|
42
|
-
The discovery script also writes support artifact `.planning/generated-cases/{feature}/codebase-discovery.json`.
|
|
42
|
+
The discovery script also writes support artifact `.devflow/planning/generated-cases/{feature}/codebase-discovery.json`.
|
|
43
43
|
|
|
44
44
|
## Resource Loading
|
|
45
45
|
|
|
@@ -53,29 +53,29 @@ Read these references before generating cases:
|
|
|
53
53
|
|
|
54
54
|
## Process
|
|
55
55
|
|
|
56
|
-
1. Read `.planning/STATE.md` and resolve `{feature}` and `{phase}`.
|
|
56
|
+
1. Read `.devflow/planning/STATE.md` and resolve `{feature}` and `{phase}`.
|
|
57
57
|
2. Run codebase discovery:
|
|
58
58
|
|
|
59
59
|
```text
|
|
60
|
-
devflow_mainflow(action="discover", args=["--output", ".planning/generated-cases/{feature}/codebase-discovery.json"])
|
|
60
|
+
devflow_mainflow(action="discover", args=["--output", ".devflow/planning/generated-cases/{feature}/codebase-discovery.json"])
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
Stop if it exits non-zero.
|
|
64
64
|
|
|
65
65
|
3. Read the frozen TC suite first. Record the source `TC-*` for every selected mainflow case; a missing or stale source TC is a blocker. Then read planning inputs when present:
|
|
66
|
-
- `.planning/requirements/baseline.md`
|
|
67
|
-
- `.planning/features/{feature}/功能点梳理.md`
|
|
68
|
-
- `.planning/features/{feature}/UI-SPEC.md`
|
|
69
|
-
- `.planning/features/{feature}/前端技术方案.md`
|
|
70
|
-
- `.planning/features/{feature}/后端技术方案.md`
|
|
71
|
-
- `.planning/features/{feature}/变更清单.md`
|
|
72
|
-
- `.planning/features/{feature}/PROGRESS.md`
|
|
66
|
+
- `.devflow/planning/requirements/baseline.md`
|
|
67
|
+
- `.devflow/planning/features/{feature}/功能点梳理.md`
|
|
68
|
+
- `.devflow/planning/features/{feature}/UI-SPEC.md`
|
|
69
|
+
- `.devflow/planning/features/{feature}/前端技术方案.md`
|
|
70
|
+
- `.devflow/planning/features/{feature}/后端技术方案.md`
|
|
71
|
+
- `.devflow/planning/features/{feature}/变更清单.md`
|
|
72
|
+
- `.devflow/planning/features/{feature}/PROGRESS.md`
|
|
73
73
|
|
|
74
74
|
4. Read discovery output, then read each discovered codebase's navigation and spec files. Select scan targets by codebase type:
|
|
75
75
|
- Backend: router/controller, service/usecase, schema/dto/request/response, model/entity, API entry.
|
|
76
76
|
- Frontend: router, pages/views, api/client, types/contracts, stores/hooks/components related to the feature.
|
|
77
77
|
|
|
78
|
-
5. If `.planning/code-index/` exists, query symbols and relations for candidate entrypoints and mainflow paths:
|
|
78
|
+
5. If `.devflow/planning/code-index/` exists, query symbols and relations for candidate entrypoints and mainflow paths:
|
|
79
79
|
- Backend/API: `routes_to`, `calls`, `reads`, `writes`, `config_uses`, `tested_by`.
|
|
80
80
|
- Frontend/UI: route/page/component symbols, `routes_to`, `imports`, `calls` into API clients, store/hook relations.
|
|
81
81
|
Read `evidence_path:evidence_line` before using an edge in case selection.
|
|
@@ -86,7 +86,7 @@ Read these references before generating cases:
|
|
|
86
86
|
10. Compile descriptions into strict DSL:
|
|
87
87
|
|
|
88
88
|
```text
|
|
89
|
-
devflow_mainflow(action="compile", args=[".planning/generated-cases/{feature}/case-descriptions.json", "--output", ".planning/generated-cases/{feature}/case-import-payloads.json"])
|
|
89
|
+
devflow_mainflow(action="compile", args=[".devflow/planning/generated-cases/{feature}/case-descriptions.json", "--output", ".devflow/planning/generated-cases/{feature}/case-import-payloads.json"])
|
|
90
90
|
```
|
|
91
91
|
|
|
92
92
|
Stop if it exits non-zero. The compiler owns all target key selection, strategy decisions, and assertion formatting.
|
|
@@ -94,12 +94,12 @@ Read these references before generating cases:
|
|
|
94
94
|
11. Validate compiled payloads:
|
|
95
95
|
|
|
96
96
|
```text
|
|
97
|
-
devflow_mainflow(action="validate", args=[".planning/generated-cases/{feature}/case-import-payloads.json", "--discovery", ".planning/generated-cases/{feature}/codebase-discovery.json", "--output", ".planning/generated-cases/{feature}/validation-report.md"])
|
|
97
|
+
devflow_mainflow(action="validate", args=[".devflow/planning/generated-cases/{feature}/case-import-payloads.json", "--discovery", ".devflow/planning/generated-cases/{feature}/codebase-discovery.json", "--output", ".devflow/planning/generated-cases/{feature}/validation-report.md"])
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
Stop if it exits non-zero.
|
|
101
101
|
|
|
102
|
-
11. Write `.planning/phases/{phase}/MAINFLOW-CASES.md` summarizing:
|
|
102
|
+
11. Write `.devflow/planning/phases/{phase}/MAINFLOW-CASES.md` summarizing:
|
|
103
103
|
- Generated case count by tag.
|
|
104
104
|
- Import payload path.
|
|
105
105
|
- Validation status.
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
# Codebase Discovery
|
|
2
2
|
|
|
3
|
-
Use discovery before reading feature source files. The goal is to make the skill portable across projects that have valid `.planning` and `.context/spec` initialization artifacts.
|
|
3
|
+
Use discovery before reading feature source files. The goal is to make the skill portable across projects that have valid `.devflow/planning` and `.devflow/context/spec` initialization artifacts.
|
|
4
4
|
|
|
5
5
|
## Required Sources
|
|
6
6
|
|
|
7
7
|
Read and cross-check:
|
|
8
8
|
|
|
9
|
-
- `.planning/STATE.md`
|
|
10
|
-
- `.planning/navigation/INDEX.md`
|
|
11
|
-
- `.context/spec/index.md`
|
|
12
|
-
- `.planning/navigation/{CODEBASE}.md`
|
|
13
|
-
- `.context/spec/{domain}/{CODEBASE}.md`
|
|
9
|
+
- `.devflow/planning/STATE.md`
|
|
10
|
+
- `.devflow/planning/navigation/INDEX.md`
|
|
11
|
+
- `.devflow/context/spec/index.md`
|
|
12
|
+
- `.devflow/planning/navigation/{CODEBASE}.md`
|
|
13
|
+
- `.devflow/context/spec/{domain}/{CODEBASE}.md`
|
|
14
14
|
|
|
15
15
|
Do not infer code roots from common directory names. Treat the navigation/spec registry as the source of truth.
|
|
16
16
|
|
|
@@ -19,13 +19,13 @@ Do not infer code roots from common directory names. Treat the navigation/spec r
|
|
|
19
19
|
Run:
|
|
20
20
|
|
|
21
21
|
```text
|
|
22
|
-
devflow_mainflow(action="discover", args=["--output", ".planning/generated-cases/{feature}/codebase-discovery.json"])
|
|
22
|
+
devflow_mainflow(action="discover", args=["--output", ".devflow/planning/generated-cases/{feature}/codebase-discovery.json"])
|
|
23
23
|
```
|
|
24
24
|
|
|
25
25
|
The script must fail if:
|
|
26
26
|
|
|
27
|
-
- `.planning/navigation/INDEX.md` is missing.
|
|
28
|
-
- `.context/spec/index.md` is missing.
|
|
27
|
+
- `.devflow/planning/navigation/INDEX.md` is missing.
|
|
28
|
+
- `.devflow/context/spec/index.md` is missing.
|
|
29
29
|
- A registered codebase lacks a root path, navigation path, or spec path.
|
|
30
30
|
- A registered root path does not exist.
|
|
31
31
|
- A registered navigation/spec file does not exist.
|
|
@@ -25,7 +25,7 @@ Legacy normalization input is an object with metadata and cases:
|
|
|
25
25
|
},
|
|
26
26
|
"source_evidence": [
|
|
27
27
|
{
|
|
28
|
-
"path": ".planning/features/Feature/后端技术方案.md",
|
|
28
|
+
"path": ".devflow/planning/features/Feature/后端技术方案.md",
|
|
29
29
|
"line": 120,
|
|
30
30
|
"reason": "API contract source"
|
|
31
31
|
}
|
package/plugins/devflow-quality/skills/workflow-generate-mainflow-cases/scripts/compile_dsl.py
CHANGED
|
@@ -559,13 +559,13 @@ def compile_all(payload: dict[str, Any], frozen_mainflow_tc_ids: set[str] | None
|
|
|
559
559
|
|
|
560
560
|
def frozen_mainflow_tc_ids_from_cwd(cwd: Path) -> set[str] | None:
|
|
561
561
|
"""Return the frozen API/page suite for new workflows, else preserve legacy compilation."""
|
|
562
|
-
state_path = cwd / ".planning" / "STATE.md"
|
|
562
|
+
state_path = cwd / ".devflow/planning" / "STATE.md"
|
|
563
563
|
if not state_path.is_file():
|
|
564
564
|
return None
|
|
565
565
|
match = re.search(r"^current_feature:\s*['\"]?([^'\"\n]+)", state_path.read_text(encoding="utf-8"), re.MULTILINE)
|
|
566
566
|
if not match:
|
|
567
567
|
return None
|
|
568
|
-
suite_path = cwd / ".planning" / "requirements" / match.group(1).strip() / "tests.json"
|
|
568
|
+
suite_path = cwd / ".devflow/planning" / "requirements" / match.group(1).strip() / "tests.json"
|
|
569
569
|
if not suite_path.is_file():
|
|
570
570
|
return None
|
|
571
571
|
suite = json.loads(suite_path.read_text(encoding="utf-8"))
|
|
@@ -10,8 +10,8 @@ from datetime import datetime, timezone
|
|
|
10
10
|
from pathlib import Path
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
NAV_INDEX = Path(".planning/navigation/INDEX.md")
|
|
14
|
-
SPEC_INDEX = Path(".context/spec/index.md")
|
|
13
|
+
NAV_INDEX = Path(".devflow/planning/navigation/INDEX.md")
|
|
14
|
+
SPEC_INDEX = Path(".devflow/context/spec/index.md")
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
def clean_cell(value: str) -> str:
|
|
@@ -11,13 +11,13 @@ description: "在冻结需求验收测试全部通过后,执行 Devflow 自有
|
|
|
11
11
|
|
|
12
12
|
## 必须读取
|
|
13
13
|
|
|
14
|
-
- `.planning/requirements/{feature}/tests.json`
|
|
15
|
-
- `.planning/test-runs/{feature}/acceptance-results.json`
|
|
16
|
-
- `.planning/features/{feature}/变更清单.md`
|
|
17
|
-
- `.planning/code-index/AUDIT.md`
|
|
18
|
-
- `.planning/PROJECT.md`
|
|
19
|
-
- `.planning/STATE.md`
|
|
20
|
-
- `.planning/navigation/INDEX.md`
|
|
14
|
+
- `.devflow/planning/requirements/{feature}/tests.json`
|
|
15
|
+
- `.devflow/planning/test-runs/{feature}/acceptance-results.json`
|
|
16
|
+
- `.devflow/planning/features/{feature}/变更清单.md`
|
|
17
|
+
- `.devflow/planning/code-index/AUDIT.md`
|
|
18
|
+
- `.devflow/planning/PROJECT.md`
|
|
19
|
+
- `.devflow/planning/STATE.md`
|
|
20
|
+
- `.devflow/planning/navigation/INDEX.md`
|
|
21
21
|
|
|
22
22
|
## 归档前置条件(全部满足)
|
|
23
23
|
|
|
@@ -32,17 +32,17 @@ description: "在冻结需求验收测试全部通过后,执行 Devflow 自有
|
|
|
32
32
|
## 收口动作
|
|
33
33
|
|
|
34
34
|
1. 读取 Core-owned `acceptance-results.json`,计算通过/失败/阻塞数量。
|
|
35
|
-
2. 更新 `.planning/navigation/INDEX.md`,记录本次 code-index revision 和验收结果 fingerprint。
|
|
36
|
-
3. 在 `.planning/milestones/` 写入本版本的 ROADMAP、需求覆盖、测试结果、变更清单和已接受风险摘要。
|
|
37
|
-
4. 更新 `.planning/PROJECT.md` 的当前版本与下一步目标。
|
|
38
|
-
5. 通过 Core 状态工具更新 `.planning/STATE.md`,将当前 feature 标记为完成。
|
|
35
|
+
2. 更新 `.devflow/planning/navigation/INDEX.md`,记录本次 code-index revision 和验收结果 fingerprint。
|
|
36
|
+
3. 在 `.devflow/planning/milestones/` 写入本版本的 ROADMAP、需求覆盖、测试结果、变更清单和已接受风险摘要。
|
|
37
|
+
4. 更新 `.devflow/planning/PROJECT.md` 的当前版本与下一步目标。
|
|
38
|
+
5. 通过 Core 状态工具更新 `.devflow/planning/STATE.md`,将当前 feature 标记为完成。
|
|
39
39
|
6. 归档写入完成后才允许创建 git tag;是否提交或推送由用户明确决定。
|
|
40
40
|
|
|
41
41
|
## 输出
|
|
42
42
|
|
|
43
|
-
- `.planning/milestones/{version}-CLOSEOUT.md`
|
|
44
|
-
- 更新后的 `.planning/PROJECT.md`
|
|
45
|
-
- 更新后的 `.planning/STATE.md`
|
|
46
|
-
- 更新后的 `.planning/navigation/INDEX.md`
|
|
43
|
+
- `.devflow/planning/milestones/{version}-CLOSEOUT.md`
|
|
44
|
+
- 更新后的 `.devflow/planning/PROJECT.md`
|
|
45
|
+
- 更新后的 `.devflow/planning/STATE.md`
|
|
46
|
+
- 更新后的 `.devflow/planning/navigation/INDEX.md`
|
|
47
47
|
|
|
48
48
|
归档文件是结果摘要,不是通过依据;唯一的验收真相是 Core-owned `acceptance-results.json` 和 code-index 审计结果。
|
|
@@ -11,7 +11,7 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
11
11
|
|
|
12
12
|
测试意图只能读取:
|
|
13
13
|
|
|
14
|
-
- `.planning/requirements/{feature}/tests.json` 中已冻结且未 stale 的 `TC-*`;
|
|
14
|
+
- `.devflow/planning/requirements/{feature}/tests.json` 中已冻结且未 stale 的 `TC-*`;
|
|
15
15
|
- 图谱中被 TC 引用的已确认 REQ / BR / BC / AC、契约与架构风险;
|
|
16
16
|
- 初始化发现的测试工具链能力。
|
|
17
17
|
|
|
@@ -19,7 +19,7 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
19
19
|
|
|
20
20
|
禁止读取或使用以下内容来扩大、缩小或补造验收范围:
|
|
21
21
|
|
|
22
|
-
- `.planning/phases/{phase}/SUMMARY.md`;
|
|
22
|
+
- `.devflow/planning/phases/{phase}/SUMMARY.md`;
|
|
23
23
|
- agent 的交付自述、代码 diff 或“已完成”结论;
|
|
24
24
|
- 未冻结的临时需求列表。
|
|
25
25
|
|
|
@@ -29,7 +29,7 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
29
29
|
2. 读取冻结 TC 与其 oracle、前置数据、身份和自动化模式。
|
|
30
30
|
对 `api_refs`、`workload_refs` 和 `risk_refs` 指向的专项用例,保留其契约、性能/迁移或韧性义务;没有适配器或环境时必须写为 blocked,不能用普通主流程替代。
|
|
31
31
|
3. 读取代码审查报告、代码索引和实际源码,仅为每个 TC 绑定运行适配器;不得改变 TC 的断言、范围或预期。
|
|
32
|
-
4. 写入 `.planning/features/{feature}/acceptance-test-bindings.json`:
|
|
32
|
+
4. 写入 `.devflow/planning/features/{feature}/acceptance-test-bindings.json`:
|
|
33
33
|
- 固定 `test_suite.graph_revision` 与 `fingerprint`;
|
|
34
34
|
- 每个 TC 恰好一条绑定;
|
|
35
35
|
- `mode` 必须与冻结 TC 的 `automation_mode` 一致;
|
|
@@ -44,7 +44,7 @@ description: "Execute the frozen TC acceptance suite after code review. Use the
|
|
|
44
44
|
|
|
45
45
|
## 输出
|
|
46
46
|
|
|
47
|
-
- `.planning/features/{feature}/acceptance-test-bindings.json`
|
|
48
|
-
- `.planning/test-runs/{feature}/acceptance-results.json`
|
|
47
|
+
- `.devflow/planning/features/{feature}/acceptance-test-bindings.json`
|
|
48
|
+
- `.devflow/planning/test-runs/{feature}/acceptance-results.json`
|
|
49
49
|
|
|
50
50
|
`acceptance-results.json` 是 Core-owned 的执行事实;Markdown 结论不能替代它。
|
|
@@ -15,7 +15,7 @@ In the main delivery chain, run this skill after `workflow-wayfinder` and `workf
|
|
|
15
15
|
|
|
16
16
|
Read the raw requirement, meeting decisions, relevant existing requirement artifacts, and only the project/context sources needed to verify claims. Treat a later confirmed meeting decision as higher priority than an earlier conflicting PRD statement.
|
|
17
17
|
|
|
18
|
-
If the project has `.planning/requirements/{feature}/`, create or update:
|
|
18
|
+
If the project has `.devflow/planning/requirements/{feature}/`, create or update:
|
|
19
19
|
|
|
20
20
|
- `可实现性审查.md`
|
|
21
21
|
- `可实现性审查.meta.json`
|
|
@@ -13,7 +13,7 @@ user-invocable: true
|
|
|
13
13
|
pattern: inversion+generator
|
|
14
14
|
inputs:
|
|
15
15
|
- 用户的一句话需求/场景描述/业务反馈
|
|
16
|
-
output: .planning/requirements/{功能名}/需求澄清记录.md
|
|
16
|
+
output: .devflow/planning/requirements/{功能名}/需求澄清记录.md
|
|
17
17
|
phase-gate:
|
|
18
18
|
step1: 场景共建:强制反讲确认业务故事
|
|
19
19
|
step2: 决策驱动:L1-L4 分层决策树问答
|
|
@@ -37,7 +37,7 @@ allowed-tools:
|
|
|
37
37
|
|
|
38
38
|
## Phase 0 — Wayfinder Ticket 检查
|
|
39
39
|
|
|
40
|
-
开始前读取 `.planning/requirements/{功能名}/wayfinder/WF-*.md`:
|
|
40
|
+
开始前读取 `.devflow/planning/requirements/{功能名}/wayfinder/WF-*.md`:
|
|
41
41
|
|
|
42
42
|
- 仅在当前 Wayfinder Grilling ticket 明确要求一轮 L1-L4 访谈时继续。
|
|
43
43
|
- 若不存在对应 ticket,先执行或回到 `workflow-wayfinder`;不要从分诊直接进入澄清。
|
|
@@ -69,8 +69,8 @@ allowed-tools:
|
|
|
69
69
|
|
|
70
70
|
Always create or update:
|
|
71
71
|
|
|
72
|
-
- `.planning/requirements/{功能名}/需求澄清记录.md` — 包含场景清单、决策日志、分级任务单
|
|
73
|
-
- `.planning/requirements/{功能名}/需求澄清记录.meta.json` — 结构化元数据
|
|
72
|
+
- `.devflow/planning/requirements/{功能名}/需求澄清记录.md` — 包含场景清单、决策日志、分级任务单
|
|
73
|
+
- `.devflow/planning/requirements/{功能名}/需求澄清记录.meta.json` — 结构化元数据
|
|
74
74
|
|
|
75
75
|
### 输出契约(下游消费约定)
|
|
76
76
|
|
|
@@ -81,8 +81,8 @@ Always create or update:
|
|
|
81
81
|
3. **分级任务单** → 核心确定区的 FP 直接进入 baseline;假设验证区的 BR 标记为待确认
|
|
82
82
|
|
|
83
83
|
本技能不输出的内容(留给下游负责):
|
|
84
|
-
- `.planning/requirements/baseline.md` — 由 workflow-requirement-baseline 生成
|
|
85
|
-
- `.planning/features/{功能名}/功能点梳理.md` — 由 workflow-feature-breakdown 生成
|
|
84
|
+
- `.devflow/planning/requirements/baseline.md` — 由 workflow-requirement-baseline 生成
|
|
85
|
+
- `.devflow/planning/features/{功能名}/功能点梳理.md` — 由 workflow-feature-breakdown 生成
|
|
86
86
|
- 任何技术方案 — 由 workflow-frontend/backend-tech-spec 生成
|
|
87
87
|
|
|
88
88
|
## 第一阶段:场景共建
|
|
@@ -203,7 +203,7 @@ Always create or update:
|
|
|
203
203
|
- 单个答案会改变大部分后续问题。
|
|
204
204
|
- 预计要拆多个 active slice 才能写出可靠 baseline。
|
|
205
205
|
|
|
206
|
-
切换时写入 `需求澄清记录.md` 的"转探索原因",并创建或更新 `.planning/requirements/{功能名}/决策地图.md`。后续由 `workflow-wayfinder` 维护 Destination / Frontier / Fog / Out of Scope 和 Research / Prototype / Grilling / Task ticket。
|
|
206
|
+
切换时写入 `需求澄清记录.md` 的"转探索原因",并创建或更新 `.devflow/planning/requirements/{功能名}/决策地图.md`。后续由 `workflow-wayfinder` 维护 Destination / Frontier / Fog / Out of Scope 和 Research / Prototype / Grilling / Task ticket。
|
|
207
207
|
|
|
208
208
|
## 第二阶段.5 — 领域词汇维护(调用 workflow-domain-modeling 纪律)
|
|
209
209
|
|
|
@@ -225,7 +225,7 @@ Always create or update:
|
|
|
225
225
|
|
|
226
226
|
### 写入规则
|
|
227
227
|
|
|
228
|
-
写入 `.planning/CONTEXT.md`:
|
|
228
|
+
写入 `.devflow/planning/CONTEXT.md`:
|
|
229
229
|
|
|
230
230
|
```markdown
|
|
231
231
|
## 词汇表
|
|
@@ -236,8 +236,8 @@ Always create or update:
|
|
|
236
236
|
| 订单快照 | 订单状态变更时的全字段副本 | 当前订单主表最新值 |
|
|
237
237
|
```
|
|
238
238
|
|
|
239
|
-
如果 `.planning/CONTEXT.md` 不存在,创建它。
|
|
240
|
-
来源、决策层级、对应需求和术语变更历史写入 `.planning/requirements/{功能名}/领域模型记录.md`,不要写入 CONTEXT.md。
|
|
239
|
+
如果 `.devflow/planning/CONTEXT.md` 不存在,创建它。
|
|
240
|
+
来源、决策层级、对应需求和术语变更历史写入 `.devflow/planning/requirements/{功能名}/领域模型记录.md`,不要写入 CONTEXT.md。
|
|
241
241
|
|
|
242
242
|
### 术语冲突处理
|
|
243
243
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-domain-modeling
|
|
3
|
-
description: "Use as the mandatory domain-modeling step after workflow-wayfinder and before requirement-feasibility-review; also use during later clarification or planning when domain terms, business concepts, status names, ownership, or decision records may be ambiguous. Challenges the glossary, stress-tests relationships, updates .planning/CONTEXT.md, and creates ADR notes only for hard-to-reverse surprising trade-offs."
|
|
3
|
+
description: "Use as the mandatory domain-modeling step after workflow-wayfinder and before requirement-feasibility-review; also use during later clarification or planning when domain terms, business concepts, status names, ownership, or decision records may be ambiguous. Challenges the glossary, stress-tests relationships, updates .devflow/planning/CONTEXT.md, and creates ADR notes only for hard-to-reverse surprising trade-offs."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Workflow: Domain Modeling(领域模型主动维护)
|
|
@@ -11,25 +11,25 @@ description: "Use as the mandatory domain-modeling step after workflow-wayfinder
|
|
|
11
11
|
|
|
12
12
|
Always update when changes are found:
|
|
13
13
|
|
|
14
|
-
- `.planning/CONTEXT.md`
|
|
15
|
-
- `.planning/requirements/{功能名}/领域模型记录.md`
|
|
16
|
-
- `.planning/requirements/{功能名}/领域模型记录.meta.json`
|
|
14
|
+
- `.devflow/planning/CONTEXT.md`
|
|
15
|
+
- `.devflow/planning/requirements/{功能名}/领域模型记录.md`
|
|
16
|
+
- `.devflow/planning/requirements/{功能名}/领域模型记录.meta.json`
|
|
17
17
|
|
|
18
18
|
Only create ADR when the ADR gate passes:
|
|
19
19
|
|
|
20
|
-
- `.planning/adr/{编号}-{slug}.md`
|
|
20
|
+
- `.devflow/planning/adr/{编号}-{slug}.md`
|
|
21
21
|
|
|
22
22
|
## Phase 1 — Load Existing Language
|
|
23
23
|
|
|
24
24
|
Read, if present:
|
|
25
25
|
|
|
26
|
-
1. `.planning/CONTEXT.md`
|
|
27
|
-
2. `.planning/requirements/{功能名}/决策地图.md`
|
|
28
|
-
3. `.planning/requirements/{功能名}/wayfinder/WF-*.md` 中已解决 ticket
|
|
29
|
-
4. `.planning/requirements/baseline.md`
|
|
30
|
-
5. `.planning/features/**/需求梳理.md`
|
|
31
|
-
6. `.planning/features/**/需求澄清记录.md`
|
|
32
|
-
7. `.planning/*/CONTEXT.md`
|
|
26
|
+
1. `.devflow/planning/CONTEXT.md`
|
|
27
|
+
2. `.devflow/planning/requirements/{功能名}/决策地图.md`
|
|
28
|
+
3. `.devflow/planning/requirements/{功能名}/wayfinder/WF-*.md` 中已解决 ticket
|
|
29
|
+
4. `.devflow/planning/requirements/baseline.md`
|
|
30
|
+
5. `.devflow/planning/features/**/需求梳理.md`
|
|
31
|
+
6. `.devflow/planning/features/**/需求澄清记录.md`
|
|
32
|
+
7. `.devflow/planning/*/CONTEXT.md`
|
|
33
33
|
8. Relevant source names from navigation: model names, table names, enum/status constants, route names, page titles
|
|
34
34
|
|
|
35
35
|
Do not load broad source bodies unless a term conflict depends on exact code behavior.
|
|
@@ -38,7 +38,7 @@ Do not load broad source bodies unless a term conflict depends on exact code beh
|
|
|
38
38
|
|
|
39
39
|
For each important term in the current conversation or artifact:
|
|
40
40
|
|
|
41
|
-
1. **Existing definition check**: does `.planning/CONTEXT.md` already define it?
|
|
41
|
+
1. **Existing definition check**: does `.devflow/planning/CONTEXT.md` already define it?
|
|
42
42
|
2. **Collision check**: is the same word used for multiple concepts?
|
|
43
43
|
3. **Synonym check**: are multiple words used for the same concept?
|
|
44
44
|
4. **Code-language check**: do routes, models, fields, enum constants, and UI labels use different names?
|
|
@@ -65,7 +65,7 @@ For each core relationship, invent at least two edge cases to test whether the d
|
|
|
65
65
|
|
|
66
66
|
If an edge case changes the meaning of a term, update the glossary or create a pending question. Do not turn edge cases into new scope automatically.
|
|
67
67
|
|
|
68
|
-
## Phase 4 — Update `.planning/CONTEXT.md`
|
|
68
|
+
## Phase 4 — Update `.devflow/planning/CONTEXT.md`
|
|
69
69
|
|
|
70
70
|
Use this section shape:
|
|
71
71
|
|
|
@@ -81,7 +81,7 @@ Rules:
|
|
|
81
81
|
- Definition must be domain-facing, not implementation-facing.
|
|
82
82
|
- Add `反例/不包括` whenever a term could be confused with a neighbor concept.
|
|
83
83
|
- Preserve existing terms unless the user confirmed a replacement.
|
|
84
|
-
- Keep `.planning/CONTEXT.md` pure glossary. Do not store implementation details, FP/BR/BC IDs, source paths, requirement traceability, decision levels, or change history in it.
|
|
84
|
+
- Keep `.devflow/planning/CONTEXT.md` pure glossary. Do not store implementation details, FP/BR/BC IDs, source paths, requirement traceability, decision levels, or change history in it.
|
|
85
85
|
- If a definition changes, record the old definition, new definition, reason, source, decision level, related requirement, and edge cases in `领域模型记录.md`.
|
|
86
86
|
|
|
87
87
|
Use `领域模型记录.md` for traceability:
|
|
@@ -106,7 +106,7 @@ Create an ADR only when all three conditions are true:
|
|
|
106
106
|
2. **Surprising**: a future developer could reasonably choose a different direction without this record.
|
|
107
107
|
3. **Real trade-off**: at least two credible options exist and each has a cost.
|
|
108
108
|
|
|
109
|
-
If any condition is false, record the decision in `领域模型记录.md` or `.planning/CONTEXT.md`, not ADR.
|
|
109
|
+
If any condition is false, record the decision in `领域模型记录.md` or `.devflow/planning/CONTEXT.md`, not ADR.
|
|
110
110
|
|
|
111
111
|
ADR template:
|
|
112
112
|
|
|
@@ -153,15 +153,15 @@ Submit bounded candidates through `devflow_requirement_graph`: use `term` for sh
|
|
|
153
153
|
When this run adds or changes domain language, replace `<feature>` and run:
|
|
154
154
|
|
|
155
155
|
```bash
|
|
156
|
-
test -s .planning/CONTEXT.md
|
|
157
|
-
test -s .planning/requirements/<feature>/领域模型记录.md
|
|
158
|
-
python3 -m json.tool .planning/requirements/<feature>/领域模型记录.meta.json >/dev/null
|
|
159
|
-
grep -q '"feature_name"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
160
|
-
grep -q '"terms_added"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
161
|
-
grep -q '"terms_changed"' .planning/requirements/<feature>/领域模型记录.meta.json
|
|
162
|
-
grep -q '## 词汇表' .planning/CONTEXT.md
|
|
163
|
-
grep -q '## 术语变更记录' .planning/requirements/<feature>/领域模型记录.md
|
|
164
|
-
grep -q '## 边缘案例压测' .planning/requirements/<feature>/领域模型记录.md
|
|
156
|
+
test -s .devflow/planning/CONTEXT.md
|
|
157
|
+
test -s .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
158
|
+
python3 -m json.tool .devflow/planning/requirements/<feature>/领域模型记录.meta.json >/dev/null
|
|
159
|
+
grep -q '"feature_name"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
160
|
+
grep -q '"terms_added"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
161
|
+
grep -q '"terms_changed"' .devflow/planning/requirements/<feature>/领域模型记录.meta.json
|
|
162
|
+
grep -q '## 词汇表' .devflow/planning/CONTEXT.md
|
|
163
|
+
grep -q '## 术语变更记录' .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
164
|
+
grep -q '## 边缘案例压测' .devflow/planning/requirements/<feature>/领域模型记录.md
|
|
165
165
|
```
|
|
166
166
|
|
|
167
167
|
Pass only when every command exits with code 0, the metadata is valid JSON with the required counters, and each changed term has both a domain-facing glossary definition and a traceability record. If no language changed, record that no-change conclusion in the feature's domain-model record; do not create an ADR. If a check fails, repair the glossary, record, or metadata before continuing to baseline or technical planning.
|