@shanyucoder/flowgrid 0.1.8 → 0.1.10
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/bin/flowgrid.mjs +43 -9
- package/bin/lib/audit-run.mjs +5 -1
- package/bin/lib/docs-hub-locale.mjs +9 -0
- package/bin/lib/init-scaffold.mjs +30 -2
- package/dist/docs/mcp/tools.js +4 -4
- package/dist/docs/mcp/tools.js.map +1 -1
- package/dist/docs/scan/ids.d.ts +1 -1
- package/dist/docs/scan/ids.js +6 -6
- package/dist/docs/scan/ids.js.map +1 -1
- package/dist/docs/scan/route.js +2 -2
- package/dist/docs/scan/route.js.map +1 -1
- package/engines/cases/render-cases.mjs +33 -25
- package/engines/docs/lib/audit-hub-prd.mjs +136 -0
- package/engines/docs/lib/audit-risks-catalog.mjs +142 -0
- package/engines/docs/lib/docs-hub-locale.mjs +100 -0
- package/engines/docs/lib/qa-item.mjs +91 -0
- package/engines/docs/lib/render-bundle-markdown.mjs +8 -1
- package/engines/docs/lib/render-qa-list.mjs +123 -25
- package/engines/docs/vitepress/config.ts +4 -4
- package/engines/spec/lib/audit-bundle-gaps.mjs +38 -7
- package/engines/spec/lib/audit-flow-gaps.mjs +2 -2
- package/engines/spec/lib/bundle-schema.mjs +3 -1
- package/engines/spec/lib/open-qa.mjs +71 -21
- package/engines/testcase/runners/lib/resolve-hub-id.mjs +3 -3
- package/harness/common/skills/legacy/SKILL.md +2 -2
- package/harness/docs/extracts/agent-execution-protocol.md +2 -2
- package/harness/docs/extracts/api-codegen-readiness.md +1 -1
- package/harness/docs/extracts/api-spec-sync.md +1 -1
- package/harness/docs/extracts/call-external.md +1 -1
- package/harness/docs/extracts/common-scope.md +8 -8
- package/harness/docs/extracts/design-leaf-signoff.md +2 -2
- package/harness/docs/extracts/extract-registry.docs.json +2 -1
- package/harness/docs/extracts/qa-inbox.md +19 -10
- package/harness/docs/extracts/qa-team.md +32 -0
- package/harness/docs/extracts/spec-core.md +1 -1
- package/harness/docs/extracts/spec-evolution.md +1 -1
- package/harness/docs/extracts/spec-prd-lite.md +11 -13
- package/harness/docs/extracts/tpl-module.md +9 -40
- package/harness/docs/extracts/tpl-overview-prd.md +11 -0
- package/harness/docs/extracts/tpl-risk-register.md +28 -0
- package/harness/docs/extracts/tpl-surface-prd.md +7 -0
- package/harness/docs/rules/docs-hub.mdc +1 -1
- package/harness/docs/rules/flowgrid-process.mdc +1 -1
- package/harness/docs/schemas/flowgrid-docs/qa-item.schema.json +65 -0
- package/harness/docs/skills/adopt/SKILL.md +1 -1
- package/harness/docs/skills/api-spec/SKILL.md +1 -1
- package/harness/docs/skills/api-update/SKILL.md +1 -1
- package/harness/docs/skills/background-logic/SKILL.md +1 -1
- package/harness/docs/skills/common-spec/SKILL.md +1 -1
- package/harness/docs/skills/cross-service/SKILL.md +1 -1
- package/harness/docs/skills/db-erd/SKILL.md +1 -1
- package/harness/docs/skills/grill/SKILL.md +2 -0
- package/harness/docs/skills/grill-bqa/SKILL.md +2 -2
- package/harness/docs/skills/grill-dev/SKILL.md +1 -1
- package/harness/docs/skills/grill-docs/SKILL.md +2 -2
- package/harness/docs/skills/grill-hub-prd/SKILL.md +38 -0
- package/harness/docs/skills/module/SKILL.md +8 -5
- package/harness/docs/skills/overview/SKILL.md +7 -6
- package/harness/docs/skills/qa-resolve/SKILL.md +13 -12
- package/harness/docs/skills/qa-review/SKILL.md +45 -0
- package/harness/docs/skills/risk-register/SKILL.md +29 -0
- package/harness/docs/skills/spec/SKILL.md +4 -4
- package/harness/docs/skills/surfaces/SKILL.md +3 -1
- package/harness/docs/skills/update-spec/SKILL.md +2 -2
- package/harness/docs/skills/{business-process → user-flow}/SKILL.md +8 -8
- package/harness/fe/extracts/wire-audit-loop.md +1 -1
- package/harness/fe/skills/gen-common/SKILL.md +1 -1
- package/harness/fe/skills/grill-wire/SKILL.md +1 -1
- package/harness/fe/skills/wire/SKILL.md +1 -1
- package/harness/tests/extracts/grill-scenario-flow.md +2 -2
- package/harness/tests/skills/grill-testcase/SKILL.md +1 -1
- package/harness/tests/skills/scenario/SKILL.md +11 -11
- package/harness/tests/skills/testcase/SKILL.md +1 -1
- package/harness/tests/templates/SC.example.md +16 -16
- package/lexicon/registry-tags.en.txt +2 -2
- package/package.json +1 -1
- package/templates/project-skeleton/architecture/03-business-process/index.md +3 -0
- package/templates/project-skeleton/architecture/{03-business-process → 03-user-flows}/FLOW-login.md +6 -6
- package/templates/project-skeleton/architecture/{03-business-process → 03-user-flows}/FLOW-template.md +6 -7
- package/templates/project-skeleton/architecture/11-risks/index.md +7 -17
- package/templates/project-skeleton/architecture/11-risks/risk-register.md +34 -0
- package/templates/project-skeleton/architecture/12-glossary/index.md +2 -1
- package/templates/project-skeleton/overview/index.md +21 -43
- package/templates/project-skeleton/overview/operational-areas/_template.md +15 -22
- package/templates/project-skeleton/qa/README.md +4 -8
- package/templates/project-skeleton/surfaces/_module-index.template.md +40 -0
- package/templates/project-skeleton/surfaces/_surface-index.template.md +43 -0
- package/templates/schemas/qa-item.schema.json +98 -0
- package/templates/shared/bundle-authoring.md +10 -6
- package/templates/shared/default-layout.ejs +108 -62
- package/templates/shared/feature.bundle.yaml +15 -6
- package/templates/shared/ir/generated/spec.md +24 -24
- package/templates/shared/ir-spec.yaml +1 -1
- package/templates/shared/qa-authoring.md +78 -0
- package/templates/shared/qa-item.yaml +35 -14
- package/templates/shared/tpl-api-contract.md +6 -6
- package/templates/tests-skeleton/catalog/locale.yaml +16 -15
- package/templates/tests-skeleton/tpl-testcase-plan.md +6 -6
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Surface index — English section keys
|
|
2
|
+
|
|
3
|
+
Template: `templates/project-skeleton/surfaces/_surface-index.template.md`
|
|
4
|
+
|
|
5
|
+
Required: `## Goals`, `## Background`, `## Scope`, CMP table, user flow links.
|
|
6
|
+
|
|
7
|
+
Content: language from `docs-hub.locale.yaml` (`contentLocale`).
|
|
@@ -19,7 +19,7 @@ only.
|
|
|
19
19
|
2. Use `flowgrid_docs_get_element` for one ID.
|
|
20
20
|
3. Use `flowgrid_docs_deps_of` and `flowgrid_docs_dependents_of` for reference impact.
|
|
21
21
|
4. Run `flowgrid_docs_orphans` and `flowgrid_docs_validate_links` before claiming completeness.
|
|
22
|
-
5. Use `
|
|
22
|
+
5. Use `flowgrid_docs_user_flows` before reading all journey files.
|
|
23
23
|
|
|
24
24
|
Do not require bộ docs for architecture work: if the MCP is unavailable, inspect
|
|
25
25
|
the repository Markdown directly or explain how to run project-local setup.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://platform.local/schemas/flowgrid-docs/qa-item.schema.json",
|
|
4
|
+
"title": "FlowGrid QA inbox item",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schema", "id", "status", "target", "updates"],
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema": {
|
|
10
|
+
"type": "string",
|
|
11
|
+
"const": "flowgrid-qa-item/v1"
|
|
12
|
+
},
|
|
13
|
+
"id": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"pattern": "^[A-Z0-9][A-Z0-9._-]*_\\d{4}$"
|
|
16
|
+
},
|
|
17
|
+
"screen": { "type": "string" },
|
|
18
|
+
"bundleId": { "type": "string" },
|
|
19
|
+
"status": { "type": "string", "enum": ["open", "closed"] },
|
|
20
|
+
"kind": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": ["customer", "choice", "tech-debt", "integration", "coverage"]
|
|
23
|
+
},
|
|
24
|
+
"skill": { "type": "string" },
|
|
25
|
+
"tags": { "type": "array", "items": { "type": "string" } },
|
|
26
|
+
"target": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"required": ["path", "at"],
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"path": { "type": "string" },
|
|
32
|
+
"at": { "type": "string" }
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"options": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"required": ["label"],
|
|
40
|
+
"properties": {
|
|
41
|
+
"label": { "type": "string" },
|
|
42
|
+
"recommended": { "type": "boolean" }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
"updates": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"minItems": 1,
|
|
49
|
+
"items": { "$ref": "#/$defs/update" }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"$defs": {
|
|
53
|
+
"update": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"required": ["at", "kind", "text"],
|
|
56
|
+
"additionalProperties": false,
|
|
57
|
+
"properties": {
|
|
58
|
+
"at": { "type": "string", "pattern": "^\\d{8} \\d{2}:\\d{2}$" },
|
|
59
|
+
"by": { "type": "string" },
|
|
60
|
+
"kind": { "type": "string", "enum": ["question", "answer", "review", "note"] },
|
|
61
|
+
"text": { "type": "string", "minLength": 1 }
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -127,7 +127,7 @@ extractBundle: architecture-core
|
|
|
127
127
|
---
|
|
128
128
|
## 6. Handoff Usage Guide
|
|
129
129
|
- `/legacy /spec W-AD-AUTH-001` — spec a legacy screen (MUST reuse CMN-* if applicable)
|
|
130
|
-
- `/legacy /
|
|
130
|
+
- `/legacy /user-flow FLOW-checkout` — map a legacy flow
|
|
131
131
|
```
|
|
132
132
|
|
|
133
133
|
---
|
|
@@ -110,7 +110,7 @@ Use the **same** skill (`/api-spec`) and same trio layout when there is no porta
|
|
|
110
110
|
- **[MANDATORY]** Set `feature.source.kind`, `base: none`, `integrationRefs[]` (or equivalent refs), empty `portalRefs`, `contexts.portalLayout: none`, and `contexts.auth` (API key / HMAC / OAuth).
|
|
111
111
|
- **[MANDATORY]** Domain tags: `#webhook-inbound`, `#webhook-outbound`, `#partner-api`, `#public-api`, `#call-external`, `#err:*` (include `#err:signature-invalid`, `#err:rate-limit`, `#err:unauthorized` when relevant).
|
|
112
112
|
- **[MANDATORY]** Scan sibling `…/api/<seq>/` and surface `common/yaml/` before creating new endpoints; reuse via `#reuse-api` when applicable.
|
|
113
|
-
- **[STRICTLY FORBIDDEN]** Do not invent HMAC secrets or partner validation logic; use AskQuestion or `qa
|
|
113
|
+
- **[STRICTLY FORBIDDEN]** Do not invent HMAC secrets or partner validation logic; use AskQuestion or `qa/` tech debt.
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
@@ -66,7 +66,7 @@ Shared extracts: `api-spec-sync.md`, `spec-evolution.md`, `entity-relationship.m
|
|
|
66
66
|
|
|
67
67
|
## Done Criteria
|
|
68
68
|
|
|
69
|
-
- Portal delta in `01`; or if deferred: `pendingTechDebt` with `id: QA-<feature.id>-NNNN` + `qa
|
|
69
|
+
- Portal delta in `01`; or if deferred: `pendingTechDebt` with `id: QA-<feature.id>-NNNN` + `qa/` file.
|
|
70
70
|
- `source.portalRefs` current.
|
|
71
71
|
- `changeLog` + version bumped.
|
|
72
72
|
- Handoff: `/grill-api-spec {slug}` (re-run gates + codegen tags).
|
|
@@ -19,7 +19,7 @@ extractBundle: architecture-core
|
|
|
19
19
|
## Rule: When to Use /background-logic
|
|
20
20
|
|
|
21
21
|
- **[MANDATORY]** Use this skill when:
|
|
22
|
-
1. A `FLOW-*`
|
|
22
|
+
1. A `FLOW-*` user flow has established UI steps but requires background automation (e.g. dispatching Zalo/SMS notifications upon booking creation, auto-cancelling orders after 15 minutes of non-payment).
|
|
23
23
|
2. Existing background logic needs updating (changing dispatch channels, modifying filtering conditions, adjusting retry policies, updating storage buckets).
|
|
24
24
|
3. Auditing background tasks for comprehensive error scenarios, retry strategies, and idempotency guarantees.
|
|
25
25
|
- **[STRICTLY FORBIDDEN]** Do NOT use this skill to edit UI screen specifications (use `/update-spec`) or author new APIs (use `/api-spec`).
|
|
@@ -10,7 +10,7 @@ Common technical bundles (`common/yaml`, `*.bundle.yaml` under `surfaces/.../com
|
|
|
10
10
|
|
|
11
11
|
| Need | Use |
|
|
12
12
|
|------|-----|
|
|
13
|
-
| Cross-flow product doc | `common/
|
|
13
|
+
| Cross-flow product doc | `common/user-flows/FLOW-*.md` |
|
|
14
14
|
| Shared UX/business rules | `/common` → `common/patterns/*.md` |
|
|
15
15
|
| UI patterns (delete flow, badges, flat design, …) | FE **base** + `flowgrid-ux-common.mdc` during `/spec` / grill |
|
|
16
16
|
| New shared component / codegen template | [custom-base](../../../docs/workflows/custom-base.md) → `build-template-code` |
|
|
@@ -18,7 +18,7 @@ extractBundle: architecture-core
|
|
|
18
18
|
|
|
19
19
|
- **[MANDATORY]** Use when a flow crosses a service, system, or boundary: sync RPC, async messaging, event-driven handoffs, retries, idempotency, integration contracts.
|
|
20
20
|
- **[STRICTLY FORBIDDEN]** Do NOT use for internal code execution paths inside a single service — that belongs in architecture internals.
|
|
21
|
-
- **[STRICTLY FORBIDDEN]** Do NOT use for business action flows on a surface → use `/
|
|
21
|
+
- **[STRICTLY FORBIDDEN]** Do NOT use for business action flows on a surface → use `/user-flow`.
|
|
22
22
|
- **[STRICTLY FORBIDDEN]** Do NOT use for runtime journey narratives focusing on user/system step order across the whole product → use `/journey`.
|
|
23
23
|
|
|
24
24
|
---
|
|
@@ -10,7 +10,7 @@ extractBundle: architecture-core
|
|
|
10
10
|
|
|
11
11
|
# /db-erd — Business Data Model (ERD)
|
|
12
12
|
|
|
13
|
-
**Phase:** **0 Architecture** — sau `/overview`, `/module`, `/
|
|
13
|
+
**Phase:** **0 Architecture** — sau `/overview`, `/module`, `/user-flow` khi có entity/bảng mới. **Trước** `/spec` leaf.
|
|
14
14
|
|
|
15
15
|
**Hub SSOT:** [architecture-data.md](../../../docs/workflows/architecture-data.md)
|
|
16
16
|
|
|
@@ -21,6 +21,8 @@ SSOT flow: `docs/workflows/grill-and-human-review.md` · close checklist: `docs/
|
|
|
21
21
|
|
|
22
22
|
| Gap context | Route to |
|
|
23
23
|
| --- | --- |
|
|
24
|
+
| Overview / surface / CMP `index.md` PRD sections | `/grill-hub-prd` |
|
|
25
|
+
| Sổ rủi ro quota / hạn mức / peak | `/risk-register` |
|
|
24
26
|
| UI acceptance, copy, validation, UX affordance | `/grill-bqa` |
|
|
25
27
|
| `bundle.gen`, codegen profile, `#gen:*`, endpoint `action` on `01` | `/grill-dev` |
|
|
26
28
|
| BQA ↔ Dev contradiction on same bundle | `/grill-docs` |
|
|
@@ -32,7 +32,7 @@ disable-model-invocation: true
|
|
|
32
32
|
- `<pageType>` from `gen.codegen.profile` when set; else infer from prompt (list | create | detail | auth | admin-crud | …) — same table as `docs/workflows/grill-and-human-review.md`.
|
|
33
33
|
- If profile unknown → AskQuestion to lock profile **before** audit (do not use `--type unknown`).
|
|
34
34
|
- **[MANDATORY]** Consume `gaps[]` (patch bundle) and `confirms[]` (AskQuestion with `(Recommended)` from audit): `CONFIRM_UX_*` + **`CONFIRM_DB_*`** (`db-audit-wizard.md`).
|
|
35
|
-
- **[MANDATORY]** After any bundle patch in Step A or B: **re-run** `flowgrid audit spec` until structural `gaps[]` empty or deferred via `qa
|
|
35
|
+
- **[MANDATORY]** After any bundle patch in Step A or B: **re-run** `flowgrid audit spec` until structural `gaps[]` empty or deferred via `qa/<SHORT>_NNNN.yaml`.
|
|
36
36
|
- **[RECOMMENDED]** Resolve `warnings[]` (placeholders, missing metrics/non-goals) when BQA has answers; sync `userStories` if UX copy changed.
|
|
37
37
|
- **[MANDATORY]** After reconcile: `flowgrid split` + `flowgrid render` — stakeholder review uses `ir/generated/spec.md`.
|
|
38
38
|
- **[STRICTLY FORBIDDEN]** Skip audit and rely on manual zone review only.
|
|
@@ -44,7 +44,7 @@ disable-model-invocation: true
|
|
|
44
44
|
- **[MANDATORY]** For `#missing_info` / open gaps: re-check ArtifactGraph → micro-scope → evaluate total gap volume:
|
|
45
45
|
- **Small Scope (≤5 questions):** `AskQuestion` wizard in chat thread — **one question at a time**, **≥3 options**: (1) `(Recommended)`, (2) `Other` (free text), (3) `Log as Tech Debt (Pending)`.
|
|
46
46
|
- **Large Scope (≥10 gaps):** **[MANDATORY HARD STOP IN CHAT]**. Do not spam single questions in chat. Generate an implementation plan / Plan Mode document partitioned into sequential Phases (3–5 gaps per phase) with disk offloading at boundaries.
|
|
47
|
-
- **[MANDATORY]** If member selects "Log as Tech Debt" → create `qa
|
|
47
|
+
- **[MANDATORY]** If member selects "Log as Tech Debt" → copy from `.flowgrid/templates/qa-item.yaml` per `qa-authoring.md`; create `qa/<SHORT>_NNNN.yaml`. Close later with `/qa-resolve`.
|
|
48
48
|
- **[STRICTLY FORBIDDEN]** Never write `openQuestions` in YAML. Never silently overwrite settled SSOT without explicit confirmation.
|
|
49
49
|
|
|
50
50
|
---
|
|
@@ -54,7 +54,7 @@ disable-model-invocation: true
|
|
|
54
54
|
→ **Proactively brainstorm** logical suggestions from business context in Vietnamese (e.g. login page → suggest `module: auth, entity: user`).
|
|
55
55
|
- **Small Scope (≤5 questions):** Trigger `AskQuestion` wizard — **one question at a time**, ≥3 options: (1) `(Recommended)`, (2) `Other` (free text), (3) `Log as Tech Debt (Pending)`. Wait for member answer before showing next question.
|
|
56
56
|
- **Large Scope (≥10 gaps/endpoints):** **[MANDATORY HARD STOP IN CHAT]**. Do not spam single questions in chat. Generate an implementation plan / Plan Mode document partitioned into sequential Phases (3–5 endpoints/gaps per phase) with disk offloading at boundaries.
|
|
57
|
-
- ✅ If member selects "Log as Tech Debt" → create `qa
|
|
57
|
+
- ✅ If member selects "Log as Tech Debt" → create `qa/<SHORT>_NNNN.yaml`; maintain `grillStatus.dev: pending`.
|
|
58
58
|
- ❌ Do NOT set `grillStatus.dev: done` until profile + entity/module + endpoint actions are all verified and confirmed.
|
|
59
59
|
|
|
60
60
|
---
|
|
@@ -42,7 +42,7 @@ disable-model-invocation: true
|
|
|
42
42
|
## Rule: Audit interlock (sau reconcile)
|
|
43
43
|
|
|
44
44
|
- **[MANDATORY]** After any bundle patch that touches `design.*`, `userStories`, `bundle.gen`, or `api` refs: run `flowgrid audit spec <bundle> --type <pageType>` (same profile rules as `/grill-dev`). Resolve `CONFIRM_DB_*` via `db-audit-wizard.md` before handoff.
|
|
45
|
-
- Patch structural `gaps[]`; defer remainder via `qa
|
|
45
|
+
- Patch structural `gaps[]`; defer remainder via `qa/` per Law 2.
|
|
46
46
|
- Address `warnings[]` when reconcile changes business prose (`summary`, `successMetrics`, `nonGoals`, `userStories`).
|
|
47
47
|
- ❌ Do not hand off FE until audit has been re-run post-reconcile.
|
|
48
48
|
|
|
@@ -81,6 +81,6 @@ disable-model-invocation: true
|
|
|
81
81
|
|
|
82
82
|
## Verification Checklist
|
|
83
83
|
|
|
84
|
-
- [ ] Conflicts reconciled in `*.bundle.yaml`, or deferred with `qa
|
|
84
|
+
- [ ] Conflicts reconciled in `*.bundle.yaml`, or deferred with `qa/<SHORT>_…`. No `openQuestions`.
|
|
85
85
|
- [ ] `bundle.gen.codegen.profile` present and correct.
|
|
86
86
|
- [ ] `flowgrid audit spec` re-run after reconcile; `flowgrid split` succeeded with zero errors.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-hub-prd
|
|
3
|
+
description: EXCLUSIVE /grill-hub-prd — PRD sections on overview, surface, CMP index.md. Audit-first like grill-bqa.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
> [!CRITICAL] MANDATORY PRE-FLIGHT
|
|
8
|
+
> **[MANDATORY]** Re-read this entire `SKILL.md` via file-read tool.
|
|
9
|
+
|
|
10
|
+
# /grill-hub-prd — Hub PRD validation
|
|
11
|
+
|
|
12
|
+
**Targets:** `overview/index.md`, `overview/operational-areas/*.md`, `surfaces/<surface>/index.md`, `surfaces/.../CMP-*/index.md`.
|
|
13
|
+
|
|
14
|
+
**Extracts:** `tpl-overview-prd.md`, `tpl-surface-prd.md`, `tpl-module.md`.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Rule: Audit interlock
|
|
19
|
+
|
|
20
|
+
- **[MANDATORY]** Run `flowgrid audit hub-prd <path-to.md>` before editing.
|
|
21
|
+
- **[MANDATORY]** Fix all `gaps[]`; resolve `warnings[]` via patch or `AskQuestion` (Recommended / Other / Log as Tech Debt → `qa/` per `qa-authoring.md`).
|
|
22
|
+
- **[MANDATORY]** Re-run audit until `totalGaps === 0` or gaps deferred to `qa/*.yaml`.
|
|
23
|
+
- **[STRICTLY FORBIDDEN]** Author Personas tables or Success metrics on hub — KPI/persona ngoài hub.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Rule: Missing information (Law 2)
|
|
28
|
+
|
|
29
|
+
- **≤5 gaps:** `AskQuestion` one at a time, ≥3 options.
|
|
30
|
+
- **≥10 gaps:** STOP — Plan Mode / phased doc offloading.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Verification
|
|
35
|
+
|
|
36
|
+
- [ ] English headings: Goals, Background, Scope (prose = `contentLocale` from `docs-hub.locale.yaml`).
|
|
37
|
+
- [ ] No bracket placeholders `[...]` for sign-off.
|
|
38
|
+
- [ ] `flowgrid audit hub-prd` clean or qa defer documented.
|
|
@@ -11,11 +11,14 @@ extractBundle: architecture-core
|
|
|
11
11
|
|
|
12
12
|
# /module — Business Module (CMP-*)
|
|
13
13
|
|
|
14
|
-
**Template:**
|
|
14
|
+
**Template:** `templates/project-skeleton/surfaces/_module-index.template.md` → `surfaces/<surface>/CMP-*/index.md` (extract: `tpl-module.md`).
|
|
15
15
|
|
|
16
|
-
**
|
|
17
|
-
-
|
|
18
|
-
|
|
16
|
+
- **[MANDATORY]** Sections: **Goals**, **Scope**, **Features overview**, **Depends on** — English headings; prose in `contentLocale`.
|
|
17
|
+
- **[MANDATORY]** After edit: `flowgrid audit hub-prd surfaces/.../CMP-*/index.md` or `/grill-hub-prd`.
|
|
18
|
+
|
|
19
|
+
**Target paths:**
|
|
20
|
+
- Module folder: `surfaces/<surface>/CMP-<NN>-<slug>/`
|
|
21
|
+
- Hub doc: `index.md` only (not README) — MD hub for grill/audit
|
|
19
22
|
|
|
20
23
|
---
|
|
21
24
|
|
|
@@ -30,7 +33,7 @@ extractBundle: architecture-core
|
|
|
30
33
|
## Rule: Common Scope for `/module … common`
|
|
31
34
|
|
|
32
35
|
- **[MANDATORY]** When called with `common` modifier:
|
|
33
|
-
- Default: `surfaces/[Surface]/[CMP-ID]/common/` (`patterns/`, `
|
|
36
|
+
- Default: `surfaces/[Surface]/[CMP-ID]/common/` (`patterns/`, `user-flows/`).
|
|
34
37
|
- If user names a cluster (e.g. `02`, draft `2-*`) → `…/[CMP-ID]/02/common/` (or deeper if sub-prefix specified).
|
|
35
38
|
- **[STRICTLY FORBIDDEN]** Do NOT create `surfaces/[Surface]/common` from `/module` — that scope requires `/surfaces`.
|
|
36
39
|
|
|
@@ -14,15 +14,16 @@ extractBundle: architecture-core
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
## Rule:
|
|
17
|
+
## Rule: PRD sections (English keys)
|
|
18
18
|
|
|
19
|
-
- **[MANDATORY]** `overview/index.md
|
|
20
|
-
- **[MANDATORY]** Each operational
|
|
21
|
-
- **[
|
|
19
|
+
- **[MANDATORY]** `overview/index.md` from `templates/project-skeleton/overview/index.md`: **Goals**, **Background**, **Scope** (in/out bullets), operational-areas table, see-also links. Extract: `tpl-overview-prd.md`.
|
|
20
|
+
- **[MANDATORY]** Each `overview/operational-areas/<slug>.md` from `operational-areas/_template.md`: **Scope**, module links, related user flows.
|
|
21
|
+
- **[STRICTLY FORBIDDEN]** Personas tables or Success metrics on hub — defer outside hub or bundle `userStories`.
|
|
22
|
+
- **[MANDATORY]** After edit: `flowgrid audit hub-prd overview/index.md` (or operational/surface path) — zero gaps or `/grill-hub-prd`.
|
|
22
23
|
|
|
23
|
-
## Rule: Content
|
|
24
|
+
## Rule: Content boundary
|
|
24
25
|
|
|
25
|
-
- **[MANDATORY]** Overview
|
|
26
|
+
- **[MANDATORY]** Overview is business prose in hub `contentLocale`; section titles stay English.
|
|
26
27
|
- **[STRICTLY FORBIDDEN]** Do NOT include technical details (database schemas, cloud infrastructure configurations, internal routing mechanisms).
|
|
27
28
|
- **[MANDATORY]** When mentioning 3rd-party systems, use business names only (e.g. "Payment Gateway"), not technical specifications or protocols.
|
|
28
29
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qa-resolve
|
|
3
3
|
extractBundle: docs-hub
|
|
4
|
-
description: EXCLUSIVE /qa-resolve — close one qa
|
|
4
|
+
description: EXCLUSIVE /qa-resolve — append answer + close one qa/<id>.yaml. Prompt is QA id + solution. Do not use for full-screen grill or first-time /spec.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -10,14 +10,14 @@ disable-model-invocation: true
|
|
|
10
10
|
|
|
11
11
|
# /qa-resolve — Close One Open QA
|
|
12
12
|
|
|
13
|
-
**When:** Member provides `
|
|
13
|
+
**When:** Member provides `HOTEL-LIST_0001` (or legacy `QA-<page-id>-NNNN`) **along with** an explicit decision/solution.
|
|
14
14
|
|
|
15
15
|
**Not this skill:**
|
|
16
16
|
- Unknown answers needing brainstorming → `/grill-bqa` / `/grill-dev` / `/grill-docs` / `/api-spec`
|
|
17
17
|
- FE delta without an existing QA file → `/update-spec`
|
|
18
18
|
- Portal/BE sync without closing QA files → `/api-update`
|
|
19
19
|
|
|
20
|
-
**Extract:** `.cursor/extracts/qa-inbox.md`
|
|
20
|
+
**Extract:** `.cursor/extracts/qa-inbox.md` · `qa-team.md`
|
|
21
21
|
|
|
22
22
|
---
|
|
23
23
|
|
|
@@ -25,8 +25,8 @@ disable-model-invocation: true
|
|
|
25
25
|
|
|
26
26
|
| Read (whole file) | Write | NEVER do |
|
|
27
27
|
|---|---|---|
|
|
28
|
-
| `qa/open/<id>.yaml` | Patch `target.path` only | Read generated `*.md` as SSOT |
|
|
29
|
-
| Target bundle **or** `01-backend-spec.yaml` (entire file) |
|
|
28
|
+
| `qa/<id>.yaml` (legacy: `qa/open/<id>.yaml`) | Patch `target.path` only | Read generated `*.md` as SSOT |
|
|
29
|
+
| Target bundle **or** `01-backend-spec.yaml` (entire file) | **Append** `updates[]` — never delete prior lines | Author `openQuestions` |
|
|
30
30
|
| `ir/design.yaml` — ONLY to locate field if `at` is a design pointer | `flowgrid split` after patch | Full-screen rewrite (use `/spec`) |
|
|
31
31
|
|
|
32
32
|
---
|
|
@@ -41,10 +41,10 @@ disable-model-invocation: true
|
|
|
41
41
|
|
|
42
42
|
## Rule: Resolving the QA File
|
|
43
43
|
|
|
44
|
-
- **[MANDATORY]** Step 1: Locate `qa
|
|
45
|
-
- Zero matches → **STOP**, list available
|
|
44
|
+
- **[MANDATORY]** Step 1: Locate `qa/<id>.yaml`. If missing, glob `qa/*` and legacy `qa/*` matching `id:`.
|
|
45
|
+
- Zero matches → **STOP**, list available QA ids to user.
|
|
46
46
|
- Multiple matches → **STOP**, prompt user to clarify which file to close.
|
|
47
|
-
- **[MANDATORY]** Step 2: Read `target.path`, `target.at`, `kind`, `skill`, and `question` from
|
|
47
|
+
- **[MANDATORY]** Step 2: Read `target.path`, `target.at`, `kind`, `skill`, and latest `question` from `updates[]` (or legacy `question` field).
|
|
48
48
|
|
|
49
49
|
---
|
|
50
50
|
|
|
@@ -60,9 +60,10 @@ disable-model-invocation: true
|
|
|
60
60
|
|
|
61
61
|
- **[MANDATORY]** Post-patch execution:
|
|
62
62
|
1. Write solution into field at `target.at` (replacing `#missing_info` / empty / placeholder).
|
|
63
|
-
2. Remove this ID from `#missing_info QA-…`, `#tech-debt:QA-…`, and all tag lists.
|
|
64
|
-
3. **
|
|
63
|
+
2. Remove this ID from `#missing_info QA-…`, `#tech-debt:QA-…`, `#missing_info <id>`, and all tag lists.
|
|
64
|
+
3. **Same file:** Append `updates[]` entry `kind: answer`, `at` now (`YYYYMMDD HH:mm`), `text` = solution; set `status: closed`.
|
|
65
65
|
4. Run `flowgrid split` / `pnpm docs:split` so `ir/spec.yaml` Q&A removes this ID.
|
|
66
|
+
5. Remind `flowgrid render` to refresh `qa/index.md`.
|
|
66
67
|
- **[MANDATORY]** Preserve existing error matrices (`onSuccess` / `onCommonError` / `onSpecificError`, `#err:*`) unless solution specifically alters those fields.
|
|
67
68
|
|
|
68
69
|
---
|
|
@@ -84,8 +85,8 @@ disable-model-invocation: true
|
|
|
84
85
|
|
|
85
86
|
## Verification Checklist
|
|
86
87
|
|
|
87
|
-
- [ ] Read `qa
|
|
88
|
+
- [ ] Read `qa/<id>.yaml`; patched only `target.path` field.
|
|
88
89
|
- [ ] Solution sourced strictly from user prompt (or single AskQuestion turn).
|
|
89
|
-
- [ ]
|
|
90
|
+
- [ ] Appended `kind: answer`; `status: closed`; tags removed for this ID.
|
|
90
91
|
- [ ] `flowgrid split` executed; `ir/spec.yaml` Q&A reflects closed status.
|
|
91
92
|
- [ ] Did not author `openQuestions` or `bundle.spec.api`.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: qa-review
|
|
3
|
+
description: /qa-review — append review line on qa/<id>.yaml (team).
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
> [!CRITICAL] MANDATORY PRE-FLIGHT
|
|
8
|
+
> **[MANDATORY]** Read `.cursor/extracts/qa-team.md` and hub `docs/workflows/qa-team.md`.
|
|
9
|
+
|
|
10
|
+
# /qa-review — Review QA timeline (team)
|
|
11
|
+
|
|
12
|
+
**Owner:** docs hub (`--type=Document` or consumer `FLOWGRID_DOCS_ROOT`)
|
|
13
|
+
|
|
14
|
+
**When:** After `/qa-resolve` appended `kind: answer`; senior checks decision quality and spec patch.
|
|
15
|
+
|
|
16
|
+
**Not this skill:** First answer + patch (`/qa-resolve`); silent spec edits (`/update-spec` without review note).
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Input
|
|
21
|
+
|
|
22
|
+
- `HOTEL-LIST_0001` (or legacy `QA-<page-id>-NNNN`)
|
|
23
|
+
- Optional: reviewer id + verdict in user prompt
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Steps
|
|
28
|
+
|
|
29
|
+
1. Read **whole** `qa/<id>.yaml` (legacy: `qa/` or same basename under `qa/`).
|
|
30
|
+
2. Read **whole** target `*.bundle.yaml` or `01-backend-spec.yaml` at `target.path`; verify field at `target.at` matches latest `kind: answer` text.
|
|
31
|
+
3. **Append only** to `updates[]` (never edit or delete prior lines):
|
|
32
|
+
- `at`: now (`YYYYMMDD HH:mm`)
|
|
33
|
+
- `by`: reviewer
|
|
34
|
+
- `kind`: `review`
|
|
35
|
+
- `text`: `approved: …` or `needs-change: …` (substantive notes)
|
|
36
|
+
4. If `needs-change` in text → set `status: open` on **same file** (middle fixes spec + `/qa-resolve` or append another `answer` later).
|
|
37
|
+
5. Remind: `flowgrid render` to refresh `qa/index.md`.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Verification
|
|
42
|
+
|
|
43
|
+
- [ ] File exists; timeline append-only.
|
|
44
|
+
- [ ] Review notes substantive for `needs-change`.
|
|
45
|
+
- [ ] No invented business beyond comparing answer vs spec.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: risk-register
|
|
3
|
+
description: /risk-register — Maintain architecture/11-risks/risk-register.md (quota, limits vs peak need).
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /risk-register — Sổ rủi ro tổng hợp
|
|
8
|
+
|
|
9
|
+
**SSOT:** `architecture/11-risks/risk-register.md`
|
|
10
|
+
**Template:** `harness/docs/extracts/tpl-risk-register.md`
|
|
11
|
+
|
|
12
|
+
**Khi dùng:** Rủi ro **không gắn một màn** — hạn mức email/SMS/API, license, SLA vendor, capacity cao điểm.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Rule: Audit interlock
|
|
17
|
+
|
|
18
|
+
- **[MANDATORY]** `flowgrid audit risks architecture/11-risks/risk-register.md` trước/sau sửa.
|
|
19
|
+
- **[MANDATORY]** Mỗi dòng: so sánh **Hạn mức** vs **Nhu cầu** → **Chênh lệch** → **Ảnh hưởng** → **Phương án**.
|
|
20
|
+
- **[STRICTLY FORBIDDEN]** Ghi `risks:` trên `*.bundle.yaml` — SSOT chỉ file này.
|
|
21
|
+
|
|
22
|
+
## Rule: AskQuestion (Law 2)
|
|
23
|
+
|
|
24
|
+
Thiếu số (quota, peak): wizard ≥3 options (Recommended / Other / Tech debt → `qa/`).
|
|
25
|
+
|
|
26
|
+
## Verification
|
|
27
|
+
|
|
28
|
+
- [ ] Ít nhất một rủi ro thật (không chỉ RISK-EXAMPLE).
|
|
29
|
+
- [ ] Audit `risks` trên register: gaps = 0 hoặc defer qa.
|
|
@@ -26,7 +26,7 @@ disable-model-invocation: true
|
|
|
26
26
|
- **Small Scope (≤5 gaps):** Run `AskQuestion` wizard — **one question at a time**, **≥3 options**: (1) `(Recommended)`, (2) Alternative, (3) `Log as Tech Debt (Pending)`. Show next question only after member answers current one.
|
|
27
27
|
- **Large Scope (≥10 gaps OR multi-screen scope):** **[MANDATORY HARD STOP IN CHAT]**. Do not spam single questions in chat. Generate an implementation plan / Plan Mode document partitioned into Phases (3–5 questions/fields per phase) to prevent session token overflow.
|
|
28
28
|
- ❌ Never invent, assume, or silently skip missing fields.
|
|
29
|
-
- **[MANDATORY]** If member chooses "Log as Tech Debt" →
|
|
29
|
+
- **[MANDATORY]** If member chooses "Log as Tech Debt" → read `.flowgrid/templates/qa-item.yaml` + `qa-authoring.md`; create `qa/<SHORT>_NNNN.yaml` (`schema: flowgrid-qa-item/v1`) + tag `#missing_info <id>`. Do not block on it.
|
|
30
30
|
- **[RECOMMENDED]** Brainstorm business text (context, input, output, screen descriptions) proactively in Vietnamese for Non-tech audience — do not wait to be told.
|
|
31
31
|
|
|
32
32
|
---
|
|
@@ -62,7 +62,7 @@ Hub: [spec-ssot-prep.md](../../../docs/workflows/spec-ssot-prep.md) · extract `
|
|
|
62
62
|
- `<pageType>` = page type đã xác định ở bước trên (list | create | detail | admin-crud | auth | ...).
|
|
63
63
|
- Script output:
|
|
64
64
|
- `gaps[]` → required fields missing → Agent patches bundle directly.
|
|
65
|
-
- `warnings[]` → **quality hints
|
|
65
|
+
- `warnings[]` → **quality hints** (`scopeIn`, `nonGoals`, `nfr`, `userFlows`, placeholders) — fix when info exists; **does not** block split. Rủi ro → `/risk-register` only (`WARN_BUNDLE_RISKS_FORBIDDEN` if `risks:` on bundle).
|
|
66
66
|
- `confirms[]` → AskQuestion wizard (one question at a time, ≥3 options):
|
|
67
67
|
- UX: `category: ux`, `UX_*`, `CONFIRM_UX_*` — `flowgrid-ux-common.mdc`
|
|
68
68
|
- **DB:** `category: db`, `CONFIRM_DB_*` — `.cursor/extracts/db-audit-wizard.md` (entities, multi-table, `db` vs `01`, `#derived-data`)
|
|
@@ -152,7 +152,7 @@ Each zone turn — **in order**:
|
|
|
152
152
|
|
|
153
153
|
### Rule: Summary extensions (PRD lite)
|
|
154
154
|
- **[MANDATORY]** `summary` bullets: business_goals, stakeholders, user_journey, context (input/output), optional solution.
|
|
155
|
-
- **[RECOMMENDED]**
|
|
155
|
+
- **[RECOMMENDED]** Fill `scopeIn`, `nonGoals`, `userFlows`, `nfr` when PO/BA có thông tin. Rủi ro dự án → **`/risk-register`** (`architecture/11-risks/risk-register.md`), never `risks:` on bundle.
|
|
156
156
|
- **[MANDATORY]** Replace template `[placeholder]` brackets in `summary` / metrics / non-goals before handoff grill.
|
|
157
157
|
|
|
158
158
|
### Rule: User Stories (`userStories`)
|
|
@@ -268,6 +268,6 @@ Each zone turn — **in order**:
|
|
|
268
268
|
- [ ] UX gap questions used checklist-backed `(Recommended)` options (`flowgrid-ux-common.mdc`), not open brainstorming.
|
|
269
269
|
- [ ] `userStories` scenarios/AC reflect UX affordances patched in `design` (incl. audit `suggestedStoryPatch`).
|
|
270
270
|
- [ ] YAML strings with `:` or `[]` are double-quoted. No `.md` written by hand.
|
|
271
|
-
- [ ] `
|
|
271
|
+
- [ ] PRD fields (`scopeIn`, `nonGoals`, `userFlows`, `nfr`) filled or deferred via `qa/` (no template brackets). Rủi ro không trên bundle.
|
|
272
272
|
- [ ] `pnpm docs:split` + `pnpm docs:render` run with zero errors; `ir/generated/spec.md` has TOC + overview sections.
|
|
273
273
|
- [ ] Handoff → `/testcase` created.
|
|
@@ -31,7 +31,9 @@ extractBundle: architecture-core
|
|
|
31
31
|
|
|
32
32
|
## Rule: Overview Alignment
|
|
33
33
|
|
|
34
|
-
- **[MANDATORY]** When
|
|
34
|
+
- **[MANDATORY]** When creating or updating a surface hub, copy `templates/project-skeleton/surfaces/_surface-index.template.md` → `surfaces/<surface>/index.md` (**Goals**, **Background**, **Scope**, CMP table, user-flow links, features overview). Extract: `tpl-surface-prd.md`.
|
|
35
|
+
- **[MANDATORY]** Before handoff: `flowgrid audit hub-prd surfaces/<surface>/index.md` — zero gaps or `/grill-hub-prd`.
|
|
36
|
+
- **[MANDATORY]** Describe actors, channels, and business responsibilities in plain language (no infra detail).
|
|
35
37
|
- **[MANDATORY]** Surface technical boundary: UI layout, component states, props, single-API data schemas specific to that screen.
|
|
36
38
|
- **[STRICTLY FORBIDDEN]** Do NOT include system-level architecture details (backend server configuration, load balancers, database schemas) in surface documentation.
|
|
37
39
|
|
|
@@ -27,7 +27,7 @@ Doc hub: `platform/toolchain/UPDATE-SPEC-FLOW.md` · `platform/toolchain/FEATURE
|
|
|
27
27
|
## Rule: Scope Boundaries
|
|
28
28
|
|
|
29
29
|
- **[MANDATORY]** Scope: patch bundle (delta only); emit `#update:*` tags; bump `specRevision`; run `flowgrid split/check`.
|
|
30
|
-
- **[STRICTLY FORBIDDEN]** Full rewrite → `/spec`. Close `qa
|
|
30
|
+
- **[STRICTLY FORBIDDEN]** Full rewrite → `/spec`. Close `qa` item → `/qa-resolve`. Production code → NOT this skill.
|
|
31
31
|
- **[MANDATORY]** Legacy re-mine / trace lại từ code cũ: dùng **`/legacy /spec`** (adopt lại) hoặc **`/update-spec`** với delta `legacy` / `legacyEvidence` + `#update:*` — **không** skill riêng.
|
|
32
32
|
|
|
33
33
|
---
|
|
@@ -37,7 +37,7 @@ Doc hub: `platform/toolchain/UPDATE-SPEC-FLOW.md` · `platform/toolchain/FEATURE
|
|
|
37
37
|
- **[MANDATORY]** Gaps or ambiguity regarding delta scope, evaluate total gap volume:
|
|
38
38
|
- **Small Scope (≤5 questions):** Trigger `AskQuestion` wizard — one question at a time, **≥3 options**: (1) `(Recommended)`, (2) `Other`, (3) `Log as Tech Debt (Pending)`.
|
|
39
39
|
- **Large Scope (≥10 gaps):** **[MANDATORY HARD STOP IN CHAT]**. Do not spam single questions in chat. Generate an implementation plan / Plan Mode document partitioned into sequential Phases (3–5 gaps per phase) with disk offloading at boundaries.
|
|
40
|
-
- ✅ If "Log as Tech Debt" is selected → create `qa
|
|
40
|
+
- ✅ If "Log as Tech Debt" is selected → create `qa/` entry; do not invent business data.
|
|
41
41
|
- ❌ Never invent delta scope or novel business fields without explicit user confirmation.
|
|
42
42
|
- Path SSOT: `surfaces/<surface>/CMP-*/<slug>/` — NO `modules/` segment.
|
|
43
43
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: /
|
|
2
|
+
name: user-flow
|
|
3
|
+
description: /user-flow — Luồng người dùng (FLOW-*) trên surfaces.
|
|
4
4
|
disable-model-invocation: true
|
|
5
5
|
extractBundle: architecture-core
|
|
6
6
|
---
|
|
@@ -8,11 +8,11 @@ extractBundle: architecture-core
|
|
|
8
8
|
> [!CRITICAL] MANDATORY PRE-FLIGHT
|
|
9
9
|
> **[MANDATORY]** Re-read this entire `SKILL.md` via file-read tool. STRICTLY FORBIDDEN to rely on memory.
|
|
10
10
|
|
|
11
|
-
# /
|
|
11
|
+
# /user-flow
|
|
12
12
|
|
|
13
13
|
**Mindset:** Model the process by **business actions on surfaces**, not by repository or service topology.
|
|
14
14
|
|
|
15
|
-
**Template:** `architecture/03-
|
|
15
|
+
**Template:** `architecture/03-user-flows/FLOW-template.md` (or `**/common/user-flows/FLOW-*.md`) — **Non-goals** in §1 when information exists (KPI ngoài hub).
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
@@ -36,8 +36,8 @@ extractBundle: architecture-core
|
|
|
36
36
|
## Rule: Target Path Resolution
|
|
37
37
|
|
|
38
38
|
- **[MANDATORY]** Resolve placement path via `.cursor/extracts/common-scope.md` §4.
|
|
39
|
-
- Surface-level: `surfaces/**/common/
|
|
40
|
-
- Architecture-level: `architecture/03-
|
|
39
|
+
- Surface-level: `surfaces/**/common/user-flows/FLOW-*.md`
|
|
40
|
+
- Architecture-level: `architecture/03-user-flows/`
|
|
41
41
|
- **[STRICTLY FORBIDDEN]** Do NOT use an unstandardized path like `[Target Path]/Common/Business processes`.
|
|
42
42
|
|
|
43
43
|
---
|
|
@@ -59,7 +59,7 @@ extractBundle: architecture-core
|
|
|
59
59
|
|
|
60
60
|
### When co-activated with `/architecture`:
|
|
61
61
|
- **[MANDATORY]** Focus on technical `sequenceDiagram` for entire long-running flow: backend services, DB interactions, cronjobs, external APIs, 3rd-party handshakes.
|
|
62
|
-
- Placement: `architecture/03-
|
|
62
|
+
- Placement: `architecture/03-user-flows/`.
|
|
63
63
|
|
|
64
64
|
---
|
|
65
65
|
|
|
@@ -93,7 +93,7 @@ extractBundle: architecture-core
|
|
|
93
93
|
|
|
94
94
|
- **[MANDATORY]** If `adoption-inventory.md` does NOT exist at workspace root → STOP: *"Run `/docs-hub /adopt` first."*
|
|
95
95
|
- **[MANDATORY]** If file exists: look up `FLOW-*` candidates and map legacy module/screens. Write with `legacy-` prefix (e.g. `legacy-FLOW-checkout.md`).
|
|
96
|
-
- **[MANDATORY - CROSS-FLOW LEGACY AUDIT]**: When analyzing legacy
|
|
96
|
+
- **[MANDATORY - CROSS-FLOW LEGACY AUDIT]**: When analyzing legacy user flows (`/legacy /user-flow`), Agent **MUST PROACTIVELY AUDIT END-TO-END FLOW GAPS**:
|
|
97
97
|
- Compare Data Output at Step $N$ (e.g., Screen 1 / API 1) with Input expectations at Step $N+1$ (e.g., Screen 2 / API 2) to identify schema or status misalignments.
|
|
98
98
|
- Flag orphan steps/APIs (not attached to any valid flow step) or processes lacking Confirmation / Rollback / Idempotency handling on failure.
|
|
99
99
|
- Tag issues with `[LEGACY_FLOW_GAP]` and generate Open Questions for member resolution.
|
|
@@ -47,7 +47,7 @@ Re-run **entire chain** after fixes in any lane (code, plan, or spec).
|
|
|
47
47
|
| Business/spec/UX wrong vs what API actually returns | docs hub | `/update-spec` (paste-ready `/docs-hub` prompt) |
|
|
48
48
|
| `01` / OpenAPI wrong; BE field/status codes | docs hub | `/api-update` → BE `/audit-api` → re-wire |
|
|
49
49
|
| SC screen uncovered | tests-docs | `/testcase` or `/scenario` + `audit scenario` |
|
|
50
|
-
| Intentional defer | docs | `qa
|
|
50
|
+
| Intentional defer | docs | `qa` + `QA-*` / `coverage_deferred` on SC |
|
|
51
51
|
|
|
52
52
|
**Forbidden:** patch `ir/*` or `01` from FE repo; invent AC on tests hub; skip `audit e2e` because manual QA passed.
|
|
53
53
|
|
|
@@ -13,7 +13,7 @@ disable-model-invocation: true
|
|
|
13
13
|
| `common/yaml` + `flowgrid gen-common` | FE base components + `design.registry.json` |
|
|
14
14
|
| New Mo* / adapter templates | [custom-base workflow](../../../docs/workflows/custom-base.md) → `build-template-code` |
|
|
15
15
|
| Cross-scope business rules | `/common` → `common/patterns/*.md` |
|
|
16
|
-
| Cross-flow | `common/
|
|
16
|
+
| Cross-flow | `common/user-flows/FLOW-*.md` |
|
|
17
17
|
|
|
18
18
|
**If a member invokes `/gen-common`:** STOP — explain deprecation; continue with `/prototype` (`gen:dry` → `gen`) when `grillStatus.dev: done`.
|
|
19
19
|
|
|
@@ -54,7 +54,7 @@ Re-run full chain after downstream lanes fix gaps.
|
|
|
54
54
|
| UX/spec/AC wrong vs observed behaviour | docs-hub `/update-spec` (paste-ready prompt per `grill-testcase` rule) |
|
|
55
55
|
| `FEBE_*`, wrong endpoint/field on `01` | docs-hub `/api-update` → BE `/audit-api` → member re-runs `/wire` |
|
|
56
56
|
| `SC_SCREEN_NO_TC` | tests-hub `/testcase` or `/scenario` |
|
|
57
|
-
| Defer only | `qa
|
|
57
|
+
| Defer only | `qa` + team policy |
|
|
58
58
|
|
|
59
59
|
- **[STRICTLY FORBIDDEN]** Close `#update:*` / `#wire-only` here — only `/wire` after spec merge confirms.
|
|
60
60
|
- **[STRICTLY FORBIDDEN]** Run `/api` codegen or full product regression from this skill.
|