@shanyucoder/flowgrid 0.1.12 → 0.1.13

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.
Files changed (65) hide show
  1. package/engines/spec/lib/audit-interaction-cases.mjs +2 -1
  2. package/harness/be/adapters/dotnet-integration/skills/framework-rules-be/SKILL.md +2 -2
  3. package/harness/be/adapters/fastapi/skills/framework-rules-be/SKILL.md +3 -3
  4. package/harness/be/adapters/laravel/skills/framework-rules-be/SKILL.md +3 -3
  5. package/harness/be/skills/api/SKILL.md +4 -4
  6. package/harness/be/skills/api-unit/SKILL.md +4 -4
  7. package/harness/be/skills/audit-api/SKILL.md +3 -3
  8. package/harness/be/skills/grill-api-unit/SKILL.md +2 -2
  9. package/harness/common/rules/artifactgraph.mdc +2 -2
  10. package/harness/common/rules/cross-repo-index.mdc +2 -2
  11. package/harness/common/rules/platform-code-size.mdc +5 -5
  12. package/harness/common/rules/team-flow-harness-state.mdc +4 -4
  13. package/harness/common/skills/business-impact-review/SKILL.md +1 -1
  14. package/harness/common/skills/configure-repo-maps/SKILL.md +1 -1
  15. package/harness/common/skills/docs-mark/SKILL.md +4 -4
  16. package/harness/docs/extracts/agent-design-context.md +17 -5
  17. package/harness/docs/extracts/extract-registry.docs.json +5 -2
  18. package/harness/docs/extracts/ir-read-only.md +42 -0
  19. package/harness/docs/rules/agent-compliance.mdc +5 -1
  20. package/harness/docs/rules/docs-hub.mdc +6 -6
  21. package/harness/docs/rules/flowgrid-process.mdc +5 -5
  22. package/harness/docs/rules/team-flow-grill.mdc +1 -1
  23. package/harness/docs/rules/team-flow-spec.mdc +5 -5
  24. package/harness/docs/skills/adopt/SKILL.md +1 -1
  25. package/harness/docs/skills/api/SKILL.md +2 -2
  26. package/harness/docs/skills/build-templates/SKILL.md +1 -1
  27. package/harness/docs/skills/call-external/SKILL.md +1 -1
  28. package/harness/docs/skills/cross-entity-service/SKILL.md +1 -1
  29. package/harness/docs/skills/db-erd/SKILL.md +2 -2
  30. package/harness/docs/skills/grill/SKILL.md +1 -1
  31. package/harness/docs/skills/grill-api-spec/SKILL.md +3 -3
  32. package/harness/docs/skills/grill-bqa/SKILL.md +2 -2
  33. package/harness/docs/skills/grill-dev/SKILL.md +9 -4
  34. package/harness/docs/skills/grill-docs/SKILL.md +2 -2
  35. package/harness/docs/skills/grill-hub-prd/SKILL.md +1 -1
  36. package/harness/docs/skills/openapi/SKILL.md +3 -3
  37. package/harness/docs/skills/risk-register/SKILL.md +8 -8
  38. package/harness/docs/skills/spec/SKILL.md +13 -8
  39. package/harness/docs/skills/update-spec/SKILL.md +17 -7
  40. package/harness/fe/adapters/dotnet-line/skills/framework-rules/SKILL.md +2 -2
  41. package/harness/fe/adapters/nextjs/skills/framework-rules/SKILL.md +2 -2
  42. package/harness/fe/adapters/nuxt4/skills/framework-rules/SKILL.md +2 -2
  43. package/harness/fe/rules/cross-repo-index-routing.mdc +1 -1
  44. package/harness/fe/rules/flowgrid-test-optional-accelerators.mdc +3 -3
  45. package/harness/fe/rules/team-flow-prototype.mdc +13 -13
  46. package/harness/fe/rules/team-flow-unit.mdc +6 -6
  47. package/harness/fe/skills/grill-prototype/SKILL.md +2 -2
  48. package/harness/fe/skills/grill-test/SKILL.md +1 -1
  49. package/harness/fe/skills/grill-unit/SKILL.md +2 -2
  50. package/harness/fe/skills/grill-wire/SKILL.md +1 -1
  51. package/harness/fe/skills/model/SKILL.md +4 -4
  52. package/harness/fe/skills/prototype/SKILL.md +1 -1
  53. package/harness/fe/skills/test/SKILL.md +3 -3
  54. package/harness/fe/skills/unit/SKILL.md +4 -4
  55. package/harness/fe/skills/wire/SKILL.md +5 -5
  56. package/harness/shared/rules/flowgrid-code-optional-integrations.mdc +7 -7
  57. package/harness/tests/rules/cross-repo-index-routing.mdc +1 -1
  58. package/harness/tests/rules/flowgrid-test-optional-accelerators.mdc +3 -3
  59. package/harness/tests/rules/plans-docs-first.mdc +5 -5
  60. package/harness/tests/skills/grill-testcase/SKILL.md +4 -4
  61. package/harness/tests/skills/scenario/SKILL.md +3 -3
  62. package/harness/tests/skills/testcase/SKILL.md +2 -2
  63. package/package.json +1 -1
  64. package/templates/shared/bundle-authoring.md +11 -5
  65. package/templates/shared/tpl-runtime-sequence.md +0 -56
@@ -1,5 +1,6 @@
1
1
  /**
2
- * Two-step audit for bundle interactionCases (see harness/docs/extracts/agent-design-context.md).
2
+ * Two-step audit for bundle interactionCases (invoked only from audit-bundle-gaps on *.bundle.yaml).
3
+ * See harness/docs/extracts/agent-design-context.md — do not run against ir/spec or ir/design.
3
4
  */
4
5
 
5
6
  function countMutationActions(design) {
@@ -8,9 +8,9 @@ disable-model-invocation: true
8
8
 
9
9
  **Owner:** Platform DNA (`--type=be|monolith --be-adapter=dotnet-integration`)
10
10
 
11
- .NET integration host · bộ code grill/gen first when applicable.
11
+ .NET integration host · code repo grill/gen first when applicable.
12
12
 
13
- ## Gen trước (code)
13
+ ## Gen first (code)
14
14
 
15
15
  1. Prefer codegen / existing templates before free-form scaffolding
16
16
  2. AI fills gaps only — do not duplicate generated surfaces
@@ -8,11 +8,11 @@ disable-model-invocation: true
8
8
 
9
9
  **Owner:** Platform DNA (`--type=be|monolith --be-adapter=fastapi`)
10
10
 
11
- FastAPI · modular packages · bộ code grill/gen first.
11
+ FastAPI · modular packages · code repo grill/gen first.
12
12
 
13
- ## Gen trước (code)
13
+ ## Gen first (code)
14
14
 
15
- 1. bộ code `gen` / repo shim from IR already grilled
15
+ 1. code repo `gen` / repo shim from IR already grilled
16
16
  2. AI only fills `#needs-*` / gaps not yet in `registries/`
17
17
  3. Do not hand-write boilerplate codegen already covers
18
18
 
@@ -8,11 +8,11 @@ disable-model-invocation: true
8
8
 
9
9
  **Owner:** Platform DNA (`--type=be|monolith --be-adapter=laravel`)
10
10
 
11
- Laravel · `nwidart/laravel-modules` (modules-v1) · bộ code grill/gen first.
11
+ Laravel · `nwidart/laravel-modules` (modules-v1) · code repo grill/gen first.
12
12
 
13
- ## Gen trước (code)
13
+ ## Gen first (code)
14
14
 
15
- 1. bộ code `gen` / repo shim from IR already grilled
15
+ 1. code repo `gen` / repo shim from IR already grilled
16
16
  2. AI only fills `#needs-*` / gaps not yet in registries
17
17
  3. Do not hand-write module scaffolding codegen already covers
18
18
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: api
3
- description: /api — backend API generation through bộ code BE adapters.
3
+ description: /api — backend API generation through BE code repo adapters.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
7
  # /api — Backend API
8
8
 
9
- **Owner:** bộ code (`--type=be`)
9
+ **Owner:** code repo (`--type=be`)
10
10
  **Adapters:** `fastapi` · `laravel` · `dotnet-integration` · `nestjs`
11
11
 
12
12
  ## Generate
@@ -52,7 +52,7 @@ FE models (not this skill): `flowgrid contract-gen:dry -- --spec /path/to/ir/des
52
52
 
53
53
  ## Route
54
54
 
55
- Architecture/C4 → bộ docs (`FLOWGRID_DOCS_ROOT`); IR via explicit `--spec` /
55
+ Architecture/C4 → docs hub (`FLOWGRID_DOCS_ROOT`); IR via explicit `--spec` /
56
56
  `FLOWGRID_DOCS_ROOT` when configured — never ArtifactGraph as the docs
57
57
  bridge. This-repo conventions → local CodeGraph if present; other repo X →
58
58
  only Platform DNA-wired `codegraph-<key>`. ArtifactGraph = local allowlist
@@ -87,7 +87,7 @@ warns and uses entity-local CRUD defaults.
87
87
 
88
88
  ```text
89
89
  if ArtifactGraph available: allowlist/recommend API generation
90
- else: execute bộ code adapter directly
90
+ else: execute code repo adapter directly
91
91
 
92
92
  if CodeGraph available for this checkout (`codegraph-<key>`): inspect existing module conventions/callers
93
93
  else: targeted repository search — never a workspace-parent graph
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  name: api-unit
3
- description: /unit — backend API unit test generation via bộ code BE adapters.
3
+ description: /unit — backend API unit test generation via BE code repo adapters.
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
7
  # /unit — Backend API Unit Tests
8
8
 
9
- **Owner:** bộ code (`--type=be`)
9
+ **Owner:** code repo (`--type=be`)
10
10
  **Adapters:** `fastapi` · `laravel` · `nestjs`
11
11
 
12
12
  > `dotnet-integration` emits test source during its primary API pass; it has no
@@ -48,7 +48,7 @@ Requires a prior `01-backend-spec.yaml` under the docs hub API folder.
48
48
 
49
49
  ## Route
50
50
 
51
- Architecture/C4 → bộ docs (`FLOWGRID_DOCS_ROOT`); spec via explicit `--spec` /
51
+ Architecture/C4 → docs hub (`FLOWGRID_DOCS_ROOT`); spec via explicit `--spec` /
52
52
  `FLOWGRID_DOCS_ROOT` when configured — never ArtifactGraph as the docs
53
53
  bridge. This-repo conventions → local CodeGraph if present; other repo X →
54
54
  only Platform DNA-wired `codegraph-<key>`. ArtifactGraph = local allowlist
@@ -64,7 +64,7 @@ hints only.
64
64
 
65
65
  ```text
66
66
  if ArtifactGraph available: allowlist/recommend API unit generation
67
- else: execute bộ code adapter directly
67
+ else: execute code repo adapter directly
68
68
 
69
69
  if CodeGraph available for this checkout (`codegraph-<key>`): inspect existing test conventions
70
70
  else: targeted repository search — never a workspace-parent graph
@@ -8,7 +8,7 @@ disable-model-invocation: true
8
8
 
9
9
  Run after `npm run codegen:api:dry` / `flowgrid api-gen:dry` and after implementation.
10
10
 
11
- **Owner:** bộ code (`--type=be`). Docs hub is **read-only**.
11
+ **Owner:** code repo (`--type=be`). Docs hub is **read-only**.
12
12
 
13
13
  ## Target / ID Resolution Rule
14
14
 
@@ -36,7 +36,7 @@ Check:
36
36
  - Writes are transaction-safe; async retries are idempotent.
37
37
  - Generated placeholders are replaced before ship.
38
38
 
39
- **CLI (lượng):** `flowgrid audit api` on `01`; when portal bundle exists → `flowgrid audit fe-be` on sibling `*.bundle.yaml`.
39
+ **CLI (quantitative):** `flowgrid audit api` on `01`; when portal bundle exists → `flowgrid audit fe-be` on sibling `*.bundle.yaml`.
40
40
 
41
41
  ## Accelerators (optional)
42
42
 
@@ -47,7 +47,7 @@ else: scoped contract-to-code comparison
47
47
  if codegraph-<repo-key> for this checkout: callers/routes/jobs/listeners
48
48
  else: targeted repository search
49
49
 
50
- architecture IDs / C4 → bộ docs (FLOWGRID_DOCS_ROOT), never CodeGraph
50
+ architecture IDs / C4 → docs hub (FLOWGRID_DOCS_ROOT), never CodeGraph
51
51
  ```
52
52
 
53
53
  Missing accelerators never block the audit. Complete each scoped model or
@@ -6,7 +6,7 @@ disable-model-invocation: true
6
6
 
7
7
  # /grill-unit
8
8
 
9
- **Owner:** bộ code · audit gate before BE unit test generation.
9
+ **Owner:** code repo · audit gate before BE unit test generation.
10
10
 
11
11
  Run after `npm run codegen:api:unit:dry` / `flowgrid api-unit-gen:dry` and
12
12
  before committing generated test code.
@@ -50,7 +50,7 @@ else: scoped spec-to-test comparison
50
50
  if codegraph-<repo-key> for this checkout: callers/routes/existing test patterns
51
51
  else: targeted repository search
52
52
 
53
- architecture IDs / C4 → bộ docs (FLOWGRID_DOCS_ROOT), never CodeGraph
53
+ architecture IDs / C4 → docs hub (FLOWGRID_DOCS_ROOT), never CodeGraph
54
54
  ```
55
55
 
56
56
  Missing accelerators never block the grill. Complete each scoped model or
@@ -14,9 +14,9 @@ alwaysApply: false
14
14
 
15
15
  ## Cross-repo routing
16
16
 
17
- - Architecture ID / C4 → bộ docs (`FLOWGRID_DOCS_ROOT`), not CodeGraph and not
17
+ - Architecture ID / C4 → docs hub (`FLOWGRID_DOCS_ROOT`), not CodeGraph and not
18
18
  ArtifactGraph.
19
- - IR / registry / generation → bộ code / bộ test pointers
19
+ - IR / registry / generation → code repo / tests hub pointers
20
20
  (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
21
21
  - Symbol / call-graph of repo X → `codegraph-<key>` MCP for checkout X.
22
22
  - ArtifactGraph is local-only: never follow those pointers, never read repo
@@ -9,13 +9,13 @@ Do not merge every repository into a single workspace graph (the parent folder
9
9
  must never be indexed). "Cross-repo" means a skill/rule knows how to reach the
10
10
  **correct per-repo index**, one repository at a time.
11
11
 
12
- **Owner:** Platform DNA. FlowGrid harness rules (bộ docs, bộ process, …) install this same
12
+ **Owner:** Platform DNA. FlowGrid harness rules (docs hub, process hub, …) install this same
13
13
  filename only when DNA is absent, so a destination never carries duplicate
14
14
  `alwaysApply` routing rules under different names.
15
15
 
16
16
  Route by intent:
17
17
 
18
- - Need an architecture ID or C4 path -> bộ docs MCP (`FLOWGRID_DOCS_ROOT`). Never
18
+ - Need an architecture ID or C4 path -> docs hub MCP (`FLOWGRID_DOCS_ROOT`). Never
19
19
  CodeGraph for architecture Markdown.
20
20
  - Need IR / registry / generation -> the pointer kit
21
21
  (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
@@ -8,17 +8,17 @@ alwaysApply: false
8
8
 
9
9
  Soft limits — split in the same PR when exceeded.
10
10
 
11
- | Vượt ~200 dòng/file | Tách | Gợi ý Tag DSL (`/docs-mark`) |
11
+ | Exceeds ~200 lines/file | Split | Suggest Tag DSL (`/docs-mark`) |
12
12
  |---------------------|------|------------------------------|
13
- | Page `.vue` | Composable + sub-component | `#needs-component: sub-{name}:MoXxx` hoặc `#common-ui` |
13
+ | Page `.vue` | Composable + sub-component | `#needs-component: sub-{name}:MoXxx` or `#common-ui` |
14
14
  | Composable | `useXxxForm`, `useXxxList`, … | `#common-ui` / `#needs-ui` |
15
- | Service / store | File theo aggregate; action phức tạp → service | `#cross-service` / `#cross-entity-service` / `#needs-service` |
15
+ | Service / store | File per aggregate; complex action → service | `#cross-service` / `#cross-entity-service` / `#needs-service` |
16
16
  | E2E spec | Page Object + helper | `#e2e-test` bundle split |
17
17
 
18
- | Vượt ~20 dòng/function | Tách | Gợi ý Tag DSL (`/docs-mark`) |
18
+ | Exceeds ~20 lines/function | Split | Suggest Tag DSL (`/docs-mark`) |
19
19
  |------------------------|------|------------------------------|
20
20
  | Submit handler | `buildPayload`, `validateBeforeSubmit`, `handleApiError` | `#needs-service` / local helper |
21
21
  | Map/transform | Pure helpers / computed | `#derived-data` |
22
22
 
23
23
  No padding files with blank lines. Component split: `platform-component-split.mdc`.
24
- Khi file/function chạm ngưỡng vượt giới hạn, AI Agent cần chủ động đề xuất gán tag tương ứng (thông qua `/docs-mark`) và cập nhật registry (`registries/design.registry.json` hoặc `registries/common.registry.json`) để tái sử dụng sau này.
24
+ When a file or function hits an exceed threshold, the agent should proactively propose the matching tag (via `/docs-mark`) and update the registry (`registries/design.registry.json` or `registries/common.registry.json`) for reuse later.
@@ -6,7 +6,7 @@ alwaysApply: false
6
6
 
7
7
  # Harness State
8
8
 
9
- - `feature_list.json` — scope, không tự đánh done khi chưa verify
10
- - `progress.md` — handoff session tiếp theo
11
- - `registries/page-lifecycle.registry.json` + `base-docs/platform/toolchain/PAGE-LIFECYCLE.md` — stage cao nhất từng route; `portal:gen` / `portal:remove` / `portal:lifecycle sync` tự cập nhật
12
- - Khi command public cập nhật phase, ghi rõ: command, file đã đổi, verify đã chạy/chưa chạy, blocker còn lại.
9
+ - `feature_list.json` — scope; do not mark done without verification
10
+ - `progress.md` — handoff for the next session
11
+ - `registries/page-lifecycle.registry.json` + `base-docs/platform/toolchain/PAGE-LIFECYCLE.md` — highest stage per route; `portal:gen` / `portal:remove` / `portal:lifecycle sync` update automatically
12
+ - When a public command updates phase, record clearly: command, files changed, verify run or not, remaining blockers.
@@ -90,7 +90,7 @@ if CodeGraph available: changed symbols + callers + call graph — for repo X us
90
90
  open repo's index; unindexed repo → report `cd <root> && codegraph init`
91
91
  else: targeted repository search/read
92
92
 
93
- if bộ docs available: map process steps to CMP/CTR/FLOW docs via FLOWGRID_DOCS_ROOT
93
+ if docs hub available: map process steps to CMP/CTR/FLOW docs via FLOWGRID_DOCS_ROOT
94
94
  (never CodeGraph for architecture Markdown)
95
95
  else: repository conventions/search
96
96
 
@@ -55,6 +55,6 @@ legacy ERP at D:\legacy\erp, key legacy-erp
55
55
  ## After Write
56
56
 
57
57
  1. Compare with `.flowgrid/config.json` (init SSOT): `flowgrid repo-maps check`.
58
- 2. If paths conflict with init/harness MCP: `flowgrid repo-maps align` (member chốt từng hub `docs` / `tests`).
58
+ 2. If paths conflict with init/harness MCP: `flowgrid repo-maps align` (member confirms each hub `docs` / `tests`).
59
59
  3. One-way refresh from config: `flowgrid repo-maps sync --from-config` then `flowgrid harness sync`.
60
60
  4. Optional CodeGraph: `platform-dna codegraph:wire` · `codegraph init` per checkout.
@@ -31,13 +31,13 @@ fallbacks.
31
31
  | UI | `registries/design.registry.json` | `#needs-component:` `#needs-ui:` `#shell:` |
32
32
  | Logic | `registries/common.registry.json` | `#common:*` `#needs-common:*` |
33
33
 
34
- Executable registry validation is **bộ code FE** (or product scripts on the
34
+ Executable registry validation is **FE code repo** (or product scripts on the
35
35
  FE checkout). On docs hub:
36
36
 
37
37
  ```text
38
38
  if ArtifactGraph available:
39
39
  artifactgraph_allowlist_check(registryValidate|commonRegistry)
40
- artifactgraph_recommend_command → hand off to bộ code FE
40
+ artifactgraph_recommend_command → hand off to FE code repo
41
41
  else:
42
42
  note pending FE registry validate; do not invent local shell fallbacks
43
43
  ```
@@ -58,8 +58,8 @@ else:
58
58
 
59
59
  ## Handoff
60
60
 
61
- bộ code FE / product: `flowgrid gen:dry` (or repo shim) after marks change,
62
- when that lane is available. Missing bộ code is a pending handoff, not a
61
+ FE code repo / product: `flowgrid gen:dry` (or repo shim) after marks change,
62
+ when that lane is available. Missing code repo is a pending handoff, not a
63
63
  docs failure.
64
64
 
65
65
  ## Compatibility
@@ -26,8 +26,8 @@ Agents often read only `*.bundle.yaml` + `ir/design.yaml` and miss three indepen
26
26
  | --- | --- | --- | --- |
27
27
  | **L1** | `FLOW-*` · `common/user-flows/` | MD + **§6 `sequenceDiagram`** | Where the user goes across screens |
28
28
  | **L2** | `interactionCases` on bundle (optional) | YAML → split | One `W-*`: cases + per-case sequence |
29
- | **L3** | `design.stateMatrix` | YAML | Machine state/button matrix |
30
- | **L4** | bundle + `ir/design.yaml` + `01` | YAML | Fields, actions, apiRef, outcomes |
29
+ | **L3** | `bundle.design.stateMatrix` | YAML on bundle → split | Machine state/button matrix |
30
+ | **L4** | `bundle.design` + `01` | YAML on bundle → `ir/design.yaml` | Fields, actions, apiRef, outcomes |
31
31
  | **NFR** | `bundle.nfr` | MD bullets | Constraints on all cases |
32
32
 
33
33
  **Do not** put L2 single-screen branches into FLOW MD. **Do not** require L2 on trivial list-only GET screens.
@@ -70,9 +70,14 @@ interactionCases:
70
70
  ...
71
71
  ```
72
72
 
73
- **Split:** prose → `ir/spec.yaml` → `ir/generated/spec.md` (§ Interaction cases); diagrams only → `ir/design.yaml` → `ir/generated/design.md`.
73
+ **Author here only** — on `feature.bundle.yaml`. **`flowgrid split`** partitions:
74
74
 
75
- **Codegen read order for L2:** `spec.md` prose + `design.md` mermaid + `stateMatrix` / `actions` — not FLOW.
75
+ - prose (`description`, `policy`, …) → `ir/spec.yaml` → render `spec.md`
76
+ - `sequenceDiagram` per item → `ir/design.yaml` → render `design.md`
77
+
78
+ **Codegen read order for L2:** read split/render output (`design.md` + `stateMatrix` / `actions` on `ir/design.yaml`) — do not author L2 on IR.
79
+
80
+ **Not FLOW** for L2 timelines.
76
81
 
77
82
  ---
78
83
 
@@ -94,7 +99,11 @@ For target leaf `W-*`:
94
99
 
95
100
  ## Audit (`flowgrid audit spec`)
96
101
 
97
- **Step 1 — policy confirm** when screen is complex and `interactionCases` missing:
102
+ **Target file:** always **`*.bundle.yaml`** on the function leaf — **not** `ir/spec.yaml`, `ir/design.yaml`, or `ir/generated/*`.
103
+
104
+ `engines/spec/lib/audit-bundle-gaps.mjs` parses the **bundle** and runs `auditInteractionCases(bundle)` (plus UX/DB/userFlows warnings). Patch findings on the **bundle**, then `split` → `render`.
105
+
106
+ **Step 1 — policy confirm** when screen is complex and `interactionCases` missing on the **bundle**:
98
107
 
99
108
  - Emit `CONFIRM_INTERACTION_CASES_POLICY` in `confirms[]`.
100
109
  - Options: **(Recommended) required** — set `policy: required` + `items[]`; **skip** — `policy: skip` + `skipReason`; **Other** (free text).
@@ -117,8 +126,11 @@ Skip step 1 when `interactionCases.policy: skip` is already declared.
117
126
  | Design sequences | `ir/generated/design.md` |
118
127
  | API | `ir/generated/api.md` |
119
128
 
129
+ **SSOT loop:** Review **`ir/generated/spec.md`** (read-only) → gaps → **`/update-spec`** patches **`*.bundle.yaml`** → `split` → `render`. Never edit `ir/spec.yaml`, `ir/design.yaml`, or generated MD. See **`ir-read-only.md`**. No routine `spec:merge`.
130
+
120
131
  ---
121
132
 
133
+
122
134
  ## One-line summary
123
135
 
124
136
  **L1:** `/user-flow` → `FLOW-*.md` + §6; leaf links via **`userFlows`**. **NFR:** mandatory read before design/API. **L2:** **`interactionCases`** on bundle → `spec.md` + `design.md`; never in FLOW.
@@ -29,13 +29,15 @@
29
29
  ".cursor/extracts/agent-execution-protocol.md",
30
30
  ".cursor/extracts/common-scope.md",
31
31
  ".cursor/extracts/product-id-convention.md",
32
- ".cursor/extracts/agent-design-context.md"
32
+ ".cursor/extracts/agent-design-context.md",
33
+ ".cursor/extracts/ir-read-only.md"
33
34
  ],
34
35
  "spec-core": [
35
36
  ".cursor/extracts/spec-core.md",
36
37
  ".cursor/extracts/common-scope.md",
37
38
  ".cursor/extracts/product-id-convention.md",
38
- ".cursor/extracts/agent-design-context.md"
39
+ ".cursor/extracts/agent-design-context.md",
40
+ ".cursor/extracts/ir-read-only.md"
39
41
  ],
40
42
  "bqa-grill": [
41
43
  ".cursor/extracts/grill/validation.md",
@@ -54,6 +56,7 @@
54
56
  ],
55
57
  "update-spec": [
56
58
  ".cursor/extracts/update-spec-delta.md",
59
+ ".cursor/extracts/ir-read-only.md",
57
60
  ".cursor/extracts/wire-spec-feedback.md",
58
61
  ".cursor/extracts/qa-inbox.md"
59
62
  ]
@@ -0,0 +1,42 @@
1
+ # IR & generated markdown — read-only (SSOT = bundle)
2
+
3
+ ## Authoring SSOT (incl. L1/L2 added for agents)
4
+
5
+ **Write on `*.bundle.yaml` only** — then `split` materializes IR:
6
+
7
+ | Field | On bundle | After `split` (read-only) |
8
+ | --- | --- | --- |
9
+ | `userFlows`, `nfr`, `interactionCases` (full block) | top-level on bundle | partitioned → `ir/spec.yaml` + `ir/design.yaml` |
10
+ | `design.stateMatrix`, `design.actions`, sections | `design:` on bundle | `ir/design.yaml` |
11
+
12
+ **Never** create or edit `interactionCases` / `userFlows` first on `ir/spec.yaml` or `ir/design.yaml`. There is no separate IR authoring path for those fields.
13
+
14
+ ## Write path (single loop)
15
+
16
+ 1. **Author / patch** `*.bundle.yaml` on the function leaf (`/spec`, `/grill-*`, `/update-spec`, `/api-spec` for `01` only).
17
+ 2. **`flowgrid audit spec <bundle.yaml>`** — UX, DB, `userFlows`, **`interactionCases`** (`CONFIRM_INTERACTION_CASES_POLICY`), state/action checks all run on the **bundle file**, never on `ir/*`.
18
+ 3. **`flowgrid split`** → regenerates `ir/spec.yaml` + `ir/design.yaml` from bundle.
19
+ 4. **`flowgrid render`** → regenerates `ir/generated/*.md` for VitePress.
20
+
21
+ **Do not** use `spec:merge` / `flowgrid merge` to “fix” review findings — patch the **bundle**, then split (+ render).
22
+
23
+ ## Read-only (agents and members)
24
+
25
+ | Path | Role |
26
+ | --- | --- |
27
+ | `ir/spec.yaml` | Split output — business prose mirror. **Read only.** |
28
+ | `ir/design.yaml` | Split output — tech IR. **Read only.** |
29
+ | `ir/generated/spec.md` | **Primary human review** (VitePress). **Read only.** |
30
+ | `ir/generated/design.md` | L2 sequence diagrams (render). **Read only.** |
31
+ | `ir/generated/data-model.md`, `api.md` | Review helpers. **Read only.** |
32
+
33
+ **[STRICTLY FORBIDDEN]** `Write` / patch on any `ir/*` or `ir/generated/*` file.
34
+
35
+ ## Review → fix loop
36
+
37
+ 1. Member runs docs site build (VitePress) and reads **`ir/generated/spec.md`** (and linked `design.md` / `api.md` when relevant).
38
+ 2. Gaps, typos, scope, stories, `interactionCases`, NFR → **`/update-spec`** (or `/spec` if greenfield rewrite).
39
+ 3. Agent patches **`*.bundle.yaml` only** → audit → split → render.
40
+ 4. Re-open VitePress page to confirm.
41
+
42
+ Downstream codegen (`/prototype`, `/grill-dev`) **reads** `ir/design.yaml` (and ACP reads `ir/generated/design.md` for L2) — still **never writes** IR.
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Enforce physical interlocks for all bộ docs skills
2
+ description: Enforce physical interlocks for all docs hub skills
3
3
  alwaysApply: true
4
4
  ---
5
5
 
@@ -24,3 +24,7 @@ When executing any skill (`/spec`, `/grill`, `/grill-bqa`, etc.):
24
24
  7. **ISOLATION:** Execute strictly within the invoked skill scope. **[STRICTLY FORBIDDEN]** to merge sibling features or output fake Markdown reports when YAML contracts are required.
25
25
 
26
26
  **Path SSOT:** `surfaces/<surface>/CMP-*/<slug>/` (NO `modules/` segment). **IDs:** `product-id-convention.md` (`surfaceCode` + `CMP|W|API-{SURF}-{DOMAIN}-{NN}`).
27
+
28
+ **Harness language:** Agent instructions in `harness/**/skills` and `harness/**/rules` are **English**. Member-facing product prose (bundle summaries, UI copy) follows `docs-hub.locale.yaml` / `/spec` — not the skill language.
29
+
30
+ **Docs hub IR:** SSOT write = **`*.bundle.yaml`** → `flowgrid split` → `flowgrid render`. **`ir/spec.yaml`**, **`ir/design.yaml`**, and **`ir/generated/*`** are **read-only** for agents and members; review fixes → **`/update-spec`** on the bundle (`ir-read-only.md`).
@@ -1,12 +1,12 @@
1
1
  ---
2
- description: bộ docs MCP — arc42/C4 docs index; opt-in skill use
2
+ description: docs hub MCP — arc42/C4 docs index; opt-in skill use
3
3
  alwaysApply: false
4
4
  ---
5
- # docs-hub (bộ docs)
5
+ # docs-hub (docs hub)
6
6
 
7
7
  Use `/docs-hub` for targeted ID, dependency, link, journey, and chapter queries.
8
8
 
9
- The docs repo owns architecture/product Markdown. bộ docs indexes and validates
9
+ The docs repo owns architecture/product Markdown. docs hub indexes and validates
10
10
  only.
11
11
 
12
12
  - In docs: `FLOWGRID_DOCS_ROOT` points to the current docs repo.
@@ -21,14 +21,14 @@ only.
21
21
  4. Run `flowgrid_docs_orphans` and `flowgrid_docs_validate_links` before claiming completeness.
22
22
  5. Use `flowgrid_docs_user_flows` before reading all journey files.
23
23
 
24
- Do not require bộ docs for architecture work: if the MCP is unavailable, inspect
24
+ Do not require docs hub for architecture work: if the MCP is unavailable, inspect
25
25
  the repository Markdown directly or explain how to run project-local setup.
26
26
 
27
27
  ## Index routing
28
28
 
29
29
  Cross-repo index is per-repo, never one giant parent-workspace graph:
30
30
 
31
- - Architecture ID / C4 path → bộ docs (`FLOWGRID_DOCS_ROOT`). Never CodeGraph for
31
+ - Architecture ID / C4 path → docs hub (`FLOWGRID_DOCS_ROOT`). Never CodeGraph for
32
32
  architecture Markdown.
33
33
  - IR / registry / generation → pointer kits when present
34
34
  (`FLOWGRID_DOCS_ROOT`, `FLOWGRID_DOCS_ROOT`, `FLOWGRID_TESTS_DOC`).
@@ -40,7 +40,7 @@ Cross-repo index is per-repo, never one giant parent-workspace graph:
40
40
  - ArtifactGraph stays local-only; it is never a shared index for other repos.
41
41
 
42
42
  ArtifactGraph is optional. If `@platform/artifactgraph` is not configured,
43
- unavailable, or fails, bộ docs must continue with targeted local search and
43
+ unavailable, or fails, docs hub must continue with targeted local search and
44
44
  scoped Markdown reads; the missing optional must never abort the run. Assign one
45
45
  stable `runId` per run. Count each successful fallback file read and its exact
46
46
  raw byte length. After the fallback completes, emit exactly one
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: FlowGrid bộ process — business-process-trace (brownfield) and impact review (opt-in)
2
+ description: FlowGrid process hub — business-process-trace (brownfield) and impact review (opt-in)
3
3
  alwaysApply: false
4
4
  ---
5
5
 
6
- # FlowGrid bộ process
6
+ # FlowGrid process hub
7
7
 
8
8
  - `/business-process-trace`: observed brownfield process through code/evidence.
9
9
  - `/business-impact-review`: read-only vertical × horizontal blast-radius review.
@@ -14,11 +14,11 @@ alwaysApply: false
14
14
  Checkout routing (`cross-repo-index.mdc`): `legacy-*` →
15
15
  `legacy-repos.local.json`; other system ids → `platform-repos.local.json`.
16
16
  Ambiguous or missing keys → ask / Gaps + `/configure-repo-maps` — never invent
17
- paths. FlowGrid bộ process does not write cross-repo CodeGraph MCP entries.
17
+ paths. FlowGrid process hub does not write cross-repo CodeGraph MCP entries.
18
18
 
19
- CodeGraph, bộ docs and ArtifactGraph are optional accelerators; route them per
19
+ CodeGraph, docs hub and ArtifactGraph are optional accelerators; route them per
20
20
  repo/intent as defined in `cross-repo-index.mdc` (architecture →
21
- bộ docs, IR/registry → pointer kits, symbols of repo X → `codegraph-<key>` for
21
+ docs hub, IR/registry → pointer kits, symbols of repo X → `codegraph-<key>` for
22
22
  X). Missing tools must fall back to targeted local search/model analysis and
23
23
  explicit residual gaps. Per run/optional pair, count actual successful file reads and raw context
24
24
  bytes, then emit exactly one `flowgrid.missing-optional` event conforming to
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: bộ docs grill metadata — list/form/detail profiles
2
+ description: docs hub grill metadata — list/form/detail profiles
3
3
  globs: surfaces/**
4
4
  alwaysApply: false
5
5
  ---
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: bộ docs docs spec/grill/update workflow
2
+ description: docs hub docs spec/grill/update workflow
3
3
  globs: surfaces/**, legacy-dynamics/**
4
4
  alwaysApply: false
5
5
  ---
@@ -24,12 +24,12 @@ Shared: resolve skill `extractBundle` → `.cursor/extracts/extract-registry.doc
24
24
 
25
25
  ## Pipeline
26
26
 
27
- 1. **`/spec`** — `*.bundle.yaml` only (`feature.bundle.yaml` template; not `design-spec.yaml`). Include `successMetrics` / `nonGoals` when known. Per-zone: DSL/registry → bundle; `audit spec` `gaps[]` + non-blocking `warnings[]`. BA deliverable: `ir/generated/spec.md` after split+render. No `gen` / `codegen` in first pass.
27
+ 1. **`/spec`** — **write** `*.bundle.yaml` only → `split` → `render`. **Read-only:** `ir/spec.yaml`, `ir/design.yaml`, `ir/generated/*` (see `ir-read-only.md`). BA reviews **`ir/generated/spec.md`** on VitePress; gaps → **`/update-spec`** (not direct IR edits, not `spec:merge`). No `gen` / `codegen` in first pass.
28
28
  2. **`/grill-bqa`** — UI, acceptance, breadcrumb, delete rules.
29
- 3. **`/grill-dev`** — codegen-ready bundle + `tags`; emit bộ code FE dry-run handoff.
29
+ 3. **`/grill-dev`** — codegen-ready bundle + `tags`; emit FE code repo dry-run handoff.
30
30
  4. **`/grill-docs`** — optional reconcile when BQA↔Dev contradict.
31
- 5. **`/update-spec`** — controlled delta + `#update:*` (legacy trace → `/legacy /spec` hoặc delta legacy trong cùng skill; not full rewrite).
32
- 6. **`/prototype`** — FE-lane handoff only after bộ code dry-run passes.
31
+ 5. **`/update-spec`** — controlled delta + `#update:*` (legacy trace → `/legacy /spec` or legacy delta in the same skill; not full rewrite).
32
+ 6. **`/prototype`** — FE-lane handoff only after code repo dry-run passes.
33
33
 
34
34
  - Render: `docs_render` / `flowgrid render` (pnpm fallback during transition)
35
35
  - **[STRICTLY FORBIDDEN]** Do NOT build UI prototypes, backend implementations, live APIs, or full E2E/unit tests during the spec/grill phase.
@@ -12,7 +12,7 @@ extractBundle: architecture-core
12
12
 
13
13
  **Audit Interlock:** Run `flowgrid audit legacy <target-id>`. Consume JSON gap report to verify mapping or prompt member if index is missing.
14
14
 
15
- **Handoff SSOT spec:** Sau adopt, member drill [spec-ssot-prep.md](../../../docs/workflows/spec-ssot-prep.md) — Phase 0 → `/legacy /spec` per `W-*` (không nhảy thẳng bundle không có ID trong inventory).
15
+ **Handoff SSOT spec:** After adopt, member drills [spec-ssot-prep.md](../../../docs/workflows/spec-ssot-prep.md) — Phase 0 → `/legacy /spec` per `W-*` (do not jump straight to a bundle whose ID is not in the inventory).
16
16
 
17
17
  **Inventory template:** `.cursor/extracts/tpl-adoption-inventory.md` — section layout + **user-flow placement tiers** (cross-surface → `architecture/03-user-flows/`).
18
18
 
@@ -22,7 +22,7 @@ disable-model-invocation: true
22
22
  | Portal specs changed / merge deferred child functions | `/api-update` |
23
23
  | BE-only requirement (no FE contract change) | `/api-update --be-only` |
24
24
  | Spec exists but not codegen-ready / `approval.status` not `approved` | `/grill-api-spec` |
25
- | `approval.status: approved` + explicit implement request | bộ code BE `/api` (switch to BE repo skill — NOT this skill) |
25
+ | `approval.status: approved` + explicit implement request | BE code repo `/api` (switch to BE repo skill — NOT this skill) |
26
26
 
27
27
  - **[MANDATORY]** Locate `01-backend-spec.yaml` under: `…/api/<seq>/` (screen leaf), `…/common/yaml/<slug>/`, or any surface leaf dedicated to external-channel APIs.
28
28
  - **[STRICTLY FORBIDDEN]** Do NOT skip `/grill-api-spec` for new features, cross-portal, or legacy-derived contracts.
@@ -35,5 +35,5 @@ Doc: `docs/operational/TEAM-AI-BACKEND-WORKFLOW.md`
35
35
  ## Verification Checklist
36
36
 
37
37
  - [ ] Checked `01-backend-spec.yaml` presence, `approval.status`, and `feature.source.kind`.
38
- - [ ] Correctly routed to contract skills vs bộ code BE `/api`.
38
+ - [ ] Correctly routed to contract skills vs BE code repo `/api`.
39
39
  - [ ] Did NOT generate any content from this routing skill.
@@ -9,7 +9,7 @@ disable-model-invocation: true
9
9
 
10
10
  # /build-templates — Codebase Scanning & Template Scaffolding
11
11
 
12
- **Purpose:** Synchronize Docs Hub (bộ docs) with actual FE/BE codebase reality by scanning code and scaffolding customized `.ejs` templates.
12
+ **Purpose:** Synchronize Docs Hub (docs hub) with actual FE/BE codebase reality by scanning code and scaffolding customized `.ejs` templates.
13
13
 
14
14
  ---
15
15
 
@@ -10,7 +10,7 @@ disable-model-invocation: true
10
10
 
11
11
  # #call-external — Third-Party Integration Tag
12
12
 
13
- Used from: `/api-spec`, `/grill-api-spec`, and bộ code BE `/api` when this hashtag is present.
13
+ Used from: `/api-spec`, `/grill-api-spec`, and BE code repo `/api` when this hashtag is present.
14
14
 
15
15
  ---
16
16
 
@@ -10,7 +10,7 @@ disable-model-invocation: true
10
10
 
11
11
  # #cross-entity-service — Cross-Aggregate Orchestration Tag
12
12
 
13
- Used from: `/api-spec`, `/grill-api-spec`, and bộ code BE `/api` when this hashtag is present.
13
+ Used from: `/api-spec`, `/grill-api-spec`, and BE code repo `/api` when this hashtag is present.
14
14
 
15
15
  ---
16
16
 
@@ -10,14 +10,14 @@ extractBundle: architecture-core
10
10
 
11
11
  # /db-erd — Business Data Model (ERD)
12
12
 
13
- **Phase:** **0 Architecture** — sau `/overview`, `/module`, `/user-flow` khi có entity/bảng mới. **Trước** `/spec` leaf.
13
+ **Phase:** **0 Architecture** — after `/overview`, `/module`, `/user-flow` when new entities/tables appear. **Before** any `/spec` leaf.
14
14
 
15
15
  **Hub SSOT:** [architecture-data.md](../../../docs/workflows/architecture-data.md)
16
16
 
17
17
  **Target Path:** `<LCA>/common/db-erd.md` — LCA resolved from `.cursor/extracts/common-scope.md`.
18
18
  VitePress/publish menu label: **`db-erd`** (not the H1 heading).
19
19
 
20
- **Handoff:** Design `/spec` đọc file này; chi tiết cột → `design.sections[].db` + `spec.entities` — **không** duplicate full ER trên bundle.
20
+ **Handoff:** Design `/spec` reads this file; column detail → `design.sections[].db` + `spec.entities` — do **not** duplicate the full ER on the bundle.
21
21
 
22
22
  ---
23
23
 
@@ -22,7 +22,7 @@ SSOT flow: `docs/workflows/grill-and-human-review.md` · close checklist: `docs/
22
22
  | Gap context | Route to |
23
23
  | --- | --- |
24
24
  | Overview / surface / CMP `index.md` PRD sections | `/grill-hub-prd` |
25
- | Sổ rủi ro quota / hạn mức / peak | `/risk-register` |
25
+ | Consolidated risk register (quota / limits / peak) | `/risk-register` |
26
26
  | UI acceptance, copy, validation, UX affordance | `/grill-bqa` |
27
27
  | `bundle.gen`, codegen profile, `#gen:*`, endpoint `action` on `01` | `/grill-dev` |
28
28
  | BQA ↔ Dev contradiction on same bundle | `/grill-docs` |