@fluentcommerce/ai-skills 0.1.0 → 0.2.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 +10 -16
- package/content/cli/skills/fluent-bootstrap/SKILL.md +9 -0
- package/content/cli/skills/fluent-cli-reference/SKILL.md +0 -408
- package/content/cli/skills/fluent-module-deploy/SKILL.md +21 -127
- package/content/dev/agents/fluent-dev/AGENT.md +76 -0
- package/content/dev/agents/fluent-dev/agent.json +2 -12
- package/content/dev/agents/fluent-dev.md +5 -6
- package/content/dev/skills/fluent-build/SKILL.md +16 -38
- package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +9 -13
- package/content/dev/skills/fluent-feature-plan/SKILL.md +8 -14
- package/content/dev/skills/fluent-module-scaffold/SKILL.md +9 -78
- package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +5 -23
- package/content/dev/skills/fluent-retailer-config/SKILL.md +9 -0
- package/content/dev/skills/fluent-rule-scaffold/SKILL.md +9 -0
- package/content/dev/skills/fluent-scope-decompose/SKILL.md +1 -1
- package/content/dev/skills/fluent-settings/SKILL.md +10 -0
- package/content/dev/skills/fluent-source-onboard/SKILL.md +9 -0
- package/content/dev/skills/fluent-sourcing/SKILL.md +1171 -0
- package/content/dev/skills/fluent-use-case-discover/SKILL.md +471 -0
- package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +260 -0
- package/content/dev/skills/fluent-version-manage/SKILL.md +10 -0
- package/content/dev/skills/fluent-workflow-builder/SKILL.md +10 -3
- package/content/mcp-extn/agents/fluent-mcp.md +65 -2
- package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +343 -4
- package/docs/CAPABILITY_MAP.md +3 -7
- package/docs/USE_CASES.md +4 -3
- package/docs/USE_CASES.pdf +0 -0
- package/metadata.json +8 -9
- package/package.json +2 -6
- package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +0 -714
- package/content/dev/skills/fluent-workflow-deploy/SKILL.md +0 -267
|
@@ -17,9 +17,36 @@ Quick reference for Fluent Commerce MCP extension server tools.
|
|
|
17
17
|
- Running GraphQL queries or mutations
|
|
18
18
|
- Bulk data operations via batch ingestion
|
|
19
19
|
- Validating inbound webhook payloads
|
|
20
|
+
- Creating, updating, and retrieving entities (Order, Fulfilment, Location, etc.)
|
|
21
|
+
- Deploying, diffing, and simulating workflows
|
|
22
|
+
- Managing settings (upsert, bulk upsert)
|
|
23
|
+
- Discovering and validating environment configuration
|
|
24
|
+
- Asserting entity state in E2E test sequences
|
|
25
|
+
- Monitoring event processing health via Prometheus metrics
|
|
20
26
|
|
|
21
27
|
This skill is the canonical MCP tool contract reference. Other skills should link here for payload syntax and limits instead of redefining tool schemas.
|
|
22
28
|
|
|
29
|
+
**Tool count: 36** — Diagnostics (3), Events (5), GraphQL (4), Batch (5), Orchestration (2), Metrics (5), Entity (3), Workflow (3), Settings (2), Environment (2), Test (1), Webhook (1).
|
|
30
|
+
|
|
31
|
+
## Diagnostics
|
|
32
|
+
|
|
33
|
+
### `config.validate`
|
|
34
|
+
|
|
35
|
+
No parameters. Validates auth/base URL/retailer configuration and reports readiness for API tools. Run this first.
|
|
36
|
+
|
|
37
|
+
### `health.ping`
|
|
38
|
+
|
|
39
|
+
No parameters. Quick diagnostics: confirms SDK adapter connection and config readiness when calls fail.
|
|
40
|
+
|
|
41
|
+
### `connection.test`
|
|
42
|
+
|
|
43
|
+
No parameters. Comprehensive connectivity test — authenticates, executes a `me` query, and returns:
|
|
44
|
+
- **User:** id, username, email, type, status, roles, permissions
|
|
45
|
+
- **Retailer:** id, ref, tradingName, primaryEmail
|
|
46
|
+
- **Location:** id, ref, name, type
|
|
47
|
+
|
|
48
|
+
More thorough than `health.ping` — verifies the GraphQL endpoint end-to-end. Use when first connecting, debugging auth issues, or verifying retailer/location context.
|
|
49
|
+
|
|
23
50
|
## Event API Semantics
|
|
24
51
|
|
|
25
52
|
For event data model, types, categories, statuses, execution model, event contracts, and query patterns — see `/fluent-event-api`. This skill focuses on MCP tool syntax and payload contracts only.
|
|
@@ -199,13 +226,12 @@ Use `graphql.introspect` to discover mutations, input types, and field requireme
|
|
|
199
226
|
1. `batch.create` - Create job (name, entityType, action)
|
|
200
227
|
2. `batch.send` - Send records (jobId, payload)
|
|
201
228
|
3. `batch.status` - Poll until terminal state
|
|
202
|
-
4. `batch.
|
|
229
|
+
4. `batch.batchStatus` - Check a specific batch inside a job (jobId + batchId). Use for troubleshooting partial failures within multi-batch jobs.
|
|
230
|
+
5. `batch.results` - Get per-record outcomes
|
|
203
231
|
|
|
204
232
|
## Event Analytics
|
|
205
233
|
|
|
206
|
-
### Metrics Tools
|
|
207
|
-
|
|
208
|
-
> The following tools are planned for a future release. They are documented here for reference but are not currently available in the MCP extension server.
|
|
234
|
+
### Metrics Tools
|
|
209
235
|
|
|
210
236
|
#### Health Check (Single Call)
|
|
211
237
|
|
|
@@ -407,6 +433,319 @@ For end-to-end workflow understanding:
|
|
|
407
433
|
2. `plugin.list` — look up rules referenced in rulesets to understand what each does
|
|
408
434
|
3. `workflow.transitions` — query user actions for each entity state to see what UI buttons appear
|
|
409
435
|
|
|
436
|
+
## Agentic Operations
|
|
437
|
+
|
|
438
|
+
Tools for agent-driven workflows: type-safe entity CRUD, workflow deployment, settings management, environment introspection, and state assertions.
|
|
439
|
+
|
|
440
|
+
### Entity Lifecycle
|
|
441
|
+
|
|
442
|
+
#### `entity.create`
|
|
443
|
+
|
|
444
|
+
Type-safe entity creation with built-in validation and gotcha knowledge.
|
|
445
|
+
|
|
446
|
+
| Parameter | Type | Required | Default | Description |
|
|
447
|
+
|-----------|------|----------|---------|-------------|
|
|
448
|
+
| `entityType` | string | yes | — | Entity type. Supported: ORDER, FULFILMENT, FULFILMENT_CHOICE, LOCATION, PRODUCT, INVENTORY_POSITION, INVENTORY_QUANTITY, NETWORK, VIRTUAL_CATALOGUE, WAVE, ARTICLE, CUSTOMER |
|
|
449
|
+
| `data` | object | yes | — | Entity creation input fields (matches GraphQL create input type) |
|
|
450
|
+
| `returnFields` | string[] | no | type defaults | Fields to return after creation |
|
|
451
|
+
| `dryRun` | boolean | no | false | If true, build and validate mutation without executing |
|
|
452
|
+
|
|
453
|
+
**Key behaviors:**
|
|
454
|
+
- Validates required fields BEFORE sending (e.g., Location needs `openingSchedule`)
|
|
455
|
+
- Encodes compound key rules (ProductKey needs `ref` + `catalogue.ref`)
|
|
456
|
+
- Auto-resolves `retailerId` from config for retailer-scoped entities
|
|
457
|
+
- Returns the executed mutation string for audit trail
|
|
458
|
+
|
|
459
|
+
**Gotchas encoded:**
|
|
460
|
+
- No create inputs have a `status` field (auto-set to CREATED)
|
|
461
|
+
- Customer has NO `ref` field — `username` is the identifier
|
|
462
|
+
- Network uses `name` not `ref` in create; `retailers` is a plural array
|
|
463
|
+
- Location requires `openingSchedule` (even for 24/7, use `allHours: true`)
|
|
464
|
+
- Product `gtin` has 20-char max
|
|
465
|
+
- Settings `context` is plain String, `contextId` is separate Int
|
|
466
|
+
|
|
467
|
+
```json
|
|
468
|
+
{
|
|
469
|
+
"entityType": "ORDER",
|
|
470
|
+
"data": {
|
|
471
|
+
"ref": "TEST-ORDER-001",
|
|
472
|
+
"type": "HD",
|
|
473
|
+
"retailer": { "id": 5 }
|
|
474
|
+
},
|
|
475
|
+
"dryRun": true
|
|
476
|
+
}
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
#### `entity.update`
|
|
480
|
+
|
|
481
|
+
Status-aware entity updates with optional transition validation.
|
|
482
|
+
|
|
483
|
+
| Parameter | Type | Required | Default | Description |
|
|
484
|
+
|-----------|------|----------|---------|-------------|
|
|
485
|
+
| `entityType` | string | yes | — | Entity type |
|
|
486
|
+
| `id` | string | yes | — | Entity ID |
|
|
487
|
+
| `fields` | object | yes | — | Fields to update |
|
|
488
|
+
| `returnFields` | string[] | no | type defaults | Fields to return after update |
|
|
489
|
+
| `validateTransition` | boolean | no | false | If true and status is changing, validates via `workflow.transitions` first |
|
|
490
|
+
|
|
491
|
+
```json
|
|
492
|
+
{
|
|
493
|
+
"entityType": "ORDER",
|
|
494
|
+
"id": "36",
|
|
495
|
+
"fields": { "status": "BOOKED" },
|
|
496
|
+
"validateTransition": true
|
|
497
|
+
}
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
#### `entity.get`
|
|
501
|
+
|
|
502
|
+
Unified entity lookup by ID or ref with optional edge inclusion.
|
|
503
|
+
|
|
504
|
+
| Parameter | Type | Required | Default | Description |
|
|
505
|
+
|-----------|------|----------|---------|-------------|
|
|
506
|
+
| `entityType` | string | yes | — | Entity type |
|
|
507
|
+
| `id` | string | no | — | Entity ID (preferred lookup) |
|
|
508
|
+
| `ref` | string | no | — | Entity ref (fallback; not available for CUSTOMER) |
|
|
509
|
+
| `fields` | string[] | no | type defaults | Fields to return |
|
|
510
|
+
| `includeEdges` | string[] | no | — | Related entity edges to include (e.g., `fulfilments`, `items`, `attributes`) |
|
|
511
|
+
|
|
512
|
+
Either `id` or `ref` must be provided.
|
|
513
|
+
|
|
514
|
+
```json
|
|
515
|
+
{
|
|
516
|
+
"entityType": "ORDER",
|
|
517
|
+
"ref": "HD-001",
|
|
518
|
+
"includeEdges": ["fulfilments", "items"]
|
|
519
|
+
}
|
|
520
|
+
```
|
|
521
|
+
|
|
522
|
+
### Workflow Management
|
|
523
|
+
|
|
524
|
+
#### `workflow.upload`
|
|
525
|
+
|
|
526
|
+
Deploy a workflow JSON definition to the Fluent environment via REST API.
|
|
527
|
+
|
|
528
|
+
| Parameter | Type | Required | Default | Description |
|
|
529
|
+
|-----------|------|----------|---------|-------------|
|
|
530
|
+
| `workflow` | string \| object | yes | — | Workflow JSON (as object or JSON string) |
|
|
531
|
+
| `retailerId` | string | no | from config | Target retailer ID |
|
|
532
|
+
| `validate` | boolean | no | true | Validate structure before uploading |
|
|
533
|
+
| `dryRun` | boolean | no | false | Validate only, do not deploy |
|
|
534
|
+
|
|
535
|
+
**Validation checks:** `name` present, at least one status defined, all rulesets have name/triggers/rules.
|
|
536
|
+
|
|
537
|
+
> For production deployments, prefer `fluent module install` via CLI which bundles workflows with settings, rules, and data in a versioned module. Use this tool for interactive editing, hotfixes, or when CLI is unavailable.
|
|
538
|
+
|
|
539
|
+
#### `workflow.diff`
|
|
540
|
+
|
|
541
|
+
Compare two workflow JSON definitions. Pure local computation — no API calls.
|
|
542
|
+
|
|
543
|
+
| Parameter | Type | Required | Default | Description |
|
|
544
|
+
|-----------|------|----------|---------|-------------|
|
|
545
|
+
| `base` | string \| object | yes | — | Base workflow (before) |
|
|
546
|
+
| `target` | string \| object | yes | — | Target workflow (after) |
|
|
547
|
+
| `format` | `"summary"` \| `"detailed"` \| `"mermaid"` | no | `"summary"` | Output format |
|
|
548
|
+
|
|
549
|
+
**Risk assessment:** Removing rulesets = HIGH, adding = LOW, modifying props = MEDIUM.
|
|
550
|
+
|
|
551
|
+
Formats:
|
|
552
|
+
- `summary` — change counts and risk level
|
|
553
|
+
- `detailed` — per-ruleset change breakdown
|
|
554
|
+
- `mermaid` — `stateDiagram-v2` with color-coded added/removed/modified states
|
|
555
|
+
|
|
556
|
+
#### `workflow.simulate`
|
|
557
|
+
|
|
558
|
+
Static prediction of workflow event outcomes. Pure local computation — no API calls.
|
|
559
|
+
|
|
560
|
+
| Parameter | Type | Required | Default | Description |
|
|
561
|
+
|-----------|------|----------|---------|-------------|
|
|
562
|
+
| `workflow` | string \| object | yes | — | Workflow JSON |
|
|
563
|
+
| `currentStatus` | string | yes | — | Current entity status to simulate from |
|
|
564
|
+
| `eventName` | string | no | — | Event name filter (if omitted, returns all matching rulesets) |
|
|
565
|
+
| `entityType` | string | no | — | Entity type filter |
|
|
566
|
+
| `entitySubtype` | string | no | — | Entity subtype filter |
|
|
567
|
+
|
|
568
|
+
**What it does:**
|
|
569
|
+
- Finds rulesets whose triggers match `currentStatus` (+ optional `eventName`)
|
|
570
|
+
- Extracts SetState rules → predicted next status
|
|
571
|
+
- Extracts SendEvent rules → predicted follow-on events
|
|
572
|
+
- Extracts SendWebhook rules → webhook side effects
|
|
573
|
+
- Identifies custom rules that cannot be statically predicted
|
|
574
|
+
|
|
575
|
+
**Important limitations (always disclosed in response):**
|
|
576
|
+
- STATIC ONLY: Cannot evaluate runtime conditions, entity attributes, or settings values
|
|
577
|
+
- CUSTOM RULES OPAQUE: Java plugin rules may conditionally execute
|
|
578
|
+
- NO CROSS-ENTITY: Does not follow SendEvent chains into child entity workflows
|
|
579
|
+
- Use `workflow.transitions` for AUTHORITATIVE live validation
|
|
580
|
+
|
|
581
|
+
```json
|
|
582
|
+
{
|
|
583
|
+
"workflow": { "name": "ORDER::HD", "rulesets": [...] },
|
|
584
|
+
"currentStatus": "CREATED",
|
|
585
|
+
"eventName": "ConfirmValidation"
|
|
586
|
+
}
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### Settings Management
|
|
590
|
+
|
|
591
|
+
#### `setting.upsert`
|
|
592
|
+
|
|
593
|
+
Create or update a Fluent Commerce setting. Upsert semantics — queries by name + context + contextId first, creates if missing, updates if exists.
|
|
594
|
+
|
|
595
|
+
| Parameter | Type | Required | Default | Description |
|
|
596
|
+
|-----------|------|----------|---------|-------------|
|
|
597
|
+
| `name` | string | yes | — | Setting key/name |
|
|
598
|
+
| `value` | string | yes | — | Setting value (for small values). Mutually exclusive with `lobValue` |
|
|
599
|
+
| `lobValue` | string | no | — | Large object value (for JSON payloads > 4KB) |
|
|
600
|
+
| `context` | string | yes | — | Scope: `RETAILER`, `ACCOUNT`, `LOCATION`, `NETWORK`, `AGENT`, `CUSTOMER` |
|
|
601
|
+
| `contextId` | integer | no | from config | Context ID (e.g., retailer ID). Falls back to `FLUENT_RETAILER_ID` for RETAILER context |
|
|
602
|
+
|
|
603
|
+
**Key gotchas:**
|
|
604
|
+
- `context` is a plain String (`"RETAILER"`), NOT an object
|
|
605
|
+
- `contextId` is a separate Int field
|
|
606
|
+
- For large JSON values (>4KB), use `lobValue` instead of `value`
|
|
607
|
+
- Returns `created: true/false` and `previousValue` for audit trail
|
|
608
|
+
|
|
609
|
+
```json
|
|
610
|
+
{
|
|
611
|
+
"name": "WEBHOOK_ORDER_URL",
|
|
612
|
+
"value": "https://example.com/webhook",
|
|
613
|
+
"context": "RETAILER"
|
|
614
|
+
}
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
#### `setting.bulkUpsert`
|
|
618
|
+
|
|
619
|
+
Batch create or update multiple settings in one call.
|
|
620
|
+
|
|
621
|
+
| Parameter | Type | Required | Default | Description |
|
|
622
|
+
|-----------|------|----------|---------|-------------|
|
|
623
|
+
| `settings` | array | yes | — | Array of setting objects (min 1, max 50). Each has: `name`, `value`, `context`, optional `lobValue`, `contextId` |
|
|
624
|
+
|
|
625
|
+
Processes sequentially with individual error handling. Returns `created`, `updated`, `failed` counts plus per-setting results.
|
|
626
|
+
|
|
627
|
+
```json
|
|
628
|
+
{
|
|
629
|
+
"settings": [
|
|
630
|
+
{ "name": "WEBHOOK_ORDER_URL", "value": "https://...", "context": "RETAILER" },
|
|
631
|
+
{ "name": "WEBHOOK_FULFILMENT_URL", "value": "https://...", "context": "RETAILER" }
|
|
632
|
+
]
|
|
633
|
+
}
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### Environment Introspection
|
|
637
|
+
|
|
638
|
+
#### `environment.discover`
|
|
639
|
+
|
|
640
|
+
Full environment snapshot in one call.
|
|
641
|
+
|
|
642
|
+
| Parameter | Type | Required | Default | Description |
|
|
643
|
+
|-----------|------|----------|---------|-------------|
|
|
644
|
+
| `include` | string[] | no | `["retailer", "locations", "networks", "catalogues"]` | Sections to include. Valid: `retailer`, `locations`, `networks`, `catalogues`, `workflows`, `settings`, `modules`, `users` |
|
|
645
|
+
|
|
646
|
+
Returns everything an agent needs: retailer details, locations with type/status, networks with associated locations, catalogues (inventory + product + virtual), deployed workflows, settings, modules, and authenticated user info.
|
|
647
|
+
|
|
648
|
+
**Limitations:**
|
|
649
|
+
- Locations and settings return first 100 items only (use `graphql.queryAll` for complete list)
|
|
650
|
+
- Workflows section uses transition API probe — use `fluent workflow list` via CLI for definitive workflow listing
|
|
651
|
+
|
|
652
|
+
```json
|
|
653
|
+
{
|
|
654
|
+
"include": ["retailer", "locations", "networks", "catalogues", "settings", "workflows"]
|
|
655
|
+
}
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
#### `environment.validate`
|
|
659
|
+
|
|
660
|
+
Pre-flight environment validation before E2E tests or deployments.
|
|
661
|
+
|
|
662
|
+
| Parameter | Type | Required | Default | Description |
|
|
663
|
+
|-----------|------|----------|---------|-------------|
|
|
664
|
+
| `checks` | string[] | no | `["auth", "retailer", "locations"]` | Checks to run. Valid: `auth`, `retailer`, `locations`, `inventory`, `workflows`, `settings`, `modules` |
|
|
665
|
+
|
|
666
|
+
Returns pass/fail per check with severity (`info`, `warning`, `error`) and actionable messages.
|
|
667
|
+
|
|
668
|
+
**Checks performed:**
|
|
669
|
+
- `auth` — token valid, permissions sufficient
|
|
670
|
+
- `retailer` — exists, active
|
|
671
|
+
- `locations` — at least one warehouse/store exists
|
|
672
|
+
- `inventory` — at least one product with stock > 0
|
|
673
|
+
- `workflows` — key workflows deployed (ORDER, FULFILMENT)
|
|
674
|
+
- `settings` — settings exist in environment
|
|
675
|
+
- `modules` — modules deployed (via plugin registry)
|
|
676
|
+
|
|
677
|
+
```json
|
|
678
|
+
{
|
|
679
|
+
"checks": ["auth", "retailer", "locations", "inventory", "workflows"]
|
|
680
|
+
}
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### Testing
|
|
684
|
+
|
|
685
|
+
#### `test.assert`
|
|
686
|
+
|
|
687
|
+
Assert entity state matches expectations with optional polling. Deep assertion on entity fields, attributes, and edge counts/statuses.
|
|
688
|
+
|
|
689
|
+
| Parameter | Type | Required | Default | Description |
|
|
690
|
+
|-----------|------|----------|---------|-------------|
|
|
691
|
+
| `entityType` | string | yes | — | Entity type (ORDER, FULFILMENT, etc.) |
|
|
692
|
+
| `id` | string | no | — | Entity ID (preferred) |
|
|
693
|
+
| `ref` | string | no | — | Entity ref (fallback) |
|
|
694
|
+
| `assertions` | object | yes | — | Assertion conditions (see below) |
|
|
695
|
+
| `poll` | boolean | no | false | Enable polling mode (retry until pass or timeout) |
|
|
696
|
+
| `timeoutMs` | integer | no | 60000 | Polling timeout in ms (min 1000, max 300000) |
|
|
697
|
+
| `intervalMs` | integer | no | 5000 | Polling interval in ms (min 1000, max 30000) |
|
|
698
|
+
|
|
699
|
+
**Assertion fields:**
|
|
700
|
+
- `status` — exact match on entity status
|
|
701
|
+
- `type` — exact match on entity type
|
|
702
|
+
- `subtype` — exact match on entity subtype
|
|
703
|
+
- `attributes` — key-value pairs that must be present
|
|
704
|
+
- `edges` — per-edge assertions with `minCount`, `maxCount`, `status`
|
|
705
|
+
|
|
706
|
+
**Polling mode:** Set `poll: true` to retry until assertions pass or timeout. Useful after sending events when state changes are async.
|
|
707
|
+
|
|
708
|
+
```json
|
|
709
|
+
{
|
|
710
|
+
"entityType": "ORDER",
|
|
711
|
+
"ref": "HD-001",
|
|
712
|
+
"assertions": {
|
|
713
|
+
"status": "BOOKED",
|
|
714
|
+
"edges": {
|
|
715
|
+
"fulfilments": { "minCount": 1, "status": "CREATED" }
|
|
716
|
+
}
|
|
717
|
+
},
|
|
718
|
+
"poll": true,
|
|
719
|
+
"timeoutMs": 30000
|
|
720
|
+
}
|
|
721
|
+
```
|
|
722
|
+
|
|
723
|
+
## Webhook Validation
|
|
724
|
+
|
|
725
|
+
### `webhook.validate`
|
|
726
|
+
|
|
727
|
+
Validate a Fluent Commerce webhook payload and optionally verify its signature.
|
|
728
|
+
|
|
729
|
+
| Parameter | Type | Required | Default | Description |
|
|
730
|
+
|-----------|------|----------|---------|-------------|
|
|
731
|
+
| `payload` | object | yes | — | Webhook payload. Must include `name`, `id`, `retailerId` for basic validation |
|
|
732
|
+
| `rawBody` | string | no | — | Exact raw HTTP request body for signature verification (avoids false negatives from JSON re-serialization) |
|
|
733
|
+
| `signature` | string | no | — | X-Fluent-Signature header value (base64). Required for signature validation |
|
|
734
|
+
| `publicKey` | string | no | — | Fluent public key (PEM format). Required when `signature` is provided |
|
|
735
|
+
| `algorithm` | `"SHA512withRSA"` \| `"MD5withRSA"` | no | `"SHA512withRSA"` | Signature algorithm |
|
|
736
|
+
|
|
737
|
+
**Two modes:**
|
|
738
|
+
1. **Basic validation** (no signature): Checks required fields present
|
|
739
|
+
2. **Signature validation**: Verifies X-Fluent-Signature against the body using the public key
|
|
740
|
+
|
|
741
|
+
```json
|
|
742
|
+
{
|
|
743
|
+
"payload": { "name": "OrderCreated", "id": "123", "retailerId": "1" },
|
|
744
|
+
"signature": "<base64-sig>",
|
|
745
|
+
"publicKey": "<PEM-key>"
|
|
746
|
+
}
|
|
747
|
+
```
|
|
748
|
+
|
|
410
749
|
## Response Optimization
|
|
411
750
|
|
|
412
751
|
High-volume tools support response shaping to reduce token consumption:
|
package/docs/CAPABILITY_MAP.md
CHANGED
|
@@ -34,23 +34,18 @@ Use it to avoid duplicate guidance and conflicting instructions.
|
|
|
34
34
|
| MCP extension tool reference (syntax/limits) | `content/mcp-extn/skills/fluent-mcp-tools/SKILL.md` | Canonical tool-level reference |
|
|
35
35
|
| MCP core setup and GraphQL core utilities | `content/mcp-official/skills/fluent-mcp-core/SKILL.md` | Canonical official MCP server reference |
|
|
36
36
|
| Account connection, workspace discovery, JAR decompilation, and cached state | `content/cli/skills/fluent-connect/SKILL.md` | Guided onboarding — discovers profiles, wires MCP, downloads workflows, decompiles JARs, builds rule inventory, persists workspace state |
|
|
37
|
-
| Complete account bootstrap (profile, retailer, modules, sample data) | `content/cli/skills/fluent-bootstrap/SKILL.md` | End-to-end account setup wizard with planning gate |
|
|
38
|
-
| CLI profile lifecycle (create, switch, list, export, update) | `content/cli/skills/fluent-profile/SKILL.md` | Profile CRUD, active context, Postman export |
|
|
39
|
-
| Ready For Launch production readiness assessment | `content/rfl/skills/fluent-rfl-assess/SKILL.md` | Scored go-live audit across workflows, rules, settings, integrations |
|
|
40
37
|
| Connection topology, cross-entity dependency maps, static-vs-dynamic runtime diffs, webhook/setting conformance | `content/dev/skills/fluent-connection-analysis/SKILL.md` | Topology analysis, orphan detection, process flow classification, --validate mode for runtime coverage comparison, settings conformance inventories |
|
|
41
38
|
| JOB/BATCH entity lifecycle diagnostics and monitoring | `content/dev/skills/fluent-job-batch/SKILL.md` | JOB/BATCH orchestration lifecycle, batch ingestion monitoring, job status tracking |
|
|
42
39
|
| Session change tracking and audit reporting (text + JSON) | `content/dev/skills/fluent-session-summary/SKILL.md` | Running change log of all write operations; structured summary on demand; lightweight JSON export |
|
|
43
40
|
| Module skeleton scaffolding (Maven, POMs, module.json, rules) | `content/dev/skills/fluent-module-scaffold/SKILL.md` | New-vs-extend decision tree; generates buildable module under `accounts/<PROFILE>/SOURCE/` |
|
|
44
41
|
| Scope document decomposition into task lists | `content/dev/skills/fluent-scope-decompose/SKILL.md` | Parses ADD scope docs into ordered tasks with dependency DAG, skill mappings, ambiguity flags |
|
|
45
42
|
| Version lifecycle (read, bump, sync, tag) | `content/dev/skills/fluent-version-manage/SKILL.md` | Semver bumps across POM files, module.json, CHANGELOG; git tag creation |
|
|
46
|
-
| Pre-deployment quality gates | `content/dev/skills/fluent-pre-deploy-check/SKILL.md` |
|
|
43
|
+
| Pre-deployment quality gates | `content/dev/skills/fluent-pre-deploy-check/SKILL.md` | 25 gates across 8 phases; blocks deployment on critical failures |
|
|
47
44
|
| Machine-readable compliance audit export | `content/dev/skills/fluent-session-audit-export/SKILL.md` | JSON audit trail with traceability matrix, rollback commands, compliance metadata |
|
|
48
45
|
| Feature reverse-engineering and architecture documentation | `content/dev/skills/fluent-feature-explain/SKILL.md` | Synthesizes workflow, code, connection, and runtime analysis into a persisted Feature Architecture Document with Mermaid diagrams. Tiered evidence: plugin.list (always) → decompiled JAR / original source → runtime. Auto-discovers entities for runtime, decompiles JARs when no source. Includes Analysis Confidence section with per-rule evidence levels. |
|
|
49
46
|
| Feature implementation planning (multi-artifact) | `content/dev/skills/fluent-feature-plan/SKILL.md` | Produces comprehensive 18-section feature plans with universal NEW/EXISTING/MODIFIED/REUSED/OOTB Source classification across all artifacts (rules, rulesets, statuses, settings, webhooks, GraphQL ops, cross-entity impacts). For NEW rules: pseudo logic contract. For OOTB: prop configuration. Template at `PLAN_TEMPLATE.md` (sibling file in skill directory). |
|
|
50
47
|
| Source code onboarding into Fluent module format | `content/dev/skills/fluent-source-onboard/SKILL.md` | Restructures non-standard Java source (loose files, decompiled JARs, Gradle projects, partial modules) into Maven multi-module Fluent extension module format. Validates with module-validate, attempts build, reconciles against deployed rules. |
|
|
51
|
-
|
|
|
52
|
-
| Data module scaffolding (no Java, assets only) | `content/dev/skills/fluent-data-module-scaffold/SKILL.md` | Scaffolds data modules with 14 asset directories, module.json, config template with prefix system, build scripts |
|
|
53
|
-
| Mermaid diagram syntax validation | `content/dev/skills/fluent-mermaid-validate/SKILL.md` | Internal validator called by diagram-generating skills; pitfall tables for stateDiagram-v2, sequenceDiagram, flowchart, erDiagram |
|
|
48
|
+
| Sourcing framework reference (profiles, strategies, conditions, criteria, scoring, extensions) | `content/dev/skills/fluent-sourcing/SKILL.md` | Comprehensive reference for Responsive Sourcing Framework v2.1+. Covers evaluation flow, 10 condition operators, 11 built-in criteria with scoring models, normalization algorithm, permutation search, settings schema, workflow integration rules, custom Java extensions, and operational GraphQL patterns. Chains to `/fluent-rule-scaffold` for custom extension wiring, `/fluent-workflow-builder` for sourcing rulesets, `/fluent-settings` for sourcing settings CRUD. |
|
|
54
49
|
|
|
55
50
|
## Reconciliation Rules
|
|
56
51
|
|
|
@@ -73,5 +68,6 @@ Use it to avoid duplicate guidance and conflicting instructions.
|
|
|
73
68
|
| "Why did this fail / entity stuck?" | `fluent-trace` | Repeating generic setup when failure context is already known |
|
|
74
69
|
| "Explain feature / how does X work / document this flow" | `fluent-feature-explain` | Running individual analysis skills without synthesizing into a document |
|
|
75
70
|
| "Plan this feature / implement curbside / design the return flow" | `fluent-feature-plan` | Using individual skills without a comprehensive plan first |
|
|
71
|
+
| "How does sourcing work / configure sourcing profile / debug sourcing" | `fluent-sourcing` | Reimplementing sourcing logic reference in other skills |
|
|
76
72
|
|
|
77
73
|
Handoff rule: when E2E fails, pass `entityRef`, `entityType`, `eventId` (if available), and expected vs actual status to `fluent-trace`.
|
package/docs/USE_CASES.md
CHANGED
|
@@ -28,8 +28,9 @@ A scenario-based guide to everything your AI assistant can do after installing `
|
|
|
28
28
|
| Check module health | "What modules are deployed? Are they valid?" | `/fluent-module-validate` |
|
|
29
29
|
| Plan a multi-artifact feature | "Plan the curbside pickup feature" | `/fluent-feature-plan` |
|
|
30
30
|
| Onboard existing source into module format | "Refactor this code into a Fluent module" | `/fluent-source-onboard` |
|
|
31
|
-
|
|
|
32
|
-
|
|
|
31
|
+
| Understand sourcing configuration | "How does sourcing work? What criteria are available?" | `/fluent-sourcing` |
|
|
32
|
+
| Configure a sourcing profile | "Create an HD sourcing profile with distance + stock criteria" | `/fluent-sourcing` |
|
|
33
|
+
| Debug sourcing decisions | "Why was this location selected for the order?" | `/fluent-sourcing` → `/fluent-trace` |
|
|
33
34
|
|
|
34
35
|
---
|
|
35
36
|
|
|
@@ -271,7 +272,7 @@ Maps all internal, cross-entity, and cross-workflow connections. Flags any rules
|
|
|
271
272
|
```
|
|
272
273
|
Deploy the updated ORDER::HD workflow
|
|
273
274
|
```
|
|
274
|
-
|
|
275
|
+
Validates structure, uploads via REST API, returns new version number.
|
|
275
276
|
|
|
276
277
|
**Step 4: Verify**
|
|
277
278
|
```
|
|
Binary file
|
package/metadata.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.0
|
|
2
|
+
"version": "0.2.0",
|
|
3
3
|
"organization": "Fluent Commerce",
|
|
4
4
|
"date": "February 2026",
|
|
5
5
|
"package": "@fluentcommerce/ai-skills",
|
|
@@ -91,13 +91,10 @@
|
|
|
91
91
|
"skills": [
|
|
92
92
|
"fluent-workflow-builder",
|
|
93
93
|
"fluent-workflow-analyzer",
|
|
94
|
-
"fluent-workflow-deploy",
|
|
95
94
|
"fluent-custom-code",
|
|
96
95
|
"fluent-transition-api",
|
|
97
96
|
"fluent-rule-scaffold",
|
|
98
97
|
"fluent-module-validate",
|
|
99
|
-
"fluent-module-scaffold",
|
|
100
|
-
"fluent-data-module-scaffold",
|
|
101
98
|
"fluent-build",
|
|
102
99
|
"fluent-trace",
|
|
103
100
|
"fluent-event-api",
|
|
@@ -109,6 +106,7 @@
|
|
|
109
106
|
"fluent-connection-analysis",
|
|
110
107
|
"fluent-job-batch",
|
|
111
108
|
"fluent-session-summary",
|
|
109
|
+
"fluent-module-scaffold",
|
|
112
110
|
"fluent-scope-decompose",
|
|
113
111
|
"fluent-version-manage",
|
|
114
112
|
"fluent-pre-deploy-check",
|
|
@@ -116,18 +114,16 @@
|
|
|
116
114
|
"fluent-feature-explain",
|
|
117
115
|
"fluent-feature-plan",
|
|
118
116
|
"fluent-source-onboard",
|
|
119
|
-
"fluent-
|
|
117
|
+
"fluent-use-case-discover",
|
|
118
|
+
"fluent-sourcing"
|
|
120
119
|
],
|
|
121
120
|
"commands": [
|
|
122
121
|
"/fluent-workflow-builder",
|
|
123
122
|
"/fluent-workflow-analyzer",
|
|
124
|
-
"/fluent-workflow-deploy",
|
|
125
123
|
"/fluent-custom-code",
|
|
126
124
|
"/fluent-transition-api",
|
|
127
125
|
"/fluent-rule-scaffold",
|
|
128
126
|
"/fluent-module-validate",
|
|
129
|
-
"/fluent-module-scaffold",
|
|
130
|
-
"/fluent-data-module-scaffold",
|
|
131
127
|
"/fluent-build",
|
|
132
128
|
"/fluent-trace",
|
|
133
129
|
"/fluent-event-api",
|
|
@@ -139,13 +135,16 @@
|
|
|
139
135
|
"/fluent-connection-analysis",
|
|
140
136
|
"/fluent-job-batch",
|
|
141
137
|
"/fluent-session-summary",
|
|
138
|
+
"/fluent-module-scaffold",
|
|
142
139
|
"/fluent-scope-decompose",
|
|
143
140
|
"/fluent-version-manage",
|
|
144
141
|
"/fluent-pre-deploy-check",
|
|
145
142
|
"/fluent-session-audit-export",
|
|
146
143
|
"/fluent-feature-explain",
|
|
147
144
|
"/fluent-feature-plan",
|
|
148
|
-
"/fluent-source-onboard"
|
|
145
|
+
"/fluent-source-onboard",
|
|
146
|
+
"/fluent-use-case-discover",
|
|
147
|
+
"/fluent-sourcing"
|
|
149
148
|
]
|
|
150
149
|
}
|
|
151
150
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentcommerce/ai-skills",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Fluent Commerce domain knowledge for AI coding assistants. Teaches Claude Code, Cursor, Copilot, Codex, Windsurf, and Gemini how to work with Fluent workflows, events, rules, and APIs.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fluent-commerce",
|
|
@@ -30,16 +30,12 @@
|
|
|
30
30
|
"scripts": {
|
|
31
31
|
"test:smoke": "node scripts/smoke-test.mjs",
|
|
32
32
|
"test:pack": "node scripts/smoke-pack.mjs",
|
|
33
|
-
"test": "npm run test:smoke && npm run test:pack"
|
|
34
|
-
"prepublishOnly": "npm test"
|
|
33
|
+
"test": "npm run test:smoke && npm run test:pack"
|
|
35
34
|
},
|
|
36
35
|
"type": "module",
|
|
37
36
|
"engines": {
|
|
38
37
|
"node": ">=18.0.0"
|
|
39
38
|
},
|
|
40
|
-
"publishConfig": {
|
|
41
|
-
"access": "public"
|
|
42
|
-
},
|
|
43
39
|
"files": [
|
|
44
40
|
"bin/",
|
|
45
41
|
"content/",
|