@fluentcommerce/ai-skills 0.13.0 → 0.14.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.
- package/README.md +14 -12
- package/bin/cli.mjs +29 -2
- package/content/cli/skills/fluent-connect/SKILL.md +57 -2
- package/content/cli/skills/fluent-profile/SKILL.md +35 -5
- package/content/dev/agents/fluent-backend-dev.md +2 -2
- package/content/dev/agents/fluent-dev.md +1 -1
- package/content/dev/skills/fluent-custom-code/SKILL.md +1 -1
- package/content/dev/skills/fluent-data-module-scaffold/SKILL.md +5 -5
- package/content/dev/skills/fluent-event-api/SKILL.md +1 -1
- package/content/dev/skills/{fluent-source-onboard → fluent-module-convert}/SKILL.md +223 -24
- package/content/dev/skills/fluent-module-validate/SKILL.md +6 -6
- package/content/dev/skills/fluent-mystique-builder/SKILL.md +1 -1
- package/content/dev/skills/fluent-mystique-scaffold/SDK_REFERENCE.md +2 -2
- package/content/dev/skills/fluent-mystique-scaffold/SKILL.md +1 -1
- package/content/dev/skills/fluent-mystique-scaffold/TEMPLATES.md +1 -1
- package/content/dev/skills/fluent-retailer-config/SKILL.md +2 -2
- package/content/dev/skills/fluent-scope-plan/SKILL.md +1 -1
- package/content/dev/skills/fluent-transition-api/SKILL.md +1 -1
- package/content/dev/skills/fluent-ui-test/SKILL.md +8 -7
- package/content/dev/skills/fluent-workspace-tree/SKILL.md +2 -2
- package/content/knowledge/index.md +3 -3
- package/content/knowledge/platform/module-structure.md +5 -5
- package/content/knowledge/platform/mystique-routing.md +6 -3
- package/content/knowledge/platform/permissions-and-contexts.md +2 -2
- package/content/knowledge/platform/rule-test-patterns.md +1 -1
- package/docs/01-first-session.md +175 -0
- package/docs/02-prompt-guide.md +246 -0
- package/docs/03-use-cases.md +1179 -0
- package/docs/04-onboarding-plan.md +355 -0
- package/docs/05-getting-started.md +262 -0
- package/docs/06-dev-workflow.md +1040 -0
- package/docs/INDEX.md +40 -0
- package/docs/agents-and-skills-guide.md +199 -0
- package/docs/capability-map.md +165 -0
- package/docs/chrome-devtools-mcp-reference.md +400 -0
- package/docs/fluent-ai-skills-reference.md +1351 -0
- package/docs/manifest-safety.md +79 -0
- package/docs/mcp-servers.md +209 -0
- package/docs/workflow-reference.md +167 -0
- package/lib/fluent-brand.css +55 -0
- package/metadata.json +7 -6
- package/package.json +12 -3
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
> - **No warranty** — provided as-is for experimentation and internal evaluation only
|
|
13
13
|
> - **Do NOT use in production** without thorough review and explicit sign-off from your team
|
|
14
14
|
>
|
|
15
|
-
> Pin to an exact version (`@0.
|
|
15
|
+
> Pin to an exact version (`@0.13.0`) if you depend on current behavior.
|
|
16
16
|
|
|
17
17
|
Teach your AI assistant to work with [Fluent Commerce](https://fluentcommerce.com) (distributed order management) — analyze workflows, scaffold rules, debug events, build manifests, and deploy — all through natural language.
|
|
18
18
|
|
|
@@ -382,7 +382,7 @@ You can have multiple workspaces (e.g., one per client) each with different prof
|
|
|
382
382
|
npx @fluentcommerce/ai-skills --version
|
|
383
383
|
```
|
|
384
384
|
|
|
385
|
-
This prints the exact package version `npx` resolves for this workspace, for example `fluent-ai-skills v0.
|
|
385
|
+
This prints the exact package version `npx` resolves for this workspace, for example `fluent-ai-skills v0.13.0`.
|
|
386
386
|
|
|
387
387
|
**Run `doctor` — it checks everything in one shot:**
|
|
388
388
|
|
|
@@ -390,7 +390,7 @@ This prints the exact package version `npx` resolves for this workspace, for exa
|
|
|
390
390
|
npx @fluentcommerce/ai-skills doctor
|
|
391
391
|
```
|
|
392
392
|
|
|
393
|
-
`doctor` validates: Node.js version, Fluent CLI installed, IDE detected (Claude Code, Codex, and/or Gemini CLI — warns if none found), skills installed, MCP config present with correct server config, local `knowledge/` and `docs/` present, workspace instruction files present, Fluent CLI profile exists and can authenticate, and MCP extension reachable. It also compares versions across four layers — running package, local knowledge, global knowledge (`~/.claude/fluent-knowledge/`), and npm registry — warning on any mismatches. Fix anything it flags before proceeding.
|
|
393
|
+
`doctor` validates: Node.js version, Fluent CLI installed, IDE detected (Claude Code, Codex, and/or Gemini CLI — warns if none found), skills installed, MCP config present with correct server config, local `knowledge/` and `docs/` present, workspace instruction files present, Fluent CLI profile exists and can authenticate, and MCP extension reachable. It also compares versions across four layers — running package, local knowledge, global knowledge (`~/.claude/fluent-knowledge/`), and npm registry — warning on any mismatches. Fix anything it flags before proceeding. Use `--fix` to auto-install the Fluent CLI if missing (requires Node >=20 and npm >=10.5).
|
|
394
394
|
|
|
395
395
|
**Quick status check (skills only):**
|
|
396
396
|
|
|
@@ -728,7 +728,7 @@ npx @fluentcommerce/ai-skills <command> [--profile <name>] [groups...]
|
|
|
728
728
|
| Command | Description |
|
|
729
729
|
|---|---|
|
|
730
730
|
| `install [groups...]` | Install skills + configure MCP (with `--profile`) |
|
|
731
|
-
| `doctor` | **Full setup health check** — Node, CLI, Claude Code, skills, MCP, profile, connectivity, versions |
|
|
731
|
+
| `doctor [--fix]` | **Full setup health check** — Node, CLI, Claude Code, skills, MCP, profile, connectivity, versions. `--fix` auto-installs Fluent CLI if missing |
|
|
732
732
|
| `status [groups...]` | Check what's installed |
|
|
733
733
|
| `uninstall [groups...]` | Remove installed skills (`--purge` also removes global knowledge) |
|
|
734
734
|
| `mcp-setup [options]` | Generate `.mcp.json` separately |
|
|
@@ -754,24 +754,26 @@ For server-by-server MCP details, auth notes, and optional hosting providers, se
|
|
|
754
754
|
|
|
755
755
|
## Eval Coverage
|
|
756
756
|
|
|
757
|
-
|
|
757
|
+
803 eval cases across 12 suites validate skill routing, execution quality, and knowledge grounding:
|
|
758
758
|
|
|
759
759
|
| Suite | Cases | What it tests |
|
|
760
760
|
|---|---:|---|
|
|
761
|
-
| Execution |
|
|
761
|
+
| Execution | 188 | All 63 skills produce correct output (plans, code, tool calls) |
|
|
762
762
|
| Routing | 115 | Prompt → skill selection accuracy (deterministic replay) |
|
|
763
|
-
| Routing-live |
|
|
764
|
-
| Knowledge-grounding |
|
|
763
|
+
| Routing-live | 175 | Live model routing against installed skills |
|
|
764
|
+
| Knowledge-grounding | 140 | Trap cases for common misconceptions and anti-patterns |
|
|
765
765
|
| Runtime-live | 54 | MCP tool integration (GraphQL, events, settings) |
|
|
766
766
|
| Skill-runtime | 51 | Skill execution contracts and output validation |
|
|
767
767
|
| Tool-behavior | 30 | Tool call contracts and argument validation |
|
|
768
|
-
| Chains |
|
|
769
|
-
| Adversarial |
|
|
768
|
+
| Chains | 19 | Multi-skill workflow execution sequences |
|
|
769
|
+
| Adversarial | 16 | Ambiguous, out-of-scope, and mixed-concern prompts |
|
|
770
770
|
| Agent-routing | 6 | Agent delegation accuracy (deterministic replay) |
|
|
771
771
|
| Agent-routing-live | 6 | Live model agent delegation |
|
|
772
772
|
| Runtime-live-sandbox | 3 | Sandbox-only profile context verification |
|
|
773
773
|
|
|
774
|
-
Run the test suites: `npm test` (
|
|
774
|
+
Run the test suites: `npm test` (smoke, pack, unit, and evals:core — replay-based eval cases included).
|
|
775
|
+
|
|
776
|
+
**Interactive prompt probing:** `npm run eval:playground` opens a browser UI at `http://localhost:3457` where you can type any prompt and see which skill gets picked, which knowledge docs are referenced, and the LLM's reasoning. Supports Claude Agent SDK (fastest — direct API, no subprocess), Claude Code CLI, and Codex executors. The SDK executor uses compact routing prompts (~4K tokens vs ~100K+), cost safety caps, and live SSE progress streaming. Requires `claude` or `codex` CLI to be installed and authenticated; the SDK executor inherits Bedrock SSO auth from environment variables.
|
|
775
777
|
|
|
776
778
|
---
|
|
777
779
|
|
|
@@ -779,7 +781,7 @@ Run the test suites: `npm test` (1,350 assertions across smoke, pack, and unit s
|
|
|
779
781
|
|
|
780
782
|
| Symptom | Fix |
|
|
781
783
|
|---|---|
|
|
782
|
-
| "Fluent CLI not found" |
|
|
784
|
+
| "Fluent CLI not found" | `npx @fluentcommerce/ai-skills doctor --fix` (auto-installs), or install manually from [docs.fluentcommerce.com](https://docs.fluentcommerce.com/building-blocks/fluent-cli-package) |
|
|
783
785
|
| "Profile directory not found" | `fluent profile create MY_PROFILE --id ... --username ... --password ... --client-secret ... --base-url ...` |
|
|
784
786
|
| `.mcp.json` not created | `npx @fluentcommerce/ai-skills mcp-setup --profile MY_PROFILE` |
|
|
785
787
|
| MCP tools return connection errors | Restart IDE, then `fluent profile retailers MY_PROFILE` to verify connectivity |
|
package/bin/cli.mjs
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
readFileSync,
|
|
10
10
|
writeFileSync,
|
|
11
11
|
statSync,
|
|
12
|
+
realpathSync,
|
|
12
13
|
} from "node:fs";
|
|
13
14
|
import { spawnSync } from "node:child_process";
|
|
14
15
|
import { join, dirname, basename, isAbsolute, resolve } from "node:path";
|
|
@@ -1301,9 +1302,18 @@ function installDocs() {
|
|
|
1301
1302
|
const src = join(dirname(fileURLToPath(import.meta.url)), "..", "docs");
|
|
1302
1303
|
if (!existsSync(src)) return 0;
|
|
1303
1304
|
const dest = join(getProjectRoot(), "docs");
|
|
1305
|
+
// Guard: when running from the repo itself, src === dest — skip to avoid self-deletion.
|
|
1306
|
+
if (existsSync(dest) && realpathSync(src) === realpathSync(dest)) return 0;
|
|
1304
1307
|
// Treat workspace docs/ as installer-managed so re-installs refresh it cleanly.
|
|
1305
1308
|
rmSync(dest, { recursive: true, force: true });
|
|
1306
|
-
|
|
1309
|
+
mkdirSync(dest, { recursive: true });
|
|
1310
|
+
// Copy file-by-file to avoid cpSync issues with Windows temp paths.
|
|
1311
|
+
for (const entry of readdirSync(src)) {
|
|
1312
|
+
if (entry.includes(".tmp.")) continue; // skip transient editor files
|
|
1313
|
+
try {
|
|
1314
|
+
cpSync(join(src, entry), join(dest, entry), { recursive: true, force: true });
|
|
1315
|
+
} catch { /* skip files that vanish between readdir and copy */ }
|
|
1316
|
+
}
|
|
1307
1317
|
// Count copied files for reporting
|
|
1308
1318
|
let count = 0;
|
|
1309
1319
|
const walk = (dir) => {
|
|
@@ -1427,6 +1437,22 @@ Follow this lifecycle. Each stage has purpose-built skills:
|
|
|
1427
1437
|
| **Audit** | \`/fluent-rfl-assess\`, \`/fluent-session\`, \`/fluent-feature-status\`, \`/fluent-skill-observability\` | Go-live readiness, audit trail, status dashboard, skill quality |
|
|
1428
1438
|
<!-- /ai-skills:managed:sdlc-map -->
|
|
1429
1439
|
|
|
1440
|
+
<!-- ai-skills:managed:investigation-protocol -->
|
|
1441
|
+
## Investigation Protocol
|
|
1442
|
+
|
|
1443
|
+
**Tier 1 — Direct execute (no plan):** Single-tool lookups (entity status, setting value, retailer list) and prompts that map to a single skill with its own phases (e.g., fluent-trace, fluent-workflow-builder). Proceed directly — the skill handles its own execution plan. Optionally announce the skill in one line: "Using fluent-trace for this."
|
|
1444
|
+
|
|
1445
|
+
**Tier 2 — Micro-plan (multi-step, no approval wait):** When a question needs 2+ MCP tools and doesn't map cleanly to one skill (debugging, cross-entity tracing, analysis, "why is X broken"):
|
|
1446
|
+
|
|
1447
|
+
1. Print an **Approach** heading, then a numbered step list with the MCP tool or skill name per step
|
|
1448
|
+
2. End with summary lines: \`Tools:\`, \`Skills:\`, \`Est. calls:\`, \`Watch for:\` (one-line risk)
|
|
1449
|
+
3. Print "[executing...]" and start immediately — no approval wait
|
|
1450
|
+
4. If an earlier step resolves the question, **stop and report**. List skipped steps and why. The user can say "continue with steps X-Y" to resume.
|
|
1451
|
+
5. For follow-up additions ("also check permissions"), **append** steps to the existing plan rather than re-planning from scratch.
|
|
1452
|
+
|
|
1453
|
+
**Tier 3 — Full planning gate:** Deployments, scaffolding, and feature builds. Present structured plan and wait for approval. (Already enforced by skills with mandatory planning gates.)
|
|
1454
|
+
<!-- /ai-skills:managed:investigation-protocol -->
|
|
1455
|
+
|
|
1430
1456
|
## Quick Actions
|
|
1431
1457
|
|
|
1432
1458
|
| What you want | Say this |
|
|
@@ -1510,7 +1536,7 @@ function generateStarterWorkspaceDoc(fileName, profile, retailer) {
|
|
|
1510
1536
|
* Managed section IDs embedded in workspace instruction files.
|
|
1511
1537
|
* Content between markers is updated on every install; everything else is user-owned.
|
|
1512
1538
|
*/
|
|
1513
|
-
const MANAGED_SECTION_IDS = ["reference-docs", "routing-tripwires", "mcp-tools", "sdlc-map"];
|
|
1539
|
+
const MANAGED_SECTION_IDS = ["reference-docs", "routing-tripwires", "mcp-tools", "sdlc-map", "investigation-protocol"];
|
|
1514
1540
|
|
|
1515
1541
|
/**
|
|
1516
1542
|
* Heading patterns for each managed section — used to find and migrate
|
|
@@ -1522,6 +1548,7 @@ const MANAGED_SECTION_HEADINGS = {
|
|
|
1522
1548
|
"routing-tripwires": /^##\s+Routing\s+Tripwires?\b/im,
|
|
1523
1549
|
"mcp-tools": /^##\s+MCP\s+Tools?\b/im,
|
|
1524
1550
|
"sdlc-map": /^##\s+SDLC\s+Skill\s+Map\b/im,
|
|
1551
|
+
"investigation-protocol": /^##\s+Investigation\s+Protocol\b/im,
|
|
1525
1552
|
};
|
|
1526
1553
|
|
|
1527
1554
|
/**
|
|
@@ -93,7 +93,18 @@ ls ~/.fluentcommerce/
|
|
|
93
93
|
Get-ChildItem "$env:USERPROFILE\.fluentcommerce"
|
|
94
94
|
```
|
|
95
95
|
|
|
96
|
-
Each subdirectory (excluding `.sessions`, `config.json`) is a potential profile. Each contains `profile.json
|
|
96
|
+
Each subdirectory (excluding `.sessions`, `config.json`) is a potential profile. Each contains `profile.json`:
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
{
|
|
100
|
+
"id": "<account-id>",
|
|
101
|
+
"baseUrl": "https://<account>.<tier>.api.fluentretail.com",
|
|
102
|
+
"clientSecret": "<uuid>",
|
|
103
|
+
"user": "<username>"
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> **IMPORTANT:** The `user` field is a **string** (username reference), NOT an object with credentials. Credentials are stored in a separate `user.<username>.json` file. If `user` is an object like `{ "username": "...", "password": "..." }`, the profile was created manually in the wrong format — fix it with `fluent profile create`.
|
|
97
108
|
|
|
98
109
|
### Step 1.2: Present profiles to user
|
|
99
110
|
|
|
@@ -143,6 +154,50 @@ Each file is named `retailer.<REF>.json` and contains:
|
|
|
143
154
|
{ "id": "<retailer_id>", "ref": "<ref>", "user": "<username>" }
|
|
144
155
|
```
|
|
145
156
|
|
|
157
|
+
### Step 2.1b: Validate retailer file format
|
|
158
|
+
|
|
159
|
+
For each `retailer.*.json` file discovered, validate it matches the canonical CLI format. Non-canonical formats can cause silent MCP auth failures and confusing connectivity errors.
|
|
160
|
+
|
|
161
|
+
**Canonical format** (written by `fluent profile update`):
|
|
162
|
+
```json
|
|
163
|
+
{ "id": "<retailer-numeric-id>", "ref": "<retailer-ref>", "user": "<username-string>" }
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Known bad formats to detect:**
|
|
167
|
+
|
|
168
|
+
| Pattern | Problem | Likely Cause |
|
|
169
|
+
|---------|---------|-------------|
|
|
170
|
+
| `{ "retailerId": ..., "username": ..., "password": ... }` | Inlined credentials, wrong field names | Manual creation or old skill version |
|
|
171
|
+
| `{ "id": ..., "ref": ..., "user": { "username": ..., "password": ... } }` | `user` is object instead of string | AI wrote file directly instead of using CLI |
|
|
172
|
+
| Missing `ref` field | Incomplete record | Partial manual edit |
|
|
173
|
+
| Missing `user` field | No user binding | Partial creation |
|
|
174
|
+
|
|
175
|
+
**Validation logic:** For each retailer file, check:
|
|
176
|
+
|
|
177
|
+
1. Has `id` field (string or number)
|
|
178
|
+
2. Has `ref` field (string)
|
|
179
|
+
3. Has `user` field that is a **string** (not an object)
|
|
180
|
+
4. Does NOT have `retailerId`, `username`, or `password` as top-level keys
|
|
181
|
+
|
|
182
|
+
**If any file fails validation:**
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
⚠ Non-canonical retailer file detected:
|
|
186
|
+
File: ~/.fluentcommerce/<PROFILE>/retailer.<REF>.json
|
|
187
|
+
Issue: <description of what's wrong>
|
|
188
|
+
Risk: MCP extension may fail to resolve retailer context
|
|
189
|
+
|
|
190
|
+
Fix: Re-register this retailer using the CLI:
|
|
191
|
+
fluent profile update <PROFILE> --retailer <REF> --id <ID> --username <USER> --password <PASS>
|
|
192
|
+
|
|
193
|
+
This will overwrite the file with the correct canonical format.
|
|
194
|
+
Proceed with current file anyway? [yes/NO]
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Wait for user confirmation. If they choose to fix, guide them through the `fluent profile update` command (they must supply their password). If they proceed anyway, log the issue in the feedback record at the end of execution.
|
|
198
|
+
|
|
199
|
+
**IMPORTANT — Never write retailer or profile JSON files directly.** Always delegate to `fluent profile create` or `fluent profile update` which handle format, encryption, and storage correctly. This applies even if you "know" the correct format — the CLI may add fields or change structure across versions.
|
|
200
|
+
|
|
146
201
|
### Step 2.2: Present retailers to user
|
|
147
202
|
|
|
148
203
|
| # | Retailer Ref | Retailer ID | User |
|
|
@@ -346,7 +401,7 @@ const base = path.join('accounts', profile);
|
|
|
346
401
|
const placeholders = {
|
|
347
402
|
'SOURCE/backend': {
|
|
348
403
|
title: 'Backend Source Code',
|
|
349
|
-
content: 'Clone Java Maven plugin repos here. Each subdirectory should be one git repo with pom.xml + src/main/java/.\n\nExample:\n git clone https://your-org/fc-plugin-custom.git\n\nStandalone JARs (no source): place .jar files here — auto-decompiled to .decompiled/\n\nPopulated by: git clone or manual copy\nAnalyzed by: /fluent-custom-code, /fluent-
|
|
404
|
+
content: 'Clone Java Maven plugin repos here. Each subdirectory should be one git repo with pom.xml + src/main/java/.\n\nExample:\n git clone https://your-org/fc-plugin-custom.git\n\nStandalone JARs (no source): place .jar files here — auto-decompiled to .decompiled/\n\nPopulated by: git clone or manual copy\nAnalyzed by: /fluent-custom-code, /fluent-module-convert'
|
|
350
405
|
},
|
|
351
406
|
'SOURCE/frontend': {
|
|
352
407
|
title: 'Frontend Source Code',
|
|
@@ -68,8 +68,8 @@ fluent profile create cli-b2c \
|
|
|
68
68
|
--id ABC123 \
|
|
69
69
|
--base-url https://abc123.sandbox.api.fluentretail.com \
|
|
70
70
|
--username admin_user \
|
|
71
|
-
--password
|
|
72
|
-
--client-secret
|
|
71
|
+
--password '<your-password>' \
|
|
72
|
+
--client-secret '<your-client-secret>'
|
|
73
73
|
```
|
|
74
74
|
|
|
75
75
|
### 2. List Profiles
|
|
@@ -180,13 +180,43 @@ Profiles stored in: `~/.fluentcommerce/<profile-name>/`
|
|
|
180
180
|
```
|
|
181
181
|
~/.fluentcommerce/
|
|
182
182
|
├── cli-b2c/
|
|
183
|
-
│ ├── profile.json
|
|
184
|
-
│ ├── user.admin_user.json
|
|
185
|
-
│ └── retailer.b2c.json
|
|
183
|
+
│ ├── profile.json # { "accountId", "baseUrl", "clientSecret", ... }
|
|
184
|
+
│ ├── user.admin_user.json # { "username", "password" }
|
|
185
|
+
│ └── retailer.b2c.json # { "id", "ref", "user": "<username-string>" }
|
|
186
186
|
└── .sessions/
|
|
187
187
|
└── <session-files>
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
+
### Canonical Retailer File Format
|
|
191
|
+
|
|
192
|
+
The `retailer.<ref>.json` file MUST follow this schema (written by `fluent profile update`):
|
|
193
|
+
|
|
194
|
+
```json
|
|
195
|
+
{ "id": "<retailer-numeric-id>", "ref": "<retailer-ref>", "user": "<username-string>" }
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
The `user` field is a **string** referencing a `user.<name>.json` file in the same directory — NOT an object with inlined credentials.
|
|
199
|
+
|
|
200
|
+
### CRITICAL — Never Write Profile Files Directly
|
|
201
|
+
|
|
202
|
+
**Always use CLI commands** (`fluent profile create`, `fluent profile update`) to create or modify profile, user, and retailer JSON files. Never use `Write`, `Edit`, or shell redirection (`echo >`, `cat <<EOF >`) to create or modify files under `~/.fluentcommerce/`.
|
|
203
|
+
|
|
204
|
+
**Why:** The CLI handles format versioning, credential storage, field normalization, and session management. Writing files directly risks:
|
|
205
|
+
- Wrong field names (`retailerId` vs `id`, `username` vs `user`)
|
|
206
|
+
- Wrong value types (`user` as object instead of string reference)
|
|
207
|
+
- Missing cross-references (retailer `user` must match a `user.<name>.json` filename)
|
|
208
|
+
- Breaking future CLI versions that expect new fields
|
|
209
|
+
|
|
210
|
+
**If you encounter a malformed profile/retailer file**, guide the user to fix it with CLI commands:
|
|
211
|
+
|
|
212
|
+
```bash
|
|
213
|
+
# Fix a malformed retailer file
|
|
214
|
+
fluent profile update <PROFILE> --retailer <REF> --id <ID> --username <USER> --password <PASS>
|
|
215
|
+
|
|
216
|
+
# Fix a malformed profile
|
|
217
|
+
fluent profile create <PROFILE> --id <ACCT> --base-url <URL> --username <USER> --password <PASS> --client-secret <SECRET>
|
|
218
|
+
```
|
|
219
|
+
|
|
190
220
|
## Error Handling
|
|
191
221
|
|
|
192
222
|
| Error | Solution |
|
|
@@ -16,7 +16,7 @@ skills:
|
|
|
16
16
|
- fluent-data-module-scaffold
|
|
17
17
|
- fluent-module-validate
|
|
18
18
|
- fluent-build
|
|
19
|
-
- fluent-
|
|
19
|
+
- fluent-module-convert
|
|
20
20
|
- fluent-trace
|
|
21
21
|
- fluent-entity-flow-diagnose
|
|
22
22
|
- fluent-event-api
|
|
@@ -202,7 +202,7 @@ Execute the approved plan:
|
|
|
202
202
|
| Scaffold data modules | `/fluent-data-module-scaffold` | Data-only modules |
|
|
203
203
|
| Validate modules | `/fluent-module-validate` | Module structure checks |
|
|
204
204
|
| Build modules | `/fluent-build` | Maven compile + package |
|
|
205
|
-
|
|
|
205
|
+
| Convert to module | `/fluent-module-convert` | Convert plugins/source to module format |
|
|
206
206
|
| Manage settings | `/fluent-settings` | Settings lifecycle |
|
|
207
207
|
| Configure retailer | `/fluent-retailer-config` | Environment bootstrap |
|
|
208
208
|
| Trace events | `/fluent-trace` | Event forensics |
|
|
@@ -27,7 +27,7 @@ This skill owns source discovery, code mapping, behavior explanation, and extens
|
|
|
27
27
|
|
|
28
28
|
**Routing guardrail:** If the user is asking about source-level backend implementation inside a plugin, class, module, or repo, stay on this skill. Do NOT reroute to `/fluent-implementation-map` or `/fluent-feature-explain` unless the request is clearly about a broader feature/account architecture rather than the code itself.
|
|
29
29
|
|
|
30
|
-
**HARD NEGATIVE — NOT rule-scaffold or
|
|
30
|
+
**HARD NEGATIVE — NOT rule-scaffold or module-convert:** If the prompt says "analyze", "explain", "understand", or "what does this code do" about existing custom code, this is fluent-custom-code, NOT fluent-rule-scaffold (which creates NEW rules) and NOT fluent-module-convert (which converts/restructures code INTO module format).
|
|
31
31
|
|
|
32
32
|
- Workflow structure analysis is owned by `/fluent-workflow-analyzer`.
|
|
33
33
|
- Runtime failure tracing is owned by `/fluent-trace`.
|
|
@@ -114,9 +114,9 @@ Write the plan file, present it to the user, and wait for explicit approval ("ye
|
|
|
114
114
|
|
|
115
115
|
| Parameter | Required | Default | Description |
|
|
116
116
|
|-----------|----------|---------|-------------|
|
|
117
|
-
| `module-name` | Yes | -- | Module identifier (e.g., `
|
|
117
|
+
| `module-name` | Yes | -- | Module identifier (e.g., `acme-infra-data`). Lowercase alphanumeric with hyphens only. Used for directory name and `module.json` name field. |
|
|
118
118
|
| `--description` | No | Auto-generated | Module description for `module.json` |
|
|
119
|
-
| `--account-prefix` | No | Auto-detect from profile | Account/company prefix for the module name in `module.json` (e.g., `
|
|
119
|
+
| `--account-prefix` | No | Auto-detect from profile | Account/company prefix for the module name in `module.json` (e.g., `acme`, `globex`) |
|
|
120
120
|
| `--profile` | No | Active profile | Fluent CLI profile for path resolution and prefix detection |
|
|
121
121
|
| `--initial-version` | No | `1.0.0` | Initial version in `module.json` |
|
|
122
122
|
|
|
@@ -150,7 +150,7 @@ The account prefix appears in the `module.json` `name` field as `<prefix>/<modul
|
|
|
150
150
|
|
|
151
151
|
2. Else check existing modules under accounts/<PROFILE>/SOURCE/backend/
|
|
152
152
|
Read any module.json and extract the prefix from the "name" field
|
|
153
|
-
e.g., "name": "
|
|
153
|
+
e.g., "name": "acme/infra-data" --> prefix is "acme"
|
|
154
154
|
|
|
155
155
|
3. Else derive from PROFILE name (lowercase)
|
|
156
156
|
MY_PROFILE --> myprofile
|
|
@@ -708,9 +708,9 @@ Follow these steps in order when scaffolding a new data module:
|
|
|
708
708
|
|
|
709
709
|
4. COMPUTE derived values
|
|
710
710
|
a. MODULE_TITLE = title-case of module-name with hyphens as spaces
|
|
711
|
-
(e.g., "
|
|
711
|
+
(e.g., "acme-infra-data" --> "Acme Infra Data")
|
|
712
712
|
b. MODULE_DESCRIPTION = description from --description or auto-generated
|
|
713
|
-
(e.g., "Data module for
|
|
713
|
+
(e.g., "Data module for Acme Infra Data")
|
|
714
714
|
|
|
715
715
|
5. CREATE directory structure
|
|
716
716
|
a. Create the root: accounts/<PROFILE>/SOURCE/backend/<module-name>/
|
|
@@ -854,7 +854,7 @@ Fulfilment updates from Warehouse Management System:
|
|
|
854
854
|
"rootEntityId": "12345",
|
|
855
855
|
"entityType": "CONSIGNMENT",
|
|
856
856
|
"entityId": "11111",
|
|
857
|
-
"attributes": { "trackingNumber": "
|
|
857
|
+
"attributes": { "trackingNumber": "TRACK-001-XYZ", "status": "IN_TRANSIT", "carrierRef": "CARRIER_STD" }
|
|
858
858
|
}
|
|
859
859
|
```
|
|
860
860
|
|