@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.
- package/README.md +866 -616
- package/bin/cli.mjs +2112 -1973
- package/content/cli/agents/fluent-cli/agent.json +149 -149
- package/content/cli/agents/fluent-cli.md +132 -132
- package/content/cli/skills/fluent-bootstrap/SKILL.md +214 -190
- package/content/cli/skills/fluent-cli-index/SKILL.md +1 -1
- package/content/cli/skills/fluent-cli-mcp-cicd/SKILL.md +117 -1
- package/content/cli/skills/fluent-cli-reference/SKILL.md +1040 -623
- package/content/cli/skills/fluent-cli-retailer/SKILL.md +27 -2
- package/content/cli/skills/fluent-cli-settings/SKILL.md +21 -1
- package/content/cli/skills/fluent-connect/SKILL.md +937 -886
- package/content/cli/skills/fluent-module-deploy/SKILL.md +181 -17
- package/content/cli/skills/fluent-profile/SKILL.md +73 -0
- package/content/cli/skills/fluent-workflow/SKILL.md +360 -310
- package/content/dev/agents/fluent-backend-dev/AGENT.md +58 -0
- package/content/dev/agents/fluent-backend-dev/agent.json +69 -0
- package/content/dev/agents/fluent-backend-dev.md +287 -0
- package/content/dev/agents/fluent-dev/AGENT.md +98 -76
- package/content/dev/agents/fluent-dev/agent.json +24 -2
- package/content/dev/agents/fluent-dev.md +194 -524
- package/content/dev/agents/fluent-frontend-dev/AGENT.md +63 -0
- package/content/dev/agents/fluent-frontend-dev/agent.json +52 -0
- package/content/dev/agents/fluent-frontend-dev.md +323 -0
- package/content/dev/skills/fluent-archive/SKILL.md +234 -0
- package/content/dev/skills/fluent-build/SKILL.md +312 -170
- package/content/dev/skills/fluent-connection-analysis/SKILL.md +422 -386
- package/content/dev/skills/fluent-custom-code/SKILL.md +15 -9
- package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +731 -0
- package/content/dev/skills/fluent-e2e-test/SKILL.md +501 -394
- package/content/dev/skills/fluent-event-api/SKILL.md +962 -945
- package/content/dev/skills/fluent-feature-explain/SKILL.md +680 -603
- package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +40 -11
- package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -221
- package/content/dev/skills/fluent-feature-status/SKILL.md +335 -0
- package/content/dev/skills/fluent-feedback/SKILL.md +221 -0
- package/content/dev/skills/fluent-implementation-map/SKILL.md +644 -0
- package/content/dev/skills/fluent-job-batch/SKILL.md +10 -0
- package/content/dev/skills/fluent-module-scaffold/SKILL.md +134 -3
- package/content/dev/skills/fluent-module-validate/SKILL.md +778 -775
- package/content/dev/skills/fluent-mystique-analyze/SKILL.md +817 -0
- package/content/dev/skills/fluent-mystique-builder/COMPONENT_TEMPLATE.md +81 -0
- package/content/dev/skills/fluent-mystique-builder/README.md +63 -0
- package/content/dev/skills/fluent-mystique-builder/SKILL.md +1294 -0
- package/content/dev/skills/fluent-mystique-builder/components/INDEX.md +92 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.accordion.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.fulfilmentpack.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.multiparcel.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.returnitems.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.field.wavepick.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.action.inline.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.activity.entity.md +25 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.analytics.viz.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.column.md +111 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.json.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.jsoneditor.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.locationId.md +51 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.attribute.retailerId.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.bar.md +57 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.download.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.compatibility.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.inline.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.button.print.pick.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.buttons.add.reject.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attribute.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.attributes.grid.md +40 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.image.md +37 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.map.point.md +24 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.multi.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.card.product.md +27 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.md +34 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.area.wrapper.feed.md +98 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.md +52 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.bar.wrapper.source.md +104 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.md +28 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.gauge.wrapper.threshold.md +118 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.chart.line.md +32 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.conditional.md +62 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.dashboard.threshold.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.daterange.wrapper.forwarder.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.drawer.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.event.detail.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.events.search.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.daterange.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.filterComplex.md +106 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.intrange.md +82 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.field.multistring.md +50 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.filterPanel.md +53 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.editor.md +22 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.json.viewer.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.customAction.md +79 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.md +116 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.bppmetrics.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.feed.md +65 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.list.wrapper.source.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.addItem.md +60 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.modal.button.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mutation.inline.md +88 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.attributes.md +83 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.collapsible.text.md +33 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.mystique.link.md +30 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.itemDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.order.shipmentDetails.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.filter.select.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.refresh.md +48 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.column.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.header.md +61 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.section.md +59 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.md +45 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.page.wizard.summary.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.progress.circular.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.provider.graphql.md +71 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.quantity.list.md +87 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.repeater.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.reports.ipuipc.md +54 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.return.rowExpansion.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcode.md +21 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.barcodeFilter.md +72 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.scanner.camera.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.settingForm.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.drawer.button.md +19 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.profile.modal.button.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.sourcing.strategy.modal.button.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.stepper.md +20 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tab.content.md +56 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.card.md +64 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tabs.md +69 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.tile.metric.md +73 -0
- package/content/dev/skills/fluent-mystique-builder/components/fc.workflow.provider.md +77 -0
- package/content/dev/skills/fluent-mystique-builder/validate-docs.ps1 +260 -0
- package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1830 -0
- package/content/dev/skills/fluent-mystique-validate/SKILL.md +646 -0
- package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +1144 -1090
- package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1120
- package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
- package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -394
- package/content/dev/skills/fluent-scope-decompose/SKILL.md +1123 -1021
- package/content/dev/skills/fluent-session-audit-export/SKILL.md +880 -632
- package/content/dev/skills/fluent-session-summary/SKILL.md +320 -195
- package/content/dev/skills/fluent-settings/SKILL.md +151 -2
- package/content/dev/skills/fluent-source-onboard/SKILL.md +23 -4
- package/content/dev/skills/fluent-sourcing/SKILL.md +14 -0
- package/content/dev/skills/fluent-system-monitoring/SKILL.md +771 -767
- package/content/dev/skills/fluent-test-data/SKILL.md +514 -513
- package/content/dev/skills/fluent-trace/SKILL.md +1169 -1143
- package/content/dev/skills/fluent-transition-api/SKILL.md +364 -346
- package/content/dev/skills/fluent-use-case-discover/SKILL.md +593 -471
- package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +22 -1
- package/content/dev/skills/fluent-version-manage/SKILL.md +44 -3
- package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
- package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -326
- package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -0
- package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
- package/content/mcp-extn/agents/fluent-mcp.md +133 -132
- package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -800
- package/content/mcp-official/agents/fluent-mcp-core.md +91 -91
- package/content/mcp-official/skills/fluent-mcp-core/SKILL.md +94 -94
- package/content/rfl/skills/fluent-rfl-assess/SKILL.md +172 -172
- package/docs/CAPABILITY_MAP.md +106 -73
- package/docs/DEPLOYMENT_PROMOTION_RUNBOOK.md +218 -0
- package/docs/DESIGN-implementation-map.md +698 -0
- package/docs/DEV_WORKFLOW.md +814 -802
- package/docs/FLOW_RUN.md +142 -142
- package/docs/GETTING_STARTED.md +427 -0
- package/docs/USE_CASES.md +906 -50
- package/metadata.json +184 -155
- package/package.json +7 -2
- package/docs/USE_CASES.pdf +0 -0
|
@@ -1,221 +1,478 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: fluent-feature-plan
|
|
3
|
-
description: Produce comprehensive feature implementation plans with universal NEW/EXISTING/MODIFIED/REUSED/OOTB classification across all artifacts. Covers rules, workflows, settings, webhooks, GraphQL operations, cross-entity flows, and deployment. Triggers on "plan feature", "feature plan", "plan implementation", "design feature", "plan this feature", "what do I need to build".
|
|
4
|
-
user-invocable: true
|
|
5
|
-
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
|
|
6
|
-
argument-hint: <feature-description> [--profile PROFILE] [--retailer RETAILER_REF]
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Feature Planner
|
|
10
|
-
|
|
11
|
-
Produce comprehensive, self-contained implementation plans for Fluent Commerce features. A "feature" spans multiple artifacts — rules, workflow rulesets, settings, webhooks, entity types, and deployments. The plan is the contract — an implementer can write code from it without ambiguity.
|
|
12
|
-
|
|
13
|
-
**This skill is the MANDATORY entry point for any multi-artifact Fluent implementation work.** All downstream implementation skills (`/fluent-rule-scaffold`, `/fluent-workflow-builder`, `/fluent-settings`, `/fluent-build`, `/fluent-module-deploy`) require an approved plan from this skill before they proceed. Each implementation skill has a Pre-flight: Plan Verification step that checks `accounts/<PROFILE>/
|
|
14
|
-
|
|
15
|
-
**Do NOT use IDE-native plan mechanisms** (e.g., Claude Code's `EnterPlanMode`, Cursor's plan mode) as a substitute for this skill. Those mechanisms write to ephemeral locations that are lost between sessions and do not follow the structured 18-section template.
|
|
16
|
-
|
|
17
|
-
## Template Reference
|
|
18
|
-
|
|
19
|
-
**The full plan template with worked examples and section applicability guide lives at: `PLAN_TEMPLATE.md` (in this skill directory).**
|
|
20
|
-
|
|
21
|
-
Read that file before producing any plan. It defines:
|
|
22
|
-
- The 18-section structure with TOC (including §6.1 Complete Workflow Inventory and §3.6 Workflow Processing Flow)
|
|
23
|
-
- Universal Source classification (NEW / EXISTING / MODIFIED / REUSED / OOTB)
|
|
24
|
-
- Section applicability guide (which sections are required vs optional)
|
|
25
|
-
- Rules classification decision flow
|
|
26
|
-
- Diagram requirements (Mermaid stateDiagram-v2, sequenceDiagram, flowchart)
|
|
27
|
-
- Plan lifecycle (PENDING → APPROVED → implementation)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
**For single-artifact work**, the individual skill's Planning Gate is sufficient:
|
|
39
|
-
- Single new rule → `/fluent-rule-scaffold` Planning Gate
|
|
40
|
-
- Single workflow edit → `/fluent-workflow-builder` Planning Gate
|
|
41
|
-
- Settings-only change → `/fluent-settings` Planning Gate
|
|
42
|
-
- Retrospective feature documentation → `/fluent-feature-explain`
|
|
43
|
-
- Scope document decomposition → `/fluent-scope-decompose`
|
|
44
|
-
|
|
45
|
-
##
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
|
162
|
-
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
|
174
|
-
|
|
175
|
-
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
1
|
+
---
|
|
2
|
+
name: fluent-feature-plan
|
|
3
|
+
description: Produce comprehensive feature implementation plans with universal NEW/EXISTING/MODIFIED/REUSED/OOTB classification across all artifacts. Covers rules, workflows, settings, webhooks, GraphQL operations, cross-entity flows, and deployment. Triggers on "plan feature", "feature plan", "plan implementation", "design feature", "plan this feature", "what do I need to build".
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
|
|
6
|
+
argument-hint: <feature-description> [--profile PROFILE] [--retailer RETAILER_REF]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Feature Planner
|
|
10
|
+
|
|
11
|
+
Produce comprehensive, self-contained implementation plans for Fluent Commerce features. A "feature" spans multiple artifacts — rules, workflow rulesets, settings, webhooks, entity types, and deployments. The plan is the contract — an implementer can write code from it without ambiguity.
|
|
12
|
+
|
|
13
|
+
**This skill is the MANDATORY entry point for any multi-artifact Fluent implementation work.** All downstream implementation skills (`/fluent-rule-scaffold`, `/fluent-workflow-builder`, `/fluent-settings`, `/fluent-build`, `/fluent-module-deploy`) require an approved plan from this skill before they proceed. Each implementation skill has a Pre-flight: Plan Verification step that checks `accounts/<PROFILE>/features/<slug>/status.json` for an approved plan. If no plan exists and the work is multi-artifact, those skills will redirect back here.
|
|
14
|
+
|
|
15
|
+
**Do NOT use IDE-native plan mechanisms** (e.g., Claude Code's `EnterPlanMode`, Cursor's plan mode) as a substitute for this skill. Those mechanisms write to ephemeral locations that are lost between sessions and do not follow the structured 18-section template.
|
|
16
|
+
|
|
17
|
+
## Template Reference
|
|
18
|
+
|
|
19
|
+
**The full plan template with worked examples and section applicability guide lives at: `PLAN_TEMPLATE.md` (in this skill directory).**
|
|
20
|
+
|
|
21
|
+
Read that file before producing any plan. It defines:
|
|
22
|
+
- The 18-section structure with TOC (including §6.1 Complete Workflow Inventory and §3.6 Workflow Processing Flow)
|
|
23
|
+
- Universal Source classification (NEW / EXISTING / MODIFIED / REUSED / OOTB)
|
|
24
|
+
- Section applicability guide (which sections are required vs optional)
|
|
25
|
+
- Rules classification decision flow
|
|
26
|
+
- Diagram requirements (Mermaid stateDiagram-v2, sequenceDiagram, flowchart)
|
|
27
|
+
- Plan lifecycle (PENDING → APPROVED → implementation)
|
|
28
|
+
|
|
29
|
+
> **Mandatory validation:** Before writing any Mermaid diagram to the plan file, validate syntax via `/fluent-mermaid-validate`. Common pitfalls: missing `direction` in flowcharts, spaces in state names for `stateDiagram-v2`, unquoted special characters in labels. Invalid diagrams render as error blocks in markdown viewers.
|
|
30
|
+
|
|
31
|
+
## When to Use
|
|
32
|
+
|
|
33
|
+
Use `/fluent-feature-plan` when the work involves **multiple artifacts**:
|
|
34
|
+
- A new capability needing workflow changes + new rules + settings + possibly webhooks
|
|
35
|
+
- A change spanning multiple entity types (ORDER → FULFILMENT → LOCATION)
|
|
36
|
+
- Any implementation request where the scope isn't covered by a single skill
|
|
37
|
+
|
|
38
|
+
**For single-artifact work**, the individual skill's Planning Gate is sufficient:
|
|
39
|
+
- Single new rule → `/fluent-rule-scaffold` Planning Gate
|
|
40
|
+
- Single workflow edit → `/fluent-workflow-builder` Planning Gate
|
|
41
|
+
- Settings-only change → `/fluent-settings` Planning Gate
|
|
42
|
+
- Retrospective feature documentation → `/fluent-feature-explain`
|
|
43
|
+
- Scope document decomposition → `/fluent-scope-decompose`
|
|
44
|
+
|
|
45
|
+
## Progress
|
|
46
|
+
|
|
47
|
+
Emit this block at each phase transition to show progress:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
▸ /fluent-feature-plan [1/6]
|
|
51
|
+
✓ Pre-flight checks → Discovery & classification
|
|
52
|
+
○ Rule inventory ○ Pseudo logic (NEW rules)
|
|
53
|
+
○ Write plan ○ Present for approval
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Update the block as each phase completes — mark completed phases with `✓`, the active phase with `→`, and remaining phases with `○`. Replace `[1/6]` with the current phase number.
|
|
57
|
+
|
|
58
|
+
## Pre-flight: Requirements Verification (MANDATORY)
|
|
59
|
+
|
|
60
|
+
**A Business Spec is MANDATORY before feature planning.** The agent MUST NOT judge whether requirements are "clear enough" to skip the spec — that decision belongs exclusively to the end user.
|
|
61
|
+
|
|
62
|
+
### Step 1: Check for approved Business Spec
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# Check feature directories for an approved spec
|
|
66
|
+
ls accounts/<PROFILE>/features/*/spec.md
|
|
67
|
+
# Or check status.json for spec approval state
|
|
68
|
+
cat accounts/<PROFILE>/features/<slug>/status.json # look for "spec": "APPROVED"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
If an **APPROVED** spec exists that matches the requested feature (check `status.json` for `"spec": "APPROVED"`):
|
|
72
|
+
- Read the spec file at `features/<slug>/spec.md`
|
|
73
|
+
- Confirm it covers the feature scope
|
|
74
|
+
- Check the spec's Completeness Score (Section 12 in the spec). If score < 75%, warn: *"Business Spec completeness is below 75%. Specs below this threshold may cause planning gaps. Run `/fluent-use-case-discover` Phase 10 gap analysis to resolve, or proceed with `--force`."*
|
|
75
|
+
- Proceed to Phase 1 using the spec as primary input
|
|
76
|
+
- Reference the spec file path in the plan's §1 Business Context
|
|
77
|
+
|
|
78
|
+
### Step 2: No approved spec → BLOCKED
|
|
79
|
+
|
|
80
|
+
If no approved spec exists at `features/<slug>/spec.md`:
|
|
81
|
+
- **STOP.** Do not proceed to Phase 1.
|
|
82
|
+
- Inform the user: *"No approved Business Spec found. A spec is required before feature planning. I recommend running `/fluent-use-case-discover` to produce a structured Business Spec first. If you want to skip the spec step and go straight to planning, say 'skip spec'."*
|
|
83
|
+
- **IMPORTANT:** Always recommend the spec path. Present it as the default. The skip option is mentioned so the user knows it's available, but the recommendation is always to write the spec.
|
|
84
|
+
- Invoke `/fluent-use-case-discover` to produce a spec
|
|
85
|
+
- Resume `/fluent-feature-plan` only after the spec is **APPROVED**
|
|
86
|
+
- Resume command: `/fluent-feature-plan --feature <slug>`
|
|
87
|
+
|
|
88
|
+
### User override (explicit only)
|
|
89
|
+
|
|
90
|
+
The user can bypass this check ONLY by explicitly saying: "skip spec", "skip use case", "go straight to plan", or similar **clear, unambiguous instruction**. The agent must NEVER infer a skip from vague statements or from judging that requirements "look structured enough".
|
|
91
|
+
|
|
92
|
+
When the user explicitly overrides:
|
|
93
|
+
1. Log `Pre-flight: Requirements Check SKIPPED (user override — no approved spec)` in the plan header
|
|
94
|
+
2. Warn: *"Proceeding without a Business Spec. The plan may contain assumptions that require mid-implementation revision. Consider writing a spec after the plan if gaps emerge."*
|
|
95
|
+
3. Proceed to Phase 1
|
|
96
|
+
|
|
97
|
+
**What does NOT count as a user override:**
|
|
98
|
+
- The user providing a one-sentence feature description
|
|
99
|
+
- The user listing some requirements conversationally
|
|
100
|
+
- The user saying "this is straightforward" or "it's simple"
|
|
101
|
+
- The agent deciding the request is "clear enough"
|
|
102
|
+
|
|
103
|
+
Only an **explicit instruction to skip** the spec step counts.
|
|
104
|
+
|
|
105
|
+
## Slug Resolution
|
|
106
|
+
|
|
107
|
+
If the feature directory doesn't exist yet, use the slug auto-suggestion protocol from `/fluent-use-case-discover`. The slug should have been established during spec creation; if not, apply the same rules here:
|
|
108
|
+
1. Derive from feature/spec title → kebab-case → max 4 words → no dates → no skill prefixes
|
|
109
|
+
2. Remove filler words (the, a, an, for, with, and)
|
|
110
|
+
3. Check if `accounts/<PROFILE>/features/<slug>/` already exists
|
|
111
|
+
4. If exists, reuse the existing slug
|
|
112
|
+
5. If new, present to user for confirmation before creating directory
|
|
113
|
+
|
|
114
|
+
### Decision summary
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
User requests feature
|
|
118
|
+
│
|
|
119
|
+
▼
|
|
120
|
+
┌───────────────────────────┐
|
|
121
|
+
│ 1. Approved spec in │──YES──▶ Proceed to Phase 1
|
|
122
|
+
│ features/<slug>/ │
|
|
123
|
+
│ spec.md? │
|
|
124
|
+
├───────────────────────────┤
|
|
125
|
+
│ 2. No spec exists │──────▶ BLOCKED
|
|
126
|
+
│ │ Recommend: /fluent-use-case-discover
|
|
127
|
+
│ │ Mention skip option to user
|
|
128
|
+
├───────────────────────────┤
|
|
129
|
+
│ 3. User explicitly says │──YES──▶ Proceed to Phase 1 (log override + warn)
|
|
130
|
+
│ "skip spec"? │
|
|
131
|
+
└───────────────────────────┘
|
|
132
|
+
|
|
133
|
+
NEVER auto-proceed without a spec. NEVER judge requirements as "sufficient".
|
|
134
|
+
The decision to skip belongs to the end user, not the agent.
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Handoff Protocol
|
|
138
|
+
|
|
139
|
+
### Mandatory approval gate before implementation
|
|
140
|
+
|
|
141
|
+
After writing the plan to `features/<slug>/plan.md`, the agent MUST:
|
|
142
|
+
1. Present the plan to the user for review
|
|
143
|
+
2. **STOP and WAIT** for explicit user approval ("approved", "go ahead", "looks good", "do it")
|
|
144
|
+
3. Only after user approval: update `status.json` to `plan: "APPROVED"` and emit `-> NEXT`
|
|
145
|
+
4. If the user asks questions or requests changes → answer/apply changes, keep waiting for approval
|
|
146
|
+
5. **NEVER auto-advance to implementation skills** — the approval gate is mandatory
|
|
147
|
+
|
|
148
|
+
### Signals emitted by this skill
|
|
149
|
+
|
|
150
|
+
| Signal | Condition | Example |
|
|
151
|
+
|--------|-----------|---------|
|
|
152
|
+
| `-> REVIEW: <path>` | Plan written, awaiting user review | `-> REVIEW: accounts/HMDEV/features/curbside/plan.md` |
|
|
153
|
+
| `-> READY: <path>` | Plan reviewed AND approved by user | `-> READY: accounts/HMDEV/features/curbside/plan.md` |
|
|
154
|
+
| `-> NEXT: /fluent-<skill>` | First implementation skill from plan (only after READY) | `-> NEXT: /fluent-rule-scaffold` |
|
|
155
|
+
| `-> BLOCKED: <reason>` | Requirements insufficient | `-> BLOCKED: PREREQ_MISSING — No approved spec. Run /fluent-use-case-discover` |
|
|
156
|
+
|
|
157
|
+
### Human-Friendly Translation
|
|
158
|
+
|
|
159
|
+
When presenting handoff signals to the user, translate agent jargon into plain language:
|
|
160
|
+
|
|
161
|
+
| Raw Signal | User-Facing Translation |
|
|
162
|
+
|------------|------------------------|
|
|
163
|
+
| `-> NEXT: /fluent-rule-scaffold` | "Plan approved. Next step: scaffold the Java rules. Shall I proceed?" |
|
|
164
|
+
| `-> BLOCKED: Module not found` | "I can't build the workflow yet — the Java module needs to be created first. Want me to scaffold it?" |
|
|
165
|
+
| `-> READY: plan.md` | "The feature plan is ready for your review." |
|
|
166
|
+
| `-> REVIEW: plan.md` | "I've written the implementation plan. Please review it and let me know if it looks good." |
|
|
167
|
+
| `-> SKIP: No settings` | "No settings changes needed for this feature — moving on." |
|
|
168
|
+
|
|
169
|
+
**Rule:** Raw `->` signals should NEVER be shown to the user verbatim. Always wrap them in a natural-language sentence. The signals exist for agent-to-agent coordination; the user sees the translated version.
|
|
170
|
+
|
|
171
|
+
### Error codes
|
|
172
|
+
|
|
173
|
+
| Code | Condition | Recovery |
|
|
174
|
+
|------|-----------|----------|
|
|
175
|
+
| `PREREQ_MISSING` | No approved Business Spec (spec.md with status APPROVED) | Run `/fluent-use-case-discover` to produce a spec. Agent cannot bypass — only user can say "skip spec" |
|
|
176
|
+
| `SPEC_REQUIRED` | Agent attempted to skip spec without user override | Inform user: spec is mandatory, recommend `/fluent-use-case-discover`, mention skip option |
|
|
177
|
+
| `VALIDATION_FAILED` | Plan template structure invalid or incomplete | Fix the plan sections flagged as incomplete |
|
|
178
|
+
| `USER_OVERRIDE` | User explicitly said "skip spec" | Logged in plan header; proceed with assumptions |
|
|
179
|
+
| `APPROVAL_PENDING` | Plan written but not yet approved by user | Wait for user review and explicit approval before proceeding |
|
|
180
|
+
|
|
181
|
+
## Plan Revision Handling
|
|
182
|
+
|
|
183
|
+
When a user requests plan changes during implementation (feature status is `IN_PROGRESS`):
|
|
184
|
+
|
|
185
|
+
### Triggering a revision
|
|
186
|
+
|
|
187
|
+
If the user says "change the plan", "update the plan", or requests modifications to an approved plan:
|
|
188
|
+
|
|
189
|
+
1. **Read current plan** at `features/<slug>/plan.md`
|
|
190
|
+
2. **Save current version** as `features/<slug>/plan.v<N>.md` where N = current `planRevision`
|
|
191
|
+
3. **Apply changes** to `plan.md`, marking revised sections with:
|
|
192
|
+
```
|
|
193
|
+
> **REVISED in v<N+1>:** <summary of what changed and why>
|
|
194
|
+
```
|
|
195
|
+
4. **Update status.json:**
|
|
196
|
+
- `status`: `"PLANNING"` (regressed from IN_PROGRESS)
|
|
197
|
+
- `planRevision`: increment by 1
|
|
198
|
+
- `plan`: `"DRAFT"` (pending re-approval)
|
|
199
|
+
5. **Present revised plan** to user for review
|
|
200
|
+
6. **WAIT for re-approval** — same mandatory gate as initial plan approval
|
|
201
|
+
7. After approval: `status` → `"APPROVED"`, `plan` → `"APPROVED"`
|
|
202
|
+
|
|
203
|
+
### Impact assessment
|
|
204
|
+
|
|
205
|
+
After a plan revision, the agent MUST assess impact on already-completed work:
|
|
206
|
+
|
|
207
|
+
1. List which plan sections changed (§ numbers)
|
|
208
|
+
2. Cross-reference against completed implementation:
|
|
209
|
+
- Scaffolded rules → check if rule logic, parameters, or entity types changed
|
|
210
|
+
- Modified workflows → check if rulesets, statuses, or transitions changed
|
|
211
|
+
- Created settings → check if keys, values, or scopes changed
|
|
212
|
+
3. Present impact summary: "These sections changed: §7, §9. Scaffolded rule X may need updating because [reason]."
|
|
213
|
+
4. Let the user decide which completed artifacts to update — do NOT automatically modify scaffolded code
|
|
214
|
+
|
|
215
|
+
### Revision history
|
|
216
|
+
|
|
217
|
+
All plan versions are preserved in the feature directory:
|
|
218
|
+
```
|
|
219
|
+
features/<slug>/
|
|
220
|
+
├── plan.md ← current (latest) version
|
|
221
|
+
├── plan.v1.md ← original approved version
|
|
222
|
+
├── plan.v2.md ← first revision
|
|
223
|
+
└── status.json ← planRevision: 3
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Phase 1: Discovery
|
|
227
|
+
|
|
228
|
+
Before writing a plan, gather evidence to classify every artifact.
|
|
229
|
+
|
|
230
|
+
### 1.1 OOTB Rule Search
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
plugin.list name="<keyword>" # e.g., "Fulfilment", "Pickup", "Webhook"
|
|
234
|
+
plugin.list name="SendEvent" # standard event forwarding rules
|
|
235
|
+
plugin.list compact=true # full inventory (compact payload)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Determine which parts of the feature can use OOTB rules vs. need custom. For every rule the feature needs, try to find an OOTB match FIRST.
|
|
239
|
+
|
|
240
|
+
### 1.2 Existing Workflows
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Check what's deployed
|
|
244
|
+
fluent workflow list -p <PROFILE> -r <RETAILER_REF>
|
|
245
|
+
# Download if not local
|
|
246
|
+
fluent workflow download -p <PROFILE> -r <RETAILER_REF> -w all -o accounts/<PROFILE>/workflows/<RETAILER_REF>/
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Read workflow JSONs to map existing statuses, rulesets, and triggers. Identify which workflows need modification and their current versions.
|
|
250
|
+
|
|
251
|
+
**For §6.1 Complete Workflow Inventory:** Parse each modified workflow's JSON to extract the complete ruleset list — entity type, subtype, trigger event, trigger status, and rule names. This feeds directly into the §6.1 table and §3.6 Workflow Processing Flow diagram. Don't rely on the implementer to manually enumerate rulesets.
|
|
252
|
+
|
|
253
|
+
### 1.3 Existing Settings
|
|
254
|
+
|
|
255
|
+
```bash
|
|
256
|
+
# Via MCP
|
|
257
|
+
graphql.query: settings(first: 100) filtered by name pattern
|
|
258
|
+
# Or via CLI
|
|
259
|
+
fluent setting list -p <PROFILE> -r <RETAILER_REF> -n "*keyword*"
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Find settings that already exist vs. need creation.
|
|
263
|
+
|
|
264
|
+
### 1.4 Local Source Analysis
|
|
265
|
+
|
|
266
|
+
Search `accounts/<PROFILE>/SOURCE/` for:
|
|
267
|
+
- `module.json` — rule registrations
|
|
268
|
+
- `source-map.json` — if `/fluent-custom-code` was run
|
|
269
|
+
- `behavior-map.md` — rule behavior descriptions
|
|
270
|
+
- Existing Java rule classes for reusable patterns
|
|
271
|
+
|
|
272
|
+
### 1.5 Module Identification
|
|
273
|
+
|
|
274
|
+
Identify the target module for new custom rules:
|
|
275
|
+
- Search `accounts/<PROFILE>/SOURCE/` for existing modules
|
|
276
|
+
- If no module exists, flag `/fluent-module-scaffold` as a prerequisite task
|
|
277
|
+
|
|
278
|
+
## Phase 2: Classification
|
|
279
|
+
|
|
280
|
+
For EVERY artifact the feature touches, apply one of these labels:
|
|
281
|
+
|
|
282
|
+
| Label | Meaning | Required Detail in Plan |
|
|
283
|
+
|-------|---------|------------------------|
|
|
284
|
+
| **NEW** | Doesn't exist yet, must be created | Full pseudo logic / value shape / trigger spec |
|
|
285
|
+
| **EXISTING** | Already deployed, no modification needed | State current value, confirm no change |
|
|
286
|
+
| **MODIFIED** | Already exists but needs changes | Show before → after diff |
|
|
287
|
+
| **REUSED** | Pattern exists in codebase, copy the approach | Reference source file/rule |
|
|
288
|
+
| **OOTB** | Platform rule, use with configuration only | State which props/values to configure |
|
|
289
|
+
|
|
290
|
+
This applies universally across ALL plan sections — rules, rulesets, statuses, settings, webhooks, GraphQL operations, cross-entity impacts, files.
|
|
291
|
+
|
|
292
|
+
## Phase 3: Pseudo Logic for NEW Rules
|
|
293
|
+
|
|
294
|
+
For every **NEW** rule, write pseudo logic that is:
|
|
295
|
+
- **Unambiguous** — a developer can implement from it without asking questions
|
|
296
|
+
- **Shows data flow**: READ → VALIDATE → QUERY → BUILD → MUTATE → LOG
|
|
297
|
+
- **Shows branching**: IF/ELSE with error paths and thrown exceptions
|
|
298
|
+
- **References specific APIs**: `DynamicUtils.queryList()`, `SettingUtils.getSettingByRef()`, `JsonUtils.getJsonPath()`
|
|
299
|
+
- **Stays at design level** — NOT Java code, but precise enough to translate directly
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
FUNCTION run(context):
|
|
303
|
+
order = context.getEntity()
|
|
304
|
+
event = context.getEvent()
|
|
305
|
+
|
|
306
|
+
// 1. Extract required fields
|
|
307
|
+
pickupLocationRef = extractFromPath(event, props.pickupLocationPath)
|
|
308
|
+
IF pickupLocationRef IS NULL:
|
|
309
|
+
THROW "Pickup location ref required but null at path: {pickupLocationPath}"
|
|
310
|
+
|
|
311
|
+
// 2. Fetch order items
|
|
312
|
+
items = DynamicUtils.queryList(context, "items", OrderItem.class, null)
|
|
313
|
+
IF items IS EMPTY:
|
|
314
|
+
THROW "Order has no items — cannot create fulfilment"
|
|
315
|
+
|
|
316
|
+
// 3. Read config from setting
|
|
317
|
+
config = SettingUtils.getSettingByRef(context, props.configSettingName)
|
|
318
|
+
maxPickupHours = config.lobValue.maxPickupHours
|
|
319
|
+
|
|
320
|
+
// 4. Validate
|
|
321
|
+
IF requestedPickupTime > order.createdOn + maxPickupHours hours:
|
|
322
|
+
THROW "Pickup window expired"
|
|
323
|
+
|
|
324
|
+
// 5. Build and mutate
|
|
325
|
+
fulfilmentRef = "CURB-{order.ref}-{pickupLocationRef}"
|
|
326
|
+
DynamicUtils.create(context, CreateFulfilmentInput { ref, type, items, attributes })
|
|
327
|
+
|
|
328
|
+
// 6. Log
|
|
329
|
+
context.addLog("Created curbside fulfilment {fulfilmentRef}")
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**For OOTB rules**: just state the configuration props to set in the ruleset — no pseudo logic needed.
|
|
333
|
+
|
|
334
|
+
**For EXISTING rules**: confirm "no code changes" or describe the modification.
|
|
335
|
+
|
|
336
|
+
## Phase 4: Plan Writing
|
|
337
|
+
|
|
338
|
+
**Write to:** `accounts/<PROFILE>/features/<slug>/plan.md`
|
|
339
|
+
|
|
340
|
+
Follow the 18-section template from `PLAN_TEMPLATE.md` (sibling file). Validate all Mermaid diagram blocks per `/fluent-mermaid-validate` before writing the plan file. Key per-section notes:
|
|
341
|
+
|
|
342
|
+
> **Diagram validation:** All Mermaid blocks must pass `/fluent-mermaid-validate` rules before writing to the plan file.
|
|
343
|
+
|
|
344
|
+
| Section | Source-Column Required | Key Content |
|
|
345
|
+
|---------|----------------------|-------------|
|
|
346
|
+
| §4 Workflows | Yes (NEW/EXISTING/MODIFIED) | Workflow name, current version, action |
|
|
347
|
+
| §5 Statuses | Yes | Status, entity type, which ruleset adds it |
|
|
348
|
+
| §6 Rulesets | Yes | Trigger event, from/to status, ordered rule list with source annotations |
|
|
349
|
+
| §6.1 Complete Workflow Inventory | Yes (when modifying) | ALL rulesets in each modified workflow with NEW/EXISTING/MODIFIED annotations |
|
|
350
|
+
| §3.6 Workflow Processing Flow | Yes (when modifying) | Flowchart: complete status→ruleset→status chain, NEW/MODIFIED highlighted |
|
|
351
|
+
| §7 Rules Inventory | Yes | ALL rules for the feature with source + purpose |
|
|
352
|
+
| §8 Detailed Design | For NEW rules only | Class, params table, pseudo logic, GraphQL ops |
|
|
353
|
+
| §9 Settings | Yes | Context, contextId, value type, JSON example for NEW |
|
|
354
|
+
| §10 Webhooks | Yes | Setting name, method, payload shape |
|
|
355
|
+
| §11 Scheduled Events | Yes | Event name, delay, purpose |
|
|
356
|
+
| §12 GraphQL Ops | Yes (NEW/REUSED) | Query/mutation, root field, selected paths |
|
|
357
|
+
| §13 Cross-Entity | Yes | Source → target entity, mechanism |
|
|
358
|
+
| §14 Files | Yes (NEW/MODIFIED) | All created/modified files |
|
|
359
|
+
|
|
360
|
+
## Phase 5: Approval
|
|
361
|
+
|
|
362
|
+
1. Set `Status: PENDING`, `Revision: 1`
|
|
363
|
+
2. Present the full plan content to the user
|
|
364
|
+
3. Wait for explicit approval before any implementation
|
|
365
|
+
4. On approval: update `Status: APPROVED`, `Approved by: user`
|
|
366
|
+
5. On rejection: increment `Revision`, revise, re-present
|
|
367
|
+
6. On "just do it": write `Status: APPROVED (auto-skip)`, `Approved by: user (gate skipped)`, proceed
|
|
368
|
+
|
|
369
|
+
## Phase 6: Handoff to Implementation Skills
|
|
370
|
+
|
|
371
|
+
After approval, the plan becomes the source of truth. Each skill reads its relevant sections:
|
|
372
|
+
|
|
373
|
+
| Artifact Type | Implementation Skill | Plan Sections |
|
|
374
|
+
|--------------|---------------------|---------------|
|
|
375
|
+
| New custom rules | `/fluent-rule-scaffold` | §7 Rules, §8 Detailed Design |
|
|
376
|
+
| Workflow changes | `/fluent-workflow-builder` | §4 Workflows, §5 Statuses, §6 Rulesets |
|
|
377
|
+
| Settings | `/fluent-settings` | §9 Settings |
|
|
378
|
+
| Module validation | `/fluent-module-validate` | §17 Deployment (step 1) |
|
|
379
|
+
| Module build | `/fluent-build` | §17 Deployment (step 2) |
|
|
380
|
+
| Pre-deploy check | `/fluent-pre-deploy-check` | §17 Deployment (step 3) |
|
|
381
|
+
| Module deploy | `/fluent-module-deploy` | §17 Deployment (step 4) |
|
|
382
|
+
| Workflow deploy | `/fluent-workflow-deploy` | §17 Deployment (steps 5-6) |
|
|
383
|
+
| Data module scaffold | `/fluent-data-module-scaffold` | When the feature requires data modules (no Java) |
|
|
384
|
+
| E2E verification | `/fluent-e2e-test` | §16 Test Plan |
|
|
385
|
+
|
|
386
|
+
The deployment sequence in §17 defines execution order. Track tasks from §17 via TodoWrite.
|
|
387
|
+
|
|
388
|
+
**Module-first deployment:** When workflows are bundled inside the module (`resources/workflows/`), `fluent module install` deploys rules, workflows, and settings together. The separate `/fluent-workflow-deploy` step (steps 5-6) is only needed for standalone workflows NOT included in the module, or when workflows were excluded during module install (`--exclude workflows`).
|
|
389
|
+
|
|
390
|
+
**Critical ordering constraint:** Module deploy (registers rules) MUST complete before workflow deploy (references rules). Deploying workflows that reference unregistered custom rules causes NO_MATCH events at runtime. The §17 template enforces this: workflow deploy steps depend on module deploy.
|
|
391
|
+
|
|
392
|
+
**Version bump required for any content change:** Any change to Java code, workflow JSONs, settings, or resources requires bumping the module version in BOTH `resources/module.json` AND all `pom.xml` files. See `/fluent-build` for the sync procedure.
|
|
393
|
+
|
|
394
|
+
**Validation chain:** `/fluent-module-validate` -> `/fluent-build` -> `/fluent-pre-deploy-check` -> `/fluent-module-deploy`. The pre-deploy check is the final gate before deployment and produces a READY/BLOCKED verdict.
|
|
395
|
+
|
|
396
|
+
## Updating a Plan Mid-Implementation
|
|
397
|
+
|
|
398
|
+
Plans are living documents. Mid-implementation changes happen when discovery reveals missing artifacts, requirements change, or technical constraints emerge. This section defines the revision protocol.
|
|
399
|
+
|
|
400
|
+
### When Revision is Triggered
|
|
401
|
+
|
|
402
|
+
| Trigger | Example | Severity |
|
|
403
|
+
|---------|---------|----------|
|
|
404
|
+
| Missing artifact discovered | Rule referenced in workflow but not in plan | MEDIUM — add to plan |
|
|
405
|
+
| Requirement change from user | "We also need SMS notifications" | HIGH — re-scope |
|
|
406
|
+
| Technical constraint found | OOTB rule doesn't support needed parameter | MEDIUM — reclassify rule |
|
|
407
|
+
| Dependency failure | Module build reveals missing import | LOW — fix in plan |
|
|
408
|
+
| Test failure reveals gap | E2E test shows missing status transition | MEDIUM — add status + ruleset |
|
|
409
|
+
|
|
410
|
+
### Revision Protocol
|
|
411
|
+
|
|
412
|
+
1. **Increment revision** — Edit the plan file header: `Revision: N+1`, update `Updated: <today>`
|
|
413
|
+
2. **Add revision log entry** — Append to the bottom of the plan:
|
|
414
|
+
```markdown
|
|
415
|
+
---
|
|
416
|
+
## Revision Log
|
|
417
|
+
|
|
418
|
+
### Revision N+1 — <date>
|
|
419
|
+
**Trigger:** <what caused the revision>
|
|
420
|
+
**Changes:**
|
|
421
|
+
- Added: <new artifacts>
|
|
422
|
+
- Modified: <changed artifacts with before → after>
|
|
423
|
+
- Removed: <artifacts no longer needed>
|
|
424
|
+
**Impact on completed work:** <what already-built artifacts are affected>
|
|
425
|
+
```
|
|
426
|
+
3. **Re-present changed sections** — Show ONLY the sections that changed, not the full plan
|
|
427
|
+
4. **Require re-approval** — User must explicitly approve the revision before implementation continues
|
|
428
|
+
5. **Update status.json** — Set `planRevision: N+1`, `updated: <today>`
|
|
429
|
+
|
|
430
|
+
### Status Regression Rules
|
|
431
|
+
|
|
432
|
+
| Current Status | Revision Type | Status After Revision |
|
|
433
|
+
|---------------|--------------|----------------------|
|
|
434
|
+
| `APPROVED` | Any change to plan | Stays `APPROVED` (plan revision, not status change) |
|
|
435
|
+
| `IN_PROGRESS` | Additive (new rules, new rulesets, new settings) | Stays `IN_PROGRESS` |
|
|
436
|
+
| `IN_PROGRESS` | Subtractive (removing rules/rulesets, changing triggers) | Regresses to `APPROVED` — re-approval of changed plan needed |
|
|
437
|
+
| `IN_PROGRESS` | Structural (new workflows, changed entity types, new integrations) | Regresses to `PLANNING` — re-planning needed |
|
|
438
|
+
| `VERIFIED` | Any change | Regresses to `IN_PROGRESS` — re-verification needed |
|
|
439
|
+
|
|
440
|
+
> **After VERIFIED:** Features that have passed E2E verification can be archived via `/fluent-archive`, which transitions the status to `ARCHIVED`. Use `/fluent-feature-status` to inspect or update lifecycle state at any point.
|
|
441
|
+
|
|
442
|
+
### Impact on Completed Work
|
|
443
|
+
|
|
444
|
+
When a plan revision occurs, assess impact on already-implemented artifacts:
|
|
445
|
+
|
|
446
|
+
| Already Completed | Revision Impact | Action |
|
|
447
|
+
|------------------|-----------------|--------|
|
|
448
|
+
| Rule scaffolded, not yet built | Plan adds new parameter to the rule | Edit the scaffolded Java class — add parameter |
|
|
449
|
+
| Rule built and deployed | Plan changes rule logic | Re-scaffold is risky — edit existing source directly |
|
|
450
|
+
| Workflow deployed | Plan adds new ruleset | Add ruleset via `/fluent-workflow-builder`, re-deploy |
|
|
451
|
+
| Workflow deployed | Plan removes a status | **BREAKING** — check for entities at that status first |
|
|
452
|
+
| Settings created | Plan changes setting value shape | Update setting value — no re-deploy needed |
|
|
453
|
+
| E2E test passed | Plan adds new test case | Add test case, re-run E2E |
|
|
454
|
+
|
|
455
|
+
**Critical rule:** Removing a status from a deployed workflow is a **BREAKING CHANGE** if any entities are currently at that status. Always check via GraphQL before removing:
|
|
456
|
+
```
|
|
457
|
+
graphql.query: { <entityType>s(status: ["<STATUS_TO_REMOVE>"], first: 1) { edges { node { ref } } } }
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Revision Limits
|
|
461
|
+
|
|
462
|
+
- **Revision 1-3:** Normal iteration. Proceed with re-approval.
|
|
463
|
+
- **Revision 4+:** Flag as "HIGH CHURN" — recommend stepping back to review the Business Spec. Frequent plan revisions often indicate incomplete requirements gathering.
|
|
464
|
+
- **Scope-changing revision on VERIFIED feature:** Flag as **REGRESSION RISK** — the feature passed E2E and is now being re-opened. Require explicit justification.
|
|
465
|
+
|
|
466
|
+
## Cross-References
|
|
467
|
+
|
|
468
|
+
| For | Use |
|
|
469
|
+
|-----|-----|
|
|
470
|
+
| Plan template structure & worked examples | `PLAN_TEMPLATE.md` (in this skill directory) |
|
|
471
|
+
| OOTB rule search | `plugin.list` via MCP |
|
|
472
|
+
| Workflow analysis | `/fluent-workflow-analyzer` |
|
|
473
|
+
| Custom code analysis | `/fluent-custom-code` |
|
|
474
|
+
| Connection topology | `/fluent-connection-analysis` |
|
|
475
|
+
| Requirements gathering (before planning) | `/fluent-use-case-discover` |
|
|
476
|
+
| Scope decomposition (from scope docs) | `/fluent-scope-decompose` |
|
|
477
|
+
| Feature reverse-engineering (existing) | `/fluent-feature-explain` |
|
|
478
|
+
| Module scaffolding (if needed) | `/fluent-module-scaffold` |
|