@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.
- package/engines/spec/lib/audit-interaction-cases.mjs +2 -1
- package/harness/be/adapters/dotnet-integration/skills/framework-rules-be/SKILL.md +2 -2
- package/harness/be/adapters/fastapi/skills/framework-rules-be/SKILL.md +3 -3
- package/harness/be/adapters/laravel/skills/framework-rules-be/SKILL.md +3 -3
- package/harness/be/skills/api/SKILL.md +4 -4
- package/harness/be/skills/api-unit/SKILL.md +4 -4
- package/harness/be/skills/audit-api/SKILL.md +3 -3
- package/harness/be/skills/grill-api-unit/SKILL.md +2 -2
- package/harness/common/rules/artifactgraph.mdc +2 -2
- package/harness/common/rules/cross-repo-index.mdc +2 -2
- package/harness/common/rules/platform-code-size.mdc +5 -5
- package/harness/common/rules/team-flow-harness-state.mdc +4 -4
- package/harness/common/skills/business-impact-review/SKILL.md +1 -1
- package/harness/common/skills/configure-repo-maps/SKILL.md +1 -1
- package/harness/common/skills/docs-mark/SKILL.md +4 -4
- package/harness/docs/extracts/agent-design-context.md +17 -5
- package/harness/docs/extracts/extract-registry.docs.json +5 -2
- package/harness/docs/extracts/ir-read-only.md +42 -0
- package/harness/docs/rules/agent-compliance.mdc +5 -1
- package/harness/docs/rules/docs-hub.mdc +6 -6
- package/harness/docs/rules/flowgrid-process.mdc +5 -5
- package/harness/docs/rules/team-flow-grill.mdc +1 -1
- package/harness/docs/rules/team-flow-spec.mdc +5 -5
- package/harness/docs/skills/adopt/SKILL.md +1 -1
- package/harness/docs/skills/api/SKILL.md +2 -2
- package/harness/docs/skills/build-templates/SKILL.md +1 -1
- package/harness/docs/skills/call-external/SKILL.md +1 -1
- package/harness/docs/skills/cross-entity-service/SKILL.md +1 -1
- package/harness/docs/skills/db-erd/SKILL.md +2 -2
- package/harness/docs/skills/grill/SKILL.md +1 -1
- package/harness/docs/skills/grill-api-spec/SKILL.md +3 -3
- package/harness/docs/skills/grill-bqa/SKILL.md +2 -2
- package/harness/docs/skills/grill-dev/SKILL.md +9 -4
- package/harness/docs/skills/grill-docs/SKILL.md +2 -2
- package/harness/docs/skills/grill-hub-prd/SKILL.md +1 -1
- package/harness/docs/skills/openapi/SKILL.md +3 -3
- package/harness/docs/skills/risk-register/SKILL.md +8 -8
- package/harness/docs/skills/spec/SKILL.md +13 -8
- package/harness/docs/skills/update-spec/SKILL.md +17 -7
- package/harness/fe/adapters/dotnet-line/skills/framework-rules/SKILL.md +2 -2
- package/harness/fe/adapters/nextjs/skills/framework-rules/SKILL.md +2 -2
- package/harness/fe/adapters/nuxt4/skills/framework-rules/SKILL.md +2 -2
- package/harness/fe/rules/cross-repo-index-routing.mdc +1 -1
- package/harness/fe/rules/flowgrid-test-optional-accelerators.mdc +3 -3
- package/harness/fe/rules/team-flow-prototype.mdc +13 -13
- package/harness/fe/rules/team-flow-unit.mdc +6 -6
- package/harness/fe/skills/grill-prototype/SKILL.md +2 -2
- package/harness/fe/skills/grill-test/SKILL.md +1 -1
- package/harness/fe/skills/grill-unit/SKILL.md +2 -2
- package/harness/fe/skills/grill-wire/SKILL.md +1 -1
- package/harness/fe/skills/model/SKILL.md +4 -4
- package/harness/fe/skills/prototype/SKILL.md +1 -1
- package/harness/fe/skills/test/SKILL.md +3 -3
- package/harness/fe/skills/unit/SKILL.md +4 -4
- package/harness/fe/skills/wire/SKILL.md +5 -5
- package/harness/shared/rules/flowgrid-code-optional-integrations.mdc +7 -7
- package/harness/tests/rules/cross-repo-index-routing.mdc +1 -1
- package/harness/tests/rules/flowgrid-test-optional-accelerators.mdc +3 -3
- package/harness/tests/rules/plans-docs-first.mdc +5 -5
- package/harness/tests/skills/grill-testcase/SKILL.md +4 -4
- package/harness/tests/skills/scenario/SKILL.md +3 -3
- package/harness/tests/skills/testcase/SKILL.md +2 -2
- package/package.json +1 -1
- package/templates/shared/bundle-authoring.md +11 -5
- package/templates/shared/tpl-runtime-sequence.md +0 -56
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Two-step audit for bundle interactionCases (
|
|
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 ·
|
|
11
|
+
.NET integration host · code repo grill/gen first when applicable.
|
|
12
12
|
|
|
13
|
-
## Gen
|
|
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 ·
|
|
11
|
+
FastAPI · modular packages · code repo grill/gen first.
|
|
12
12
|
|
|
13
|
-
## Gen
|
|
13
|
+
## Gen first (code)
|
|
14
14
|
|
|
15
|
-
1.
|
|
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) ·
|
|
11
|
+
Laravel · `nwidart/laravel-modules` (modules-v1) · code repo grill/gen first.
|
|
12
12
|
|
|
13
|
-
## Gen
|
|
13
|
+
## Gen first (code)
|
|
14
14
|
|
|
15
|
-
1.
|
|
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
|
|
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:**
|
|
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 →
|
|
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
|
|
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
|
|
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:**
|
|
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 →
|
|
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
|
|
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:**
|
|
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 (
|
|
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 →
|
|
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:**
|
|
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 →
|
|
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 →
|
|
17
|
+
- Architecture ID / C4 → docs hub (`FLOWGRID_DOCS_ROOT`), not CodeGraph and not
|
|
18
18
|
ArtifactGraph.
|
|
19
|
-
- IR / registry / generation →
|
|
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 (
|
|
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 ->
|
|
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
|
-
|
|
|
11
|
+
| Exceeds ~200 lines/file | Split | Suggest Tag DSL (`/docs-mark`) |
|
|
12
12
|
|---------------------|------|------------------------------|
|
|
13
|
-
| Page `.vue` | Composable + sub-component | `#needs-component: sub-{name}:MoXxx`
|
|
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
|
|
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
|
-
|
|
|
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
|
-
|
|
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
|
|
10
|
-
- `progress.md` — handoff
|
|
11
|
-
- `registries/page-lifecycle.registry.json` + `base-docs/platform/toolchain/PAGE-LIFECYCLE.md` — stage
|
|
12
|
-
-
|
|
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
|
|
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
|
|
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 **
|
|
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
|
|
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
|
-
|
|
62
|
-
when that lane is available. Missing
|
|
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
|
|
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
|
-
**
|
|
73
|
+
**Author here only** — on `feature.bundle.yaml`. **`flowgrid split`** partitions:
|
|
74
74
|
|
|
75
|
-
|
|
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
|
-
**
|
|
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
|
|
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:
|
|
2
|
+
description: docs hub MCP — arc42/C4 docs index; opt-in skill use
|
|
3
3
|
alwaysApply: false
|
|
4
4
|
---
|
|
5
|
-
# docs-hub (
|
|
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.
|
|
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
|
|
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 →
|
|
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,
|
|
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
|
|
2
|
+
description: FlowGrid process hub — business-process-trace (brownfield) and impact review (opt-in)
|
|
3
3
|
alwaysApply: false
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# FlowGrid
|
|
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
|
|
17
|
+
paths. FlowGrid process hub does not write cross-repo CodeGraph MCP entries.
|
|
18
18
|
|
|
19
|
-
CodeGraph,
|
|
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
|
-
|
|
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:
|
|
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
|
|
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
|
|
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`
|
|
32
|
-
6. **`/prototype`** — FE-lane handoff only after
|
|
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:**
|
|
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 |
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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** —
|
|
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`
|
|
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
|
-
|
|
|
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` |
|