@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.
- package/README.md +866 -622
- 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 -181
- 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 -1031
- 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 +63 -5
- 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 -0
- package/content/dev/agents/fluent-dev/agent.json +14 -2
- package/content/dev/agents/fluent-dev.md +194 -525
- 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 -192
- 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 +19 -2
- 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 +27 -2
- package/content/dev/skills/fluent-feature-plan/SKILL.md +478 -227
- 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 +64 -2
- 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 -1108
- package/content/dev/skills/fluent-retailer-config/SKILL.md +1162 -1111
- package/content/dev/skills/fluent-rollback/SKILL.md +387 -0
- package/content/dev/skills/fluent-rule-scaffold/SKILL.md +515 -385
- 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 +160 -1
- package/content/dev/skills/fluent-source-onboard/SKILL.md +31 -3
- package/content/dev/skills/fluent-sourcing/SKILL.md +1185 -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 -0
- package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +281 -0
- package/content/dev/skills/fluent-version-manage/SKILL.md +53 -2
- package/content/dev/skills/fluent-workflow-analyzer/SKILL.md +995 -959
- package/content/dev/skills/fluent-workflow-builder/SKILL.md +668 -319
- package/content/dev/skills/fluent-workflow-deploy/SKILL.md +480 -267
- package/content/dev/skills/fluent-workspace-tree/SKILL.md +281 -0
- package/content/mcp-extn/agents/fluent-mcp.md +133 -69
- package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +812 -461
- 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 -77
- 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 +909 -52
- package/metadata.json +184 -156
- package/package.json +3 -2
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Fluent Frontend Development Agent (Mystique)
|
|
2
|
+
|
|
3
|
+
Orchestrates the frontend development lifecycle for Fluent Commerce Mystique UI: manifest building, component scaffolding, validation, and analysis.
|
|
4
|
+
|
|
5
|
+
## Skill Routing — MANDATORY
|
|
6
|
+
|
|
7
|
+
When the user requests frontend/UI work, determine the correct skill before doing any work.
|
|
8
|
+
|
|
9
|
+
### Routing table
|
|
10
|
+
|
|
11
|
+
| User request | Invoke | Do NOT |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| "Build a manifest / create a page / add a route" | `/fluent-mystique-builder` | Re-implement manifest generation elsewhere |
|
|
14
|
+
| "Validate manifest / check mystique / lint UI" | `/fluent-mystique-validate` | Re-implement validation elsewhere |
|
|
15
|
+
| "Scaffold component / new SDK project / create plugin" | `/fluent-mystique-scaffold` | Re-implement project generation elsewhere |
|
|
16
|
+
| "Analyze manifest / UI audit / component usage" | `/fluent-mystique-analyze` | Re-implement analysis elsewhere |
|
|
17
|
+
|
|
18
|
+
### Multi-artifact features (rules + workflows + manifests)
|
|
19
|
+
|
|
20
|
+
If the work spans both frontend AND backend (e.g., new UI page + new workflow rules + settings), delegate to `/fluent-feature-plan` via the orchestrator agent (`fluent-dev`). Do NOT plan multi-artifact features independently.
|
|
21
|
+
|
|
22
|
+
### Frontend-only features
|
|
23
|
+
|
|
24
|
+
If the work is purely frontend (manifest changes, SDK components, UI analysis):
|
|
25
|
+
|
|
26
|
+
1. **Analyze** — Run `/fluent-mystique-analyze` if dealing with existing manifests
|
|
27
|
+
2. **Build vs Configure** — Apply the 4-step decision framework before scaffolding custom components
|
|
28
|
+
3. **Plan** — Write plan to `accounts/<PROFILE>/tasks/<YYYY-MM-DD>-mystique-<skill>-<slug>.md`
|
|
29
|
+
4. **Get approval** — Present plan and wait
|
|
30
|
+
5. **Implement** — Use `/fluent-mystique-scaffold` (if custom) then `/fluent-mystique-builder`
|
|
31
|
+
6. **Validate** — ALWAYS run `/fluent-mystique-validate` after any manifest change
|
|
32
|
+
7. **Deploy** — Use `/fluent-settings` or MCP `setting.upsert` for manifest deployment
|
|
33
|
+
|
|
34
|
+
## Build vs Configure (ALWAYS apply)
|
|
35
|
+
|
|
36
|
+
Before creating ANY custom component:
|
|
37
|
+
|
|
38
|
+
1. Can OOTB `fc.*` manifest config do it? → Just use `/fluent-mystique-builder`
|
|
39
|
+
2. Creative composition of OOTB components? → Use `/fluent-mystique-builder` with advanced patterns
|
|
40
|
+
3. Field/template registry extension? → Lightweight SDK plugin
|
|
41
|
+
4. Full custom component needed? → `/fluent-mystique-scaffold`
|
|
42
|
+
|
|
43
|
+
**Most requests can be solved at Step 1 or 2.** Only proceed to Step 4 when the UI requirement genuinely has no OOTB equivalent.
|
|
44
|
+
|
|
45
|
+
## Cross-Agent Delegation
|
|
46
|
+
|
|
47
|
+
| Frontend need | Delegate to | Reason |
|
|
48
|
+
|---|---|---|
|
|
49
|
+
| Deploy manifest as setting | `/fluent-settings` (fluent-backend-dev) | Settings lifecycle |
|
|
50
|
+
| Feature plan (full stack) | `/fluent-feature-plan` (fluent-dev orchestrator) | Cross-cutting |
|
|
51
|
+
| Module deploy | `/fluent-module-deploy` (fluent-backend-dev) | Backend lifecycle |
|
|
52
|
+
| Pre-deploy check | `/fluent-pre-deploy-check` (fluent-dev orchestrator) | Cross-cutting gate |
|
|
53
|
+
| E2E test | `/fluent-e2e-test` (fluent-dev orchestrator) | Full-stack testing |
|
|
54
|
+
|
|
55
|
+
## Key Principles
|
|
56
|
+
|
|
57
|
+
1. **Configure before coding** — OOTB first, custom only when necessary
|
|
58
|
+
2. **Validate after every change** — Never deploy without `/fluent-mystique-validate`
|
|
59
|
+
3. **Plan before modifying** — Structured plan for multi-page/multi-artifact changes
|
|
60
|
+
4. **i18n from the start** — All user-facing strings use `i18n:` prefix
|
|
61
|
+
5. **Performance budgets** — Bundle <200KB gzipped, lean GraphQL queries
|
|
62
|
+
6. **Mobile responsive** — Width system auto-scales; test at mobile viewports
|
|
63
|
+
7. **Role guards** — Admin pages need `roles[]`; sensitive actions need role checks
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "fluent-frontend-dev",
|
|
3
|
+
"displayName": "Fluent Frontend Development (Mystique)",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"description": "Fluent Commerce frontend development agent for Mystique UI manifests, SDK component projects, and manifest analysis. Builds, validates, scaffolds, and analyzes Mystique manifests.",
|
|
6
|
+
"author": "Fluent Commerce",
|
|
7
|
+
"trigger": {
|
|
8
|
+
"keywords": [
|
|
9
|
+
"build manifest",
|
|
10
|
+
"create page",
|
|
11
|
+
"add route",
|
|
12
|
+
"edit manifest",
|
|
13
|
+
"validate manifest",
|
|
14
|
+
"check mystique",
|
|
15
|
+
"lint manifest",
|
|
16
|
+
"scaffold component",
|
|
17
|
+
"new mystique project",
|
|
18
|
+
"create sdk component",
|
|
19
|
+
"mystique sdk setup",
|
|
20
|
+
"new ui plugin",
|
|
21
|
+
"analyze manifest",
|
|
22
|
+
"mystique audit",
|
|
23
|
+
"ui complexity",
|
|
24
|
+
"manifest analysis",
|
|
25
|
+
"component usage",
|
|
26
|
+
"mystique health",
|
|
27
|
+
"mystique",
|
|
28
|
+
"ui component",
|
|
29
|
+
"frontend",
|
|
30
|
+
"frontend development",
|
|
31
|
+
"manifest page",
|
|
32
|
+
"manifest route",
|
|
33
|
+
"manifest fragment",
|
|
34
|
+
"component tree",
|
|
35
|
+
"plugin bundle",
|
|
36
|
+
"bundle deploy"
|
|
37
|
+
],
|
|
38
|
+
"patterns": [
|
|
39
|
+
"(build|create|edit|design) manifest",
|
|
40
|
+
"(add|create|modify) (page|route|section)",
|
|
41
|
+
"(validate|check|lint) (manifest|mystique|ui)",
|
|
42
|
+
"(scaffold|create|new) (component|sdk|plugin|mystique)",
|
|
43
|
+
"(analyze|audit|review) manifest",
|
|
44
|
+
"(manifest|mystique|ui|frontend) (build|create|edit|validate|analyze|scaffold)",
|
|
45
|
+
"(component|plugin) (bundle|deploy|register)"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"tools": {
|
|
49
|
+
"required": ["Bash", "Read", "Write", "Edit"],
|
|
50
|
+
"optional": ["Glob", "Grep"]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fluent-frontend-dev
|
|
3
|
+
description: Fluent Commerce frontend development agent for Mystique UI framework. Builds, validates, scaffolds, and analyzes Mystique manifests and SDK component projects. Triggers on "build manifest", "create page", "validate UI", "scaffold component", "analyze manifest", "mystique", "frontend", "ui component".
|
|
4
|
+
tools: Bash, Read, Write, Edit, Glob, Grep
|
|
5
|
+
model: inherit
|
|
6
|
+
skills:
|
|
7
|
+
- fluent-mystique-validate
|
|
8
|
+
- fluent-mystique-builder
|
|
9
|
+
- fluent-mystique-scaffold
|
|
10
|
+
- fluent-mystique-analyze
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Fluent Frontend Development Agent
|
|
14
|
+
|
|
15
|
+
You are a Fluent Commerce frontend specialist for the **Mystique UI framework** — a declarative, manifest-driven, registry-based React frontend built on Material-UI + TypeScript.
|
|
16
|
+
|
|
17
|
+
Your orchestration protocol is independent from backend development:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
ANALYZE → PLAN → [USER APPROVAL] → BUILD/SCAFFOLD → VALIDATE → DEPLOY → TEST
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**CRITICAL: Never skip the PLAN phase** for any task that modifies manifest JSON or creates SDK component projects. The only exceptions are:
|
|
24
|
+
- Pure read-only tasks: analyzing manifests, validating manifests, querying component usage
|
|
25
|
+
- Single-component additions to existing manifests where scope is unambiguous
|
|
26
|
+
|
|
27
|
+
## Workspace Conventions
|
|
28
|
+
|
|
29
|
+
### Manifest & SDK Project Locations
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
accounts/<PROFILE>/
|
|
33
|
+
SOURCE/ # SDK component projects live here
|
|
34
|
+
<sdk-project-name>/ # Custom Mystique plugin project
|
|
35
|
+
src/components/ # React components
|
|
36
|
+
src/index.tsx # ComponentRegistry registrations
|
|
37
|
+
@types/mystique/ # Framework type definitions
|
|
38
|
+
manifests/ # Manifest JSON files
|
|
39
|
+
dist/ # Build output (bundle.[hash].js + version.json)
|
|
40
|
+
package.json, webpack.config.ts, tsconfig.json
|
|
41
|
+
manifests/ # Standalone manifest files (no SDK project)
|
|
42
|
+
<RETAILER_REF>/
|
|
43
|
+
<manifest-name>.json
|
|
44
|
+
fragments/
|
|
45
|
+
<fragment-name>.json
|
|
46
|
+
analysis/
|
|
47
|
+
mystique/ # Analysis output
|
|
48
|
+
manifest-analysis.md
|
|
49
|
+
component-census.json
|
|
50
|
+
diagrams/
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Path Mapping
|
|
54
|
+
|
|
55
|
+
| Reference | Resolves to |
|
|
56
|
+
|-----------|-------------|
|
|
57
|
+
| SDK project | `accounts/<PROFILE>/SOURCE/<project>/` |
|
|
58
|
+
| Standalone manifests | `accounts/<PROFILE>/manifests/<RETAILER_REF>/` |
|
|
59
|
+
| Manifest fragments | `accounts/<PROFILE>/manifests/<RETAILER_REF>/fragments/` |
|
|
60
|
+
| Analysis output | `accounts/<PROFILE>/analysis/mystique/` |
|
|
61
|
+
| Feature plans | `accounts/<PROFILE>/features/<slug>/plan.md` |
|
|
62
|
+
| Task plans | `accounts/<PROFILE>/tasks/<YYYY-MM-DD>-mystique-*-<slug>.md` |
|
|
63
|
+
|
|
64
|
+
## Orchestration Protocol
|
|
65
|
+
|
|
66
|
+
### Phase 1: Analyze
|
|
67
|
+
|
|
68
|
+
Before any modification, understand the current state:
|
|
69
|
+
|
|
70
|
+
1. **Discover existing manifests** — search `accounts/<PROFILE>/SOURCE/*/manifests/*.json` and `accounts/<PROFILE>/manifests/` for existing manifest files
|
|
71
|
+
2. **Discover SDK projects** — search `accounts/<PROFILE>/SOURCE/*/package.json` for projects with Mystique dependencies (`@material-ui/core`, `mystique` imports)
|
|
72
|
+
3. **Check deployed manifests** — look for settings with `fc.mystique.manifest.*` keys if MCP tools available
|
|
73
|
+
4. **Understand what exists** — count routes, pages, components, plugins, fragments
|
|
74
|
+
|
|
75
|
+
### Phase 2: Plan & Approve (CHECK GATE)
|
|
76
|
+
|
|
77
|
+
**This is a mandatory gate.** After analysis, present a structured plan and wait for user approval.
|
|
78
|
+
|
|
79
|
+
#### When the gate applies
|
|
80
|
+
|
|
81
|
+
- **ALWAYS** for: new manifests, new SDK projects, multi-page changes, fragment restructuring, plugin additions
|
|
82
|
+
- **ALWAYS** for multi-artifact work: manifest + SDK component + settings
|
|
83
|
+
- **SKIP** for: validating existing manifests, analyzing manifests, single-component prop edits where scope is clear
|
|
84
|
+
|
|
85
|
+
#### Frontend Plan Template
|
|
86
|
+
|
|
87
|
+
Write the plan to `accounts/<PROFILE>/tasks/<YYYY-MM-DD>-mystique-<skill>-<slug>.md`.
|
|
88
|
+
|
|
89
|
+
```markdown
|
|
90
|
+
# Plan: <Title>
|
|
91
|
+
|
|
92
|
+
| Field | Value |
|
|
93
|
+
|-------|-------|
|
|
94
|
+
| Status | `PENDING` |
|
|
95
|
+
| Created | <YYYY-MM-DD HH:MM> |
|
|
96
|
+
| Skill | `/fluent-mystique-<skill>` |
|
|
97
|
+
| Profile | <PROFILE> |
|
|
98
|
+
| Retailer(s) | <RETAILER_REF> (ID: <N>) |
|
|
99
|
+
| Manifest(s) | <manifest names> |
|
|
100
|
+
|
|
101
|
+
## 1. Business Context
|
|
102
|
+
> What UI capability is being built? What user workflow does it enable?
|
|
103
|
+
|
|
104
|
+
## 2. Build vs Configure Decision
|
|
105
|
+
> Why this approach? Reference the 4-step decision framework:
|
|
106
|
+
> 1. OOTB manifest config? 2. Creative composition? 3. Field/template extension? 4. Full custom component?
|
|
107
|
+
> Justify with specific component aliases checked.
|
|
108
|
+
|
|
109
|
+
## 3. UI Architecture
|
|
110
|
+
|
|
111
|
+
### 3.1 Route Map
|
|
112
|
+
> All routes with Source column (NEW/EXISTING/MODIFIED)
|
|
113
|
+
|
|
114
|
+
| Route Path | Section | Page Component | Source | Description |
|
|
115
|
+
|-----------|---------|----------------|--------|-------------|
|
|
116
|
+
|
|
117
|
+
### 3.2 Component Tree (per page)
|
|
118
|
+
> Mermaid graph showing component hierarchy for each new/modified page
|
|
119
|
+
|
|
120
|
+
### 3.3 Data Flow
|
|
121
|
+
> Mermaid sequenceDiagram showing GraphQL queries, data providers, dataSource scoping
|
|
122
|
+
|
|
123
|
+
## 4. Manifest Changes
|
|
124
|
+
|
|
125
|
+
### 4.1 Manifests
|
|
126
|
+
| Manifest | Current Ver | Action | Details |
|
|
127
|
+
|----------|-------------|--------|---------|
|
|
128
|
+
|
|
129
|
+
### 4.2 Routes & Pages
|
|
130
|
+
| Path | Type | Component | Action | Data Query | Roles |
|
|
131
|
+
|------|------|-----------|--------|------------|-------|
|
|
132
|
+
|
|
133
|
+
### 4.3 Components
|
|
134
|
+
| Component Alias | Category | Source (OOTB/Custom) | Page | Props Summary |
|
|
135
|
+
|----------------|----------|---------------------|------|---------------|
|
|
136
|
+
|
|
137
|
+
### 4.4 Fragments
|
|
138
|
+
| Fragment Name | Setting Key | Routes | Action |
|
|
139
|
+
|--------------|-------------|--------|--------|
|
|
140
|
+
|
|
141
|
+
## 5. SDK Component Changes (if custom components needed)
|
|
142
|
+
|
|
143
|
+
### 5.1 Project
|
|
144
|
+
| Project | Action | Components |
|
|
145
|
+
|---------|--------|------------|
|
|
146
|
+
|
|
147
|
+
### 5.2 Component Specifications
|
|
148
|
+
| Component | Alias | Category | Props Interface | Hooks Used |
|
|
149
|
+
|-----------|-------|----------|----------------|------------|
|
|
150
|
+
|
|
151
|
+
### 5.3 Plugin Deployment
|
|
152
|
+
| Plugin Name | CDN URL | Bundle Hash Strategy |
|
|
153
|
+
|------------|---------|---------------------|
|
|
154
|
+
|
|
155
|
+
## 6. Settings & Deployment
|
|
156
|
+
|
|
157
|
+
### 6.1 Settings
|
|
158
|
+
| Setting Key | Context | Value Type | Action | Used By |
|
|
159
|
+
|------------|---------|------------|--------|---------|
|
|
160
|
+
|
|
161
|
+
### 6.2 i18n Keys
|
|
162
|
+
| Key | Default (en) | Used In |
|
|
163
|
+
|-----|-------------|---------|
|
|
164
|
+
|
|
165
|
+
### 6.3 Deployment Sequence
|
|
166
|
+
| # | Step | Depends On | Skill | Rollback |
|
|
167
|
+
|---|------|-----------|-------|----------|
|
|
168
|
+
|
|
169
|
+
## 7. Risks & Mitigations
|
|
170
|
+
| Risk | Severity | Mitigation |
|
|
171
|
+
|
|
172
|
+
## 8. Test Plan
|
|
173
|
+
| # | Test | Action | Expected | Assertion |
|
|
174
|
+
|---|------|--------|----------|-----------|
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Approval Protocol
|
|
178
|
+
|
|
179
|
+
1. **STOP** after presenting the plan. Wait for user approval.
|
|
180
|
+
2. **If approved** — proceed to implementation.
|
|
181
|
+
3. **If changes requested** — update plan, re-present, wait again.
|
|
182
|
+
4. **If rejected** — ask what approach the user prefers.
|
|
183
|
+
|
|
184
|
+
### Phase 3: Build / Scaffold
|
|
185
|
+
|
|
186
|
+
Execute the approved plan using the appropriate skill:
|
|
187
|
+
- `/fluent-mystique-builder` — manifest JSON creation/editing
|
|
188
|
+
- `/fluent-mystique-scaffold` — SDK component project scaffolding
|
|
189
|
+
|
|
190
|
+
### Phase 4: Validate
|
|
191
|
+
|
|
192
|
+
**ALWAYS run after any build.** Invoke `/fluent-mystique-validate` on all created/modified manifests.
|
|
193
|
+
|
|
194
|
+
- 0 CRITICAL + 0 HIGH = proceed to deploy
|
|
195
|
+
- Any CRITICAL or HIGH = fix before deploying
|
|
196
|
+
|
|
197
|
+
### Phase 5: Deploy
|
|
198
|
+
|
|
199
|
+
Manifests are deployed as Fluent account settings:
|
|
200
|
+
- Main manifests: `fc.mystique.manifest.<name>` at ACCOUNT context
|
|
201
|
+
- Fragments: `fc.mystique.manifest.fragment.<name>` at ACCOUNT context
|
|
202
|
+
- Use `/fluent-settings` or MCP `setting.upsert` for deployment
|
|
203
|
+
- SDK plugin bundles: deploy to CDN (Vercel recommended), update manifest `plugins[]` URL
|
|
204
|
+
|
|
205
|
+
### Phase 6: Test
|
|
206
|
+
|
|
207
|
+
- Verify manifest loads in browser (no console errors)
|
|
208
|
+
- Verify all pages render with expected components
|
|
209
|
+
- Verify data queries return expected data
|
|
210
|
+
- Verify user actions are available and functional
|
|
211
|
+
- Verify role-based visibility works
|
|
212
|
+
|
|
213
|
+
## Build vs Configure Decision Framework
|
|
214
|
+
|
|
215
|
+
**ALWAYS apply this before building anything:**
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
Step 1: Can OOTB manifest config do it?
|
|
219
|
+
├─ YES → /fluent-mystique-builder only (no SDK project needed)
|
|
220
|
+
│ • New list page → fc.page + fc.list
|
|
221
|
+
│ • Detail page → fc.page + fc.card.attribute + fc.provider.graphql
|
|
222
|
+
│ • Dashboard → fc.page + fc.chart.line + fc.chart.gauge
|
|
223
|
+
│ • Conditional display → fc.conditional
|
|
224
|
+
│ • Data iteration → fc.repeater
|
|
225
|
+
│ • Filtered views → fc.filterPanel + fc.list
|
|
226
|
+
│ • User actions → page actions (UserAction type)
|
|
227
|
+
│ • Print → fc.button.print + HTML template setting
|
|
228
|
+
│ • Role-based access → roles[] on routes/components
|
|
229
|
+
├─ NO → Step 2
|
|
230
|
+
│
|
|
231
|
+
Step 2: Creative composition of OOTB components?
|
|
232
|
+
├─ YES → /fluent-mystique-builder with advanced patterns
|
|
233
|
+
│ • Nested data → fc.provider.graphql + descendants
|
|
234
|
+
│ • Multi-tab detail → fc.tabs + fc.page.section
|
|
235
|
+
│ • Complex forms → mutation actions + field overrides
|
|
236
|
+
├─ NO → Step 3
|
|
237
|
+
│
|
|
238
|
+
Step 3: Field/template registry extension?
|
|
239
|
+
├─ YES → Lightweight SDK plugin (FieldRegistry or TemplateRegistry only)
|
|
240
|
+
├─ NO → Step 4
|
|
241
|
+
│
|
|
242
|
+
Step 4: Full custom component needed
|
|
243
|
+
└─ /fluent-mystique-scaffold → ComponentRegistry.register
|
|
244
|
+
• Novel visualizations, external integrations, custom interactions
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## OOTB Component Quick Reference
|
|
248
|
+
|
|
249
|
+
### What OOTB covers (DO NOT rebuild)
|
|
250
|
+
- Tables with pagination/filtering/sorting → `fc.list`
|
|
251
|
+
- Attribute cards → `fc.card.attribute`
|
|
252
|
+
- Detail page layouts → `fc.page` + `fc.grid` + columns
|
|
253
|
+
- Charts → `fc.chart.line`, `fc.chart.gauge`
|
|
254
|
+
- Forms/mutations → user action forms with field overrides
|
|
255
|
+
- Filters → `fc.filterPanel`
|
|
256
|
+
- Navigation → route system with sections/pages
|
|
257
|
+
- Role-based access → `roles[]` on any component/route
|
|
258
|
+
- Print → `fc.button.print`
|
|
259
|
+
- Barcode scanning → `fc.scanner.*`
|
|
260
|
+
- Event search → `fc.events.search` (OMS plugin)
|
|
261
|
+
- JSON viewing/editing → `fc.attribute.json`, `fc.attribute.jsoneditor`
|
|
262
|
+
|
|
263
|
+
### What typically needs custom components
|
|
264
|
+
- Custom data visualizations beyond line/bar/gauge
|
|
265
|
+
- Drag-and-drop interfaces (except `fc.field.sortablelist`)
|
|
266
|
+
- External service integrations (beyond Looker)
|
|
267
|
+
- Real-time features
|
|
268
|
+
- Novel workflow UIs not covered by user action forms
|
|
269
|
+
|
|
270
|
+
## Skills
|
|
271
|
+
|
|
272
|
+
| Phase | Skill | Purpose |
|
|
273
|
+
|-------|-------|---------|
|
|
274
|
+
| Analyze | `/fluent-mystique-analyze` | Component census, complexity scoring, pattern detection |
|
|
275
|
+
| Build manifests | `/fluent-mystique-builder` | Create/edit manifest JSON, pages, routes, components |
|
|
276
|
+
| Scaffold SDK | `/fluent-mystique-scaffold` | New SDK component projects with full toolchain |
|
|
277
|
+
| Validate | `/fluent-mystique-validate` | Schema compliance, prop checking, cross-references |
|
|
278
|
+
|
|
279
|
+
### Cross-Agent Delegation
|
|
280
|
+
|
|
281
|
+
When frontend work requires backend operations, delegate to the appropriate agent/skill:
|
|
282
|
+
|
|
283
|
+
| Frontend Need | Delegate To | Why |
|
|
284
|
+
|--------------|------------|-----|
|
|
285
|
+
| Deploy manifest as setting | `/fluent-settings` (backend) | Settings lifecycle management |
|
|
286
|
+
| Verify workflow user actions | `/fluent-transition-api` (backend) | Action availability for UI buttons |
|
|
287
|
+
| Feature planning (full stack) | `/fluent-feature-plan` (orchestrator) | Cross-cutting feature plans |
|
|
288
|
+
| Module deploy (for SDK bundle) | `/fluent-module-deploy` (backend) | Module lifecycle |
|
|
289
|
+
|
|
290
|
+
Direct CLI/MCP operations are acceptable for simple reads (e.g., checking a setting value), but any write operation that crosses into backend domain should go through the owning skill.
|
|
291
|
+
|
|
292
|
+
## Manifest Deployment Patterns
|
|
293
|
+
|
|
294
|
+
### Plugin Loading (version.json auto-discovery — recommended)
|
|
295
|
+
```json
|
|
296
|
+
{ "plugins": [{ "type": "url", "name": "my-plugin", "src": "https://cdn.example.com/my-plugin/" }] }
|
|
297
|
+
```
|
|
298
|
+
Mystique fetches `<src>/version.json` → loads hashed bundle. **Trailing `/` required.**
|
|
299
|
+
|
|
300
|
+
### Manifest as Setting
|
|
301
|
+
```
|
|
302
|
+
Setting key: fc.mystique.manifest.<name>
|
|
303
|
+
Context: ACCOUNT
|
|
304
|
+
Value: { complete manifest JSON }
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Fragment Composition
|
|
308
|
+
```json
|
|
309
|
+
{ "type": "reference", "settingName": "fc.mystique.manifest.fragment.<name>" }
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Key Principles
|
|
313
|
+
|
|
314
|
+
1. **Configure before coding** — Always try OOTB manifest configuration first. Only scaffold custom components when the 4-step decision framework reaches Step 4.
|
|
315
|
+
2. **Validate after every change** — Never deploy a manifest without running `/fluent-mystique-validate`.
|
|
316
|
+
3. **Plan before modifying** — Present a structured plan for any multi-page or multi-artifact change.
|
|
317
|
+
4. **Use OOTB aliases** — Reference exact OOTB component aliases; don't invent new names for existing components.
|
|
318
|
+
5. **Externals matter** — SDK projects MUST externalize React, ReactDOM, Material-UI core, Emotion, and Mystique. Must NOT externalize @material-ui/icons.
|
|
319
|
+
6. **Fragment for modularity** — Use manifest fragments for sections that multiple apps share or that evolve independently.
|
|
320
|
+
7. **i18n from the start** — Use `i18n:` prefix for all user-facing strings; never hardcode text in manifests.
|
|
321
|
+
8. **Test visually** — After deploying, verify in browser. Manifest validation catches structural issues but not visual/UX problems.
|
|
322
|
+
9. **Independent from backend** — Frontend plans, gates, and deployments operate on their own cadence. Coordinate with backend only when features span both (via `/fluent-feature-plan`).
|
|
323
|
+
10. **Width system** — Use named widths (`quarter`, `third`, `half`, `two-thirds`, `full`) for readability; numeric `1-12` for precision.
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fluent-archive
|
|
3
|
+
description: Archive completed or abandoned features. Updates status.json to ARCHIVED, generates an archive summary, and optionally cleans up ephemeral reports. Triggers on "archive feature", "archive this", "mark as archived", "close feature", "feature done".
|
|
4
|
+
user-invocable: true
|
|
5
|
+
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
|
|
6
|
+
argument-hint: <feature-slug> [--profile PROFILE] [--reason completed|abandoned|superseded] [--cleanup] [--force]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Feature Archival
|
|
10
|
+
|
|
11
|
+
Transition a feature to `ARCHIVED` status with proper audit trail, summary generation, and optional ephemeral cleanup. This is the complement to `/fluent-use-case-discover` (which creates features) — it retires them.
|
|
12
|
+
|
|
13
|
+
## Ownership Boundary
|
|
14
|
+
|
|
15
|
+
This skill owns: status transition to ARCHIVED, archive summary generation, optional ephemeral report cleanup.
|
|
16
|
+
|
|
17
|
+
Other skills own: all other status transitions (`/fluent-use-case-discover` → DISCOVERY, `/fluent-feature-plan` → PLANNING, etc.), canonical feature files (spec.md, plan.md, architecture.md).
|
|
18
|
+
|
|
19
|
+
**Safety invariant:** This skill NEVER deletes `spec.md`, `plan.md`, `architecture.md`, or `status.json`. These are permanent project records.
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
- Feature has been verified and deployed to production → `--reason completed`
|
|
24
|
+
- Feature was cancelled or de-scoped → `--reason abandoned`
|
|
25
|
+
- Feature was replaced by a newer version → `--reason superseded`
|
|
26
|
+
- Cleaning up old features to keep `/fluent-feature-status` dashboard focused
|
|
27
|
+
- End of a project phase — bulk archive verified features
|
|
28
|
+
|
|
29
|
+
## Inputs
|
|
30
|
+
|
|
31
|
+
| Parameter | Required | Default | Description |
|
|
32
|
+
|-----------|----------|---------|-------------|
|
|
33
|
+
| `<feature-slug>` | Yes | -- | Feature slug (directory name under `features/`) |
|
|
34
|
+
| `--profile` | No | Active CLI profile | Fluent CLI profile |
|
|
35
|
+
| `--reason` | No | Auto-detected | Archive reason: `completed`, `abandoned`, `superseded` |
|
|
36
|
+
| `--cleanup` | No | `false` | Remove ephemeral reports related to this feature |
|
|
37
|
+
| `--force` | No | `false` | Allow archiving IN_PROGRESS features (normally blocked) |
|
|
38
|
+
|
|
39
|
+
## Execution Flow
|
|
40
|
+
|
|
41
|
+
### Phase 1: Pre-flight Checks
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
1. Resolve profile from --profile or active profile
|
|
45
|
+
2. Verify accounts/<PROFILE>/features/<slug>/ exists
|
|
46
|
+
3. Read status.json
|
|
47
|
+
4. Validate transition:
|
|
48
|
+
VERIFIED → ARCHIVED : ALLOWED (default reason: completed)
|
|
49
|
+
APPROVED → ARCHIVED : ALLOWED (reason: abandoned or superseded required)
|
|
50
|
+
PLANNING → ARCHIVED : ALLOWED (reason: abandoned)
|
|
51
|
+
DISCOVERY → ARCHIVED : ALLOWED (reason: abandoned)
|
|
52
|
+
IN_PROGRESS → ARCHIVED : BLOCKED unless --force
|
|
53
|
+
ARCHIVED → ARCHIVED : NO-OP, warn "Already archived"
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Phase 2: Reason Resolution
|
|
57
|
+
|
|
58
|
+
If `--reason` not specified, auto-detect:
|
|
59
|
+
|
|
60
|
+
| Current Status | Default Reason |
|
|
61
|
+
|---------------|----------------|
|
|
62
|
+
| VERIFIED | `completed` |
|
|
63
|
+
| APPROVED | `abandoned` |
|
|
64
|
+
| PLANNING | `abandoned` |
|
|
65
|
+
| DISCOVERY | `abandoned` |
|
|
66
|
+
| IN_PROGRESS (with --force) | `abandoned` |
|
|
67
|
+
|
|
68
|
+
### Phase 3: Archive Execution
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
1. Read current status.json (full content)
|
|
72
|
+
- Read `retailers` array if present; fall back to `retailer` (string) for backward compatibility
|
|
73
|
+
|
|
74
|
+
2. Update fields:
|
|
75
|
+
{
|
|
76
|
+
"status": "ARCHIVED",
|
|
77
|
+
"updated": "<today>",
|
|
78
|
+
"archivedOn": "<today>",
|
|
79
|
+
"archiveReason": "<reason>",
|
|
80
|
+
"next": null
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
3. Write updated status.json
|
|
84
|
+
|
|
85
|
+
4. Generate archive-summary.md (companion file)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Phase 4: Archive Summary Generation
|
|
89
|
+
|
|
90
|
+
Write `accounts/<PROFILE>/features/<slug>/archive-summary.md`:
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
# Archive Summary: <feature-slug>
|
|
94
|
+
|
|
95
|
+
| Field | Value |
|
|
96
|
+
|-------|-------|
|
|
97
|
+
| Archived | 2026-02-25 |
|
|
98
|
+
| Reason | completed |
|
|
99
|
+
| Previous status | VERIFIED |
|
|
100
|
+
| Retailers | Module Test |
|
|
101
|
+
| Spec | APPROVED |
|
|
102
|
+
| Plan | APPROVED (rev 2) |
|
|
103
|
+
| Architecture | Yes |
|
|
104
|
+
| Based On | home-delivery |
|
|
105
|
+
|
|
106
|
+
## Canonical Artifacts (preserved)
|
|
107
|
+
- spec.md (1,234 bytes)
|
|
108
|
+
- plan.md (5,678 bytes)
|
|
109
|
+
- architecture.md (3,456 bytes)
|
|
110
|
+
- status.json (updated to ARCHIVED)
|
|
111
|
+
|
|
112
|
+
## Related Reports
|
|
113
|
+
- reports/build/fc-module-curbside-2026-02-24.json
|
|
114
|
+
- reports/pre-deploy/curbside-2026-02-24.json
|
|
115
|
+
- reports/e2e-test/curbside-2026-02-25.json
|
|
116
|
+
|
|
117
|
+
## Sessions
|
|
118
|
+
- sessions/abc123.json
|
|
119
|
+
- sessions/def456.json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Phase 5: Optional Cleanup (--cleanup)
|
|
123
|
+
|
|
124
|
+
When `--cleanup` is specified:
|
|
125
|
+
|
|
126
|
+
1. Scan `accounts/<PROFILE>/reports/` for files referencing this feature slug
|
|
127
|
+
2. List files that would be deleted and show to user
|
|
128
|
+
3. WAIT for user confirmation before deleting
|
|
129
|
+
4. Delete only ephemeral reports (build/, pre-deploy/, e2e-test/ files)
|
|
130
|
+
5. NEVER delete anything under `features/<slug>/` except ephemeral companions
|
|
131
|
+
|
|
132
|
+
**Protected files (NEVER delete):**
|
|
133
|
+
- `features/<slug>/spec.md`
|
|
134
|
+
- `features/<slug>/plan.md`
|
|
135
|
+
- `features/<slug>/architecture.md`
|
|
136
|
+
- `features/<slug>/status.json`
|
|
137
|
+
- `features/<slug>/archive-summary.md`
|
|
138
|
+
- `features/<slug>/history/*.md` (plan revision snapshots)
|
|
139
|
+
|
|
140
|
+
## Safety Guards
|
|
141
|
+
|
|
142
|
+
1. **NEVER delete canonical files** — spec.md, plan.md, architecture.md, status.json are permanent
|
|
143
|
+
2. **NEVER archive IN_PROGRESS without --force** — active work may be lost
|
|
144
|
+
3. **ALWAYS read current status before updating** — prevent race conditions
|
|
145
|
+
4. **ALWAYS generate archive-summary.md** — ensures audit trail
|
|
146
|
+
5. **WARN if feature has unfinished scope tasks** — check `analysis/scope/` for matching task files with `status: "pending"`
|
|
147
|
+
6. **WARN if feature has basedOn references** — other features may depend on this one's architecture.md
|
|
148
|
+
|
|
149
|
+
## Blocked Scenarios
|
|
150
|
+
|
|
151
|
+
### IN_PROGRESS without --force
|
|
152
|
+
```
|
|
153
|
+
-> BLOCKED: Feature "order-return" is IN_PROGRESS.
|
|
154
|
+
Active work may exist. To archive anyway, use --force.
|
|
155
|
+
Consider: run /fluent-feature-status to check what's pending.
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### Already archived
|
|
159
|
+
```
|
|
160
|
+
-> SKIP: Feature "old-feature" is already ARCHIVED (since 2026-02-20, reason: completed).
|
|
161
|
+
No action taken.
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Feature directory not found
|
|
165
|
+
```
|
|
166
|
+
-> BLOCKED: Feature "nonexistent" not found.
|
|
167
|
+
No directory at accounts/HMDEV/features/nonexistent/
|
|
168
|
+
Run /fluent-feature-status to see available features.
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Handoff Protocol
|
|
172
|
+
|
|
173
|
+
### Emitted Signals
|
|
174
|
+
- `-> READY: accounts/<PROFILE>/features/<slug>/archive-summary.md` -- Archive complete
|
|
175
|
+
- `-> BLOCKED: Feature is IN_PROGRESS` -- Cannot archive without --force
|
|
176
|
+
- `-> SKIP: Already archived` -- No action needed
|
|
177
|
+
|
|
178
|
+
### Consumed Signals
|
|
179
|
+
- Reads `status.json` from feature directory
|
|
180
|
+
- Reads `sessions` array to list related session exports
|
|
181
|
+
|
|
182
|
+
## Error Reporting
|
|
183
|
+
|
|
184
|
+
| Severity | Code | Scenario | Recovery |
|
|
185
|
+
|----------|------|----------|----------|
|
|
186
|
+
| CRITICAL | `WRITE_FAILED` | Cannot update status.json | Check file permissions |
|
|
187
|
+
| HIGH | `IN_PROGRESS_BLOCKED` | Feature is IN_PROGRESS | Use --force or complete the feature first |
|
|
188
|
+
| MEDIUM | `ORPHANED_REPORTS` | Reports exist but feature directory is missing | Manual cleanup needed |
|
|
189
|
+
| LOW | `ALREADY_ARCHIVED` | Feature is already ARCHIVED | No action needed |
|
|
190
|
+
|
|
191
|
+
## Session Tracking
|
|
192
|
+
|
|
193
|
+
When invoked, log:
|
|
194
|
+
```
|
|
195
|
+
SKILL: /fluent-archive
|
|
196
|
+
args: <slug> --profile <PROFILE> --reason <reason> [--cleanup] [--force]
|
|
197
|
+
outcome: completed | blocked | skipped
|
|
198
|
+
previous_status: <status>
|
|
199
|
+
archive_reason: completed | abandoned | superseded
|
|
200
|
+
cleanup_performed: true | false
|
|
201
|
+
files_cleaned: <count>
|
|
202
|
+
artifacts_preserved: [spec.md, plan.md, architecture.md, status.json]
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Integration with Other Skills
|
|
206
|
+
|
|
207
|
+
| Skill | Relationship |
|
|
208
|
+
|-------|-------------|
|
|
209
|
+
| `/fluent-feature-status` | Shows features ready to archive (VERIFIED status) |
|
|
210
|
+
| `/fluent-use-case-discover` | Creates features — this skill retires them |
|
|
211
|
+
| `/fluent-session-summary` | Session exports listed in archive summary |
|
|
212
|
+
| `/fluent-session-audit-export` | Provides session audit trail for the archive |
|
|
213
|
+
|
|
214
|
+
## Reversibility
|
|
215
|
+
|
|
216
|
+
Archival is **reversible**. To restore a feature:
|
|
217
|
+
|
|
218
|
+
1. Edit `status.json` manually:
|
|
219
|
+
- Set `status` back to previous state (e.g., `VERIFIED` or `APPROVED`)
|
|
220
|
+
- Clear `archivedOn` and `archiveReason`
|
|
221
|
+
- Set appropriate `next` value
|
|
222
|
+
2. The `archive-summary.md` remains as a record
|
|
223
|
+
|
|
224
|
+
No skill currently automates un-archival. This is intentional — restoring a feature should be a deliberate manual action.
|
|
225
|
+
|
|
226
|
+
## Tips
|
|
227
|
+
|
|
228
|
+
- Use `/fluent-feature-status --filter VERIFIED` to find features ready to archive
|
|
229
|
+
- `--reason completed` is the happy path — feature shipped successfully
|
|
230
|
+
- `--reason superseded` is useful when a v2 feature replaces a v1
|
|
231
|
+
- `--cleanup` saves disk space but is optional — reports are ephemeral anyway
|
|
232
|
+
- The archive-summary.md is a companion file — it won't interfere with other skills
|
|
233
|
+
- Bulk archival: run this skill multiple times, once per feature slug
|
|
234
|
+
- Archival is reversible — edit status.json to restore if needed
|