@fluentcommerce/ai-skills 0.8.2 → 0.8.3

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 (31) hide show
  1. package/README.md +79 -29
  2. package/bin/cli.mjs +278 -10
  3. package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +6 -3
  4. package/content/cli/skills/fluent-connect/SKILL.md +1 -1
  5. package/content/dev/skills/fluent-e2e-test/SKILL.md +3 -1
  6. package/content/dev/skills/fluent-event-api/SKILL.md +1 -0
  7. package/content/dev/skills/fluent-feature-explain/SKILL.md +1 -0
  8. package/content/dev/skills/fluent-feature-plan/SKILL.md +1 -0
  9. package/content/dev/skills/fluent-mystique-builder/SKILL.md +2 -3
  10. package/content/dev/skills/fluent-mystique-scaffold/SDK_REFERENCE.md +2 -2
  11. package/content/dev/skills/fluent-mystique-scaffold/TEMPLATES.md +1 -2
  12. package/content/dev/skills/fluent-mystique-sdk-reference/SKILL.md +2 -2
  13. package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +25 -0
  14. package/content/dev/skills/fluent-sourcing/SKILL.md +4 -0
  15. package/content/dev/skills/fluent-test-data/SKILL.md +4 -0
  16. package/content/dev/skills/fluent-trace/SKILL.md +16 -1
  17. package/content/dev/skills/fluent-workflow-builder/SKILL.md +11 -1
  18. package/content/dev/skills/fluent-workflow-deploy/SKILL.md +27 -0
  19. package/content/knowledge/index.md +2 -0
  20. package/content/knowledge/platform/create-order-reference.md +797 -0
  21. package/content/knowledge/platform/domain-model.md +1 -1
  22. package/content/knowledge/platform/workflow-design.md +18 -0
  23. package/content/mcp-extn/skills/fluent-mcp-core/SKILL.md +1 -1
  24. package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +1 -1
  25. package/docs/dev-workflow.md +5 -2
  26. package/docs/fluent-ai-skills-reference.md +2 -2
  27. package/docs/getting-started.md +2 -2
  28. package/docs/use-cases.md +1 -1
  29. package/docs/workflow-reference.md +4 -2
  30. package/metadata.json +1 -1
  31. package/package.json +1 -1
@@ -1019,7 +1019,7 @@ When the user runs `/fluent-connect` with a different profile than currently con
1019
1019
  |-------|-------|-----------|
1020
1020
  | 0 | workspace-state.json corrupted | Delete and re-run full discovery |
1021
1021
  | 1 | No profiles exist | Delegate to `/fluent-profile` |
1022
- | 1 | `fluent` CLI not found | Install: `npm i -g @fluentcommerce/cli` |
1022
+ | 1 | `fluent` CLI not found | Install from [docs.fluentcommerce.com](https://docs.fluentcommerce.com/building-blocks/fluent-cli-package) |
1023
1023
  | 2 | No retailers for profile | Register via `fluent profile update` or `/fluent-cli-retailer` |
1024
1024
  | 3 | mcp-setup fails | Check `npx @fluentcommerce/ai-skills --help` works and retry mcp-setup |
1025
1025
  | 3 | connection.test auth failure | Update credentials: `fluent profile update <PROFILE> --username <user> --password <pass>` |
@@ -11,6 +11,8 @@ cursor-tier: auto
11
11
 
12
12
  Run automated test sequences against Fluent Commerce workflows. Discover environment configuration, create entities with real refs, fire events in sequence, poll for state transitions, and report pass/fail results.
13
13
 
14
+ **Knowledge dependency:** For the full `createOrder` input schema, mutation patterns (HD, CC, MULTI, mixed), fulfilmentChoice wiring, and query gotchas, see `knowledge/platform/create-order-reference.md`.
15
+
14
16
  ## Pre-flight: Feedback Check
15
17
 
16
18
  Before starting, check for past learnings from this skill:
@@ -325,7 +327,7 @@ After sending an event, the entity status changes asynchronously. Use this patte
325
327
 
326
328
  **Step 1 — Create Order:**
327
329
 
328
- Run `/fluent-test-data` to generate the `createOrder` mutation with discovered refs. The skill queries locations, products, catalogues, and customers — then builds the mutation payload dynamically. See `/fluent-test-data` for the full discovery and creation flow.
330
+ Run `/fluent-test-data` to generate the `createOrder` mutation with discovered refs. The skill queries locations, products, catalogues, and customers — then builds the mutation payload dynamically. See `knowledge/platform/create-order-reference.md` for the full type tree, patterns (HD, CC, split shipment), and gotchas.
329
331
 
330
332
  **Step 2 — ConfirmValidation (triggers full cascade):**
331
333
  ```
@@ -924,6 +924,7 @@ Compact patterns for common external system integration event flows.
924
924
  - **Event name:** `CREATE` (auto-generated on `createOrder` mutation)
925
925
  - **Pattern:** Ecommerce platform → createOrder GraphQL mutation → ORDER workflow auto-triggers
926
926
  - **Note:** The `CREATE` event is implicit — no explicit event.send needed. The mutation triggers it.
927
+ - **Full mutation reference:** `knowledge/platform/create-order-reference.md` — type tree, HD/CC/split patterns, fulfilmentChoice linkage, gotchas
927
928
 
928
929
  ### SendEvent Classification
929
930
 
@@ -140,6 +140,7 @@ Check for project-specific knowledge that should inform feature explanation:
140
140
 
141
141
  3. Read matching knowledge files — typically:
142
142
  - `knowledge/platform/domain-model.md` — use for entity edges, cross-domain relationships, valid GraphQL connections
143
+ - `knowledge/platform/create-order-reference.md` — createOrder input schema, fulfilmentChoice wiring, ORDER::MULTI patterns. Use when explaining order intake flows.
143
144
  - `accounts/<PROFILE>/knowledge/client/business-rules.md` — use for business context of rules and workflows
144
145
  - `accounts/<PROFILE>/knowledge/client/data-model.md` — use for entity types, subtypes, attribute schemas
145
146
  4. Apply knowledge silently — do NOT show raw knowledge to user, just use it to produce better explanations
@@ -92,6 +92,7 @@ Check for project-specific knowledge that should inform feature planning:
92
92
  - `accounts/<PROFILE>/knowledge/client/data-model.md` — use for entity types, attribute schemas
93
93
  - `accounts/<PROFILE>/knowledge/client/integrations.md` — use for integration touchpoints
94
94
  - `knowledge/platform/rule-development-contract.md` — **MANDATORY**: annotation contract (`@ParamString` vs `@EventAttribute`), reading patterns, enhancement protocol for Rules Inventory section
95
+ - `knowledge/platform/create-order-reference.md` — createOrder/createReturnOrder/createFulfilment input schemas, fulfilmentChoice wiring, ORDER::MULTI patterns. Use when planning features that create or modify orders.
95
96
  4. If `accounts/<PROFILE>/memory/index.md` exists, read the top account-specific gotchas and apply them silently while planning.
96
97
  5. Also check `accounts/<PROFILE>/knowledge/templates/plan-addendum.md` — if it exists, append its sections to the plan
97
98
  6. Apply knowledge throughout the plan — naming, constraints, architecture patterns. Do NOT show raw knowledge to user.
@@ -827,7 +827,7 @@ Routes come in three types:
827
827
  "component": "fc.page",
828
828
  "nav": { "label": "i18n:fc.orders.list.nav", "icon": "list" },
829
829
  "data": {
830
- "query": "query { orders(first: 25) { edges { node { id ref status type createdOn } } pageInfo { hasNextPage endCursor } } }"
830
+ "query": "query { orders(first: 25) { edges { cursor node { id ref status type createdOn } } pageInfo { hasNextPage } } }"
831
831
  },
832
832
  "props": { "title": "i18n:fc.orders.list.title" },
833
833
  "descendants": [],
@@ -1164,7 +1164,7 @@ The standard paginated list page with filtering:
1164
1164
  "component": "fc.page",
1165
1165
  "nav": { "label": "i18n:fc.orders.list.nav", "icon": "shopping_cart" },
1166
1166
  "data": {
1167
- "query": "query($retailerId: [Int!], $orders_first: Int, $status: [String], $type: [String], $createdOn: DateRange) { orders(retailerId: $retailerId, first: $orders_first, status: $status, type: $type, createdOn: $createdOn) { edges { node { id ref status type totalPrice createdOn customer { firstName lastName } } } pageInfo { hasNextPage endCursor } } }",
1167
+ "query": "query($retailerId: [Int!], $orders_first: Int, $status: [String], $type: [String], $createdOn: DateRange) { orders(retailerId: $retailerId, first: $orders_first, status: $status, type: $type, createdOn: $createdOn) { edges { node { id ref status type totalPrice createdOn customer { firstName lastName } } } pageInfo { hasNextPage } } }",
1168
1168
  "variables": {
1169
1169
  "orders_first": 25,
1170
1170
  "retailerId": "{{activeRetailer.id}}"
@@ -1594,7 +1594,6 @@ query($first: Int, $after: String) {
1594
1594
  }
1595
1595
  pageInfo {
1596
1596
  hasNextPage
1597
- endCursor
1598
1597
  }
1599
1598
  }
1600
1599
  }
@@ -90,7 +90,7 @@ if (orderResult.error) return <ErrorDisplay error={orderResult.error} />;
90
90
  const order = orderResult.data?.orderById;
91
91
  ```
92
92
 
93
- Results follow the Relay connection pattern: `edges[].node`, `pageInfo { hasNextPage, endCursor }`.
93
+ Results follow the Relay connection pattern: `edges[].node`, `edges[].cursor`, `pageInfo { hasNextPage }`. Cursor lives on each edge, not on pageInfo.
94
94
 
95
95
  **Prefer page query data over useQuery** — only use useQuery for follow-up queries not available in the page data context. Page queries are defined in the manifest `data` block and auto-executed.
96
96
 
@@ -612,7 +612,7 @@ Every Relay connection (`edges/node` pattern) in Fluent GraphQL supports paginat
612
612
  query { orderById(id: $id) { items { edges { node { ref } } } } }
613
613
 
614
614
  # GOOD — bounded, paginate if needed
615
- query { orderById(id: $id) { items(first: 50) { edges { node { ref } } pageInfo { hasNextPage endCursor } } } }
615
+ query { orderById(id: $id) { items(first: 50) { edges { cursor node { ref } } pageInfo { hasNextPage } } } }
616
616
  ```
617
617
 
618
618
  **Guidelines:** `first: 20-50` for on-screen lists. `first: 100-200` only for processing. Implement cursor-based pagination when `hasNextPage` is true.
@@ -742,10 +742,9 @@ export function extractEdgeNodes<T>(connection: { edges?: Array<{ node: T }> } |
742
742
 
743
743
  /** Standard Relay connection shape from Fluent GraphQL */
744
744
  export interface RelayConnection<T> {
745
- edges: Array<{ node: T }>;
745
+ edges: Array<{ cursor?: string; node: T }>;
746
746
  pageInfo?: {
747
747
  hasNextPage: boolean;
748
- endCursor: string | null;
749
748
  };
750
749
  }
751
750
  ```
@@ -104,8 +104,8 @@ const OrderDetail = ({ orderId }: { orderId: string }) => {
104
104
  const order = data?.orderById;
105
105
  // Connection/pagination pattern:
106
106
  // data.orders.edges[].node — array of entities
107
+ // data.orders.edges[].cursor — cursor for pagination (on each edge, not pageInfo)
107
108
  // data.orders.pageInfo.hasNextPage — boolean
108
- // data.orders.pageInfo.endCursor — cursor for next page
109
109
  return <div>{order.ref} — {order.status}</div>;
110
110
  };
111
111
  ```
@@ -361,7 +361,7 @@ const [result] = useQuery<ResultType>(queryString, { variables });
361
361
  // result.error — CombinedError | undefined
362
362
  ```
363
363
 
364
- Results follow the Relay connection pattern: `edges[].node`, `pageInfo { hasNextPage, endCursor }`.
364
+ Results follow the Relay connection pattern: `edges[].node`, `edges[].cursor`, `pageInfo { hasNextPage }`. Note: cursor lives on each edge, not on pageInfo.
365
365
 
366
366
  **Prefer page query data over useQuery** — only use useQuery for follow-up queries not available in the page data context. Page queries are defined in the manifest `data` block and auto-executed.
367
367
 
@@ -418,6 +418,31 @@ workflow.diff({
418
418
 
419
419
  **Details captured:** Rulesets added, modified, removed. Risk level for each removal.
420
420
 
421
+ #### Gate 3.45: Workflow Major Version Impact
422
+
423
+ **Severity:** HIGH
424
+
425
+ **Tool:** `workflow.get` or `workflow.list` (MCP fluent-mcp-extn) + Read (local workflow JSON)
426
+
427
+ **Invocation:**
428
+ For each workflow JSON being deployed:
429
+ 1. Read the `version` field from the local workflow JSON (format: `<major>.<minor>`)
430
+ 2. Fetch the currently deployed version via `workflow.get({ entityType, entitySubtype })` or `workflow.list`
431
+ 3. Parse both versions and compare major components
432
+
433
+ **Pass criteria (INFO):** Minor version bump only (e.g., 1.2 → 1.3). All existing entities on that major version will use the new workflow immediately. No entity isolation boundary changes.
434
+
435
+ **Pass criteria (WARN):** Major version bump detected (e.g., 99.10 → 100.0). This is valid but has significant behavioral impact:
436
+ - Existing entities (orders, fulfilments, etc.) stay pinned to the **old major** and will continue using its latest minor — they will **never** execute against the new major's rulesets
437
+ - Only **newly created** entities will be assigned to the new major version
438
+ - If the intent was to update all entities (including in-flight), a **minor bump** is required instead
439
+
440
+ **Fail criteria:** None — major bumps are valid. But the gate MUST emit a prominent warning so the deployer consciously acknowledges the entity isolation impact.
441
+
442
+ **Edge case:** First deployment (no deployed version exists) — pass with note "First deployment, no version comparison needed."
443
+
444
+ **Details captured:** Local version, deployed version, bump type (major/minor), number of major versions apart, explicit impact statement.
445
+
421
446
  #### Gate 3.5: User Action Schema Validity
422
447
 
423
448
  **Severity:** HIGH
@@ -33,6 +33,10 @@ Expert reference for the Fluent Commerce Responsive Sourcing Framework (v2.1+).
33
33
 
34
34
  This is a **reference skill** — it provides domain knowledge and query patterns but does not modify code or Fluent environments. Use it to understand sourcing concepts, generate configuration JSON, and debug allocation decisions. Implementation changes (workflow edits, rule scaffolding, settings) should be delegated to the appropriate implementation skills listed in the Ownership Boundary above.
35
35
 
36
+ ## Related Knowledge
37
+
38
+ - `knowledge/platform/create-order-reference.md` — how FulfilmentChoice entities are created inline with orders, item-to-FC linkage, and ORDER::MULTI patterns. Sourcing operates on FulfilmentChoice entities created by the order intake mutation.
39
+
36
40
  ## When to Use
37
41
 
38
42
  - **"How does sourcing work?"** — Conceptual Architecture section
@@ -11,6 +11,8 @@ cursor-tier: auto
11
11
 
12
12
  Discover retailer configuration (locations, products, catalogues, networks, inventory, customers) via live GraphQL queries and generate valid entity creation payloads. Everything is queried — nothing is hardcoded.
13
13
 
14
+ **Knowledge dependency:** For the full `createOrder` input schema, mutation patterns (HD, CC, MULTI, mixed), fulfilmentChoice wiring, and common mistakes, see `knowledge/platform/create-order-reference.md`.
15
+
14
16
  ## Pre-flight: Feedback Check
15
17
 
16
18
  Before starting, check for past learnings from this skill:
@@ -306,6 +308,8 @@ This summary is the input to entity creation. Every ref comes from live queries
306
308
 
307
309
  ## Phase 3: Entity Creation
308
310
 
311
+ **Full createOrder mutation reference:** `knowledge/platform/create-order-reference.md` — complete type tree, all patterns (HD, CC, split shipment, financials), input-vs-return field differences, and gotchas (wrapper IDs, fulfilmentChoice singular vs plural, AttributeInput.value as Json scalar).
312
+
309
313
  ### Create Test Order (HD)
310
314
 
311
315
  Use discovered values to build the mutation. The `<TIMESTAMP>` should be generated as `YYYYMMDD_HHmmss` at execution time.
@@ -202,6 +202,13 @@ Use MCP `graphql.query` to fetch the entity's current status and key attributes:
202
202
  value
203
203
  }
204
204
  fulfilmentChoice {
205
+ id
206
+ ref
207
+ type
208
+ status
209
+ deliveryType
210
+ }
211
+ fulfilmentChoices {
205
212
  edges {
206
213
  node {
207
214
  id
@@ -218,7 +225,13 @@ Use MCP `graphql.query` to fetch the entity's current status and key attributes:
218
225
  ref
219
226
  quantity
220
227
  status
221
- fulfilmentChoiceRef
228
+ fulfilmentChoice {
229
+ id
230
+ ref
231
+ type
232
+ status
233
+ deliveryType
234
+ }
222
235
  }
223
236
  }
224
237
  }
@@ -228,6 +241,8 @@ Use MCP `graphql.query` to fetch the entity's current status and key attributes:
228
241
  }
229
242
  ```
230
243
 
244
+ For `createOrder` input patterns, `items[].fulfilmentChoiceRef` is still the correct join key. For live GraphQL readback on the validated schema, query `items[].fulfilmentChoice { ... }` instead. See `knowledge/platform/create-order-reference.md` for the full input-vs-query contract.
245
+
231
246
  **For a FULFILMENT:**
232
247
  ```graphql
233
248
  {
@@ -130,6 +130,10 @@ GraphQL Schema Validation:
130
130
 
131
131
  If any validation fails → fix before writing workflow JSON. If MCP is unavailable → proceed with warning.
132
132
 
133
+ ## Knowledge References
134
+
135
+ - **Order creation patterns:** `knowledge/platform/create-order-reference.md` — createOrder input schema, fulfilmentChoice wiring, ORDER::MULTI patterns. Essential when building ORDER workflows that process items linked to different fulfilment choices.
136
+
133
137
  ## Ownership Boundary
134
138
 
135
139
  This skill owns workflow structure/design guidance and validation checklists.
@@ -941,7 +945,13 @@ Run through this before uploading any workflow:
941
945
  6. **Rule naming** — `<ACCOUNT>.<MODULE>.<RuleName>` format, all referenced rules exist in platform
942
946
  7. **Gate logic** — Gate statuses include all terminal states for child entities
943
947
  8. **Version bump** — Version is higher than currently deployed version
944
- 9. **Description** — `versionComment` describes what changed
948
+ 9. **Major vs minor version choice** — Workflow versions use `<major>.<minor>` format. The choice matters:
949
+ - **Minor bump** (e.g., 1.2 → 1.3): All existing entities on that major version **immediately** use the new workflow. Use for backward-compatible changes (new rulesets, rule tweaks, prop changes).
950
+ - **Major bump** (e.g., 1.3 → 2.0): Only **newly created** entities use the new version. Existing entities stay on the old major (latest minor). Use for incompatible structural changes post go-live where in-flight entities must be protected.
951
+ - **During development:** Almost always use **minor** bumps — you want all test entities to pick up changes immediately.
952
+ - **Post go-live:** Use **major** bumps only when the change would break in-flight orders/fulfilments. Minor bumps are still preferred when changes are additive.
953
+ - **The platform always does minor bumps** on update via CLI (`fluent module install`). Major bumps require manual version editing.
954
+ 10. **Description** — `versionComment` describes what changed
945
955
 
946
956
  ## Post-Execution: Feedback Capture
947
957
 
@@ -174,6 +174,33 @@ Additionally verify:
174
174
  - If `attributes` has entries: `source` MUST be empty `""` or `"settings.<key>"` (**lowercase** `settings.` — capital `"Settings."` silently fails). Referenced setting value MUST have `{ "active": [...] }` wrapper (plain array silently fails). `"OVERRIDE"` works on v4.80+. `defaultValue` MUST be empty `""` or literal (`"{{me.username}}"` works on v4.80+).
175
175
  - **If ANY of the first two checks fail, STOP deployment and report:** *"User action on ruleset [name] will be invisible in the UI. Fix: add `eventName` / add `subtype` before deploying."*
176
176
 
177
+ ### Step 1.05: Major Version Impact Check (MANDATORY)
178
+
179
+ Compare the workflow version being deployed against the currently deployed version. If the **major version** has changed (e.g., 99.x → 100.0), this has significant behavioral impact:
180
+
181
+ **Detection:**
182
+ 1. Read the `version` field from the workflow JSON being deployed
183
+ 2. Fetch the currently deployed version via `workflow.get` or `fluent workflow list`
184
+ 3. Parse both as `<major>.<minor>` — compare major components
185
+
186
+ **If major version increased:**
187
+
188
+ > **MAJOR VERSION WARNING**
189
+ > Deploying `<WORKFLOW_NAME>` from v`<old>` → v`<new>` is a **major version bump**.
190
+ >
191
+ > **Impact on existing entities:**
192
+ > - All entities created before this deploy stay on major `<old_major>` (latest minor of that major)
193
+ > - They will **never** execute against v`<new>` rulesets — even for future events
194
+ > - Only **newly created** entities will use major `<new_major>`
195
+ >
196
+ > **Is this intentional?**
197
+ > - If YES (breaking changes, post go-live protection): proceed
198
+ > - If NO (you want all entities to use the new logic): change the version to `<old_major>.<old_minor + 1>` (minor bump instead)
199
+
200
+ **Present this warning to the user and wait for confirmation before proceeding.** A minor bump applies changes to all existing entities immediately; a major bump isolates new entities only. Choosing wrong can leave in-flight orders on stale logic or break them with incompatible changes.
201
+
202
+ **If minor version increased (or first deployment):** Proceed without warning — minor bumps are backward-compatible and apply to all entities on that major version immediately.
203
+
177
204
  ### Step 1.1: Large workflow payload gate (MANDATORY)
178
205
 
179
206
  Before upload, keep workflow changes file-based and reviewable:
@@ -24,6 +24,7 @@ Skills read these when relevant (based on `relevant-skills` in frontmatter):
24
24
  | File | Load When | Relevant Skills | Status |
25
25
  |------|-----------|-----------------|--------|
26
26
  | [platform/domain-model.md](platform/domain-model.md) | Entity relationships, GraphQL edges, cross-domain maps. Schema-validated. | workflow-builder, mystique-builder, rule-scaffold, feature-plan, custom-code, settings, trace, implementation-map, feature-explain, connection-analysis, scope-decompose, inventory-catalog | **Active** |
27
+ | [platform/create-order-reference.md](platform/create-order-reference.md) | Building or validating `createOrder` payloads, especially `ORDER::MULTI`, `fulfilmentChoice(s)`, and item-to-FC linkage. | test-data, e2e-test, trace, event-api, workflow-builder, feature-plan, feature-explain | **Active** |
27
28
  | [platform/rule-development-contract.md](platform/rule-development-contract.md) | Rubix rule annotation contract, input channels, reading patterns, enhancement protocol. Derived from OOTB analysis (103 rules). | rule-scaffold, custom-code, feature-plan, feature-explain, build, workflow-builder, workflow-analyzer, pre-deploy-check | **Active** |
28
29
  | [platform/user-action-contract.md](platform/user-action-contract.md) | Canonical user action contract: visibility fields, rule mapping, FieldRegistry wiring, workflow-vs-manifest override precedence. | workflow-builder, workflow-analyzer, pre-deploy-check, workflow-deploy, mystique-builder, mystique-validate, settings | **Active** |
29
30
  | [platform/permissions-and-contexts.md](platform/permissions-and-contexts.md) | RBAC model: users, roles, context types/IDs, accretive scoping, Rubix user, deployment permissions, debugging. | rule-scaffold, custom-code, feature-plan, workflow-builder, settings, trace, implementation-map, bootstrap, pre-deploy-check, module-deploy, workflow-deploy, retailer-config, e2e-test | **Active** |
@@ -35,6 +36,7 @@ Skills read these when relevant (based on `relevant-skills` in frontmatter):
35
36
  | [platform/reusability-patterns.md](platform/reusability-patterns.md) | Reusability decision framework, naming, parameterization patterns for rules and components. | rule-scaffold, mystique-component, feature-plan, use-case-discover, mystique-scaffold, custom-code, feature-explain | **Active** |
36
37
  | [platform/roles-and-permissions.md](platform/roles-and-permissions.md) | RBAC model: three-layer access control, context types, label-only roles, custom role checking in rules, feature design questions. | use-case-discover, feature-plan, rule-scaffold, workflow-builder, mystique-builder | **Active** |
37
38
  | [platform/workflow-design.md](platform/workflow-design.md) | Workflow design principles: boundaries, versioning, flow control, cross-retailer/workflow communication, execution model, rulesets, settings. | workflow-builder, workflow-analyzer, workflow-deploy, feature-plan, use-case-discover, rule-scaffold, feature-explain, connection-analysis, pre-deploy-check | **Active** |
39
+ | [platform/create-order-reference.md](platform/create-order-reference.md) | createOrder mutation patterns: HD, CC, MULTI, mixed-fulfilment, fulfilmentChoice linking, orderItem wiring, return orders, financial transactions. Schema-validated against live introspection. | test-data, e2e-test, event-api, workflow-builder, feature-plan, trace, retailer-config, sourcing | **Active** |
38
40
  | [client/business-rules.md](client/business-rules.md) | Building workflows, rules, or sourcing | workflow-builder, rule-scaffold, feature-plan, sourcing | Template |
39
41
  | [client/data-model.md](client/data-model.md) | Creating entities, writing GraphQL, building manifests | workflow-builder, mystique-builder, settings | Template |
40
42
  | [client/integrations.md](client/integrations.md) | Building rules that call external APIs | rule-scaffold, custom-code, feature-plan | Template |