@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
@@ -0,0 +1,335 @@
1
+ ---
2
+ name: fluent-feature-status
3
+ description: Dashboard view of all features and their lifecycle status. Scans accounts/<PROFILE>/features/*/status.json and presents a consolidated table with filtering, sorting, and workspace tree view. Triggers on "feature status", "show features", "what features", "feature dashboard", "where am I", "what's in progress".
4
+ user-invocable: true
5
+ allowed-tools: Bash, Read, Glob, Grep
6
+ argument-hint: [--profile PROFILE] [--filter STATUS] [--format table|json] [--tree]
7
+ ---
8
+
9
+ # Feature Status Dashboard
10
+
11
+ Scan all feature directories for a profile and present a unified dashboard showing lifecycle status, next actions, and workspace health. This is the "where am I?" view that answers "what features exist, what state are they in, and what should I do next?"
12
+
13
+ ## Ownership Boundary
14
+
15
+ This skill owns: feature status aggregation, dashboard rendering, workspace tree view, resume recommendations.
16
+
17
+ Other skills own: individual feature lifecycle transitions (`/fluent-use-case-discover`, `/fluent-feature-plan`, `/fluent-archive`, etc.), session audit trail (`/fluent-session-summary`).
18
+
19
+ ## When to Use
20
+
21
+ - **Session start** — see where you left off across all features
22
+ - **After completing a major step** — verify status updated correctly
23
+ - **Managing multiple features** — get the big picture at a glance
24
+ - **Before archival** — identify features ready to archive (VERIFIED status)
25
+ - **Onboarding to a workspace** — understand what's been built
26
+ - **Progress check** — during multi-feature work, see the full picture
27
+
28
+ ## No Planning Gate
29
+
30
+ This is a **read-only** diagnostic skill. No planning gate required. It can be invoked at any time without approval, writes no files, and makes no mutations.
31
+
32
+ ## Inputs
33
+
34
+ | Parameter | Required | Default | Description |
35
+ |-----------|----------|---------|-------------|
36
+ | `--profile` | No | Active CLI profile (or all profiles) | Fluent CLI profile to scan |
37
+ | `--filter` | No | (all statuses) | Filter by status: `DISCOVERY`, `PLANNING`, `APPROVED`, `IN_PROGRESS`, `VERIFIED`, `ARCHIVED` |
38
+ | `--format` | No | `table` | Output format: `table` (human-readable) or `json` (machine-readable) |
39
+ | `--tree` | No | `false` | Also show workspace directory tree with artifact counts |
40
+
41
+ ## Execution Flow
42
+
43
+ ```
44
+ 1. RESOLVE profile
45
+ - From --profile arg, or active Fluent CLI profile, or scan all profiles
46
+ - Validate accounts/<PROFILE>/ directory exists
47
+
48
+ 2. SCAN feature directories
49
+ - Glob: accounts/<PROFILE>/features/*/status.json
50
+ - If no --profile: accounts/*/features/*/status.json
51
+ - If no features/ directory -> report "No features found" with guidance
52
+
53
+ 3. PARSE each status.json
54
+ - Validate $schema = "feature-status-v1"
55
+ - Extract all fields: feature, retailers (or retailer), status, spec, plan,
56
+ planRevision, architecture, basedOn, next, updated
57
+ - On parse error -> add to warnings list, include with status PARSE_ERROR
58
+
59
+ 4. SORT features
60
+ - Primary: status priority (IN_PROGRESS > APPROVED > PLANNING > DISCOVERY > VERIFIED > ARCHIVED)
61
+ - Secondary: updated date descending (most recent first)
62
+
63
+ 5. FILTER (if --filter specified)
64
+ - Keep only features matching the requested status
65
+ - Case-insensitive comparison
66
+
67
+ 6. DETECT attention flags
68
+ - STALE: IN_PROGRESS + updated > 7 days ago
69
+ - ready to build: APPROVED + no build/deploy reports
70
+ - awaiting spec approval: PLANNING + spec not APPROVED
71
+ - awaiting plan approval: PLANNING + spec APPROVED + plan not APPROVED
72
+
73
+ 7. RENDER output
74
+ - table: formatted markdown table with summary footer + recommendation
75
+ - json: structured JSON with features array and summary object
76
+
77
+ 8. RECOMMEND next action
78
+ - If any STALE feature -> "Resume: ..."
79
+ - If any IN_PROGRESS feature -> "Continue: ..."
80
+ - If any APPROVED feature -> "Start building: ..."
81
+ - If all VERIFIED/ARCHIVED -> "All features complete."
82
+ ```
83
+
84
+ ## Status Priority Order
85
+
86
+ Features are sorted by lifecycle urgency -- active work first, historical last.
87
+
88
+ | Priority | Status | Meaning |
89
+ |----------|--------|---------|
90
+ | 1 | `IN_PROGRESS` | Active work -- resume this first |
91
+ | 2 | `APPROVED` | Ready to start building |
92
+ | 3 | `PLANNING` | Needs plan review/approval |
93
+ | 4 | `DISCOVERY` | Early stage -- spec in progress |
94
+ | 5 | `VERIFIED` | Complete -- ready to archive |
95
+ | 6 | `ARCHIVED` | Historical reference |
96
+
97
+ ## Dashboard Table Format
98
+
99
+ ```
100
+ === Feature Dashboard: HMDEV ===
101
+
102
+ | Feature | Retailers | Status | Spec | Plan (Rev) | Arch | Next | Updated |
103
+ |-------------------|--------------|---------------|----------|------------|------|---------------------------|------------|
104
+ | order-return | HM_TEST | IN_PROGRESS | APPROVED | APPROVED (v1) | Yes | /fluent-build | 2026-02-25 |
105
+ | curbside-pickup | Module Test | APPROVED | APPROVED | APPROVED (v2) | Yes | /fluent-rule-scaffold | 2026-02-24 |
106
+ | click-collect | Module Test | PLANNING | APPROVED | PENDING | No | awaiting plan approval | 2026-02-25 |
107
+ | returns-flow | Module Test | DISCOVERY | DRAFT | -- | No | /fluent-use-case-discover | 2026-02-25 |
108
+
109
+ Summary: 4 features (1 IN_PROGRESS, 1 APPROVED, 1 PLANNING, 1 DISCOVERY)
110
+
111
+ Recommendation: Continue /fluent-build on "order-return"
112
+ ```
113
+
114
+ ### Attention Flags
115
+
116
+ | Condition | Flag | Rendering |
117
+ |-----------|------|-----------|
118
+ | IN_PROGRESS + updated > 7 days ago | STALE | Status shows "IN_PROGRESS (STALE)" |
119
+ | APPROVED + no implementation evidence | ready to build | Highlighted in recommendation |
120
+ | PLANNING + spec not APPROVED | awaiting spec | Next shows "awaiting spec approval" |
121
+ | PLANNING + spec APPROVED + plan not APPROVED | awaiting plan | Next shows "awaiting plan approval" |
122
+ | Has `basedOn` field | basedOn: slug | Arch column shows "Yes (basedOn: slug)" |
123
+
124
+ ### Column Definitions
125
+
126
+ | Column | Source | Notes |
127
+ |--------|--------|-------|
128
+ | Feature | `feature` field | Slug (matches directory name) |
129
+ | Retailers | `retailers[]` or `retailer` | Comma-separated if multiple; `--` if null |
130
+ | Status | `status` field | With attention flags appended |
131
+ | Spec | `spec` field | DRAFT / APPROVED / `--` |
132
+ | Plan (Rev) | `plan` + `planRevision` | e.g., "APPROVED (v2)" or "PENDING" or `--` |
133
+ | Arch | `architecture` field | Yes / No; "(basedOn: X)" if basedOn field set |
134
+ | Next | `next` field or derived | Advisory next skill or attention flag |
135
+ | Updated | `updated` field | Last modification date |
136
+
137
+ ## JSON Output Format
138
+
139
+ When `--format json`:
140
+
141
+ ```json
142
+ {
143
+ "profile": "HMDEV",
144
+ "scannedAt": "2026-02-25T10:00:00Z",
145
+ "features": [
146
+ {
147
+ "slug": "order-return",
148
+ "retailers": ["HM_TEST"],
149
+ "status": "IN_PROGRESS",
150
+ "spec": "APPROVED",
151
+ "plan": "APPROVED",
152
+ "planRevision": 1,
153
+ "architecture": true,
154
+ "basedOn": null,
155
+ "next": "/fluent-build",
156
+ "updated": "2026-02-25",
157
+ "path": "accounts/HMDEV/features/order-return/",
158
+ "flags": []
159
+ },
160
+ {
161
+ "slug": "curbside-pickup",
162
+ "retailers": ["Module Test"],
163
+ "status": "APPROVED",
164
+ "spec": "APPROVED",
165
+ "plan": "APPROVED",
166
+ "planRevision": 2,
167
+ "architecture": true,
168
+ "basedOn": null,
169
+ "next": "/fluent-rule-scaffold",
170
+ "updated": "2026-02-24",
171
+ "path": "accounts/HMDEV/features/curbside-pickup/",
172
+ "flags": ["ready_to_build"]
173
+ }
174
+ ],
175
+ "summary": {
176
+ "total": 4,
177
+ "byStatus": {
178
+ "IN_PROGRESS": 1,
179
+ "APPROVED": 1,
180
+ "PLANNING": 1,
181
+ "DISCOVERY": 1
182
+ },
183
+ "stale": 0
184
+ },
185
+ "recommendation": "Continue /fluent-build on \"order-return\"",
186
+ "warnings": []
187
+ }
188
+ ```
189
+
190
+ ## Workspace Tree View (--tree)
191
+
192
+ When `--tree` is specified, scan and render the full workspace structure:
193
+
194
+ ```
195
+ === Workspace: HMDEV ===
196
+
197
+ accounts/HMDEV/
198
+ +-- features/ (4 features)
199
+ | +-- order-return/ (IN_PROGRESS -> /fluent-build)
200
+ | +-- curbside-pickup/ (APPROVED -> /fluent-rule-scaffold)
201
+ | +-- click-collect/ (PLANNING -> awaiting plan approval)
202
+ | +-- returns-flow/ (DISCOVERY -> /fluent-use-case-discover)
203
+ +-- SOURCE/ (2 repos)
204
+ | +-- fc-module-hm-ext/ (module.json: 12 rules)
205
+ | +-- fc-module-returns/ (module.json: 5 rules)
206
+ +-- workflows/
207
+ | +-- HM_TEST/ (8 workflow files)
208
+ +-- reports/
209
+ | +-- build/ (2 reports)
210
+ | +-- pre-deploy/ (1 report)
211
+ | +-- e2e-test/ (0 reports)
212
+ +-- analysis/
213
+ | +-- code/ (3 files)
214
+ | +-- topology/ (1 file)
215
+ | +-- settings/ (0 files)
216
+ +-- tasks/ (2 task plans)
217
+ +-- sessions/ (5 exports)
218
+ ```
219
+
220
+ ### Tree Artifact Counting
221
+
222
+ | Directory | Count Method |
223
+ |-----------|-------------|
224
+ | `features/*/` | Glob for `status.json` files |
225
+ | `SOURCE/*/` | Glob for `module.json` files; count rules from each |
226
+ | `workflows/RETAILER/` | Count `*.json` excluding `workflow-context.json` |
227
+ | `reports/*/` | Count files per subdirectory |
228
+ | `analysis/*/` | Count files per subdirectory |
229
+ | `tasks/` | Count `*.md` files |
230
+ | `sessions/` | Count `*.json` files |
231
+
232
+ ## Multi-Profile View
233
+
234
+ When no `--profile` is specified and multiple profiles have features:
235
+
236
+ ```
237
+ === Feature Dashboard ===
238
+
239
+ ### HMDEV (3 features)
240
+ | Feature | Retailers | Status | ... |
241
+ ...
242
+
243
+ ### SAGIRISH (2 features)
244
+ | Feature | Retailers | Status | ... |
245
+ ...
246
+
247
+ Overall: 5 features across 2 profiles (2 IN_PROGRESS, 1 APPROVED, 2 PLANNING)
248
+ ```
249
+
250
+ ## Edge Cases
251
+
252
+ ### No features directory
253
+ ```
254
+ No features found for profile HMDEV.
255
+ Start with: /fluent-use-case-discover to define your first feature.
256
+ ```
257
+
258
+ ### Empty features directory
259
+ Same message as above.
260
+
261
+ ### Malformed status.json
262
+ ```
263
+ Warnings:
264
+ features/broken-feature/status.json: Invalid JSON (unexpected token at line 5)
265
+ features/old-feature/status.json: Missing required field "status"
266
+ ```
267
+
268
+ Include in table with status `PARSE_ERROR`. Do not skip -- visibility matters.
269
+
270
+ ### Missing fields in status.json
271
+ Use `--` for any missing optional field. Required fields (`feature`, `status`) trigger a warning.
272
+
273
+ ### Backward compatibility
274
+ If `retailers` array is absent but `retailer` (string) exists, treat as `["retailer-value"]`. If both exist, prefer `retailers`.
275
+
276
+ ### Archived features
277
+ Include at bottom of table. Exclude from summary counts by default. Show separately: "Plus 2 archived features (use --filter ARCHIVED to view)".
278
+
279
+ ## Handoff Protocol
280
+
281
+ ### Emitted Signals
282
+ - `-> READY: accounts/PROFILE/features/` -- Dashboard rendered successfully
283
+ - `-> NEXT: /fluent-<next-skill> --feature "slug"` -- Recommend resuming highest-priority feature (skill name from status.json `next` field)
284
+ - `-> SKIP: No features found` -- Empty workspace, suggest /fluent-use-case-discover
285
+
286
+ ### Consumed Signals
287
+ This skill does not consume handoff signals -- it reads `status.json` files directly.
288
+
289
+ ## Error Reporting
290
+
291
+ | Severity | Code | Scenario | Recovery |
292
+ |----------|------|----------|----------|
293
+ | LOW | `PARSE_WARNING` | Malformed status.json | Skip feature, show warning |
294
+ | LOW | `MISSING_FIELD` | Optional field missing | Display as `--` |
295
+ | MEDIUM | `NO_FEATURES` | No feature directories found | Guide to /fluent-use-case-discover |
296
+ | MEDIUM | `PROFILE_NOT_FOUND` | Profile directory does not exist | Guide to /fluent-connect |
297
+
298
+ ## Session Tracking
299
+
300
+ When invoked, log:
301
+ ```
302
+ SKILL: /fluent-feature-status
303
+ args: [--profile PROFILE] [--filter STATUS] [--format FORMAT] [--tree]
304
+ outcome: completed | failed
305
+ features_found: count
306
+ features_by_status: { "IN_PROGRESS": 1, "APPROVED": 2, ... }
307
+ stale_count: count
308
+ warnings: count
309
+ recommendation: "next action"
310
+ ```
311
+
312
+ ## Integration with Other Skills
313
+
314
+ | Skill | Relationship |
315
+ |-------|-------------|
316
+ | `/fluent-use-case-discover` | Creates features in DISCOVERY status |
317
+ | `/fluent-feature-plan` | Moves features to PLANNING then APPROVED |
318
+ | `/fluent-feature-explain` | Sets `architecture: true` |
319
+ | `/fluent-archive` | Moves features to ARCHIVED |
320
+ | `/fluent-rollback` | May regress feature status after deployment rollback |
321
+ | `/fluent-session-summary` | Complementary -- session changes vs feature lifecycle |
322
+ | `/fluent-scope-decompose` | Can batch-create features via `--batch-features` |
323
+
324
+ ## Tips
325
+
326
+ - Run this at the **start of every session** to orient yourself
327
+ - Use `--filter IN_PROGRESS` to focus on active work
328
+ - Use `--filter APPROVED` to find features ready to build
329
+ - The `next` field tells you exactly which skill to invoke next
330
+ - Combine with `/fluent-session-summary` for a complete picture
331
+ - Use `--tree` when onboarding to a workspace to see everything
332
+ - The JSON output (`--format json`) is useful for scripting
333
+ - Features are sorted by priority -- first row is always the most urgent
334
+ - STALE flag warns about features that may have been forgotten
335
+ - Archived features are hidden by default -- use `--filter ARCHIVED` to see them
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: fluent-feedback
3
+ description: View, review, and promote skill execution feedback. Dashboard shows per-skill success/failure rates, recurring issues, and learnings ready for promotion. Triggers on "feedback dashboard", "show feedback", "review feedback", "promote learning", "skill feedback", "what went wrong".
4
+ user-invocable: true
5
+ allowed-tools: Bash, Read, Write, Edit, Glob, Grep
6
+ argument-hint: dashboard | review <skill-name> | promote <record-id> | export [--format json|confluence]
7
+ ---
8
+
9
+ # Skill Feedback Manager
10
+
11
+ View, analyze, and promote feedback records captured during skill execution. Feedback records are written by skills after each execution (see Feedback Loop Protocol) and stored as JSONL files in `accounts/<PROFILE>/feedback/`.
12
+
13
+ ## Commands
14
+
15
+ ### `dashboard` (default)
16
+
17
+ Show per-skill feedback summary for the current profile.
18
+
19
+ **Steps:**
20
+
21
+ 1. Determine `<PROFILE>` from the active Fluent CLI profile or ask the user
22
+ 2. Check if `accounts/<PROFILE>/feedback/index.json` exists
23
+ 3. If yes, read it and display summary table
24
+ 4. If no, scan for any `.jsonl` files in `accounts/<PROFILE>/feedback/` and rebuild index
25
+ 5. If no feedback directory exists, report "No feedback captured yet" and explain how feedback gets generated
26
+
27
+ **Output format:**
28
+
29
+ ```
30
+ Skill Feedback Dashboard — <PROFILE>
31
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
32
+ Skill │ Total │ OK │ FAIL │ Corrected │ Top Issue
33
+ ───────────────────────┼───────┼─────┼──────┼───────────┼──────────────────
34
+ workflow-builder │ 17 │ 12 │ 3 │ 2 │ Ghost categories
35
+ workflow-deploy │ 13 │ 8 │ 4 │ 1 │ POST vs PUT
36
+ settings │ 8 │ 5 │ 2 │ 1 │ Missing context
37
+ rule-scaffold │ 7 │ 6 │ 1 │ 0 │ —
38
+
39
+ Recurring issues (3+ occurrences):
40
+ 1. UNUSED_CATEGORY_FOUND — 5 hits ← READY TO PROMOTE
41
+ 2. Wrong REST method — 3 hits ← READY TO PROMOTE
42
+ ```
43
+
44
+ ### `review <skill-name>`
45
+
46
+ Show all feedback records for a specific skill, grouped by outcome.
47
+
48
+ **Steps:**
49
+
50
+ 1. Read `accounts/<PROFILE>/feedback/<skill-name>.jsonl`
51
+ 2. Parse each line as JSON
52
+ 3. Group by outcome: FAILURE and USER_CORRECTED first (most actionable)
53
+ 4. For each record, show: timestamp, outcome, feature, phases summary, learnings
54
+ 5. Highlight records with `confidence: "CONFIRMED"` that have 3+ occurrences — flag as "ready to promote"
55
+ 6. Show user corrections prominently — these are the highest-signal feedback
56
+
57
+ **Output format per record:**
58
+
59
+ ```
60
+ [2026-02-24 14:30] PARTIAL_SUCCESS — curbside-pickup (ORDER::HD)
61
+ Phases: pre-flight ✓ → build-rulesets ✓ → deploy ✗ (UNUSED_CATEGORY_FOUND)
62
+ Resolution: Added explicit category to all statuses
63
+ Learning: "Never use empty string for status categories" [CONFIRMED, 5 hits]
64
+ ← READY TO PROMOTE
65
+ ```
66
+
67
+ ### `promote <record-id>`
68
+
69
+ Promote a confirmed learning into a skill's Known Pitfalls section.
70
+
71
+ **Promotion guardrails (ALL must pass):**
72
+
73
+ 1. Learning must have evidence from **3+ distinct sessions** (check `id` prefixes for different dates/times)
74
+ 2. At least one `USER_CORRECTED` record exists for this learning, OR user explicitly says "promote this"
75
+ 3. Learning text is **generic and portable** — not account-specific, not retailer-secret, not environment-only
76
+ 4. If any guardrail fails: keep at `CONFIRMED`, explain why, suggest how to meet the threshold
77
+
78
+ **If guardrails pass:**
79
+
80
+ 1. Read the target `SKILL.md` file for the skill referenced in the learning
81
+ 2. Find or create the `## Known Pitfalls` section
82
+ 3. Find or create the `<!-- feedback-promoted: managed section -->` block
83
+ 4. Append the learning in format:
84
+ ```
85
+ - **<ERROR_CODE>** — <learning text>.
86
+ _Source: <N> feedback records, first seen <date>, promoted <today>_
87
+ ```
88
+ 5. Write a promotion record to `.fluent-ai-skills/feedback/promotions.jsonl`:
89
+ ```json
90
+ {"promotedAt":"<ISO>","skill":"<name>","learning":"<text>","evidence":["<id1>","<id2>","<id3>"],"promotedBy":"user","section":"Known Pitfalls"}
91
+ ```
92
+ 6. Update the original feedback records: set `confidence` from `CONFIRMED` to `PROMOTED`
93
+
94
+ ### `export [--format json|confluence]`
95
+
96
+ Export feedback for team sharing.
97
+
98
+ **JSON format (default):** Writes all `.jsonl` files to a single `accounts/<PROFILE>/feedback/export-<date>.json` with structure:
99
+ ```json
100
+ {
101
+ "profile": "<PROFILE>",
102
+ "exportedAt": "<ISO>",
103
+ "skills": {
104
+ "<skill-name>": [ ...records... ]
105
+ }
106
+ }
107
+ ```
108
+
109
+ **Confluence format:** Generates a wiki-markup table suitable for pasting into Confluence:
110
+ ```
111
+ || Skill || Issue || Occurrences || Confidence || Learning ||
112
+ | workflow-builder | UNUSED_CATEGORY_FOUND | 5 | CONFIRMED | Never use empty string for categories |
113
+ ```
114
+
115
+ Write to `accounts/<PROFILE>/feedback/export-<date>.wiki` or `.json`.
116
+
117
+ ## Feedback Record Schema (feedback-record-v1)
118
+
119
+ Reference schema for records written by other skills. This skill reads them; other skills write them.
120
+
121
+ ```jsonc
122
+ {
123
+ "$schema": "feedback-record-v1",
124
+ "id": "fb-<YYYYMMDD>-<HHMMSS>-<3char>", // unique, sortable
125
+ "timestamp": "<ISO-8601>",
126
+ "skill": "<skill-name>", // which skill produced this
127
+ "feature": "<slug>", // feature slug if applicable, null otherwise
128
+ "profile": "<PROFILE>",
129
+ "retailer": "<retailer-name>",
130
+ "entityType": "<ORDER|FULFILMENT|...>", // primary entity, null if N/A
131
+ "entitySubtype": "<HD|CC|...>", // subtype, null if N/A
132
+
133
+ "outcome": "<SUCCESS|PARTIAL_SUCCESS|FAILURE|BLOCKED|USER_CORRECTED>",
134
+
135
+ "phases": [
136
+ {
137
+ "name": "<phase-name>", // e.g., "pre-flight-check", "build-rulesets", "deploy"
138
+ "status": "<PASS|FAIL|SKIP>",
139
+ "error": "<error-code>", // only if FAIL
140
+ "errorDetail": "<human-readable>", // only if FAIL
141
+ "resolution": "<what-fixed-it>" // only if FAIL then resolved
142
+ }
143
+ ],
144
+
145
+ "learnings": [
146
+ {
147
+ "type": "<GOTCHA|PATTERN|CORRECTION|WORKAROUND|CONSTRAINT>",
148
+ "scope": "<platform|account|feature>",
149
+ "skill": "<target-skill>", // which skill should learn this
150
+ "text": "<learning text>",
151
+ "confidence": "<OBSERVED|CONFIRMED|PROMOTED>",
152
+ "tags": ["<tag1>", "<tag2>"],
153
+ "relatedError": "<error-code>" // for pattern matching
154
+ }
155
+ ],
156
+
157
+ "userCorrections": [
158
+ {
159
+ "what": "<what-agent-did-wrong>",
160
+ "correction": "<what-user-said>",
161
+ "impact": "<HIGH|MEDIUM|LOW>"
162
+ }
163
+ ],
164
+
165
+ "tags": ["<tag1>", "<tag2>"],
166
+ "planRef": "<path-to-plan-if-applicable>"
167
+ }
168
+ ```
169
+
170
+ ### Secret redaction rules
171
+
172
+ Before writing any feedback record, redact:
173
+ - `accessToken`, `clientSecret`, `password`, API keys, bearer tokens
174
+ - Any value matching patterns: `eyJ...` (JWT), `sk-...`, `token=...`
175
+
176
+ **Keep** (needed for retrieval filtering): profile name, retailer ref, entity refs, order refs, setting names, workflow names.
177
+
178
+ ## Index Schema
179
+
180
+ `accounts/<PROFILE>/feedback/index.json`:
181
+
182
+ ```json
183
+ {
184
+ "$schema": "feedback-index-v1",
185
+ "profile": "<PROFILE>",
186
+ "lastUpdated": "<ISO-8601>",
187
+ "skills": {
188
+ "<skill-name>": {
189
+ "total": 17,
190
+ "success": 12,
191
+ "partialSuccess": 2,
192
+ "failure": 3,
193
+ "blocked": 0,
194
+ "userCorrected": 2,
195
+ "lastUpdated": "<ISO-8601>",
196
+ "topIssue": "UNUSED_CATEGORY_FOUND",
197
+ "topIssueSeverity": "HIGH"
198
+ }
199
+ }
200
+ }
201
+ ```
202
+
203
+ ## Rebuilding the Index
204
+
205
+ If `index.json` is missing or stale, rebuild from JSONL source files:
206
+
207
+ 1. Glob `accounts/<PROFILE>/feedback/*.jsonl`
208
+ 2. For each file, count records by outcome
209
+ 3. For each file, find most frequent `relatedError` → `topIssue`
210
+ 4. Write `index.json`
211
+
212
+ ## No Planning Gate
213
+
214
+ This skill is read-only by default (dashboard, review, export). Only `promote` modifies files, and it has its own guardrails. No planning gate required.
215
+
216
+ ## Known Pitfalls
217
+ <!-- feedback-promoted: managed section, updated by feedback loop -->
218
+
219
+ _(No promoted learnings yet — this section will be populated as the feedback loop matures.)_
220
+
221
+ <!-- end feedback-promoted -->