@fluentcommerce/ai-skills 0.1.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 (168) hide show
  1. package/README.md +866 -622
  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 -181
  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 -1031
  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 +63 -5
  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 -0
  19. package/content/dev/agents/fluent-dev/agent.json +14 -2
  20. package/content/dev/agents/fluent-dev.md +194 -525
  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 -192
  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 +19 -2
  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 +27 -2
  33. package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -227
  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 +64 -2
  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 -1108
  135. package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1111
  136. package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
  137. package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -385
  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 +160 -1
  142. package/content/dev/skills/fluent-source-onboard/SKILL.md +31 -3
  143. package/content/dev/skills/fluent-sourcing/SKILL.md +1185 -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 -0
  149. package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +281 -0
  150. package/content/dev/skills/fluent-version-manage/SKILL.md +53 -2
  151. package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
  152. package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -319
  153. package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -267
  154. package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
  155. package/content/mcp-extn/agents/fluent-mcp.md +133 -69
  156. package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -461
  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 -77
  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 +909 -52
  167. package/metadata.json +184 -156
  168. package/package.json +3 -2
@@ -12,6 +12,15 @@ Deploy modules to Fluent Commerce environments with validation and verification.
12
12
 
13
13
  ## Planning Gate
14
14
 
15
+ ### Pre-flight: Plan Verification
16
+
17
+ Before proceeding, check for an existing approved plan:
18
+
19
+ 1. **Search** `accounts/<PROFILE>/features/*/status.json` for an entry with `plan: "APPROVED"` that covers this deployment, OR check `accounts/<PROFILE>/tasks/` for a task plan with `Status: APPROVED`
20
+ 2. **If multi-artifact work** (deploy + rules + workflows + settings): STOP. Invoke `/fluent-feature-plan` first — this skill cannot be used for multi-artifact work without a feature plan
21
+ 3. **If approved plan found:** Skip to implementation, referencing the plan's §17 (Deployment) section
22
+ 4. **If deploy-only work with no plan:** Continue to the Planning Gate below to write a plan for this skill
23
+
15
24
  **Before deploying any module, write a plan using the template from `PLAN_TEMPLATE.md` in the `fluent-feature-plan` skill.**
16
25
 
17
26
  **Module-deploy specific emphasis — ensure these are covered:**
@@ -25,10 +34,41 @@ Deploy modules to Fluent Commerce environments with validation and verification.
25
34
  7. **Deployment Sequence (Section 9)** — pre-checks (validation, build, tests) → deploy → verify
26
35
  8. **Rollback Plan (Section 10)** — previous module version to restore if deployment fails
27
36
 
28
- **Write the plan to:** `accounts/<PROFILE>/plans/<YYYY-MM-DD>-module-deploy-<slug>.md`. Set `Status: PENDING`.
37
+ **Write the plan to:** `accounts/<PROFILE>/tasks/<YYYY-MM-DD>-module-deploy-<slug>.md`. Set `Status: PENDING`.
29
38
 
30
39
  Present the full plan content to the user and wait for approval before running `fluent module install`. On approval, update the file to `Status: APPROVED`. If the user says "just do it", proceed directly (still write the file for audit trail).
31
40
 
41
+ ## Pre-Flight: Pre-Deploy Check Gate
42
+
43
+ **This gate is MANDATORY. Do not skip.**
44
+
45
+ 1. Search `accounts/<PROFILE>/reports/pre-deploy/` for `<MODULE>-<VERSION>.checklist.json`.
46
+ 2. **If found and `overallResult == "BLOCKED"`**: **STOP. Do NOT proceed.** List all blocking gates from the report. Require explicit user override ("deploy anyway") to continue past a BLOCKED verdict.
47
+ 3. **If found and `overallResult == "READY"`**: Proceed — pre-deploy validation passed.
48
+ 4. **If no report found**: WARN the user: "No pre-deploy-check report found for this module version. Run `/fluent-pre-deploy-check` first for comprehensive validation." Only proceed after explicit user confirmation ("deploy without validation").
49
+
50
+ > **New to Fluent CLI?** Start with `/fluent-cli-index` for a complete command reference and routing guide.
51
+
52
+ ## Handoff Protocol
53
+
54
+ ### Signals emitted by this skill
55
+
56
+ | Signal | Condition | Example |
57
+ |--------|-----------|---------|
58
+ | `-> READY: <path>` | Module installed successfully | `-> READY: Module hm-extensions v0.0.30 installed to HM_TEST (retailer 5)` |
59
+ | `-> NEXT: /fluent-<skill>` | Ready for workflow deploy or E2E test | `-> NEXT: /fluent-workflow-deploy` |
60
+ | `-> BLOCKED: <reason>` | Deployment blocked | `-> BLOCKED: DEPLOYMENT_BLOCKED — Pre-deploy check verdict is BLOCKED` |
61
+ | `-> SKIP: <reason>` | Module already at target version | `-> SKIP: Module already at v0.0.30 on retailer HM_TEST` |
62
+
63
+ ### Error codes
64
+
65
+ | Code | Condition | Recovery |
66
+ |------|-----------|----------|
67
+ | `PLAN_REQUIRED` | Deployment attempted without approved plan | Run `/fluent-feature-plan` first |
68
+ | `DEPLOYMENT_BLOCKED` | Pre-deploy check report is BLOCKED | Run `/fluent-pre-deploy-check` and resolve gates |
69
+ | `PREREQ_MISSING` | No pre-deploy report found | Run `/fluent-pre-deploy-check` first |
70
+ | `ENV_UNREACHABLE` | Cannot connect to Fluent environment | Check credentials via `config.validate` |
71
+
32
72
  ## When to Use
33
73
 
34
74
  - Deploying reference modules from Fluent repository
@@ -42,7 +82,7 @@ Present the full plan content to the user and wait for approval before running `
42
82
  - [ ] Module source available (name, URL, or local path)
43
83
  - [ ] Dependencies installed
44
84
  - [ ] Configuration values ready (if module requires config)
45
- - [ ] Module validation passed (check `accounts/<PROFILE>/analysis/module-validate/<name>.report.json` — `summary.status` should be `READY_FOR_BUILD`). Run `/fluent-module-validate` if report is missing or stale.
85
+ - [ ] Module validation passed (check `accounts/<PROFILE>/reports/module-validate/<name>.report.json` — `summary.status` should be `READY_FOR_BUILD`). Run `/fluent-module-validate` if report is missing or stale.
46
86
 
47
87
  ## Cross-Platform Command Notes
48
88
 
@@ -99,7 +139,7 @@ For local module paths (extension or data modules), run structural validation be
99
139
 
100
140
  **1. Check validation report:**
101
141
 
102
- Read `accounts/<PROFILE>/analysis/module-validate/<module-name>.report.json` if it exists.
142
+ Read `accounts/<PROFILE>/reports/module-validate/<module-name>.report.json` if it exists.
103
143
 
104
144
  - If `summary.status == "READY_FOR_BUILD"` -- proceed
105
145
  - If `summary.status == "NEEDS_FIXES"` -- **STOP**. List the FAIL items from the report. Run `/fluent-module-validate` to refresh if the report is stale.
@@ -124,15 +164,17 @@ fluent module describe <module-name>
124
164
  - Read `<module-path>/resources/module.json` directly and confirm it parses as JSON.
125
165
  - Confirm the module type matches expectations (extension has `plugins/`, data has `resources/assets/`).
126
166
 
127
- ### Step 3: Check Dependencies
167
+ ### Step 3: Check Dependencies (Mandatory Pre-flight)
128
168
 
129
169
  ```bash
130
- # List installed modules
170
+ # List installed modules — MUST run before any install
131
171
  fluent module list -p <profile-name>
132
172
 
133
173
  # Compare with module.json dependencies
134
174
  ```
135
175
 
176
+ **FAIL FAST:** If dependencies are missing, STOP immediately. Do not attempt to install the module — it will fail mid-operation. Install dependencies in the correct order first (see dependency order table above).
177
+
136
178
  If dependencies missing: install them first!
137
179
 
138
180
  **For reference modules**, enforce the dependency order:
@@ -331,6 +373,22 @@ After deploying a module that includes new custom rules, workflows referencing t
331
373
 
332
374
  **Deployment order:** Module (registers rules) -> Workflows (reference rules) -> Settings (referenced by rules) -> E2E test
333
375
 
376
+ ## Session Tracking
377
+
378
+ When invoked, log the following to the session tracking protocol (consumed by `/fluent-session-summary` and `/fluent-session-audit-export`):
379
+
380
+ **On entry:**
381
+ ```json
382
+ { "skill": "<this-skill-name>", "timestamp": "<ISO-8601>", "arguments": { "<key>": "<value>", "...": "..." } }
383
+ ```
384
+
385
+ **On exit:**
386
+ ```json
387
+ { "skill": "<this-skill-name>", "outcome": "<completed|failed|skipped>", "changesProduced": ["<seq-numbers>"], "toolCallsProduced": ["<seq-numbers>"], "nextRecommended": "<from-handoff-section>" }
388
+ ```
389
+
390
+ All MCP tool calls made during execution should include `"skill": "<this-skill-name>"` in their tracking record for attribution. The `arguments` object should capture the key parameters actually passed (profile, retailer, entity type, etc.) — not a fixed schema. The `nextRecommended` value comes from the Handoff section below.
391
+
334
392
  ## Best Practices
335
393
 
336
394
  1. **Always verify active profile** before installing
@@ -10,6 +10,8 @@ argument-hint: <operation> [profile-name]
10
10
 
11
11
  Manage Fluent CLI profiles for connecting to Fluent Commerce accounts.
12
12
 
13
+ > **New to Fluent CLI?** Start with `/fluent-cli-index` for a complete command reference and routing guide.
14
+
13
15
  ## When to Use
14
16
 
15
17
  - Creating new connection to Fluent account
@@ -178,3 +180,74 @@ Profiles stored in: `~/.fluentcommerce/<profile-name>/`
178
180
  3. **Environment-specific profiles** - Don't mix dev/prod
179
181
  4. **Handle exports carefully** - Postman files contain plain-text credentials
180
182
  5. **Rotate credentials regularly** - Update profiles with new passwords
183
+
184
+ ## Credential Rotation
185
+
186
+ To rotate credentials for a Fluent profile:
187
+
188
+ 1. Generate new credentials in Fluent Commerce admin console
189
+ 2. Update profile: `fluent profile update -n <PROFILE> --client-id <NEW_ID> --client-secret <NEW_SECRET>`
190
+ 3. Validate new credentials: `fluent profile test -n <PROFILE>` (or attempt `fluent workflow list -p <PROFILE>`)
191
+ 4. If validation succeeds, the rotation is complete
192
+ 5. If validation fails, revert: `fluent profile update -n <PROFILE> --client-id <OLD_ID> --client-secret <OLD_SECRET>`
193
+
194
+ **Warning:** Never rotate credentials mid-deployment. Complete all in-flight deployments first.
195
+
196
+ ### Extended Rotation Procedure
197
+
198
+ When credentials expire or are rotated by an admin, follow these steps:
199
+
200
+ #### Step 1: Identify affected profiles
201
+
202
+ ```bash
203
+ fluent profile list
204
+ ```
205
+
206
+ Note which profiles use the rotated credentials (check username in each `~/.fluentcommerce/<PROFILE>/profile.json`).
207
+
208
+ #### Step 2: Update profile credentials
209
+
210
+ ```bash
211
+ fluent profile update <profile-name> \
212
+ --username <username> \
213
+ --password <new-password>
214
+ ```
215
+
216
+ If the client secret was rotated:
217
+ ```bash
218
+ fluent profile update <profile-name> \
219
+ --client-secret <new-client-secret>
220
+ ```
221
+
222
+ #### Step 3: Update retailer user credentials (if applicable)
223
+
224
+ ```bash
225
+ fluent profile update <profile-name> \
226
+ --retailer <retailer-ref> \
227
+ --username <retailer-admin> \
228
+ --password <new-password>
229
+ ```
230
+
231
+ #### Step 4: Verify updated credentials
232
+
233
+ ```bash
234
+ fluent profile use <profile-name>
235
+ fluent profile active
236
+ ```
237
+
238
+ If MCP servers are configured, restart them after updating credentials so they pick up the new profile data.
239
+
240
+ #### Step 5: Verify MCP connectivity (if applicable)
241
+
242
+ After restarting MCP servers, run `connection.test` to confirm authentication works with the new credentials.
243
+
244
+ ### Common rotation triggers
245
+
246
+ | Trigger | What to update |
247
+ |---------|---------------|
248
+ | Password expired | `--password` on profile and retailer users |
249
+ | Client secret rotated | `--client-secret` on profile |
250
+ | User deactivated/replaced | `--username` + `--password` on profile |
251
+ | Environment migration | Create new profile with new credentials |
252
+
253
+ For a complete CLI command reference, see `/fluent-cli-index`.