@fluentcommerce/ai-skills 0.2.0 → 0.3.0

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.

Potentially problematic release.


This version of @fluentcommerce/ai-skills might be problematic. Click here for more details.

Files changed (169) hide show
  1. package/README.md +866 -616
  2. package/bin/cli.mjs +2112 -1973
  3. package/content/cli/agents/fluent-cli/agent.json +149 -149
  4. package/content/cli/agents/fluent-cli.md +132 -132
  5. package/content/cli/skills/fluent-bootstrap/SKILL.md +214 -190
  6. package/content/cli/skills/fluent-cli-index/SKILL.md +1 -1
  7. package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +117 -1
  8. package/content/cli/skills/fluent-cli-reference/SKILL.md +1040 -623
  9. package/content/cli/skills/fluent-cli-retailer/SKILL.md +27 -2
  10. package/content/cli/skills/fluent-cli-settings/SKILL.md +21 -1
  11. package/content/cli/skills/fluent-connect/SKILL.md +937 -886
  12. package/content/cli/skills/fluent-module-deploy/SKILL.md +181 -17
  13. package/content/cli/skills/fluent-profile/SKILL.md +73 -0
  14. package/content/cli/skills/fluent-workflow/SKILL.md +360 -310
  15. package/content/dev/agents/fluent-backend-dev/AGENT.md +58 -0
  16. package/content/dev/agents/fluent-backend-dev/agent.json +69 -0
  17. package/content/dev/agents/fluent-backend-dev.md +287 -0
  18. package/content/dev/agents/fluent-dev/AGENT.md +98 -76
  19. package/content/dev/agents/fluent-dev/agent.json +24 -2
  20. package/content/dev/agents/fluent-dev.md +194 -524
  21. package/content/dev/agents/fluent-frontend-dev/AGENT.md +63 -0
  22. package/content/dev/agents/fluent-frontend-dev/agent.json +52 -0
  23. package/content/dev/agents/fluent-frontend-dev.md +323 -0
  24. package/content/dev/skills/fluent-archive/SKILL.md +234 -0
  25. package/content/dev/skills/fluent-build/SKILL.md +312 -170
  26. package/content/dev/skills/fluent-connection-analysis/SKILL.md +422 -386
  27. package/content/dev/skills/fluent-custom-code/SKILL.md +15 -9
  28. package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +731 -0
  29. package/content/dev/skills/fluent-e2e-test/SKILL.md +501 -394
  30. package/content/dev/skills/fluent-event-api/SKILL.md +962 -945
  31. package/content/dev/skills/fluent-feature-explain/SKILL.md +680 -603
  32. package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +40 -11
  33. package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -221
  34. package/content/dev/skills/fluent-feature-status/SKILL.md +335 -0
  35. package/content/dev/skills/fluent-feedback/SKILL.md +221 -0
  36. package/content/dev/skills/fluent-implementation-map/SKILL.md +644 -0
  37. package/content/dev/skills/fluent-job-batch/SKILL.md +10 -0
  38. package/content/dev/skills/fluent-module-scaffold/SKILL.md +134 -3
  39. package/content/dev/skills/fluent-module-validate/SKILL.md +778 -775
  40. package/content/dev/skills/fluent-mystique-analyze/SKILL.md +817 -0
  41. package/content/dev/skills/fluent-mystique-builder/COMPONENT_TEMPLATE.md +81 -0
  42. package/content/dev/skills/fluent-mystique-builder/README.md +63 -0
  43. package/content/dev/skills/fluent-mystique-builder/SKILL.md +1294 -0
  44. package/content/dev/skills/fluent-mystique-builder/components/INDEX.md +92 -0
  45. package/content/dev/skills/fluent-mystique-builder/components/fc.accordion.md +48 -0
  46. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.fulfilmentpack.md +20 -0
  47. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.multiparcel.md +21 -0
  48. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.returnitems.md +21 -0
  49. package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.wavepick.md +21 -0
  50. package/content/dev/skills/fluent-mystique-builder/components/fc.action.inline.md +24 -0
  51. package/content/dev/skills/fluent-mystique-builder/components/fc.activity.entity.md +25 -0
  52. package/content/dev/skills/fluent-mystique-builder/components/fc.analytics.viz.md +20 -0
  53. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.column.md +111 -0
  54. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.json.md +20 -0
  55. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.jsoneditor.md +54 -0
  56. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.locationId.md +51 -0
  57. package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.retailerId.md +52 -0
  58. package/content/dev/skills/fluent-mystique-builder/components/fc.button.bar.md +57 -0
  59. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.download.md +53 -0
  60. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.compatibility.md +60 -0
  61. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.md +53 -0
  62. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.md +24 -0
  63. package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.pick.md +61 -0
  64. package/content/dev/skills/fluent-mystique-builder/components/fc.buttons.add.reject.md +20 -0
  65. package/content/dev/skills/fluent-mystique-builder/components/fc.card.attribute.md +73 -0
  66. package/content/dev/skills/fluent-mystique-builder/components/fc.card.attributes.grid.md +40 -0
  67. package/content/dev/skills/fluent-mystique-builder/components/fc.card.image.md +37 -0
  68. package/content/dev/skills/fluent-mystique-builder/components/fc.card.map.point.md +24 -0
  69. package/content/dev/skills/fluent-mystique-builder/components/fc.card.multi.md +79 -0
  70. package/content/dev/skills/fluent-mystique-builder/components/fc.card.product.md +27 -0
  71. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.md +34 -0
  72. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.wrapper.feed.md +98 -0
  73. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.md +52 -0
  74. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.wrapper.source.md +104 -0
  75. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.md +28 -0
  76. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.wrapper.threshold.md +118 -0
  77. package/content/dev/skills/fluent-mystique-builder/components/fc.chart.line.md +32 -0
  78. package/content/dev/skills/fluent-mystique-builder/components/fc.conditional.md +62 -0
  79. package/content/dev/skills/fluent-mystique-builder/components/fc.dashboard.threshold.md +65 -0
  80. package/content/dev/skills/fluent-mystique-builder/components/fc.daterange.wrapper.forwarder.md +56 -0
  81. package/content/dev/skills/fluent-mystique-builder/components/fc.drawer.button.md +21 -0
  82. package/content/dev/skills/fluent-mystique-builder/components/fc.event.detail.md +20 -0
  83. package/content/dev/skills/fluent-mystique-builder/components/fc.events.search.md +21 -0
  84. package/content/dev/skills/fluent-mystique-builder/components/fc.field.daterange.md +83 -0
  85. package/content/dev/skills/fluent-mystique-builder/components/fc.field.filterComplex.md +106 -0
  86. package/content/dev/skills/fluent-mystique-builder/components/fc.field.intrange.md +82 -0
  87. package/content/dev/skills/fluent-mystique-builder/components/fc.field.multistring.md +50 -0
  88. package/content/dev/skills/fluent-mystique-builder/components/fc.filterPanel.md +53 -0
  89. package/content/dev/skills/fluent-mystique-builder/components/fc.json.editor.md +22 -0
  90. package/content/dev/skills/fluent-mystique-builder/components/fc.json.viewer.md +21 -0
  91. package/content/dev/skills/fluent-mystique-builder/components/fc.list.customAction.md +79 -0
  92. package/content/dev/skills/fluent-mystique-builder/components/fc.list.md +116 -0
  93. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.bppmetrics.md +69 -0
  94. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.feed.md +65 -0
  95. package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.source.md +64 -0
  96. package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.addItem.md +60 -0
  97. package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.md +21 -0
  98. package/content/dev/skills/fluent-mystique-builder/components/fc.mutation.inline.md +88 -0
  99. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md +83 -0
  100. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.text.md +33 -0
  101. package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.link.md +30 -0
  102. package/content/dev/skills/fluent-mystique-builder/components/fc.order.itemDetails.md +20 -0
  103. package/content/dev/skills/fluent-mystique-builder/components/fc.order.shipmentDetails.md +20 -0
  104. package/content/dev/skills/fluent-mystique-builder/components/fc.page.filter.select.md +87 -0
  105. package/content/dev/skills/fluent-mystique-builder/components/fc.page.md +64 -0
  106. package/content/dev/skills/fluent-mystique-builder/components/fc.page.refresh.md +48 -0
  107. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.column.md +71 -0
  108. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.header.md +61 -0
  109. package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.md +59 -0
  110. package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.md +45 -0
  111. package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.summary.md +56 -0
  112. package/content/dev/skills/fluent-mystique-builder/components/fc.progress.circular.md +20 -0
  113. package/content/dev/skills/fluent-mystique-builder/components/fc.provider.graphql.md +71 -0
  114. package/content/dev/skills/fluent-mystique-builder/components/fc.quantity.list.md +87 -0
  115. package/content/dev/skills/fluent-mystique-builder/components/fc.repeater.md +56 -0
  116. package/content/dev/skills/fluent-mystique-builder/components/fc.reports.ipuipc.md +54 -0
  117. package/content/dev/skills/fluent-mystique-builder/components/fc.return.rowExpansion.md +19 -0
  118. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcode.md +21 -0
  119. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcodeFilter.md +72 -0
  120. package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.camera.md +20 -0
  121. package/content/dev/skills/fluent-mystique-builder/components/fc.settingForm.md +64 -0
  122. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md +19 -0
  123. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md +64 -0
  124. package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md +20 -0
  125. package/content/dev/skills/fluent-mystique-builder/components/fc.stepper.md +20 -0
  126. package/content/dev/skills/fluent-mystique-builder/components/fc.tab.content.md +56 -0
  127. package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.card.md +64 -0
  128. package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.md +69 -0
  129. package/content/dev/skills/fluent-mystique-builder/components/fc.tile.metric.md +73 -0
  130. package/content/dev/skills/fluent-mystique-builder/components/fc.workflow.provider.md +77 -0
  131. package/content/dev/skills/fluent-mystique-builder/validate-docs.ps1 +260 -0
  132. package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1830 -0
  133. package/content/dev/skills/fluent-mystique-validate/SKILL.md +646 -0
  134. package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +1144 -1090
  135. package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1120
  136. package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
  137. package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -394
  138. package/content/dev/skills/fluent-scope-decompose/SKILL.md +1123 -1021
  139. package/content/dev/skills/fluent-session-audit-export/SKILL.md +880 -632
  140. package/content/dev/skills/fluent-session-summary/SKILL.md +320 -195
  141. package/content/dev/skills/fluent-settings/SKILL.md +151 -2
  142. package/content/dev/skills/fluent-source-onboard/SKILL.md +23 -4
  143. package/content/dev/skills/fluent-sourcing/SKILL.md +14 -0
  144. package/content/dev/skills/fluent-system-monitoring/SKILL.md +771 -767
  145. package/content/dev/skills/fluent-test-data/SKILL.md +514 -513
  146. package/content/dev/skills/fluent-trace/SKILL.md +1169 -1143
  147. package/content/dev/skills/fluent-transition-api/SKILL.md +364 -346
  148. package/content/dev/skills/fluent-use-case-discover/SKILL.md +593 -471
  149. package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +22 -1
  150. package/content/dev/skills/fluent-version-manage/SKILL.md +44 -3
  151. package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
  152. package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -326
  153. package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -0
  154. package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
  155. package/content/mcp-extn/agents/fluent-mcp.md +133 -132
  156. package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -800
  157. package/content/mcp-official/agents/fluent-mcp-core.md +91 -91
  158. package/content/mcp-official/skills/fluent-mcp-core/SKILL.md +94 -94
  159. package/content/rfl/skills/fluent-rfl-assess/SKILL.md +172 -172
  160. package/docs/CAPABILITY_MAP.md +106 -73
  161. package/docs/DEPLOYMENT_PROMOTION_RUNBOOK.md +218 -0
  162. package/docs/DESIGN-implementation-map.md +698 -0
  163. package/docs/DEV_WORKFLOW.md +814 -802
  164. package/docs/FLOW_RUN.md +142 -142
  165. package/docs/GETTING_STARTED.md +427 -0
  166. package/docs/USE_CASES.md +906 -50
  167. package/metadata.json +184 -155
  168. package/package.json +7 -2
  169. package/docs/USE_CASES.pdf +0 -0
@@ -1,471 +1,593 @@
1
- ---
2
- name: fluent-use-case-discover
3
- description: Interactive requirements gathering wizard that produces a structured Business Specification. Walks through use cases, actors, business rules, integrations, and acceptance criteria. Supports interactive mode and document analysis mode. Triggers on "discover use case", "gather requirements", "business spec", "use case discovery", "what are we building", "requirements gathering", "spec wizard", "analyze requirements".
4
- user-invocable: true
5
- allowed-tools: Bash, Read, Write, Edit, Glob, Grep
6
- argument-hint: [--analyze <path-or-paste>] [--profile PROFILE] [--retailer RETAILER_REF]
7
- ---
8
-
9
- # Use Case Discovery Wizard
10
-
11
- Gather structured business requirements through interactive questioning or document analysis. Produces a Business Specification document that feeds directly into `/fluent-feature-plan` for technical implementation planning.
12
-
13
- ## Ownership Boundary
14
-
15
- This skill owns requirements elicitation, use case definition, business rule capture, and the Business Spec output artifact.
16
-
17
- Other skills own:
18
- - Technical implementation planning --> `/fluent-feature-plan`
19
- - Scope document decomposition (ADD format) --> `/fluent-scope-decompose`
20
- - Feature reverse-engineering (existing features) --> `/fluent-feature-explain`
21
- - Workflow building --> `/fluent-workflow-builder`
22
- - Rule scaffolding --> `/fluent-rule-scaffold`
23
-
24
- This skill produces the business spec; `/fluent-feature-plan` translates it into a technical plan.
25
-
26
- ## When to Use
27
-
28
- - User has a business need but hasn't structured it into formal requirements
29
- - Starting a new feature and need to capture use cases before planning
30
- - A requirements document exists but needs completeness validation and gap filling
31
- - Before running `/fluent-feature-plan` — to ensure all business context is gathered
32
- - When multiple stakeholders have provided fragmented requirements that need consolidation
33
-
34
- **Do NOT use** when:
35
- - Requirements are already structured in ADD scope format → use `/fluent-scope-decompose`
36
- - You need to understand an existing feature → use `/fluent-feature-explain`
37
- - Requirements are clear and you're ready to plan → go directly to `/fluent-feature-plan`
38
-
39
- ## Template Reference
40
-
41
- **The Business Spec output template lives at: `SPEC_TEMPLATE.md` (in this skill directory).**
42
-
43
- Read that file before producing any spec. It defines:
44
- - The 13-section structure with traceability matrix
45
- - Section descriptions and worked examples
46
- - Completeness scoring criteria
47
-
48
- ## Two Input Modes
49
-
50
- ### Mode A: Interactive Wizard (default)
51
-
52
- Run with `/fluent-use-case-discover` or when the user describes a vague feature idea.
53
-
54
- The wizard walks through 10 phases of structured questions, each building on previous answers. Uses progressive disclosure — only asks questions relevant to the feature type.
55
-
56
- ### Mode B: Document Analysis
57
-
58
- Run with `/fluent-use-case-discover --analyze <path>` or when the user pastes/provides an existing requirements document (PRD, Jira epic, scope doc, email brief, meeting notes).
59
-
60
- The wizard:
61
- 1. Reads and parses the provided document
62
- 2. Extracts what it can into the spec template sections
63
- 3. Scores completeness against the 10-phase framework
64
- 4. Presents the extracted spec + gap report to the user
65
- 5. Enters interactive mode ONLY for HIGH-priority gaps
66
- 6. Produces the same Business Spec output as Mode A
67
-
68
- Mode B = "parse what you have" + "ask only what's missing".
69
-
70
- ---
71
-
72
- ## Phase 0: Mode Detection & Setup
73
-
74
- **Detect mode:**
75
- - If `--analyze` flag or user provided a document → Mode B
76
- - Otherwise Mode A
77
-
78
- **Check profile connection:**
79
- ```
80
- environment.discover include=retailer
81
- ```
82
- If connected note profile + retailer for Phase 4 live discovery.
83
- If not connected skip live discovery, note in output as limitation.
84
-
85
- **Check for existing specs:**
86
- ```bash
87
- ls accounts/<PROFILE>/analysis/specs/
88
- ```
89
- If related specs exist → show to user, ask if this is an update or new spec.
90
-
91
- ---
92
-
93
- ## Phase 1: Feature Identity
94
-
95
- **Purpose:** Establish what we're building and why.
96
- **Feeds Spec:** §1 Problem Statement, §2 Feature Summary, §3 Scope
97
-
98
- Ask these questions (all at once or conversationally based on user engagement):
99
-
100
- | # | Question | Type | Required |
101
- |---|----------|------|----------|
102
- | 1.1 | **What is the feature in one sentence?** | Open | YES |
103
- | 1.2 | **What business problem does this solve?** Why is it needed? What pain exists today? | Open | YES |
104
- | 1.3 | **What type of change is this?** | Selection | YES |
105
- | | Options: New capability / Enhancement to existing / Bug fix / External integration / Data migration / Process change | | |
106
- | 1.4 | **Who requested this and why now?** Stakeholder, team, or business driver. | Open | No |
107
- | 1.5 | **How will you measure success?** What KPIs or metrics prove the feature works? | Open | YES |
108
- | 1.6 | **What is explicitly OUT of scope?** What should this feature NOT do? | Open | Recommended |
109
-
110
- **Conditional branching after Phase 1:**
111
- - Type = "Bug fix" shortened flow: skip Phases 5-7, focus on root cause + fix scenario
112
- - Type = "External integration" Phase 6 (Integrations) becomes REQUIRED
113
- - Type = "Data migration" add batch/volume questions to Phase 8
114
-
115
- **WAIT gate:** Summarize the feature identity. Confirm with the user before proceeding.
116
-
117
- ---
118
-
119
- ## Phase 2: Actors & Triggers
120
-
121
- **Purpose:** Who's involved and what starts the process.
122
- **Feeds Spec:** §4 Actors & Triggers
123
-
124
- | # | Question | Type | Required |
125
- |---|----------|------|----------|
126
- | 2.1 | **Who are the actors involved?** Who interacts with or is affected by this feature? | Multi-select + open | YES |
127
- | | Suggest from: Store associate, Warehouse picker/packer, Admin/operations, Customer, External system (OMS/WMS/ERP/TMS), Scheduled job, Automated workflow | | |
128
- | 2.2 | **What triggers this feature?** What event or action kicks it off? | Selection + open | YES |
129
- | | Suggest from: New order placed, User clicks a button, External system sends data, Scheduled time/cron, Entity reaches a specific status, Manual batch upload, Customer action (app/web) | | |
130
- | 2.3 | **Which Fluent UI modules are involved?** | Multi-select | If human actors |
131
- | | Options: Admin Console, Service Point (store app), Fluent OMS App, No UI (backend only) | | |
132
- | 2.4 | **Is this feature retailer-specific or account-wide?** | Selection | YES |
133
- | | Options: Single retailer, All retailers (account-wide) | | |
134
-
135
- **WAIT gate:** Present actors + trigger summary as a table. Confirm before proceeding.
136
-
137
- ---
138
-
139
- ## Phase 3: User Journey & Use Cases
140
-
141
- **Purpose:** Define the actual scenarios the core of the spec.
142
- **Feeds Spec:** §5 Use Cases, §13 Acceptance Criteria
143
-
144
- This is the most important phase. Take time here.
145
-
146
- | # | Question | Type | Required |
147
- |---|----------|------|----------|
148
- | 3.1 | **Walk me through the happy path.** Step by step: what happens from trigger to completion? | Open | YES |
149
- | 3.2 | **Are there alternative paths?** Conditions where the flow branches differently? | Open | If applicable |
150
- | | Probe: What condition causes the branch? What's different about the outcome? | | |
151
- | 3.3 | **What are the failure/exception scenarios?** | Open | YES |
152
- | | Probe with domain-aware questions based on Phase 1 type: | | |
153
- | | - Order flow: What if stock is unavailable? What if payment fails? What if address is invalid? | | |
154
- | | - Fulfilment: What if the item can't be found? What if the carrier rejects it? | | |
155
- | | - Integration: What if the external system is down? What if data format is wrong? | | |
156
- | | - General: What if the user cancels midway? Can this be partially completed? | | |
157
- | 3.4 | **Are there time-sensitive aspects?** | Open | If applicable |
158
- | | Probe: Auto-cancel after X hours? SLA deadlines? Scheduled retries? Escalation rules? | | |
159
- | 3.5 | **Can this be triggered multiple times for the same entity?** Should it be idempotent? | Yes/No + explain | Recommended |
160
-
161
- **Output:** After gathering answers, synthesize into numbered use cases:
162
- ```
163
- UC-01: [Happy Path] <title> <one-line summary>
164
- UC-02: [Alternative] <title> — <one-line summary>
165
- UC-03: [Exception] <title> — <one-line summary>
166
- UC-04: [Edge Case] <title> — <one-line summary>
167
- ```
168
-
169
- **WAIT gate:** Present the use case list. Ask: "Are these use cases complete? Any missing scenarios?"
170
-
171
- ---
172
-
173
- ## Phase 4: Entities & Data
174
-
175
- **Purpose:** Map use cases to Fluent's entity model.
176
- **Feeds Spec:** §6 Entity Model
177
-
178
- | # | Question | Type | Required |
179
- |---|----------|------|----------|
180
- | 4.1 | **Which entity types are involved?** | Multi-select | YES |
181
- | | Options: Order, Fulfilment, Fulfilment Options / Fulfilment Choice, Article, Location, Inventory Position, Wave, Consignment, Return Order, Product, Customer, Carrier, Virtual Catalogue | | |
182
- | 4.2 | **For each entity what subtypes?** | Per-entity | YES |
183
- | | Common subtypes: HD (home delivery), CC (click & collect), SFS (ship from store), RETURN, DEFAULT | | |
184
- | 4.3 | **Are any new entity subtypes needed?** Something that doesn't exist today? | Yes/No + describe | If applicable |
185
- | 4.4 | **What custom data (attributes) needs to be stored on each entity?** | Per-entity open | Recommended |
186
- | | Probe: Set at creation or updated later? Where does the value come from (user input, calculated, external system)? What data type? | | |
187
- | 4.5 | **How do entities relate in this feature?** | Open | If multi-entity |
188
- | | Probe: Does the order create fulfilments? Does a fulfilment update the order? Are there parent-child event chains? | | |
189
-
190
- ### Live Environment Discovery
191
-
192
- After the user answers 4.1 and 4.2, query the connected Fluent environment:
193
-
194
- ```
195
- environment.discover include=workflows,locations,settings
196
- workflow.transitions triggers=[{type: "<ENTITY>", subtype: "<SUBTYPE>", retailerId: "<ID>"}]
197
- plugin.list compact=true
198
- ```
199
-
200
- Present findings to the user:
201
-
202
- ```
203
- --- Environment Context ---
204
-
205
- ORDER::HD workflow:
206
- Status: EXISTS (v12, 14 rulesets)
207
- Current statuses: CREATED → BOOKED → IN_PROGRESS → FULFILLED → COMPLETE
208
- User actions at CREATED: ConfirmOrder, CancelOrder
209
-
210
- FULFILMENT::HD_WH workflow:
211
- Status: EXISTS (v8, 10 rulesets)
212
- Current statuses: CREATED ASSIGNED PICKING PACKED SHIPPED DELIVERED
213
-
214
- Available OOTB rules: 47 total (12 match ORDER, 9 match FULFILMENT)
215
- Locations: 3 warehouses, 12 stores
216
- Settings: 8 relevant (WEBHOOK_*, ALLOCATION_*)
217
- ---
218
- ```
219
-
220
- This context helps the user in Phases 5-7. They can say "reuse the existing allocation" or "add a new status between PICKING and PACKED" instead of describing from scratch.
221
-
222
- If no profile is connected, skip discovery and note:
223
- ```
224
- Note: No Fluent profile connected. Environment discovery skipped.
225
- The feature plan phase will discover the live environment.
226
- ```
227
-
228
- ---
229
-
230
- ## Phase 5: Business Rules & Conditions
231
-
232
- **Purpose:** Capture the decision logic.
233
- **Feeds Spec:** §7 Business Rules
234
- **CONDITIONAL:** Skip if type = "Bug fix" or no decision points emerged in Phase 3.
235
-
236
- | # | Question | Type | Required |
237
- |---|----------|------|----------|
238
- | 5.1 | **What conditions determine the flow?** List each decision point. | Open | YES |
239
- | | Probe: Based on order type? Location type? Item attributes? Customer segment? Monetary threshold? External data? | | |
240
- | 5.2 | **Are there validation rules?** What must be true before proceeding? | Open | If applicable |
241
- | | Probe: Stock check? Address validation? Payment confirmed? Minimum order value? Weight/dimension limits? | | |
242
- | 5.3 | **Are there calculations or allocations?** | Open | If applicable |
243
- | | Probe: Inventory allocation strategy? Fulfilment splitting logic? Location selection/routing? Shipping cost calculation? | | |
244
- | 5.4 | **Are there approval or review gates?** | Yes/No + describe | If applicable |
245
- | | Probe: Manager approval? Fraud review? Quality check? | | |
246
- | 5.5 | **Are there automated time-based actions?** | Yes/No + describe | If applicable |
247
- | | Examples: Auto-cancel after 2 hours, retry webhook every 15 min, daily reconciliation batch, SLA escalation | | |
248
-
249
- **Entity-aware smart probing** (based on Phase 4 selections):
250
- - ORDER selectedalso ask about: payment validation, fraud check, order splitting, customer notification
251
- - FULFILMENT selected → also ask about: pick/pack logic, carrier selection, label generation, partial fulfilment
252
- - INVENTORY selected → also ask about: reservation strategy, safety stock, recount triggers, virtual position updates
253
- - LOCATION selected → also ask about: capacity rules, operating hours, zone routing, store-vs-warehouse logic
254
-
255
- ---
256
-
257
- ## Phase 6: Integrations
258
-
259
- **Purpose:** External system touchpoints.
260
- **Feeds → Spec:** §8 Integrations
261
- **CONDITIONAL:** Skip if no external systems identified in Phase 2. REQUIRED if type = "External integration".
262
-
263
- | # | Question | Type | Required |
264
- |---|----------|------|----------|
265
- | 6.1 | **Which external systems interact with this feature?** | Multi-select + open | YES |
266
- | | Suggest: OMS, WMS, TMS/Carrier, ERP/Finance, Payment gateway, Notification service (email/SMS/push), Analytics/BI, Custom middleware, POS | | |
267
- | 6.2 | **For each system what direction is the data flow?** | Per-system | YES |
268
- | | Options: Fluent External (outbound push), External → Fluent (inbound receive), Bidirectional | | |
269
- | 6.3 | **For each system — what integration method?** | Per-system | YES |
270
- | | Options: Webhook (real-time push), REST API call (pull on demand), Batch file upload/download, Event/message queue, GraphQL mutation from external | | |
271
- | 6.4 | **What happens when an external system is unavailable?** | Per-system | YES |
272
- | | Options: Retry automatically, Skip and continue, Fail the whole process, Queue for manual retry, Alert the operator | | |
273
- | 6.5 | **Is there an existing integration to reuse or extend?** | Yes/No + describe | Recommended |
274
-
275
- ---
276
-
277
- ## Phase 7: User Interface & Actions
278
-
279
- **Purpose:** What humans see and do in Fluent UI.
280
- **Feeds Spec:** §9 User Actions
281
- **CONDITIONAL:** Skip if no human actors (backend-only feature).
282
-
283
- | # | Question | Type | Required |
284
- |---|----------|------|----------|
285
- | 7.1 | **What actions can users take?** List each button or action. | Open | YES |
286
- | | Probe: What's the button label? When is it available (at which status)? Does it need a confirmation dialog? | | |
287
- | 7.2 | **Does the user fill in data when taking an action?** | Per-action | If applicable |
288
- | | Probe: What fields? Required or optional? Dropdowns, free text, date picker, number? | | |
289
- | 7.3 | **Are there bulk actions?** Acting on multiple items at once? | Yes/No + describe | If applicable |
290
- | 7.4 | **Should any actions be restricted by user role?** | Yes/No + describe | If applicable |
291
- | | Probe: Which roles can see/use each action? Admin only? Store manager? Any associate? | | |
292
-
293
- ---
294
-
295
- ## Phase 8: Constraints & Risks
296
-
297
- **Purpose:** Boundaries, assumptions, and concerns.
298
- **Feeds Spec:** §10 Constraints & Risks, §11 Assumptions
299
- **RECOMMENDED:** Always ask briefly, even if answers are "none".
300
-
301
- | # | Question | Type | Required |
302
- |---|----------|------|----------|
303
- | 8.1 | **Volume/scale expectations?** | Open | Recommended |
304
- | | Probe: Orders per day? Concurrent users? Inventory positions? Peak vs normal? | | |
305
- | 8.2 | **Must this work alongside existing features without breaking them?** | Yes/No + describe | Recommended |
306
- | 8.3 | **Is there data to migrate from an old process?** | Yes/No + describe | If applicable |
307
- | 8.4 | **Are there known risks or concerns?** | Open | Recommended |
308
- | 8.5 | **What assumptions are you making?** What do you believe is true but haven't confirmed? | Open | Recommended |
309
-
310
- ---
311
-
312
- ## Phase 9: Acceptance Criteria
313
-
314
- **Purpose:** Testable success criteria for every use case.
315
- **Feeds Spec:** §13 Acceptance Criteria Summary
316
-
317
- | # | Question | Type | Required |
318
- |---|----------|------|----------|
319
- | 9.1 | **For each use case what's the acceptance criterion?** | Structured | YES |
320
- | | Guide the user into Given/When/Then format: | | |
321
- | | Given [precondition], When [action/event], Then [expected result] | | |
322
- | 9.2 | **Which criteria are must-have vs nice-to-have?** | Categorize | YES |
323
- | 9.3 | **Are there non-functional requirements?** | Open | If applicable |
324
- | | Probe: Response time expectations? Uptime requirements? Data retention? Audit trail needs? Compliance requirements? | | |
325
-
326
- If the user struggles with Given/When/Then, help them by converting their natural language descriptions:
327
- - "The order should be fulfilled within 4 hours" Given an order in BOOKED status, When 4 hours elapse without fulfilment completion, Then escalate to operations team
328
-
329
- ---
330
-
331
- ## Phase 10: Review & Gap Analysis
332
-
333
- **Purpose:** Automated completeness assessment and gap identification.
334
-
335
- This phase is generated by the wizard, not asked to the user.
336
-
337
- ### Steps:
338
-
339
- 1. **Compile all gathered information** into the spec template sections (read `SPEC_TEMPLATE.md`)
340
-
341
- 2. **Score completeness** using this rubric:
342
-
343
- | Phase | Weight | Scoring |
344
- |-------|--------|---------|
345
- | 1. Feature Identity | 15% | All REQUIRED answered = full marks |
346
- | 2. Actors & Triggers | 10% | At least 1 actor + 1 trigger = full marks |
347
- | 3. Use Cases | 20% | Happy path + 1 exception = full; happy path only = half |
348
- | 4. Entities & Data | 15% | All entities identified with subtypes = full |
349
- | 5. Business Rules | 15% | Decision points per UC branch = full; 0% if N/A |
350
- | 6. Integrations | 5% | All systems identified = full; 0% if N/A |
351
- | 7. UI Actions | 5% | Actions per actor = full; 0% if N/A (backend-only) |
352
- | 8. Constraints | 5% | Risks or assumptions documented = full |
353
- | 9. Acceptance Criteria | 10% | AC per use case = full; happy path only = half |
354
-
355
- 3. **Generate the recommendation:**
356
- - Score >= 75%: "Ready for `/fluent-feature-plan`"
357
- - Score 50-74%: "Can proceed but sections [X, Y] will rely on assumptions"
358
- - Score < 50%: "Address gaps [X, Y, Z] before proceeding"
359
-
360
- 4. **List open questions** (things that came up but weren't answered)
361
-
362
- 5. **List assumptions** (things inferred from context but not explicitly confirmed)
363
-
364
- 6. **Build the traceability matrix** (UC → entities → rules → integrations → actions)
365
-
366
- 7. **Write the spec to file:**
367
- ```
368
- accounts/<PROFILE>/analysis/specs/<YYYY-MM-DD>-<slug>.md
369
- ```
370
- Use the SPEC_TEMPLATE.md format. Set status = DRAFT.
371
-
372
- 8. **Present the spec to the user** with completeness score and recommendation.
373
-
374
- **WAIT gate:** Ask the user to review the spec. When they approve, update status to APPROVED.
375
-
376
- ---
377
-
378
- ## Mode B: Document Analysis Flow
379
-
380
- When analyzing an existing document:
381
-
382
- ### Step B.1: Read the Document
383
- Read the file at the provided path, or accept pasted content.
384
-
385
- ### Step B.2: Extract Into Template
386
- Map document content to spec sections:
387
- - Look for problem statements, objectives, goals → §1, §2
388
- - Look for user stories, scenarios, workflows §5
389
- - Look for system names, APIs, webhooks → §8
390
- - Look for acceptance criteria, test cases §13
391
- - Look for entity references (order, fulfilment, inventory) §6
392
-
393
- ### Step B.3: Score Completeness
394
- Apply the same 10-phase scoring rubric. Identify which phases have:
395
- - **Full coverage** (enough detail extracted)
396
- - **Partial coverage** (some info but gaps)
397
- - **No coverage** (phase not addressed in document)
398
-
399
- ### Step B.4: Present Gap Report
400
- ```
401
- Document Analysis: "PRD - Curbside Pickup v2.docx"
402
-
403
- Extracted:
404
- Phase 1 (Identity): FULL — clear problem statement and success metrics
405
- Phase 2 (Actors): FULL — store associate + customer identified
406
- Phase 3 (Use Cases): PARTIAL happy path clear, no exception scenarios
407
- Phase 4 (Entities): PARTIAL — mentions orders and fulfilments, no subtypes
408
- Phase 5 (Rules): NONE — no business rules documented
409
- Phase 6 (Integrations): PARTIAL — mentions POS but no failure handling
410
- Phase 7 (UI Actions): NONE — no UI requirements
411
- Phase 8 (Constraints): PARTIAL — volume mentioned, no risks
412
- Phase 9 (Acceptance): PARTIAL 2 criteria, need more
413
-
414
- Completeness: 52% (Partial)
415
- Gaps requiring follow-up: Phases 3 (exceptions), 4 (subtypes), 5 (rules), 7 (UI), 9 (AC)
416
- ```
417
-
418
- ### Step B.5: Interactive Follow-Up
419
- Enter interactive mode ONLY for phases with NONE or PARTIAL coverage. Ask targeted questions — not the full phase, just what's missing.
420
-
421
- ### Step B.6: Produce Spec
422
- Same output as Mode A complete Business Spec written to file.
423
-
424
- ---
425
-
426
- ## Output Conventions
427
-
428
- ### File Path
429
- ```
430
- accounts/<PROFILE>/analysis/specs/<YYYY-MM-DD>-<slug>.md
431
- ```
432
- - `<PROFILE>` — active Fluent CLI profile
433
- - `<YYYY-MM-DD>` today's date
434
- - `<slug>` — 2-4 word kebab-case from feature title (e.g., `curbside-pickup`, `return-order-flow`, `wms-integration`)
435
-
436
- If no profile is connected, use:
437
- ```
438
- .fluent-ai-skills/specs/<YYYY-MM-DD>-<slug>.md
439
- ```
440
-
441
- ### Handoff to Feature Plan
442
-
443
- When the spec is APPROVED, the user can run:
444
- ```
445
- /fluent-feature-plan --spec accounts/<PROFILE>/analysis/specs/<YYYY-MM-DD>-<slug>.md
446
- ```
447
-
448
- The feature plan skill reads the spec and maps sections:
449
-
450
- | Spec Section | Feature Plan Section(s) |
451
- |---|---|
452
- | §1 Problem Statement | → §1 Business Context |
453
- | §2 Feature Summary | → §1 Business Context, §2 Scope |
454
- | §3 Scope | → §2 Scope |
455
- | §4 Actors & Triggers | → §3 Architecture, §16 Test Plan |
456
- | §5 Use Cases | → §4 Workflows, §5 Statuses, §6 Rulesets, §16 Test Plan |
457
- | §6 Entity Model | → §4 Workflows, §12 GraphQL, §13 Cross-Entity |
458
- | §7 Business Rules | §6 Rulesets, §7 Rules Inventory, §8 Detailed Design |
459
- | §8 Integrations | → §10 Webhooks, §9 Settings, §11 Scheduled Events |
460
- | §9 User Actions | → §4 Workflows (user actions), §5 Statuses |
461
- | §10 Constraints & Risks | → §2 Scope, §15 Risks, §18 Rollback |
462
- | §11 Assumptions | → §15 Risks |
463
- | §12 Open Questions | → blocks feature plan until resolved |
464
- | §13 Acceptance Criteria | → §16 Test Plan |
465
- | Traceability Matrix | §14 Files, §17 Deployment |
466
-
467
- ---
468
-
469
- ## Planning Gate
470
-
471
- This skill does NOT modify code or Fluent environments it only produces a spec document. No Planning Gate is required for this skill itself. However, the spec it produces is a prerequisite for the Planning Gate in `/fluent-feature-plan`.
1
+ ---
2
+ name: fluent-use-case-discover
3
+ description: Interactive requirements gathering wizard that produces a structured Business Specification. Walks through use cases, actors, business rules, integrations, and acceptance criteria. Supports interactive mode and document analysis mode. Triggers on "discover use case", "gather requirements", "business spec", "use case discovery", "what are we building", "requirements gathering", "spec wizard", "analyze requirements".
4
+ user-invocable: true
5
+ allowed-tools: Bash, Read, Write, Edit, Glob, Grep
6
+ argument-hint: [--analyze <path-or-paste>] [--profile PROFILE] [--retailer RETAILER_REF]
7
+ ---
8
+
9
+ # Use Case Discovery Wizard
10
+
11
+ Gather structured business requirements through interactive questioning or document analysis. Produces a Business Specification document that feeds directly into `/fluent-feature-plan` for technical implementation planning.
12
+
13
+ ## Ownership Boundary
14
+
15
+ This skill owns requirements elicitation, use case definition, business rule capture, and the Business Spec output artifact.
16
+
17
+ Other skills own:
18
+ - Technical implementation planning --> `/fluent-feature-plan`
19
+ - Scope document decomposition (ADD format) --> `/fluent-scope-decompose`
20
+ - Feature reverse-engineering (existing features) --> `/fluent-feature-explain`
21
+ - Workflow building --> `/fluent-workflow-builder`
22
+ - Rule scaffolding --> `/fluent-rule-scaffold`
23
+
24
+ This skill produces the business spec; `/fluent-feature-plan` translates it into a technical plan.
25
+
26
+ ## When to Use
27
+
28
+ - User has a business need but hasn't structured it into formal requirements
29
+ - Starting a new feature and need to capture use cases before planning
30
+ - A requirements document exists but needs completeness validation and gap filling
31
+ - Before running `/fluent-feature-plan` — to ensure all business context is gathered
32
+ - When multiple stakeholders have provided fragmented requirements that need consolidation
33
+
34
+ **Do NOT use** when:
35
+ - Requirements are already structured in ADD scope format → use `/fluent-scope-decompose`
36
+ - You need to understand an existing feature → use `/fluent-feature-explain`
37
+ - Requirements are clear and you're ready to plan → go directly to `/fluent-feature-plan`
38
+
39
+ ## Template Reference
40
+
41
+ **The Business Spec output template lives at: `SPEC_TEMPLATE.md` (in this skill directory).**
42
+
43
+ Read that file before producing any spec. It defines:
44
+ - The 13-section structure with traceability matrix
45
+ - Section descriptions and worked examples
46
+ - Completeness scoring criteria
47
+
48
+ ## Progress
49
+
50
+ Emit this block at each phase transition to show progress (Mode A interactive wizard):
51
+
52
+ ```
53
+ ▸ /fluent-use-case-discover [1/11]
54
+ Mode detection → Feature identity
55
+ ○ Actors & triggers ○ User journey
56
+ Entities & data ○ Business rules
57
+ ○ Integrations ○ UI & actions
58
+ Constraints & risks ○ Acceptance criteria
59
+ ○ Review & gap analysis
60
+ ```
61
+
62
+ Update the block as each phase completes — mark completed phases with `✓`, the active phase with `→`, and remaining phases with `○`. Replace `[1/11]` with the current phase number.
63
+
64
+ ## Two Input Modes
65
+
66
+ ### Mode A: Interactive Wizard (default)
67
+
68
+ Run with `/fluent-use-case-discover` or when the user describes a vague feature idea.
69
+
70
+ The wizard walks through 10 phases of structured questions, each building on previous answers. Uses progressive disclosure — only asks questions relevant to the feature type.
71
+
72
+ > **Offline limitation:** If no Fluent profile is connected (`FLUENT_PROFILE` not set), Phase 4 environment discovery is SKIPPED. The spec may contain assumptions about available rules, workflows, and entity types. Feature planning will discover the live environment, but spec completeness will be lower without Phase 4 context. Recommend connecting a profile via `/fluent-profile` before running this wizard.
73
+
74
+ ### Mode B: Document Analysis
75
+
76
+ Run with `/fluent-use-case-discover --analyze <path>` or when the user pastes/provides an existing requirements document (PRD, Jira epic, scope doc, email brief, meeting notes).
77
+
78
+ The wizard:
79
+ 1. Reads and parses the provided document
80
+ 2. Extracts what it can into the spec template sections
81
+ 3. Scores completeness against the 10-phase framework
82
+ 4. Presents the extracted spec + gap report to the user
83
+ 5. Enters interactive mode ONLY for HIGH-priority gaps
84
+ 6. Produces the same Business Spec output as Mode A
85
+
86
+ Mode B = "parse what you have" + "ask only what's missing".
87
+
88
+ ---
89
+
90
+ ## Phase 0: Mode Detection & Setup
91
+
92
+ **Detect mode:**
93
+ - If `--analyze` flag or user provided a document → Mode B
94
+ - Otherwise → Mode A
95
+
96
+ **Check profile connection:**
97
+ ```
98
+ environment.discover include=retailer
99
+ ```
100
+ If connected note profile + retailer for Phase 4 live discovery.
101
+ If not connected → skip live discovery, note in output as limitation.
102
+
103
+ **Check for existing specs:**
104
+ ```bash
105
+ ls accounts/<PROFILE>/features/*/spec.md
106
+ ```
107
+ If related specs exist show to user, ask if this is an update or new spec.
108
+
109
+ **Slug handling protocol:**
110
+ - The slug is NOT asked upfront — it's auto-generated from the feature name in Phase 10 after the full spec is gathered
111
+ - If `--feature <slug>` is provided, use that slug (for resuming an existing spec)
112
+ - If no slug is provided, generate one automatically in Phase 10 after the feature is fully understood
113
+ - Users should NEVER need to memorize slug naming rules the wizard handles this
114
+
115
+ ---
116
+
117
+ ## Phase 1: Feature Identity
118
+
119
+ **Purpose:** Establish what we're building and why.
120
+ **Feeds → Spec:** §1 Problem Statement, §2 Feature Summary, §3 Scope
121
+
122
+ Ask these questions (all at once or conversationally based on user engagement):
123
+
124
+ | # | Question | Type | Required |
125
+ |---|----------|------|----------|
126
+ | 1.1 | **What is the feature in one sentence?** | Open | YES |
127
+ | 1.2 | **What business problem does this solve?** Why is it needed? What pain exists today? | Open | YES |
128
+ | 1.3 | **What type of change is this?** | Selection | YES |
129
+ | | Options: New capability / Enhancement to existing / Bug fix / External integration / Data migration / Process change | | |
130
+ | 1.4 | **Who requested this and why now?** Stakeholder, team, or business driver. | Open | No |
131
+ | 1.5 | **How will you measure success?** What KPIs or metrics prove the feature works? | Open | YES |
132
+ | 1.6 | **What is explicitly OUT of scope?** What should this feature NOT do? | Open | Recommended |
133
+
134
+ **Conditional branching after Phase 1:**
135
+ - Type = "Bug fix" shortened flow: skip Phases 5-7, focus on root cause + fix scenario
136
+ - Type = "External integration" → Phase 6 (Integrations) becomes REQUIRED
137
+ - Type = "Data migration" → add batch/volume questions to Phase 8
138
+
139
+ **WAIT gate:** Summarize the feature identity and confirm with the user before proceeding to Phase 2. The slug is NOT generated here — it is auto-generated in Phase 10 after the full spec is gathered.
140
+
141
+ If the feature builds on an existing one (user said "extend X" or "add to X"):
142
+ - Set `basedOn: "<parent-slug>"` in the eventual status.json
143
+ - Note this for the §3a Existing State section
144
+
145
+ ---
146
+
147
+ ## Phase 2: Actors & Triggers
148
+
149
+ **Purpose:** Who's involved and what starts the process.
150
+ **Feeds Spec:** §4 Actors & Triggers
151
+
152
+ | # | Question | Type | Required |
153
+ |---|----------|------|----------|
154
+ | 2.1 | **Who are the actors involved?** Who interacts with or is affected by this feature? | Multi-select + open | YES |
155
+ | | Suggest from: Store associate, Warehouse picker/packer, Admin/operations, Customer, External system (OMS/WMS/ERP/TMS), Scheduled job, Automated workflow | | |
156
+ | 2.2 | **What triggers this feature?** What event or action kicks it off? | Selection + open | YES |
157
+ | | Suggest from: New order placed, User clicks a button, External system sends data, Scheduled time/cron, Entity reaches a specific status, Manual batch upload, Customer action (app/web) | | |
158
+ | 2.3 | **Which Fluent UI modules are involved?** | Multi-select | If human actors |
159
+ | | Options: Admin Console, Service Point (store app), Fluent OMS App, No UI (backend only) | | |
160
+ | 2.4 | **Is this feature retailer-specific or account-wide?** | Selection | YES |
161
+ | | Options: Single retailer, All retailers (account-wide) | | |
162
+
163
+ **WAIT gate:** Present actors + trigger summary as a table. Confirm before proceeding.
164
+
165
+ ---
166
+
167
+ ## Phase 3: User Journey & Use Cases
168
+
169
+ **Purpose:** Define the actual scenarios the core of the spec.
170
+ **Feeds → Spec:** §5 Use Cases, §13 Acceptance Criteria
171
+
172
+ This is the most important phase. Take time here.
173
+
174
+ | # | Question | Type | Required |
175
+ |---|----------|------|----------|
176
+ | 3.1 | **Walk me through the happy path.** Step by step: what happens from trigger to completion? | Open | YES |
177
+ | 3.2 | **Are there alternative paths?** Conditions where the flow branches differently? | Open | If applicable |
178
+ | | Probe: What condition causes the branch? What's different about the outcome? | | |
179
+ | 3.3 | **What are the failure/exception scenarios?** | Open | YES |
180
+ | | Probe with domain-aware questions based on Phase 1 type: | | |
181
+ | | - Order flow: What if stock is unavailable? What if payment fails? What if address is invalid? | | |
182
+ | | - Fulfilment: What if the item can't be found? What if the carrier rejects it? | | |
183
+ | | - Integration: What if the external system is down? What if data format is wrong? | | |
184
+ | | - General: What if the user cancels midway? Can this be partially completed? | | |
185
+ | 3.4 | **Are there time-sensitive aspects?** | Open | If applicable |
186
+ | | Probe: Auto-cancel after X hours? SLA deadlines? Scheduled retries? Escalation rules? | | |
187
+ | 3.5 | **Can this be triggered multiple times for the same entity?** Should it be idempotent? | Yes/No + explain | Recommended |
188
+
189
+ **Output:** After gathering answers, synthesize into numbered use cases:
190
+ ```
191
+ UC-01: [Happy Path] <title> — <one-line summary>
192
+ UC-02: [Alternative] <title> <one-line summary>
193
+ UC-03: [Exception] <title> — <one-line summary>
194
+ UC-04: [Edge Case] <title> — <one-line summary>
195
+ ```
196
+
197
+ **WAIT gate:** Present the use case list. Ask: "Are these use cases complete? Any missing scenarios?"
198
+
199
+ ---
200
+
201
+ ## Phase 4: Entities & Data
202
+
203
+ **Purpose:** Map use cases to Fluent's entity model.
204
+ **Feeds → Spec:** §6 Entity Model
205
+
206
+ | # | Question | Type | Required |
207
+ |---|----------|------|----------|
208
+ | 4.1 | **Which entity types are involved?** | Multi-select | YES |
209
+ | | Options: Order, Fulfilment, Fulfilment Options / Fulfilment Choice, Article, Location, Inventory Position, Wave, Consignment, Return Order, Product, Customer, Carrier, Virtual Catalogue | | |
210
+ | 4.2 | **For each entity — what subtypes?** | Per-entity | YES |
211
+ | | Common subtypes: HD (home delivery), CC (click & collect), SFS (ship from store), RETURN, DEFAULT | | |
212
+ | 4.3 | **Are any new entity subtypes needed?** Something that doesn't exist today? | Yes/No + describe | If applicable |
213
+ | 4.4 | **What custom data (attributes) needs to be stored on each entity?** | Per-entity open | Recommended |
214
+ | | Probe: Set at creation or updated later? Where does the value come from (user input, calculated, external system)? What data type? | | |
215
+ | 4.5 | **How do entities relate in this feature?** | Open | If multi-entity |
216
+ | | Probe: Does the order create fulfilments? Does a fulfilment update the order? Are there parent-child event chains? | | |
217
+
218
+ ### Live Environment Discovery
219
+
220
+ After the user answers 4.1 and 4.2, **validate entity types against the live environment** before proceeding:
221
+
222
+ ```
223
+ environment.discover include=workflows,locations,settings
224
+ ```
225
+
226
+ For each entity type + subtype selected by the user, query workflows to confirm they exist:
227
+
228
+ ```
229
+ workflow.transitions triggers=[{type: "<ENTITY>", subtype: "<SUBTYPE>", retailerId: "<ID>"}]
230
+ ```
231
+
232
+ If a selected entity type has **no workflow** in the live environment:
233
+ - Flag it clearly: "No workflow found for `<ENTITY>::<SUBTYPE>`. This means a new workflow must be created."
234
+ - Ask the user to confirm: "Is this a new entity type that doesn't exist yet, or did you mean a different subtype?"
235
+
236
+ This prevents assumptions about existing workflows that don't actually exist, which would lead to invalid feature plans downstream.
237
+
238
+ Also query the rule registry:
239
+ ```
240
+ plugin.list compact=true
241
+ ```
242
+
243
+ Present findings to the user:
244
+
245
+ ```
246
+ --- Environment Context ---
247
+
248
+ ORDER::HD workflow:
249
+ Status: EXISTS (v12, 14 rulesets)
250
+ Current statuses: CREATEDBOOKED IN_PROGRESS FULFILLED COMPLETE
251
+ User actions at CREATED: ConfirmOrder, CancelOrder
252
+
253
+ FULFILMENT::HD_WH workflow:
254
+ Status: EXISTS (v8, 10 rulesets)
255
+ Current statuses: CREATED → ASSIGNED → PICKING → PACKED → SHIPPED → DELIVERED
256
+
257
+ Available OOTB rules: 47 total (12 match ORDER, 9 match FULFILMENT)
258
+ Locations: 3 warehouses, 12 stores
259
+ Settings: 8 relevant (WEBHOOK_*, ALLOCATION_*)
260
+ ---
261
+ ```
262
+
263
+ This context helps the user in Phases 5-7. They can say "reuse the existing allocation" or "add a new status between PICKING and PACKED" instead of describing from scratch.
264
+
265
+ If no profile is connected, skip discovery and note:
266
+ ```
267
+ Note: No Fluent profile connected. Environment discovery skipped.
268
+ The feature plan phase will discover the live environment.
269
+ ```
270
+
271
+ #### 4.3 Validate Entity Types
272
+
273
+ After the user identifies entity types in their use cases (ORDER, FULFILMENT, ARTICLE, etc.), validate they exist in the connected environment:
274
+
275
+ 1. Query available workflows to extract supported entity types:
276
+ ```
277
+ workflow.list (MCP fluent-mcp-extn or fluent-mcp)
278
+ ```
279
+ 2. Extract unique entity types from workflow names (format: `ENTITY_TYPE::SUBTYPE`)
280
+ 3. Cross-reference against entity types mentioned in the user's use cases
281
+ 4. **If an entity type has NO matching workflows:** WARN the user: "Entity type `<TYPE>` has no workflows in this environment. This may indicate a missing module or incorrect entity type. Verify before proceeding."
282
+ 5. **If all entity types match:** Confirm: "All referenced entity types have active workflows."
283
+
284
+ This prevents use cases from referencing entity types that don't exist in the target environment, which would cause downstream skill failures during workflow building and deployment.
285
+
286
+ ---
287
+
288
+ ## Phase 5: Business Rules & Conditions
289
+
290
+ **Purpose:** Capture the decision logic.
291
+ **Feeds Spec:** §7 Business Rules
292
+ **CONDITIONAL:** Skip if type = "Bug fix" or no decision points emerged in Phase 3.
293
+
294
+ | # | Question | Type | Required |
295
+ |---|----------|------|----------|
296
+ | 5.1 | **What conditions determine the flow?** List each decision point. | Open | YES |
297
+ | | Probe: Based on order type? Location type? Item attributes? Customer segment? Monetary threshold? External data? | | |
298
+ | 5.2 | **Are there validation rules?** What must be true before proceeding? | Open | If applicable |
299
+ | | Probe: Stock check? Address validation? Payment confirmed? Minimum order value? Weight/dimension limits? | | |
300
+ | 5.3 | **Are there calculations or allocations?** | Open | If applicable |
301
+ | | Probe: Inventory allocation strategy? Fulfilment splitting logic? Location selection/routing? Shipping cost calculation? | | |
302
+ | 5.4 | **Are there approval or review gates?** | Yes/No + describe | If applicable |
303
+ | | Probe: Manager approval? Fraud review? Quality check? | | |
304
+ | 5.5 | **Are there automated time-based actions?** | Yes/No + describe | If applicable |
305
+ | | Examples: Auto-cancel after 2 hours, retry webhook every 15 min, daily reconciliation batch, SLA escalation | | |
306
+
307
+ **Entity-aware smart probing** (based on Phase 4 selections):
308
+ - ORDER selected also ask about: payment validation, fraud check, order splitting, customer notification
309
+ - FULFILMENT selected → also ask about: pick/pack logic, carrier selection, label generation, partial fulfilment
310
+ - INVENTORY selected → also ask about: reservation strategy, safety stock, recount triggers, virtual position updates
311
+ - LOCATION selected → also ask about: capacity rules, operating hours, zone routing, store-vs-warehouse logic
312
+
313
+ ---
314
+
315
+ ## Phase 6: Integrations
316
+
317
+ **Purpose:** External system touchpoints.
318
+ **Feeds → Spec:** §8 Integrations
319
+ **CONDITIONAL:** Skip if no external systems identified in Phase 2. REQUIRED if type = "External integration".
320
+
321
+ | # | Question | Type | Required |
322
+ |---|----------|------|----------|
323
+ | 6.1 | **Which external systems interact with this feature?** | Multi-select + open | YES |
324
+ | | Suggest: OMS, WMS, TMS/Carrier, ERP/Finance, Payment gateway, Notification service (email/SMS/push), Analytics/BI, Custom middleware, POS | | |
325
+ | 6.2 | **For each system — what direction is the data flow?** | Per-system | YES |
326
+ | | Options: Fluent External (outbound push), External Fluent (inbound receive), Bidirectional | | |
327
+ | 6.3 | **For each system what integration method?** | Per-system | YES |
328
+ | | Options: Webhook (real-time push), REST API call (pull on demand), Batch file upload/download, Event/message queue, GraphQL mutation from external | | |
329
+ | 6.4 | **What happens when an external system is unavailable?** | Per-system | YES |
330
+ | | Options: Retry automatically, Skip and continue, Fail the whole process, Queue for manual retry, Alert the operator | | |
331
+ | 6.5 | **Is there an existing integration to reuse or extend?** | Yes/No + describe | Recommended |
332
+
333
+ ---
334
+
335
+ ## Phase 7: User Interface & Actions
336
+
337
+ **Purpose:** What humans see and do in Fluent UI.
338
+ **Feeds → Spec:** §9 User Actions
339
+ **CONDITIONAL:** Skip if no human actors (backend-only feature).
340
+
341
+ | # | Question | Type | Required |
342
+ |---|----------|------|----------|
343
+ | 7.1 | **What actions can users take?** List each button or action. | Open | YES |
344
+ | | Probe: What's the button label? When is it available (at which status)? Does it need a confirmation dialog? | | |
345
+ | 7.2 | **Does the user fill in data when taking an action?** | Per-action | If applicable |
346
+ | | Probe: What fields? Required or optional? Dropdowns, free text, date picker, number? | | |
347
+ | 7.3 | **Are there bulk actions?** Acting on multiple items at once? | Yes/No + describe | If applicable |
348
+ | 7.4 | **Should any actions be restricted by user role?** | Yes/No + describe | If applicable |
349
+ | | Probe: Which roles can see/use each action? Admin only? Store manager? Any associate? | | |
350
+
351
+ ### Strict User Action Capture (Anti-Hallucination)
352
+
353
+ When gathering UI action requirements, capture this contract explicitly for each action:
354
+
355
+ 1. **`eventName`** exact event to send (do not infer from button label).
356
+ 2. **Scope alignment** intended `type`, `subtype`, and `flexType` branch where the action appears.
357
+ 3. **`context[]` contract** `label`, `type` (`PRIMARY` or `SECONDARY`), `modules[]`, optional `confirm`.
358
+ 4. **`attributes[]` contract** each field name, type, mandatory flag, and optional `source/options`.
359
+ 5. **Module visibility** — if module-specific, confirm expected modules are valid against `fc.mystique.apps`.
360
+ 6. **Schema discipline** do not introduce undocumented user-action keys.
361
+
362
+ If any of the above is unknown, mark it as an open question in the spec before handoff to `/fluent-feature-plan`.
363
+
364
+ ---
365
+
366
+ ## Phase 8: Constraints & Risks
367
+
368
+ **Purpose:** Boundaries, assumptions, and concerns.
369
+ **Feeds → Spec:** §10 Constraints & Risks, §11 Assumptions
370
+ **RECOMMENDED:** Always ask briefly, even if answers are "none".
371
+
372
+ | # | Question | Type | Required |
373
+ |---|----------|------|----------|
374
+ | 8.1 | **Volume/scale expectations?** | Open | Recommended |
375
+ | | Probe: Orders per day? Concurrent users? Inventory positions? Peak vs normal? | | |
376
+ | 8.2 | **Must this work alongside existing features without breaking them?** | Yes/No + describe | Recommended |
377
+ | 8.3 | **Is there data to migrate from an old process?** | Yes/No + describe | If applicable |
378
+ | 8.4 | **Are there known risks or concerns?** | Open | Recommended |
379
+ | 8.5 | **What assumptions are you making?** What do you believe is true but haven't confirmed? | Open | Recommended |
380
+
381
+ ---
382
+
383
+ ## Phase 9: Acceptance Criteria
384
+
385
+ **Purpose:** Testable success criteria for every use case.
386
+ **Feeds Spec:** §13 Acceptance Criteria Summary
387
+
388
+ | # | Question | Type | Required |
389
+ |---|----------|------|----------|
390
+ | 9.1 | **For each use case — what's the acceptance criterion?** | Structured | YES |
391
+ | | Guide the user into Given/When/Then format: | | |
392
+ | | Given [precondition], When [action/event], Then [expected result] | | |
393
+ | 9.2 | **Which criteria are must-have vs nice-to-have?** | Categorize | YES |
394
+ | 9.3 | **Are there non-functional requirements?** | Open | If applicable |
395
+ | | Probe: Response time expectations? Uptime requirements? Data retention? Audit trail needs? Compliance requirements? | | |
396
+
397
+ If the user struggles with Given/When/Then, help them by converting their natural language descriptions:
398
+ - "The order should be fulfilled within 4 hours" → Given an order in BOOKED status, When 4 hours elapse without fulfilment completion, Then escalate to operations team
399
+
400
+ ---
401
+
402
+ ## Phase 10: Review & Gap Analysis
403
+
404
+ **Purpose:** Automated completeness assessment and gap identification.
405
+
406
+ This phase is generated by the wizard, not asked to the user.
407
+
408
+ ### Steps:
409
+
410
+ 1. **Compile all gathered information** into the spec template sections (read `SPEC_TEMPLATE.md`)
411
+
412
+ 2. **Score completeness** using this rubric:
413
+
414
+ | Phase | Weight | Scoring |
415
+ |-------|--------|---------|
416
+ | 1. Feature Identity | 15% | All REQUIRED answered = full marks |
417
+ | 2. Actors & Triggers | 10% | At least 1 actor + 1 trigger = full marks |
418
+ | 3. Use Cases | 20% | Happy path + 1 exception = full; happy path only = half |
419
+ | 4. Entities & Data | 15% | All entities identified with subtypes = full |
420
+ | 5. Business Rules | 15% | Decision points per UC branch = full; 0% if N/A |
421
+ | 6. Integrations | 5% | All systems identified = full; 0% if N/A |
422
+ | 7. UI Actions | 5% | Actions per actor = full; 0% if N/A (backend-only) |
423
+ | 8. Constraints | 5% | Risks or assumptions documented = full |
424
+ | 9. Acceptance Criteria | 10% | AC per use case = full; happy path only = half |
425
+
426
+ 3. **Generate the recommendation:**
427
+ - Score >= 75%: "Ready for `/fluent-feature-plan`"
428
+ - Score 50-74%: "Can proceed but sections [X, Y] will rely on assumptions"
429
+ - Score < 50%: "Address gaps [X, Y, Z] before proceeding"
430
+
431
+ 4. **List open questions** (things that came up but weren't answered)
432
+
433
+ 5. **List assumptions** (things inferred from context but not explicitly confirmed)
434
+
435
+ 6. **Build the traceability matrix** (UC → entities → rules → integrations → actions)
436
+
437
+ 7. **Generate feature slug** from the feature title (Phase 1, question 1.1):
438
+
439
+ **Slug generation rules:**
440
+ - Take the one-sentence feature description from Q1.1
441
+ - Extract 2-4 key nouns/verbs (drop articles, prepositions, generic words like "feature", "flow", "process")
442
+ - Convert to lowercase kebab-case
443
+ - Max 4 words, no dates, no skill prefixes
444
+
445
+ **Examples:**
446
+ | Feature Description | Generated Slug |
447
+ |---|---|
448
+ | "Curbside pickup for click and collect orders" | `curbside-pickup` |
449
+ | "Return order processing with refund automation" | `return-order-refund` |
450
+ | "Multi-location inventory allocation" | `multi-location-allocation` |
451
+ | "Send SMS notifications when order ships" | `sms-ship-notify` |
452
+
453
+ **Present to user for confirmation:**
454
+ ```
455
+ Suggested feature slug: `curbside-pickup`
456
+ This will create: accounts/<PROFILE>/features/curbside-pickup/
457
+
458
+ Accept this slug or provide a different one? [Enter to accept]
459
+ ```
460
+
461
+ If user provides a different slug, validate it:
462
+ - Must be lowercase kebab-case
463
+ - Max 4 words
464
+ - No dates, no skill prefixes
465
+ - If invalid, explain the rules and re-suggest
466
+
467
+ **Check for collisions:**
468
+ ```bash
469
+ ls accounts/<PROFILE>/features/
470
+ ```
471
+ If the slug already exists, warn: "Feature `<slug>` already exists (status: <status>). Options: (1) Update the existing spec (2) Choose a different slug"
472
+
473
+ 8. **Write the spec to file:**
474
+ ```
475
+ accounts/<PROFILE>/features/<slug>/spec.md
476
+ ```
477
+ Use the SPEC_TEMPLATE.md format. Set status = DRAFT.
478
+
479
+ 9. **Present the spec to the user** with completeness score and recommendation.
480
+
481
+ 10. **Update status.json** — set `status: "PLANNING"`, `spec: "DRAFT"`, `next: "/fluent-feature-plan"`.
482
+
483
+ **MANDATORY REVIEW GATE — STOP HERE AND WAIT:**
484
+
485
+ The agent MUST stop and wait for explicit user approval before proceeding. This gate is non-negotiable.
486
+
487
+ 1. Present the spec to the user with the completeness score
488
+ 2. Ask: *"Please review this Business Spec. When you're satisfied, say 'approved' and I'll proceed to feature planning."*
489
+ 3. **WAIT.** Do not proceed to `/fluent-feature-plan` or any other skill.
490
+ 4. If the user asks questions → answer them, keep waiting
491
+ 5. If the user requests changes → apply them, re-present, keep waiting
492
+ 6. Only when the user explicitly says "approved", "looks good", "go ahead", or similar affirmative:
493
+ - Update `status.json` to `spec: "APPROVED"`
494
+ - Emit: `→ READY: accounts/<PROFILE>/features/<slug>/spec.md`
495
+ - Recommend: `→ NEXT: /fluent-feature-plan --feature <slug>`
496
+ 7. **NEVER auto-advance** past this gate. The spec approval decision belongs to the user.
497
+
498
+ ---
499
+
500
+ ## Mode B: Document Analysis Flow
501
+
502
+ When analyzing an existing document:
503
+
504
+ ### Step B.1: Read the Document
505
+ Read the file at the provided path, or accept pasted content.
506
+
507
+ ### Step B.2: Extract Into Template
508
+ Map document content to spec sections:
509
+ - Look for problem statements, objectives, goals → §1, §2
510
+ - Look for user stories, scenarios, workflows → §5
511
+ - Look for system names, APIs, webhooks → §8
512
+ - Look for acceptance criteria, test cases → §13
513
+ - Look for entity references (order, fulfilment, inventory) → §6
514
+
515
+ ### Step B.3: Score Completeness
516
+ Apply the same 10-phase scoring rubric. Identify which phases have:
517
+ - **Full coverage** (enough detail extracted)
518
+ - **Partial coverage** (some info but gaps)
519
+ - **No coverage** (phase not addressed in document)
520
+
521
+ ### Step B.4: Present Gap Report
522
+ ```
523
+ Document Analysis: "PRD - Curbside Pickup v2.docx"
524
+
525
+ Extracted:
526
+ Phase 1 (Identity): FULL — clear problem statement and success metrics
527
+ Phase 2 (Actors): FULL — store associate + customer identified
528
+ Phase 3 (Use Cases): PARTIAL — happy path clear, no exception scenarios
529
+ Phase 4 (Entities): PARTIAL — mentions orders and fulfilments, no subtypes
530
+ Phase 5 (Rules): NONE — no business rules documented
531
+ Phase 6 (Integrations): PARTIAL — mentions POS but no failure handling
532
+ Phase 7 (UI Actions): NONE — no UI requirements
533
+ Phase 8 (Constraints): PARTIAL — volume mentioned, no risks
534
+ Phase 9 (Acceptance): PARTIAL — 2 criteria, need more
535
+
536
+ Completeness: 52% (Partial)
537
+ Gaps requiring follow-up: Phases 3 (exceptions), 4 (subtypes), 5 (rules), 7 (UI), 9 (AC)
538
+ ```
539
+
540
+ ### Step B.5: Interactive Follow-Up
541
+ Enter interactive mode ONLY for phases with NONE or PARTIAL coverage. Ask targeted questions — not the full phase, just what's missing.
542
+
543
+ ### Step B.6: Produce Spec
544
+ Same output as Mode A — complete Business Spec written to file.
545
+
546
+ ---
547
+
548
+ ## Output Conventions
549
+
550
+ ### File Path
551
+ ```
552
+ accounts/<PROFILE>/features/<slug>/spec.md
553
+ ```
554
+ - `<PROFILE>` — active Fluent CLI profile
555
+ - `<slug>` — auto-generated from the feature title in Phase 10 step 7 and confirmed by the user. Rules: lowercase kebab-case, 2-4 words, no dates, no skill prefixes. The slug is IMMUTABLE after spec approval — changing it would break all downstream references.
556
+
557
+ If no profile is connected, use:
558
+ ```
559
+ .fluent-ai-skills/features/<slug>/spec.md
560
+ ```
561
+
562
+ ### Handoff to Feature Plan
563
+
564
+ **Only after the user has explicitly approved the spec**, recommend:
565
+ ```
566
+ /fluent-feature-plan --feature <slug>
567
+ ```
568
+ The agent MUST NOT auto-invoke `/fluent-feature-plan` — present the recommendation and let the user decide when to proceed.
569
+
570
+ The feature plan skill reads the spec and maps sections:
571
+
572
+ | Spec Section | Feature Plan Section(s) |
573
+ |---|---|
574
+ | §1 Problem Statement | → §1 Business Context |
575
+ | §2 Feature Summary | → §1 Business Context, §2 Scope |
576
+ | §3 Scope | → §2 Scope |
577
+ | §4 Actors & Triggers | → §3 Architecture, §16 Test Plan |
578
+ | §5 Use Cases | → §4 Workflows, §5 Statuses, §6 Rulesets, §16 Test Plan |
579
+ | §6 Entity Model | → §4 Workflows, §12 GraphQL, §13 Cross-Entity |
580
+ | §7 Business Rules | → §6 Rulesets, §7 Rules Inventory, §8 Detailed Design |
581
+ | §8 Integrations | → §10 Webhooks, §9 Settings, §11 Scheduled Events |
582
+ | §9 User Actions | → §4 Workflows (user actions), §5 Statuses |
583
+ | §10 Constraints & Risks | → §2 Scope, §15 Risks, §18 Rollback |
584
+ | §11 Assumptions | → §15 Risks |
585
+ | §12 Open Questions | → blocks feature plan until resolved |
586
+ | §13 Acceptance Criteria | → §16 Test Plan |
587
+ | Traceability Matrix | → §14 Files, §17 Deployment |
588
+
589
+ ---
590
+
591
+ ## Planning Gate
592
+
593
+ This skill has a **MANDATORY REVIEW GATE** (not a Planning Gate in the implementation sense). It does not modify code or Fluent environments — it produces a Business Spec document. At the end of Phase 10, the spec must receive explicit user approval before any handoff occurs. The spec approval is both this skill's final gate and a mandatory prerequisite for `/fluent-feature-plan`'s Pre-flight Requirements Check.