@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.

Files changed (31) hide show
  1. package/README.md +10 -16
  2. package/content/cli/skills/fluent-bootstrap/SKILL.md +9 -0
  3. package/content/cli/skills/fluent-cli-reference/SKILL.md +0 -408
  4. package/content/cli/skills/fluent-module-deploy/SKILL.md +21 -127
  5. package/content/dev/agents/fluent-dev/AGENT.md +76 -0
  6. package/content/dev/agents/fluent-dev/agent.json +2 -12
  7. package/content/dev/agents/fluent-dev.md +5 -6
  8. package/content/dev/skills/fluent-build/SKILL.md +16 -38
  9. package/content/dev/skills/fluent-feature-plan/PLAN_TEMPLATE.md +9 -13
  10. package/content/dev/skills/fluent-feature-plan/SKILL.md +8 -14
  11. package/content/dev/skills/fluent-module-scaffold/SKILL.md +9 -78
  12. package/content/dev/skills/fluent-pre-deploy-check/SKILL.md +5 -23
  13. package/content/dev/skills/fluent-retailer-config/SKILL.md +9 -0
  14. package/content/dev/skills/fluent-rule-scaffold/SKILL.md +9 -0
  15. package/content/dev/skills/fluent-scope-decompose/SKILL.md +1 -1
  16. package/content/dev/skills/fluent-settings/SKILL.md +10 -0
  17. package/content/dev/skills/fluent-source-onboard/SKILL.md +9 -0
  18. package/content/dev/skills/fluent-sourcing/SKILL.md +1171 -0
  19. package/content/dev/skills/fluent-use-case-discover/SKILL.md +471 -0
  20. package/content/dev/skills/fluent-use-case-discover/SPEC_TEMPLATE.md +260 -0
  21. package/content/dev/skills/fluent-version-manage/SKILL.md +10 -0
  22. package/content/dev/skills/fluent-workflow-builder/SKILL.md +10 -3
  23. package/content/mcp-extn/agents/fluent-mcp.md +65 -2
  24. package/content/mcp-extn/skills/fluent-mcp-tools/SKILL.md +343 -4
  25. package/docs/CAPABILITY_MAP.md +3 -7
  26. package/docs/USE_CASES.md +4 -3
  27. package/docs/USE_CASES.pdf +0 -0
  28. package/metadata.json +8 -9
  29. package/package.json +2 -6
  30. package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +0 -714
  31. 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.results` - Get per-record outcomes
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 (Planned -- Not Yet Implemented)
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:
@@ -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` | 26 gates across 8 phases; blocks deployment on critical failures |
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
- | Workflow deployment (upload, validation, versioning, rollback) | `content/dev/skills/fluent-workflow-deploy/SKILL.md` | MCP `workflow.upload` primary, REST API fallback, CLI last resort; planning gate, dry-run validation, module dependency checks |
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
- | Deploy a workflow to an environment | "Deploy the updated ORDER::HD workflow" | `/fluent-workflow-deploy` |
32
- | Create a data-only module (no Java) | "Scaffold a data module for locations and settings" | `/fluent-data-module-scaffold` |
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
- Uses `/fluent-workflow-deploy` — validates structure, uploads via MCP `workflow.upload` tool (with dry-run first), falls back to REST API if needed, returns new version number.
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.1",
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-mermaid-validate"
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.1.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/",