@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
|
@@ -150,7 +150,7 @@ def _worktree_signature(root: Path) -> str:
|
|
|
150
150
|
kept = []
|
|
151
151
|
for line in proc.stdout.splitlines():
|
|
152
152
|
path = line[3:].strip() if len(line) > 3 else ""
|
|
153
|
-
if path.startswith(".planning/code-index/"):
|
|
153
|
+
if path.startswith(".devflow/planning/code-index/"):
|
|
154
154
|
continue
|
|
155
155
|
kept.append(line)
|
|
156
156
|
return "\n".join(kept)
|
|
@@ -198,7 +198,7 @@ def main(argv=None) -> int:
|
|
|
198
198
|
|
|
199
199
|
scan = sub.add_parser("scan", help="Build or refresh the code index.")
|
|
200
200
|
scan.add_argument("--root", default=".", help="Project root. Defaults to current directory.")
|
|
201
|
-
scan.add_argument("--output", default=".planning/code-index", help="Index output directory.")
|
|
201
|
+
scan.add_argument("--output", default=".devflow/planning/code-index", help="Index output directory.")
|
|
202
202
|
scan.add_argument("--codebase", action="append", default=[], help="Explicit codebase: name:path[:type]. Can repeat.")
|
|
203
203
|
scan.add_argument("--changed-files", nargs="*", default=[], help="Optional changed files for incremental refresh.")
|
|
204
204
|
scan.add_argument("--include", action="append", default=[], help="Repository-relative include glob. Can repeat.")
|
|
@@ -206,7 +206,7 @@ def main(argv=None) -> int:
|
|
|
206
206
|
scan.add_argument("--exclude", action="append", default=[], help="Additional directory names to exclude.")
|
|
207
207
|
|
|
208
208
|
validate = sub.add_parser("validate", help="Validate an index in staged levels.")
|
|
209
|
-
validate.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
209
|
+
validate.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
210
210
|
validate.add_argument("--snapshot", help="Immutable generation id.")
|
|
211
211
|
validate.add_argument(
|
|
212
212
|
"--level",
|
|
@@ -217,19 +217,19 @@ def main(argv=None) -> int:
|
|
|
217
217
|
|
|
218
218
|
audit = sub.add_parser("audit", help="Audit stale files and relation integrity.")
|
|
219
219
|
audit.add_argument("--root", default=".", help="Project root.")
|
|
220
|
-
audit.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
220
|
+
audit.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
221
221
|
audit.add_argument("--skill-root", default=".skills", help="Optional skill root for project-binding checks.")
|
|
222
222
|
audit.add_argument("--snapshot", help="Immutable generation id.")
|
|
223
223
|
audit.add_argument("--level", choices=("publish", "full"), default="publish")
|
|
224
224
|
|
|
225
225
|
query = sub.add_parser("query", help="Search symbols using SQLite FTS or LIKE fallback.")
|
|
226
|
-
query.add_argument("--index", default=".planning/code-index", help="Index directory.")
|
|
226
|
+
query.add_argument("--index", default=".devflow/planning/code-index", help="Index directory.")
|
|
227
227
|
query.add_argument("--term", required=True, help="Search term.")
|
|
228
228
|
query.add_argument("--limit", type=int, default=20)
|
|
229
229
|
query.add_argument("--snapshot", help="Immutable generation id. Historical queries do not require current workspace freshness.")
|
|
230
230
|
|
|
231
231
|
relations = sub.add_parser("relations", help="Traverse resolved relations in a fixed snapshot.")
|
|
232
|
-
relations.add_argument("--index", default=".planning/code-index")
|
|
232
|
+
relations.add_argument("--index", default=".devflow/planning/code-index")
|
|
233
233
|
relations.add_argument("--object", required=True, help="Source symbol id.")
|
|
234
234
|
relations.add_argument("--depth", type=int, default=3)
|
|
235
235
|
relations.add_argument("--limit", type=int, default=100)
|
|
@@ -238,7 +238,7 @@ def main(argv=None) -> int:
|
|
|
238
238
|
relations.add_argument("--direction", choices=["incoming", "outgoing", "both"], default="outgoing")
|
|
239
239
|
|
|
240
240
|
impact = sub.add_parser("impact", help="Traverse cross-layer semantic facts in a fixed snapshot.")
|
|
241
|
-
impact.add_argument("--index", default=".planning/code-index")
|
|
241
|
+
impact.add_argument("--index", default=".devflow/planning/code-index")
|
|
242
242
|
impact.add_argument("--entity", required=True, help="Logical entity id, feature id, API id, or symbol id.")
|
|
243
243
|
impact.add_argument("--depth", type=int, default=5)
|
|
244
244
|
impact.add_argument("--limit", type=int, default=200)
|
|
@@ -247,7 +247,7 @@ def main(argv=None) -> int:
|
|
|
247
247
|
|
|
248
248
|
for action in ("search-content", "resolve-domain", "query-plan", "domain-import"):
|
|
249
249
|
operation = sub.add_parser(action)
|
|
250
|
-
operation.add_argument("--index", default=".planning/code-index")
|
|
250
|
+
operation.add_argument("--index", default=".devflow/planning/code-index")
|
|
251
251
|
operation.add_argument("--snapshot")
|
|
252
252
|
operation.add_argument("--project-id", default="")
|
|
253
253
|
operation.add_argument("--limit", type=int, default=20)
|
|
@@ -45,7 +45,7 @@ def _parse_explicit(root: Path, value: str) -> Optional[Codebase]:
|
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
def _from_navigation(root: Path) -> List[Codebase]:
|
|
48
|
-
index = root / ".planning/navigation/INDEX.md"
|
|
48
|
+
index = root / ".devflow/planning/navigation/INDEX.md"
|
|
49
49
|
if not index.exists():
|
|
50
50
|
return []
|
|
51
51
|
rows = _read_markdown_table(index)
|
|
@@ -72,7 +72,7 @@ def _from_navigation(root: Path) -> List[Codebase]:
|
|
|
72
72
|
|
|
73
73
|
|
|
74
74
|
def _from_spec_index(root: Path) -> List[Codebase]:
|
|
75
|
-
index = root / ".context/spec/index.md"
|
|
75
|
+
index = root / ".devflow/context/spec/index.md"
|
|
76
76
|
if not index.exists():
|
|
77
77
|
return []
|
|
78
78
|
rows = _read_markdown_table(index)
|
|
@@ -7,7 +7,11 @@ from typing import Iterable, List, Sequence
|
|
|
7
7
|
|
|
8
8
|
DEFAULT_EXCLUDES = {
|
|
9
9
|
".git",
|
|
10
|
+
".devflow",
|
|
11
|
+
# Old protocol directories are excluded as source even after the new
|
|
12
|
+
# namespaced layout becomes authoritative.
|
|
10
13
|
".planning",
|
|
14
|
+
".context",
|
|
11
15
|
"node_modules",
|
|
12
16
|
"vendor",
|
|
13
17
|
"dist",
|
|
@@ -139,4 +143,3 @@ def _is_excluded(path: Path, root: Path, excluded: Sequence[str]) -> bool:
|
|
|
139
143
|
if any(fnmatch.fnmatch(relative, pattern) or fnmatch.fnmatch(relative + "/", pattern.rstrip("/") + "/") for pattern in excluded):
|
|
140
144
|
return True
|
|
141
145
|
return any(part in excluded for part in parts) or any("/" in pattern and ("/" + "/".join(parts) + "/").find("/" + pattern.strip("/") + "/") >= 0 for pattern in excluded)
|
|
142
|
-
|
package/plugins/devflow-intel/skills/workflow-code-index/scripts/validators/project_binding_check.py
CHANGED
|
@@ -5,8 +5,8 @@ from pathlib import Path
|
|
|
5
5
|
PLACEHOLDER_OK = re.compile(r"\{[A-Za-z0-9_:-]+\}")
|
|
6
6
|
|
|
7
7
|
GENERIC_TOKENS = (
|
|
8
|
-
".planning/",
|
|
9
|
-
".context/",
|
|
8
|
+
".devflow/planning/",
|
|
9
|
+
".devflow/context/",
|
|
10
10
|
".skills/",
|
|
11
11
|
"references/",
|
|
12
12
|
"scripts/",
|
|
@@ -40,8 +40,8 @@ def audit_project_binding(paths):
|
|
|
40
40
|
stripped = PLACEHOLDER_OK.sub("", line)
|
|
41
41
|
if (
|
|
42
42
|
path_like.search(stripped)
|
|
43
|
-
and ".planning/" not in stripped
|
|
44
|
-
and ".context/" not in stripped
|
|
43
|
+
and ".devflow/planning/" not in stripped
|
|
44
|
+
and ".devflow/context/" not in stripped
|
|
45
45
|
and ".skills/" not in stripped
|
|
46
46
|
):
|
|
47
47
|
findings.append(
|
|
@@ -28,7 +28,7 @@ code facts changed -> project context must remain trustworthy
|
|
|
28
28
|
|
|
29
29
|
Preserve these properties:
|
|
30
30
|
|
|
31
|
-
- **Freshness**: `.planning/code-index/`, `.planning/navigation/`, and `.context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
|
|
31
|
+
- **Freshness**: `.devflow/planning/code-index/`, `.devflow/planning/navigation/`, and `.devflow/context/spec/` must not describe old routes, APIs, entries, services, commands, or codebase roots.
|
|
32
32
|
- **Minimality**: do not run a full project initialization when changed-file indexing is enough.
|
|
33
33
|
- **Evidence**: do not update navigation/spec from memory or inference alone; read the changed source or manifest evidence first.
|
|
34
34
|
- **Non-destruction**: do not overwrite user-authored business context; append logs or update machine-derived sections only.
|
|
@@ -40,7 +40,7 @@ Preserve these properties:
|
|
|
40
40
|
|---|---|---|
|
|
41
41
|
| project indexes | Accelerate rule/spec/navigation discovery; fall back to LSP/search/source when stale | Advisory evidence, never a source-read blocker |
|
|
42
42
|
| `workflow-code-index` | Refresh, validate, and audit machine facts | Light, Medium, Full; audit/staleness problems |
|
|
43
|
-
| `workflow-update-navigation` | Update `.planning/navigation/*.md` | Medium route/API/page/service/command changes |
|
|
43
|
+
| `workflow-update-navigation` | Update `.devflow/planning/navigation/*.md` | Medium route/API/page/service/command changes |
|
|
44
44
|
| `workflow-project-context` | Full reinitialization | Full only |
|
|
45
45
|
| `workflow-bug-fix` | Bug-fix main workflow | Must call this skill after verification and lesson capture |
|
|
46
46
|
| `workflow-execute-phase` | Feature implementation workflow | Must call this skill after implementation verification |
|
|
@@ -63,9 +63,9 @@ If no flag is provided, default to `--dry-run` and infer changed files from git.
|
|
|
63
63
|
|
|
64
64
|
```text
|
|
65
65
|
workflow-context-sync
|
|
66
|
-
-> read .planning/rules/INDEX.md
|
|
67
|
-
-> read .context/spec/index.md
|
|
68
|
-
-> read .planning/navigation/INDEX.md
|
|
66
|
+
-> read .devflow/planning/rules/INDEX.md
|
|
67
|
+
-> read .devflow/context/spec/index.md
|
|
68
|
+
-> read .devflow/planning/navigation/INDEX.md
|
|
69
69
|
-> collect changed files with per-repo cursor
|
|
70
70
|
-> classify files and affected codebases
|
|
71
71
|
-> choose Light / Medium / Full
|
|
@@ -81,7 +81,7 @@ workflow-context-sync
|
|
|
81
81
|
Maintain pull synchronization state in:
|
|
82
82
|
|
|
83
83
|
```text
|
|
84
|
-
.planning/context-sync-state.json
|
|
84
|
+
.devflow/planning/context-sync-state.json
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
This file is workflow-owned machine state. It stores one cursor per independently discovered Git repository:
|
|
@@ -104,7 +104,7 @@ This file is workflow-owned machine state. It stores one cursor per independentl
|
|
|
104
104
|
|
|
105
105
|
Rules:
|
|
106
106
|
|
|
107
|
-
- Discover repositories from `.planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
|
|
107
|
+
- Discover repositories from `.devflow/planning/navigation/INDEX.md` Codebase Registry, then deduplicate by `git rev-parse --show-toplevel`.
|
|
108
108
|
- For `--after-pull`, diff `last_synced_head..HEAD` per repo.
|
|
109
109
|
- If a repo has no cursor yet, fall back to `ORIG_HEAD..HEAD` for that repo.
|
|
110
110
|
- If the stored cursor is unavailable or not an ancestor of `HEAD`, use the script-reported fallback/warning and prefer a broader sync level.
|
|
@@ -150,7 +150,7 @@ Map paths to codebases:
|
|
|
150
150
|
| skit-admin | `skit/frontend/admin/**` |
|
|
151
151
|
| skit-h5 | `skit/frontend/h5/**` |
|
|
152
152
|
| skit-backend | `skit/internal/**`, `skit/ioc/**`, `skit/pkg/**`, `skit/backend/migrations/**`, `skit/go.mod`, `skit/Makefile`, `skit/main.go` |
|
|
153
|
-
| project context | `.planning/**`, `.context/spec/**`, `.omp/**`, `AGENTS.md` |
|
|
153
|
+
| project context | `.devflow/planning/**`, `.devflow/context/spec/**`, `.omp/**`, `AGENTS.md` |
|
|
154
154
|
|
|
155
155
|
Classify impact:
|
|
156
156
|
|
|
@@ -162,7 +162,7 @@ Classify impact:
|
|
|
162
162
|
| backend boundary | `internal/web/*handler.go`, `ioc/web.go`, `internal/job/**`, public service interfaces | Medium |
|
|
163
163
|
| toolchain/manifest | `package.json`, `go.mod`, `Makefile`, vite/router config | Medium or Full |
|
|
164
164
|
| structure | codebase roots, large directory moves, new top-level/second-level directories | Full |
|
|
165
|
-
| context docs | `.planning/**`, `.context/spec/**` | validate consistency; avoid blind overwrite |
|
|
165
|
+
| context docs | `.devflow/planning/**`, `.devflow/context/spec/**` | validate consistency; avoid blind overwrite |
|
|
166
166
|
|
|
167
167
|
## Sync Levels
|
|
168
168
|
|
|
@@ -178,7 +178,7 @@ devflow_code_index(action="validate")
|
|
|
178
178
|
devflow_code_index(action="audit")
|
|
179
179
|
```
|
|
180
180
|
|
|
181
|
-
Then append a concise `.planning/STATE.md` change-log line if this skill modified files.
|
|
181
|
+
Then append a concise `.devflow/planning/STATE.md` change-log line if this skill modified files.
|
|
182
182
|
|
|
183
183
|
### Medium
|
|
184
184
|
|
|
@@ -190,10 +190,10 @@ Actions:
|
|
|
190
190
|
2. Read relevant changed source files.
|
|
191
191
|
3. Read matching navigation/spec entry for each affected codebase.
|
|
192
192
|
4. Update only stale sections, usually:
|
|
193
|
-
- `.planning/navigation/{codebase}.md`
|
|
194
|
-
- `.context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
|
|
195
|
-
- `.planning/toolchain.md` only when commands/manifests changed
|
|
196
|
-
- `.planning/STATE.md` change log
|
|
193
|
+
- `.devflow/planning/navigation/{codebase}.md`
|
|
194
|
+
- `.devflow/context/spec/frontend|backend/{codebase}.md` only when a codebase rule or stack fact changed
|
|
195
|
+
- `.devflow/planning/toolchain.md` only when commands/manifests changed
|
|
196
|
+
- `.devflow/planning/STATE.md` change log
|
|
197
197
|
5. Validate and audit code-index again if navigation/spec edits introduce new files or references.
|
|
198
198
|
|
|
199
199
|
### Full
|
|
@@ -13,8 +13,8 @@ from pathlib import Path
|
|
|
13
13
|
from typing import Any
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
DEFAULT_STATE = ".planning/context-sync-state.json"
|
|
17
|
-
NAVIGATION_INDEX = ".planning/navigation/INDEX.md"
|
|
16
|
+
DEFAULT_STATE = ".devflow/planning/context-sync-state.json"
|
|
17
|
+
NAVIGATION_INDEX = ".devflow/planning/navigation/INDEX.md"
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
def run_git(repo: Path, args: list[str], check: bool = True) -> subprocess.CompletedProcess[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: workflow-update-navigation
|
|
3
|
-
description: "Use when code changes require incremental updates to .planning/navigation files before audit, archive, or future workflow steps."
|
|
3
|
+
description: "Use when code changes require incremental updates to .devflow/planning/navigation files before audit, archive, or future workflow steps."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
## Legacy Command Metadata
|
|
@@ -11,9 +11,9 @@ Original slash-command metadata retained only as workflow invocation guidance.
|
|
|
11
11
|
user-invocable: true
|
|
12
12
|
pattern: generator+reviewer
|
|
13
13
|
inputs:
|
|
14
|
-
- .planning/features/{功能名}/变更清单.md
|
|
15
|
-
- .planning/navigation/
|
|
16
|
-
output: .planning/navigation/{name}.md (updated)
|
|
14
|
+
- .devflow/planning/features/{功能名}/变更清单.md
|
|
15
|
+
- .devflow/planning/navigation/
|
|
16
|
+
output: .devflow/planning/navigation/{name}.md (updated)
|
|
17
17
|
phase-gate:
|
|
18
18
|
step1: 加载变更清单和当前 navigation
|
|
19
19
|
step2: 识别受影响的代码库和模块
|
|
@@ -36,22 +36,22 @@ Incrementally update navigation files after code changes. Do not re-scan the ent
|
|
|
36
36
|
|
|
37
37
|
Always update:
|
|
38
38
|
|
|
39
|
-
- `.planning/navigation/{name}.md` — affected codebase navigation files
|
|
40
|
-
- `.planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
|
|
39
|
+
- `.devflow/planning/navigation/{name}.md` — affected codebase navigation files
|
|
40
|
+
- `.devflow/planning/navigation/INDEX.md` — Codebase Registry scan status timestamps
|
|
41
41
|
|
|
42
|
-
When `.planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
|
|
42
|
+
When `.devflow/planning/code-index/` exists or code-index support is part of the project workflow, also refresh and audit the machine index before editing Markdown navigation:
|
|
43
43
|
|
|
44
|
-
- `.planning/code-index/files.jsonl`
|
|
45
|
-
- `.planning/code-index/symbols.jsonl`
|
|
46
|
-
- `.planning/code-index/relations.jsonl`
|
|
47
|
-
- `.planning/code-index/diagnostics.jsonl`
|
|
48
|
-
- `.planning/code-index/index.sqlite`
|
|
49
|
-
- `.planning/code-index/AUDIT.md`
|
|
44
|
+
- `.devflow/planning/code-index/files.jsonl`
|
|
45
|
+
- `.devflow/planning/code-index/symbols.jsonl`
|
|
46
|
+
- `.devflow/planning/code-index/relations.jsonl`
|
|
47
|
+
- `.devflow/planning/code-index/diagnostics.jsonl`
|
|
48
|
+
- `.devflow/planning/code-index/index.sqlite`
|
|
49
|
+
- `.devflow/planning/code-index/AUDIT.md`
|
|
50
50
|
|
|
51
51
|
Do not create by default:
|
|
52
52
|
|
|
53
53
|
- New navigation files (only update existing ones)
|
|
54
|
-
- New `.planning/` directories
|
|
54
|
+
- New `.devflow/planning/` directories
|
|
55
55
|
|
|
56
56
|
## Resource Loading
|
|
57
57
|
|
|
@@ -59,10 +59,10 @@ Do not create by default:
|
|
|
59
59
|
|
|
60
60
|
## Phase 1 — Load Change List And Current Navigation
|
|
61
61
|
|
|
62
|
-
1. Read `.planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
|
|
63
|
-
2. Read `.planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
|
|
64
|
-
3. For each affected codebase, read its `.planning/navigation/{name}.md`.
|
|
65
|
-
4. If `.planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
|
|
62
|
+
1. Read `.devflow/planning/features/{功能名}/变更清单.md` — extract all code-level changes (new/modified/deleted/renamed files).
|
|
63
|
+
2. Read `.devflow/planning/navigation/INDEX.md` — identify which codebases are affected by the changes.
|
|
64
|
+
3. For each affected codebase, read its `.devflow/planning/navigation/{name}.md`.
|
|
65
|
+
4. If `.devflow/planning/code-index/` exists, collect changed file paths and run an incremental code-index refresh before updating Markdown navigation:
|
|
66
66
|
|
|
67
67
|
```text
|
|
68
68
|
devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
|
|
@@ -130,7 +130,7 @@ For affected handlers, routes, components, jobs, or integrations identified in P
|
|
|
130
130
|
|
|
131
131
|
Use the same call chain tracing method as `workflow-project-context` Step 3b, but limited to changed modules only.
|
|
132
132
|
|
|
133
|
-
If code-index is available, use `.planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
|
|
133
|
+
If code-index is available, use `.devflow/planning/code-index/relations.jsonl` or `index.sqlite` as the first source for fine-grained call relationships, then read the changed source files to confirm evidence before updating navigation. Navigation remains a human-readable summary; do not copy unverified low-confidence relations into navigation as facts.
|
|
134
134
|
|
|
135
135
|
Gate: every changed handler/route/component/job from the change list has its corresponding row updated in the navigation file.
|
|
136
136
|
|
|
@@ -150,7 +150,7 @@ If conventions haven't changed, skip this phase.
|
|
|
150
150
|
1. For each updated codebase navigation file:
|
|
151
151
|
- Update `Identity → Scan Status` to the current date
|
|
152
152
|
- Add a note: "Updated after 变更清单 execution, {日期}"
|
|
153
|
-
2. Update `.planning/navigation/INDEX.md`:
|
|
153
|
+
2. Update `.devflow/planning/navigation/INDEX.md`:
|
|
154
154
|
- Sync the `Scan Status` column in the Codebase Registry for affected codebases
|
|
155
155
|
3. Run the review checklist:
|
|
156
156
|
|
|
@@ -169,18 +169,18 @@ Fix gaps before reporting completion.
|
|
|
169
169
|
Run these commands after all navigation edits. Replace `<affected-navigation-file>` with every navigation file selected in Phase 1.
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
|
-
test -s .planning/navigation/INDEX.md
|
|
173
|
-
test -s .planning/navigation/<affected-navigation-file>
|
|
174
|
-
test -s .planning/code-index/AUDIT.md # when the code index exists
|
|
172
|
+
test -s .devflow/planning/navigation/INDEX.md
|
|
173
|
+
test -s .devflow/planning/navigation/<affected-navigation-file>
|
|
174
|
+
test -s .devflow/planning/code-index/AUDIT.md # when the code index exists
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
When `.planning/code-index/` exists, call `devflow_code_index(action="validate")` and
|
|
177
|
+
When `.devflow/planning/code-index/` exists, call `devflow_code_index(action="validate")` and
|
|
178
178
|
`devflow_code_index(action="audit")` before the shell artifact checks.
|
|
179
179
|
|
|
180
|
-
The code-index commands are required only when `.planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
|
|
180
|
+
The code-index commands are required only when `.devflow/planning/code-index/` exists or this workflow refreshed it. Pass only when every selected navigation file and `INDEX.md` is non-empty, `validate` and `audit` exit with code 0, and `AUDIT.md` contains no blocking finding. Also complete every Phase 6 checklist item; commands validate artifact integrity, while the checklist validates change-list coverage. If any check fails, do not advance to audit or archive: correct the navigation/index discrepancy and rerun the failed checks.
|
|
181
181
|
|
|
182
182
|
## Downstream Read Contract
|
|
183
183
|
|
|
184
184
|
- `workflow-release-closeout` should verify that navigation `Scan Status` is not older than the last commit before archiving.
|
|
185
185
|
- Future `workflow-requirement-baseline` invocations will read the updated navigation for conflict and reuse detection.
|
|
186
|
-
- Future source-tracing tasks should use `.planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
|
|
186
|
+
- Future source-tracing tasks should use `.devflow/planning/code-index/` for fine-grained relation facts when available, with source readback before answering.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
只重新扫描变更清单中涉及的模块。变更清单外的代码库和模块不做任何扫描或写入。
|
|
6
6
|
|
|
7
|
-
如果项目存在 `.planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
|
|
7
|
+
如果项目存在 `.devflow/planning/code-index/`,先按变更文件刷新机器索引,再更新 Markdown navigation:
|
|
8
8
|
|
|
9
9
|
```text
|
|
10
10
|
devflow_code_index(action="scan", changedFiles=["<changed-file>", "..."])
|
|
@@ -34,7 +34,7 @@ devflow_code_index(action="audit")
|
|
|
34
34
|
|
|
35
35
|
当 code-index 可用时:
|
|
36
36
|
|
|
37
|
-
1. 先从 `.planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
|
|
37
|
+
1. 先从 `.devflow/planning/code-index/index.sqlite` 或 `relations.jsonl` 查 changed files 对应 symbols/relations。
|
|
38
38
|
2. 按 `routes_to`、`calls`、`imports`、`reads`、`writes` 扩展相关边。
|
|
39
39
|
3. 回读 `evidence_path` 源码。
|
|
40
40
|
4. 只把已确认且适合人读摘要的链路写入 navigation。
|
|
@@ -15,11 +15,11 @@ description: "Use when code needs review for project conventions, spec complianc
|
|
|
15
15
|
4. 若需修复后复审,在下一轮 task 中携带上一轮 `chain_id`,最多三轮。第三轮仍有 P0 时停止当前任务;事实不足时停止并请求人工确认。每轮重新验证源码、契约和证据版本,不复用旧结论。
|
|
16
16
|
5. 主 Agent 向用户交付门禁裁决、证据链、开放 finding 与下一步动作。本文后续的规范扫描和检查清单仍用于审查内容,但其“输出 Markdown”要求仅适用于独立调用本技能,不覆盖正式工作流协议。
|
|
17
17
|
|
|
18
|
-
逐层对照 `.context/spec/` 规范文档,检查目标代码的合规性,输出可操作的问题清单。若项目存在 `.context/spec/index.md`,先按索引匹配 stack spec 和 codebase spec,再加载具体层级规范。
|
|
18
|
+
逐层对照 `.devflow/context/spec/` 规范文档,检查目标代码的合规性,输出可操作的问题清单。若项目存在 `.devflow/context/spec/index.md`,先按索引匹配 stack spec 和 codebase spec,再加载具体层级规范。
|
|
19
19
|
|
|
20
20
|
## 核心原则
|
|
21
21
|
|
|
22
|
-
1. **规范是唯一标准** — 只对照 `.context/spec/` 中的规范文档,不参考其他已有代码;代码推断规则必须低于显式规范和 codebase spec
|
|
22
|
+
1. **规范是唯一标准** — 只对照 `.devflow/context/spec/` 中的规范文档,不参考其他已有代码;代码推断规则必须低于显式规范和 codebase spec
|
|
23
23
|
2. **文件级全量扫描** — 扫描目标文件的每一行,不只看"最近改动的部分"
|
|
24
24
|
3. **逐条不跳过** — 规范文档中的每一条规则都要检查,包括"看起来无关"的细节。**禁止主观过滤**:不能因为"这个 VO 字段很简单"、"只有一个字段"、"直接传字符串"等主观判断而跳过检查项,规范就是规范,简单的代码同样要逐条对照
|
|
25
25
|
4. **加法和减法都查** — 既查"缺了什么该有的",也查"多了什么不该有的"(未使用方法/字段/import)
|
|
@@ -31,7 +31,7 @@ description: "Use when code needs review for project conventions, spec complianc
|
|
|
31
31
|
**当 code-review 作为 feature-development 工作流的独立 `code-review` step 被调用时必须执行。** 独立调用 code-review(如"帮我 review 一下 XX 模块")时,若提供 phase number 则尝试关联变更清单,否则跳过此步。
|
|
32
32
|
|
|
33
33
|
1. **定位变更清单**:
|
|
34
|
-
- 若传入 phase number:从 phase 目录的 CONTEXT.md 推断功能名,查找 `.planning/features/{功能名}/变更清单.md`
|
|
34
|
+
- 若传入 phase number:从 phase 目录的 CONTEXT.md 推断功能名,查找 `.devflow/planning/features/{功能名}/变更清单.md`
|
|
35
35
|
- 若直接调用但用户提供了变更清单路径:使用用户指定路径
|
|
36
36
|
- 若找不到变更清单:跳过此步,在输出 REVIEW.md 中标注 "无变更清单,跳过完成标准验证"
|
|
37
37
|
|
|
@@ -114,12 +114,12 @@ seam 标注: "只改 OrderWorkflow.process()"
|
|
|
114
114
|
### 第二步:加载规范(渐进式)
|
|
115
115
|
|
|
116
116
|
**必读**(每次审查都要读):
|
|
117
|
-
1. `.planning/rules/INDEX.md`(如存在)— 找到项目规则入口
|
|
118
|
-
2. `.context/spec/index.md`(如存在)— 匹配目标文件所在 codebase 的 stack spec 和 codebase spec
|
|
119
|
-
3. 命中的 `.context/spec/stacks/{stack_key}.md` — 技术栈通用规范
|
|
120
|
-
4. 命中的 `.context/spec/backend|frontend/{codebase}.md` — 项目实例规范
|
|
121
|
-
5. `.planning/code-index/`(如存在)— 用于调用方、被调用方、导入、读写资源、测试覆盖等关系事实定位
|
|
122
|
-
6. 兼容旧规范:`.context/spec/backend/index.md` 和 `.context/spec/backend/go.md`(如存在)
|
|
117
|
+
1. `.devflow/planning/rules/INDEX.md`(如存在)— 找到项目规则入口
|
|
118
|
+
2. `.devflow/context/spec/index.md`(如存在)— 匹配目标文件所在 codebase 的 stack spec 和 codebase spec
|
|
119
|
+
3. 命中的 `.devflow/context/spec/stacks/{stack_key}.md` — 技术栈通用规范
|
|
120
|
+
4. 命中的 `.devflow/context/spec/backend|frontend/{codebase}.md` — 项目实例规范
|
|
121
|
+
5. `.devflow/planning/code-index/`(如存在)— 用于调用方、被调用方、导入、读写资源、测试覆盖等关系事实定位
|
|
122
|
+
6. 兼容旧规范:`.devflow/context/spec/backend/index.md` 和 `.devflow/context/spec/backend/go.md`(如存在)
|
|
123
123
|
|
|
124
124
|
**按层级按需加载**(只读涉及的层级,详见 `references/spec-checklist.md`):
|
|
125
125
|
- Handler 层 → 读 `handler.md`
|
|
@@ -130,7 +130,7 @@ seam 标注: "只改 OrderWorkflow.process()"
|
|
|
130
130
|
- 有分页 → 读 `pagination.md`
|
|
131
131
|
|
|
132
132
|
**经验教训**(目录存在时读取):
|
|
133
|
-
- `.context/lessons/README.md`(如存在)— 项目积累的踩坑经验;不存在时跳过,不阻塞审查
|
|
133
|
+
- `.devflow/context/lessons/README.md`(如存在)— 项目积累的踩坑经验;不存在时跳过,不阻塞审查
|
|
134
134
|
|
|
135
135
|
### 第三步:逐层执行审查
|
|
136
136
|
|
|
@@ -150,7 +150,7 @@ seam 标注: "只改 OrderWorkflow.process()"
|
|
|
150
150
|
**⛔ Gate 合规检查:** 审查输出中,每个涉及源码的结论必须附带 code-index 符号引用(格式:`[符号名 @ path:line]`)。若审查全程未出现 code-index 查询操作,或输出中的源码引用无 code-index 依据,则在问题清单最上方追加:
|
|
151
151
|
|
|
152
152
|
```
|
|
153
|
-
⛔ SOURCE-READ GATE VIOLATION — 本次审查未走 .planning/code-index/ gate。
|
|
153
|
+
⛔ SOURCE-READ GATE VIOLATION — 本次审查未走 .devflow/planning/code-index/ gate。
|
|
154
154
|
审查结论降级为"未经索引验证",需重新执行。
|
|
155
155
|
```
|
|
156
156
|
|
|
@@ -244,7 +244,7 @@ seam 标注: "只改 OrderWorkflow.process()"
|
|
|
244
244
|
```markdown
|
|
245
245
|
## 完成标准验证
|
|
246
246
|
|
|
247
|
-
> **来源**:`.planning/features/{功能名}/变更清单.md`
|
|
247
|
+
> **来源**:`.devflow/planning/features/{功能名}/变更清单.md`
|
|
248
248
|
> **格式**:checkbox(N 条)/ legacy(M 条)
|
|
249
249
|
> **总结**:{passed}/{total} 通过,{failed} 未通过,{unverifiable} 待人工,{skipped} 跳过
|
|
250
250
|
|
|
@@ -13,22 +13,22 @@ description: "Use after integration verification and before change planning to d
|
|
|
13
13
|
|
|
14
14
|
1. 先调用 `devflow_contract(action="status")` 检查当前会话是否有 active contract;
|
|
15
15
|
2. 未激活时调用 `devflow_contract(action="activate", feature="<feature>", step="acceptance-test-design")` 合成并激活(planning / waiting-user / awaiting-approval,或 Runtime 已触发当前步骤的 executing 回合均可;Core 校验 STATE 当前 feature/step 与图谱 revision 后由用户确认);
|
|
16
|
-
3. 会话中断后 contract 由 runtime 在 `session_start` 时从 `.planning/contracts/{feature}/EC-*.json` 自动恢复;恢复时校验 state/graph revision,推进后自动失效,需重新合成。
|
|
16
|
+
3. 会话中断后 contract 由 runtime 在 `session_start` 时从 `.devflow/planning/contracts/{feature}/EC-*.json` 自动恢复;恢复时校验 state/graph revision,推进后自动失效,需重新合成。
|
|
17
17
|
|
|
18
18
|
## 输入
|
|
19
19
|
|
|
20
20
|
按顺序读取:
|
|
21
21
|
|
|
22
22
|
1. `devflow_requirement_graph(action="inspect")` 的已确认 `REQ/BR/BC/AC` 节点与当前 revision;
|
|
23
|
-
2. `.planning/features/{feature}/integration-report.md`、API 契约、UI 方案、前后端技术方案;
|
|
23
|
+
2. `.devflow/planning/features/{feature}/integration-report.md`、API 契约、UI 方案、前后端技术方案;
|
|
24
24
|
3. 当前图谱中的 `RISK/WSH/WLC/DECISION` 节点;
|
|
25
|
-
4. `.planning/toolchain.md`、`.planning/execution-contract.md` 和项目测试能力。
|
|
25
|
+
4. `.devflow/planning/toolchain.md`、`.devflow/planning/execution-contract.md` 和项目测试能力。
|
|
26
26
|
|
|
27
27
|
若需求、契约或架构事实不足以写出可观察 oracle,记录缺口并回流到上游;不得用实现猜测补全。
|
|
28
28
|
|
|
29
29
|
## 生成规则
|
|
30
30
|
|
|
31
|
-
先调用 `devflow_api_test_matrix(action="compile", feature="...")`(无 API 时也会写 no-op 测试资产),检查 `.planning/features/{feature}/完整API验收测试用例.md` 中的契约缺口;存在 `API-*` 时通过后调用 `devflow_api_test_matrix(action="import", feature="...")`。Core 会一次性生成并导入全部 API `TC-*`:
|
|
31
|
+
先调用 `devflow_api_test_matrix(action="compile", feature="...")`(无 API 时也会写 no-op 测试资产),检查 `.devflow/planning/features/{feature}/完整API验收测试用例.md` 中的契约缺口;存在 `API-*` 时通过后调用 `devflow_api_test_matrix(action="import", feature="...")`。Core 会一次性生成并导入全部 API `TC-*`:
|
|
32
32
|
|
|
33
33
|
- 每个字段的缺失、`null`、错误类型、最小/最大(长度、数值、数组项)、超长、非法格式/模式、非法枚举;
|
|
34
34
|
- 仅由有效等价类构成的 pairwise 组合(负向值一项一测,避免错误码歧义);
|
|
@@ -62,13 +62,13 @@ description: "Use after integration verification and before change planning to d
|
|
|
62
62
|
|
|
63
63
|
## 输出
|
|
64
64
|
|
|
65
|
-
写 `.planning/features/{feature}/验收测试设计.md` 作为派生视图,包含:TC 覆盖矩阵、自动/人工/阻塞数量、每项专项义务的 TC/环境前提和当前图谱 revision。写对应 `.meta.json`,其 revision/fingerprint 必须来自 Core 的 `tests.json` 视图。
|
|
65
|
+
写 `.devflow/planning/features/{feature}/验收测试设计.md` 作为派生视图,包含:TC 覆盖矩阵、自动/人工/阻塞数量、每项专项义务的 TC/环境前提和当前图谱 revision。写对应 `.meta.json`,其 revision/fingerprint 必须来自 Core 的 `tests.json` 视图。
|
|
66
66
|
|
|
67
67
|
API 完整测试资产由 Core 额外写入:
|
|
68
68
|
|
|
69
|
-
- `.planning/requirements/{feature}/api-test-matrix.json`:机器可读的请求、预期和派生义务;
|
|
70
|
-
- `.planning/features/{feature}/完整API验收测试用例.md`:可审查的人类视图;
|
|
71
|
-
- `.planning/features/{feature}/api-acceptance-bindings.template.json`:导入后的 TC 与 HTTP 执行绑定模板。
|
|
69
|
+
- `.devflow/planning/requirements/{feature}/api-test-matrix.json`:机器可读的请求、预期和派生义务;
|
|
70
|
+
- `.devflow/planning/features/{feature}/完整API验收测试用例.md`:可审查的人类视图;
|
|
71
|
+
- `.devflow/planning/features/{feature}/api-acceptance-bindings.template.json`:导入后的 TC 与 HTTP 执行绑定模板。
|
|
72
72
|
|
|
73
73
|
运行 `devflow_requirement_graph(action="validate")` 和 machine evidence。通过后交给 `workflow-change-plan` 绑定实现任务。
|
|
74
74
|
|
|
@@ -14,17 +14,17 @@ description: "根据功能点梳理和需求基线生成检查点树形态的测
|
|
|
14
14
|
|
|
15
15
|
必须先读取 `legacy/SKILL.md`,再按其中引用的相对 `references/`、`assets/` 规则生成:
|
|
16
16
|
|
|
17
|
-
`.planning/features/{feature}/测试指导书.md`
|
|
17
|
+
`.devflow/planning/features/{feature}/测试指导书.md`
|
|
18
18
|
|
|
19
19
|
当前 Devflow 输入路径映射如下(旧版 Skill 的 WORKSPACE_ROOT 逻辑已由适配器显式映射):
|
|
20
20
|
|
|
21
|
-
- `.planning/requirements/baseline.md`
|
|
22
|
-
- `.planning/features/{feature}/功能点梳理.md`
|
|
23
|
-
- `.planning/PROJECT.md`
|
|
24
|
-
- `.planning/navigation/INDEX.md`
|
|
21
|
+
- `.devflow/planning/requirements/baseline.md`
|
|
22
|
+
- `.devflow/planning/features/{feature}/功能点梳理.md`
|
|
23
|
+
- `.devflow/planning/PROJECT.md`
|
|
24
|
+
- `.devflow/planning/navigation/INDEX.md`
|
|
25
25
|
|
|
26
26
|
旧版 Skill 中的旧目录和外部 PRD URL 约定不能直接写入项目;以本适配器列出的
|
|
27
|
-
`.planning/` 路径为准。若旧版资源要求读取不存在的文档,必须在“待确认/缺少内容”分支记录,不得伪造文件或事实。
|
|
27
|
+
`.devflow/planning/` 路径为准。若旧版资源要求读取不存在的文档,必须在“待确认/缺少内容”分支记录,不得伪造文件或事实。
|
|
28
28
|
|
|
29
29
|
该步骤只生成检查点树文档,不生成或修改 Core 所有的 `tests.json`、`api-test-matrix.json`、需求图谱和验收测试冻结事实。结构化 `TC-*` 测试仍由后续 `workflow-acceptance-test-design` 负责。
|
|
30
30
|
|
|
@@ -5,11 +5,11 @@ argument-hint: "<功能名> [@PRD文档.md 或 语雀URL] [--auto]"
|
|
|
5
5
|
user-invocable: true
|
|
6
6
|
pattern: generator
|
|
7
7
|
inputs:
|
|
8
|
-
- ".planning/features/{feature}/功能点梳理.md"
|
|
9
|
-
- ".planning/requirements/baseline.md"
|
|
10
|
-
- ".planning/PROJECT.md"
|
|
8
|
+
- ".devflow/planning/features/{feature}/功能点梳理.md"
|
|
9
|
+
- ".devflow/planning/requirements/baseline.md"
|
|
10
|
+
- ".devflow/planning/PROJECT.md"
|
|
11
11
|
- "可选 PRD 原文(仅在当前步骤明确提供时读取)"
|
|
12
|
-
output: ".planning/features/{feature}/测试指导书.md"
|
|
12
|
+
output: ".devflow/planning/features/{feature}/测试指导书.md"
|
|
13
13
|
allowed-tools:
|
|
14
14
|
- Read
|
|
15
15
|
- Write
|
|
@@ -20,7 +20,7 @@ allowed-tools:
|
|
|
20
20
|
|
|
21
21
|
# 检查点树生成 Skill
|
|
22
22
|
|
|
23
|
-
> Devflow 适配说明:本文件随插件分发,由上层适配器调用。项目事实统一位于 `.planning/`;执行时以本文件的 Devflow 路径和适配器传入的输入为准,不解析旧版的 `_shared/` 或机器本地路径。
|
|
23
|
+
> Devflow 适配说明:本文件随插件分发,由上层适配器调用。项目事实统一位于 `.devflow/planning/`;执行时以本文件的 Devflow 路径和适配器传入的输入为准,不解析旧版的 `_shared/` 或机器本地路径。
|
|
24
24
|
|
|
25
25
|
This skill consumes 需求(PRD/baseline/功能点梳理) and creates a **检查点树**(checkpoint tree)——每个可测点展平成树的叶子检查点(一句话,可勾可数),**不是**用例字段块形态。Do not re-discuss requirements or generate technical plans.
|
|
26
26
|
|
|
@@ -32,21 +32,21 @@ This skill consumes 需求(PRD/baseline/功能点梳理) and creates a **检查
|
|
|
32
32
|
Devflow 由 Runtime 传入当前项目根目录和 feature,不再解析旧版 `WORKSPACE_ROOT` 参数。
|
|
33
33
|
|
|
34
34
|
路径约定:
|
|
35
|
-
- **共享文件**: `.planning/` — PROJECT.md, STATE.md, navigation/
|
|
36
|
-
- **功能文件**: `.planning/features/{feature}/` — baseline.md, 功能点梳理.md, 测试指导书.md, etc.
|
|
35
|
+
- **共享文件**: `.devflow/planning/` — PROJECT.md, STATE.md, navigation/
|
|
36
|
+
- **功能文件**: `.devflow/planning/features/{feature}/` — baseline.md, 功能点梳理.md, 测试指导书.md, etc.
|
|
37
37
|
</workspace_config>
|
|
38
38
|
|
|
39
39
|
## Outputs
|
|
40
40
|
|
|
41
41
|
Always create or update:
|
|
42
42
|
|
|
43
|
-
- `.planning/features/{feature}/测试指导书.md`(**检查点树形态**,非用例字段块形态。供 change-xmind 转 xmind)
|
|
43
|
+
- `.devflow/planning/features/{feature}/测试指导书.md`(**检查点树形态**,非用例字段块形态。供 change-xmind 转 xmind)
|
|
44
44
|
|
|
45
45
|
> 本 skill 产出**检查点树**:每个可测点是树的一句话叶子,按 `测试视角层→功能模块→子模块/组件→状态/维度分叉→条件→叶子` 组织,**标题纯语义名(无 FP/章节号)**。**不产**用例字段块形态(无 优先级/关联/前置/步骤/预期 块)。
|
|
46
46
|
|
|
47
47
|
## Argument Handling
|
|
48
48
|
|
|
49
|
-
- `<功能名>`: 由 Devflow 当前 feature 提供,用于定位 `.planning/features/{feature}/` 和输出路径。
|
|
49
|
+
- `<功能名>`: 由 Devflow 当前 feature 提供,用于定位 `.devflow/planning/features/{feature}/` 和输出路径。
|
|
50
50
|
- `@PRD文档.md` 或 `语雀URL`: 可选,PRD 原文(feature-breakdown 缺失时作为可测点源头,有则始终读作覆盖核对基准)。
|
|
51
51
|
- `--auto`: do not ask for supplementary information; mark gaps as `待确认` 进 PT-xxx 分支。
|
|
52
52
|
|
|
@@ -83,9 +83,9 @@ Load bundled resources only when needed:
|
|
|
83
83
|
|
|
84
84
|
源头优先级(feature-breakdown > baseline > PRD 原文),按可用性读:
|
|
85
85
|
|
|
86
|
-
1. Read `.planning/features/{feature}/功能点梳理.md` — 首选(字段级三维叶子,可测点素材)。
|
|
87
|
-
2. Read `.planning/requirements/baseline.md` — FP/BR/BC/CR 清单 + 澄清过的规则。
|
|
88
|
-
3. Read `.planning/PROJECT.md` — 项目上下文 + 代码路径(Phase 1.5 用)。
|
|
86
|
+
1. Read `.devflow/planning/features/{feature}/功能点梳理.md` — 首选(字段级三维叶子,可测点素材)。
|
|
87
|
+
2. Read `.devflow/planning/requirements/baseline.md` — FP/BR/BC/CR 清单 + 澄清过的规则。
|
|
88
|
+
3. Read `.devflow/planning/PROJECT.md` — 项目上下文 + 代码路径(Phase 1.5 用)。
|
|
89
89
|
4. **Read PRD 原文**(语雀 URL 或 `@文件.md`)— 始终读,作为覆盖核对的基准。feature-breakdown/baseline 缺失时,PRD 是可测点的唯一源头。
|
|
90
90
|
5. 若 feature-breakdown 和 baseline 都缺失且无 PRD → 报错,要求用户提供需求来源。
|
|
91
91
|
|
|
@@ -96,7 +96,7 @@ This phase runs ONLY when PROJECT.md "Project Locations" table contains at least
|
|
|
96
96
|
### 1.5.1 Load Navigation Files
|
|
97
97
|
|
|
98
98
|
If code paths exist:
|
|
99
|
-
1. Read `.planning/navigation/INDEX.md`.
|
|
99
|
+
1. Read `.devflow/planning/navigation/INDEX.md`.
|
|
100
100
|
2. Follow only navigation documents linked from INDEX.md; do not require fixed FRONTEND.md, ADMIN.md, or BACKEND.md filenames.
|
|
101
101
|
3. Extract concrete directory paths for components, pages, routes, controllers, services, models/entities, and enums/constants from the available navigation documents.
|
|
102
102
|
4. If a category is absent, record it as unavailable rather than inventing a path.
|
|
@@ -264,7 +264,7 @@ Consolidate findings into an internal "Code Context Summary" (NOT written to dis
|
|
|
264
264
|
|
|
265
265
|
## Phase 5 — 输出检查点树
|
|
266
266
|
|
|
267
|
-
加载 `assets/output-template.md`。按其层级约定写 `.planning/features/{feature}/测试指导书.md`(文件名保留,内容是检查点树形态):
|
|
267
|
+
加载 `assets/output-template.md`。按其层级约定写 `.devflow/planning/features/{feature}/测试指导书.md`(文件名保留,内容是检查点树形态):
|
|
268
268
|
|
|
269
269
|
1. 来源信息
|
|
270
270
|
2. 检查点树(Phase 3-4 组织的 **测试视角层→功能模块→子模块/组件→状态/维度分叉→条件→叶子** 缩进结构,标题纯语义名)
|