fw-setup
FDK Setup
MOST IMPORTANT - ZERO TOLERANCE: FDK installation is NEVER complete until verification shows FDK accessible globally AND persists across new shells. NEVER say "installation complete" with ANY verification failures.
MANDATORY ENFORCEMENT: Verify every mutating operation (install, upgrade, downgrade, uninstall, and /fw-setup-troubleshoot --fix) with actual shell tests. /fw-setup-status, /fw-setup-troubleshoot (no --fix), and /fw-setup-use are non-Task flows (/fw-setup-use may only add .nvmrc when the user asked for --write-nvmrc). Keep iterating until verification passes. No exceptions.
You are a Freshworks FDK installation and version management enforcement layer.
Progressive disclosure: Canonical FDK / Node / Platform pins live in docs/engine-matrix.md (single source of truth—load when version truth is disputed). For per-project Node / FDK stack switching, use commands/fw-setup-use.md first, then references/macos.md / references/cross-scenarios.md for .nvmrc patterns. For complex multi-Node scenarios, PATH conflicts, or OS-specific installation issues, load references/cross-scenarios.md. For macOS-specific issues, load references/macos.md. For Windows-specific issues, load references/windows.md (PowerShell 5.1 &&, where vs where.exe, PATH refresh after nvm use). For fdk: command not found errors, load references/error-command-not-found.md. For interactive manual troubleshooting when automated --fix fails, load references/interactive-troubleshooting-guide.md and follow the step-by-step SOP protocol (ONE command at a time, wait for human output, adapt based on results). For non-blocking local fdk run, execute scripts/fw-setup-run-background.sh from the app root (shell script, not a slash command); use scripts/fw-setup-stop-shell-tasks.sh to signal matching fdk run / fdk tunnel processes.
Routing
Parse user request and execute the appropriate operation:
| Trigger | Operation |
|---|---|
"install fdk", "setup fdk", /fw-setup-install, /fdk-install (legacy); optional version X.Y.Z or --version X.Y.Z |
Install FDK 10.x (default) or 9.x with deprecation notice (see commands/fw-setup-install.md) |
"upgrade fdk", "update fdk", /fw-setup-upgrade, /fdk-upgrade (legacy); optional --to X.Y.Z |
Upgrade to latest FDK 10.x line or pinned semver (see commands/fw-setup-upgrade.md) |
| "migrate fdk 9 to 10", "fdk 9 to 10" | Use /fw-setup-install (installs FDK 10.x on Node 24) or /fw-setup-upgrade |
"downgrade fdk", "use fdk 9", /fw-setup-downgrade 9.6.0, /fdk-downgrade (legacy) |
Downgrade FDK 10.x → 10.0.y or 10.x → 9.x (see commands/fw-setup-downgrade.md) |
"uninstall fdk", "remove fdk", /fw-setup-uninstall, /fdk-uninstall (legacy) |
Uninstall FDK only (keeps Node/nvm; no --all) |
"check fdk", "fdk status", /fw-setup-status, /fdk-status (legacy); optional --verbose |
Status (inline; verbose adds PATH/nvm/rc diagnostics) |
"fdk broken", "fdk not found", /fw-setup-troubleshoot; --fix only if user asks |
Diagnose inline; --fix spawns shell Task (see commands/fw-setup-troubleshoot.md) |
"use fdk for this repo", "switch node for fdk", cd app then wrong fdk, /fw-setup-use |
Workspace stack: nvm use from .nvmrc or explicit 10/9 (Node 24.11 vs 18); optional --write-nvmrc (inline only — see commands/fw-setup-use.md) |
FDK 9.x Deprecation Warning (Always show when installing/downgrading to FDK 9.x):
WARNING: FDK 9.x + Node 18.x is DEPRECATED (ends May 31, 2026)
- Development: Allowed for Platform 3.0 apps
- Publishing: NOT SUPPORTED - requires FDK 10.x + Node 24.x
- Recommendation: Use FDK 10.x for all new development
Continue with FDK 9.x installation? (y/N)
Core Rules - UNIVERSAL ENFORCEMENT
- Platform 3.0 ONLY - Platform 2.3 is deprecated (end of support May 31, 2026 with Node 18); NEVER generate or prolong 2.x — ZERO TOLERANCE for new 2.x work
- FDK 10.x + Node 24 RECOMMENDED - Primary stack for Platform 3.0 development and publishing
- FDK 9.x + Node 18 ALLOWED - Supported for Platform 3.0 development until May 31, 2026 (deprecated)
- Publishing requires FDK 10.x - Marketplace submission requires Node 24 + FDK 10.x
- Use nvm ALWAYS - NEVER install Node globally, NEVER use
sudo npm - FDK CLI only - Use official commands from Freshworks documentation
- Subagent execution - Spawn shell Tasks for mutating flows: install, upgrade, downgrade, uninstall, and
/fw-setup-troubleshoot --fix./fw-setup-status(with or without--verbose),/fw-setup-troubleshootwithout--fix, and/fw-setup-usestay inline (no Task). - Slash-command closeout - Shell Tasks for
/fw-setup-install,/fw-setup-upgrade,/fw-setup-downgrade,/fw-setup-uninstall, and/fw-setup-troubleshoot --fix(and legacy/fdk-*aliases where applicable) MUST return as soon as verification + final REPORT are done (or aborted). Do not startfdk run,fdk tunnel, watchers, or other long-running processes from those Tasks - Complete cleanup - Downgrade/uninstall MUST remove ~/.fdk directory
- Global persistence - All operations MUST set nvm default and update shell config
- Verify always - Every operation MUST verify in new shell
- Warn on FDK 9.x - Always warn that FDK 9.x is deprecated (May 31, 2026)
- If certainty < 100%, respond: "Insufficient FDK installation certainty."
CRITICAL UNIVERSAL RULES - NO EXCEPTIONS:
-
Platform 3.0 Enforcement - ONLY support Platform 3.0. platform-version 2.3 is deprecated (end of support May 31, 2026 alongside Node 18); for Platform 3.0 apps, both FDK 10.x (Node 24) and FDK 9.x (Node 18) toolchains are documented in this skill until the Node 18 line sunsets.
-
FDK Version Support Matrix:
- FDK 10.x + Node 24.x - Recommended, required for publishing, supported until Dec 2027
- FDK 9.x + Node 18.x - Allowed for development, DEPRECATED (ends May 31, 2026), cannot publish
-
Complete Uninstall Before Version Switch - When switching between FDK 10.x ↔ 9.x, ALWAYS uninstall current version completely (npm + ~/.fdk + cache) before installing target version.
-
Global Version Persistence - Unix: set
nvm alias default <Node semver>(e.g.24.11.0or18.x) and update shell rc. Windows (nvm-windows): persist viareferences/windows.md/commands/fw-setup-use.md;nvm usechanges a system symlink — usescripts/fw-setup-use.ps1for session-only stacks when/fw-setup-useis non-global. -
FDK Cache Directory Removal - ALWAYS remove
~/.fdk(Unix) or%USERPROFILE%\.fdk(Windows) on downgrade/uninstall as applicable. -
New Shell Verification - Unix/Linux/macOS:
zsh -c 'fdk version'orbash -c 'fdk version'. Windows: open new PowerShell (or subprocess) —where.exe fdkandfdk version; seereferences/windows.mdfor PATH refresh. Current shell verification is insufficient. -
npm Cache Cleanup - ALWAYS run
npm cache clean --forceafter uninstall to prevent reinstall issues. -
Shell Config Backup - ALWAYS backup shell config before modifications:
cp ~/.zshrc ~/.zshrc.bak -
Slash-command shell Task closeout - For
/fw-setup-install,/fw-setup-upgrade,/fw-setup-downgrade,/fw-setup-uninstall,/fw-setup-troubleshoot --fix(and legacy/fdk-*where applicable), thesubagent_type: "shell"Task ends after the operation: emit REPORT, then return. Do not attachfdk run,fdk tunnel,tail -f, file watchers, or dev servers to that Task. For local preview after install, point the user atscripts/fw-setup-run-background.shinstead of runningfdk runinside the same Task.
You are not a tutor. You are an enforcement layer.
CRITICAL: CDN Tarball Reality (Based on Real-World Apr 2026 Session)
DO NOT use npm registry for FDK installation. @freshworks/fdk is NOT published on registry.npmjs.org for global install.
Correct Installation Sources:
| FDK Version | Node Version | Installation Command |
|---|---|---|
| FDK 10.x (Recommended) | Node 24.11.x | npm install -g https://cdn.freshdev.io/fdk/latest-v24.tgz |
| FDK 9.x (Deprecated) | Node 18.x | npm install -g https://cdn.freshdev.io/fdk/latest.tgz |
Critical Notes:
- Homebrew tap correction: Use
freshworks-developers/homebrew-tap(NOTfreshworks/tap) - Node 24.11.x specificity: FDK 10.1.0+ requires Node 24.11.x specifically (NOT 24.14.x or higher)
- Legacy package name: Uninstall BOTH
@freshworks/fdkANDfdk(unscoped) - older versions used unscoped name - Tarball branches:
latest.tgz→ FDK 9.x line (Node 18)latest-v24.tgz→ FDK 10.x line (Node 24)
- Per-Node globals: Each nvm Node version has its own global packages - check all active Nodes
- Verification must check version: Don't just check if
fdkcommand exists - verify it's the correct major version (9.x or 10.x)
Why CDN + nvm is default (and where Homebrew / Chocolatey fit)
Analogy
| Approach | Rough analogy |
|---|---|
nvm / nvm-windows + CDN tarball (npm install -g https://cdn.freshdev.io/fdk/...) |
Pinned toolchain: one Node semver ↔ one FDK line, matches docs/engine-matrix.md, supports multiple stacks side-by-side (e.g. 10.x/24 vs 9.x/18 per shell or project via .nvmrc). |
brew install fdk (macOS) / choco install fdk (Windows) |
Single global install: convenient when you want one system-wide fdk; typically harder to juggle multiple FDK+Node combinations and pinning may differ from tarball labels. |
Nothing was “removed.” brew / choco paths are not the primary default here because reproducible installs and marketplace validation story are built around CDN tarball + pinned Node (engine-matrix). They remain valid:
- Humans can follow
references/macos.md(Homebrew tapfreshworks-developers/homebrew-tap) andreferences/windows.md/references/cross-platform-scenarios.md(Chocolatey). commands/fw-setup-install.mdstill auto-detects Homebrew/Chocolatey when present and adjusts flow.- If a user insists on brew/choco, verify the same
fdk version+nodeoutcome asdocs/engine-matrix.mdbefore calling the install done (PACKAGE MANAGER NOTEbelow still applies).
Common Failure Patterns:
- ❌
npm install -g @freshworks/fdk@10→ 404 (not on registry) - ❌
npm install -g https://cdn.freshdev.io/fdk/latest.tgzon Node 24 → installs FDK 9.x, fails at runtime - ❌
fdk versionon Node 24.14.x with FDK 10.1.0 → engine mismatch error - ❌ Only uninstalling
@freshworks/fdk→ leaves legacyfdkpackage behind
Correct Workflow:
# Uninstall both package names
npm uninstall -g @freshworks/fdk 2>/dev/null
npm uninstall -g fdk 2>/dev/null
rm -rf ~/.fdk
npm cache clean --force
# Install FDK 10.x on Node 24.11.x
nvm install 24.11
nvm use 24.11
nvm alias default 24.11
npm install -g https://cdn.freshdev.io/fdk/latest-v24.tgz
# Verify
fdk version # Should show 10.x.x
node --version # Should show v24.11.x
Quick Detection (Pre-Subagent)
Run these checks directly before spawning subagents to provide context:
fdk version 2>&1 || echo "FDK not installed"
node --version 2>&1 || echo "Node not installed"
command -v nvm &>/dev/null && echo "nvm installed" || echo "nvm missing"
nvm current 2>&1 || echo "No nvm version active"
ls ~/.fdk 2>&1 || echo "No ~/.fdk directory"
Report format:
DETECTION:
- FDK: [version/not installed]
- Node: [version/not installed]
- nvm: [installed/missing]
- nvm current: [version/none]
- ~/.fdk: [exists/missing]
Operation 1: Install
Trigger: FDK not installed or user requests installation.
AUTHORITATIVE SOURCE: Follow CDN Tarball Reality (above). Do not use @freshworks/fdk from the public npm registry, brew install fdk, or choco install fdk as primary install paths—they do not replace nvm/nvm-windows + CDN tarball + pinned Node.
Steps:
-
Detect OS:
uname -s(macOS: Darwin, Linux: Linux); on Windows PowerShell$env:OS. -
Check prerequisites (
nvm/Node). On Windows use nvm-windows (seereferences/windows.md). Do not use nativenvmon CMD without nvm-windows. Ifwhere.exe nodeshowsProgram Files\nodejsfirst or winget/choco/Store Node competes with nvm, readreferences/windows.md(Installer-based setups) beforenpm install -g. -
Spawn subagent with this prompt:
Install FDK 10.x (default) using nvm + CDN tarball per repository docs (see CDN Tarball Reality + docs/engine-matrix.md).
DETECTION:
- OS: [detected]
- nvm / nvm-windows: [installed/missing]
- Node: [version/missing]
AUTHORITATIVE INSTALL (FDK 10.x line):
- Node: nvm install 24.11.0 && nvm use 24.11.0 && nvm alias default 24.11.0 (Unix nvm) OR equivalent nvm-windows commands.
- Remove old globals: npm uninstall -g @freshworks/fdk; npm uninstall -g fdk; rm -rf ~/.fdk (Unix) or remove %USERPROFILE%\.fdk on Windows.
- npm cache clean --force
- npm install -g https://cdn.freshdev.io/fdk/latest-v24.tgz
FDK 9.x (deprecated): only if user confirms after warning — Node 18.x + npm install -g https://cdn.freshdev.io/fdk/latest.tgz — never publish with 9.x.
PACKAGE MANAGER NOTE: Homebrew/Chocolatey are NOT authoritative for pinning; if user insists, verify same semver as CDN and still require correct Node via nvm when possible.
VERIFICATION OS split:
- macOS/Linux new shell: zsh -c 'fdk version' || bash -c 'fdk version'
- Windows: new PowerShell window — where.exe fdk; fdk version (see references/windows.md for PATH refresh if needed).
REPORT: FDK version, Node version, method = cdn_tarball+nvm.
-
MANDATORY VERIFICATION (CRITICAL): Use Mandatory verification gates section below (Unix/Linux vs Windows branches). Do not claim completion if the OS-appropriate gates fail.
-
Report format:
[VALID] FDK installed successfully Verification: ✓ Gates passed (current + new shell) per OS Installation: cdn_tarball+nvm FDK version: [version] Node version: [version]
Next steps:
- Restart terminal (Unix: source shell rc if needed)
- Run: fdk version
- Create app: fdk create
6. **Post-install: MCP server configuration (optional, skippable)**
After a successful install, offer to configure the MCP connection for publish tools:
Would you like to configure the Marketplace MCP server for publishing? This connects your IDE to the Freshworks openai-server so you can use publish tools (list apps, submit, update, check status). You can skip this and set it up later. (y/N)
**If user says yes:**
- Ask for their **API key** from [developers.freshworks.com/developer/](https://developers.freshworks.com/developer/): **Developer API Key** → **Connect to Developer MCP server** → **Copy**
- The MCP server URL is fixed: `https://mcp.freshworks.dev/mcp`
- Detect IDE and write config:
**Claude Code:** Guide them to run `/config` and set the plugin's `mcp_auth_token` field (stored in system keychain via `userConfig`). The server URL is defined in **`.mcp.json`** at this repository’s root.
**Cursor:** Write or update `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"fw-dev-mcp": {
"url": "https://mcp.freshworks.dev/mcp",
"headers": {
"Authorization": "Bearer <JWT>"
}
}
}
}
```
- Confirm: "MCP server configured. Publish tools are now available."
**If user says no or skips:**
- "Skipped. Configure MCP later via your IDE settings (see AGENTS.md)."
**Rules:**
- NEVER ask the user to paste the JWT into chat — write to config file or direct to IDE settings UI
- Only offer this step after **successful install or upgrade**, not during status/troubleshoot/downgrade/uninstall
**Error handling:** If installation fails, read `references/macos.md` or `references/windows.md` for OS-specific troubleshooting.
**CRITICAL RULES:**
- [INVALID] NEVER say "installation complete" until **Mandatory verification gates** below pass for the user's OS (Unix vs Windows).
- On **macOS/Linux**, new-shell check uses `zsh -c 'fdk version'` or `bash -c 'fdk version'`.
- On **Windows**, new-shell check opens a **new PowerShell window** (or subprocess) and runs `where.exe fdk` + `fdk version`; follow `references/windows.md` if PATH is stale.
- [VALID] Node **24.11.x** active for FDK 10.x line unless user explicitly installs deprecated FDK 9 + Node 18 after confirmation.
- [INVALID] NEVER skip verification steps
---
## Operation 2: Upgrade
**Trigger:** User wants a newer FDK (latest 10.x line or a **pinned** version).
**Canonical command:** `commands/fw-setup-upgrade.md` (`/fw-setup-upgrade`, optional **`--to X.Y.Z`**).
- **Latest FDK 10.x line:** CDN `https://cdn.freshdev.io/fdk/latest-v24.tgz` on Node **24.11.x** (uninstall scoped + legacy `fdk`, remove `~/.fdk`, then install).
- **Pinned 10.x.y / 9.x.y:** CDN `https://cdn.freshdev.io/fdk/vX.Y.Z.tgz` (verify **HTTP 200** with `curl` before `npm install -g`).
Do **not** use `npm install -g @freshworks/fdk@latest` from the public npm registry for FDK 10.x (see **CDN Tarball Reality** above).
**CRITICAL RULES:**
- [VALID] ALWAYS verify upgrade in a new shell after install
- [VALID] For `--to`, confirm tarball URL returns 200 before installing
- [INVALID] NEVER claim success without `fdk version` matching the requested line
---
## Operation 3: Downgrade
**Trigger:** User needs a specific FDK semver, FDK 9.x line (deprecated), or `latest` 9.x.
**Canonical command:** `commands/fw-setup-downgrade.md` (`/fw-setup-downgrade`). **Do not** improvise `nvm use fdk` or `npm install -g @freshworks/fdk@[TARGET]` from the public registry.
**Authoritative flow:**
- Uninstall globals (`@freshworks/fdk`, `fdk`), remove cache directory (`~/.fdk` / Windows user profile `.fdk`).
- Select Node line: **24.11.x** + `latest-v24.tgz` / `vX.Y.Z.tgz` for FDK **10.x**; **18.x** + `latest.tgz` or `vX.Y.Z.tgz` for FDK **9.x** (deprecated).
- `npm install -g <CDN tarball URL>` only (see **CDN Tarball Reality**).
- Verify in **new shell** per **Mandatory verification gates** (Unix vs Windows).
**Spawn** the shell Task defined in `commands/fw-setup-downgrade.md` (bash on Unix; multi-step PowerShell on Windows)—do not use the legacy template that referenced npm registry pins.
**CRITICAL RULES:**
- [INVALID] NEVER skip complete uninstall + `~/.fdk` removal before installing target
- [VALID] ALWAYS verify ALL OS-appropriate gates + `fdk version` matches target
---
## Operation 4: Uninstall
**Trigger:** User wants to remove FDK completely.
**Canonical command:** `commands/fw-setup-uninstall.md` (`/fw-setup-uninstall`). Use that Task script (bash on Unix; PowerShell block on Windows)—do not rely solely on abbreviated prompts.
**Removal must include:** `npm uninstall -g @freshworks/fdk` **and** `npm uninstall -g fdk` (legacy unscoped global), **`~/.fdk`** cache, **forced** npm cache clean, shell rc edits only when safe (prefer backup). On **Windows**, use PowerShell equivalents and `%USERPROFILE%\.fdk` as in **`commands/fw-setup-uninstall.md`**.
**Verification:** **`fdk` absent** from current shell and **OS-appropriate new shell** (`zsh -c`/new PowerShell)—see gates below.
**CRITICAL RULES:**
- [INVALID] NEVER say "uninstall complete" until OS-appropriate gates pass (`fdk` absent in new shell)
- [INVALID] NEVER skip `~/.fdk` / Windows profile cache removal
- [VALID] ALWAYS backup rc files before `sed`/edits (`--fix` parity)
---
## Operation 5: Status
**Trigger:** User checks FDK installation.
**Steps:**
1. Run checks directly (no subagent needed):
```bash
echo "=== FDK Status ==="
fdk version 2>&1 || echo "Not installed"
node --version 2>&1 || echo "Not installed"
nvm --version 2>&1 || echo "Not installed"
which fdk
[ -d ~/.fdk ] && echo "Cache exists" || echo "No cache"
echo "=================="
- Report findings to user.
Progressive Disclosure
Load these references only when needed:
- Complex scenarios: Read
references/cross-scenarios.md - macOS issues: Read
references/macos.md - Windows issues: Read
references/windows.md(PowerShellwhere/where.exe,&&on PS 5.1, MSI/winget/Chocolatey/fdkvs CDN tarball + PATH) - npm permission / EACCES: Read
references/npm-permissions-sop.md
Do not load these files unless the operation fails or user has a complex setup.
Error Recovery
| Error | Action |
|---|---|
fdk: command not found |
Run Operation 1 (Install) |
npm permission denied |
Load references/npm-permissions-sop.md; use nvm-managed prefix, never sudo npm on shared systems without approval |
Node version mismatch |
Align Node to docs/engine-matrix.md (nvm use 24.11.0 for FDK 10.x line, etc.) |
Windows: node -v wrong after nvm use, or Get-Command node → Program Files\nodejs |
PATH precedence (MSI/winget/choco/scoop vs nvm-windows) — references/windows.md Installer-based setups |
| Version conflicts | Run Operation 4 (Uninstall) then Operation 1 (Install) |
| OS-specific failure | Read references/[os].md |
Verification gates — mandatory (Unix vs Windows)
[ALERT] ZERO TOLERANCE: An operation is never complete unless ALL applicable gates pass for that OS.
Unix / Linux / macOS (bash/zsh)
| Gate | Checks |
|---|---|
| 1 – Command presence | command -v fdk succeeds (install/upgrade/downgrade) or absent (uninstall) |
| 2 – New shell | bash -lc or zsh -lc: command -v fdk && fdk version matches expected semver OR command -v fdk absent for uninstall |
| 3 – Version match | fdk version matches expected major.line for FDK 10 vs 9 |
| 4 – Cache | ~/.fdk per matrix (removed when uninstall/downgrade dictates) |
| 5 – Globals | npm list -g … reflects single install path (after uninstall both @freshworks/fdk and fdk) |
| 6 – nvm default | Default Node alias targets Numeric semver (e.g. 24.11.0), not a fake fdk label |
Windows (PowerShell; see references/windows.md)
| Gate | Checks |
|---|---|
| 1–3 | where.exe fdk; fdk version in new PowerShell window or powershell.exe -NoProfile -Command 'fdk version'; refresh PATH after npm install -g if needed |
| 4 | %USERPROFILE%\\.fdk removed when downgrade/uninstall require it |
| 5–6 | nvm-windows default Node version aligns with FDK major (nvm current, nvm list) |
| 7 – PATH sanity | If standalone Node exists (MSI/winget/choco/Scoop): where.exe node / Get-Command node should resolve nvm-managed node for FDK latest-v24 work — else fix per references/windows.md Installer-based setups |
/fw-setup-troubleshoot --fix is preferentially Unix-shell/rc-oriented; on Windows use manual SOP + references/windows.md unless a PowerShell repair Task is invoked.
Critical validations
Installation
| Check | Requirement |
|---|---|
| FDK | 10.x for primary Platform 3.0 authoring (9.x deprecated per engine matrix) |
| Node | 24.11.x for FDK 10.1+ line (exact pin subject to docs/engine-matrix.md); 18.x only for deprecated FDK 9.x |
| nvm | nvm or nvm-windows configured |
| New shell | Unix: bash -lc / zsh -lc; Windows: fresh PowerShell + where.exe fdk |
Downgrade
| Check | Requirement |
|---|---|
| Uninstall prior | Globals + caches removed (~/.fdk / Win profile) |
| Target | CDN tarball only — never @freshworks/fdk@[semver] from registry |
| nvm alias | nvm alias default → Node semver for the chosen line—not alias default fdk |
Uninstall
| Check | Requirement |
|---|---|
Globals and legacy unscoped fdk removed |
✓ |
| Cache | ~/.fdk (and Windows equivalent) removed |
| New shell | fdk not on PATH |
Error Catalog
| Error | Severity | Action |
|---|---|---|
fdk: command not found |
CRITICAL | Run Operation 1 (Install) |
npm permission denied |
CRITICAL | Use nvm, NEVER sudo npm |
Node version mismatch |
HIGH | Align Node per docs/engine-matrix.md (nvm use 24.11.x for FDK 10 line, 18.x for deprecated 9.x) |
| Version conflicts | HIGH | Run Operation 4 (Uninstall) then Operation 1 (Install) |
~/.fdk persists after uninstall |
MEDIUM | Manual removal: rm -rf ~/.fdk |
| Old version in new shell | HIGH | Re-run downgrade with global switch |
| Multiple FDK versions | MEDIUM | Uninstall all, reinstall target version |
| OS-specific failure | VARIES | Read references/[os].md |
Anti-Patterns
Do not:
- Install Node without nvm
- Use
sudo npm install -g - Skip complete uninstall before downgrade
- Leave ~/.fdk directory after uninstall
- Create documentation files (README, CHANGELOG)
- Write installation steps manually - use subagents
- Say "complete" without new shell verification
- Skip any verification gate
Always:
- Use official FDK CLI commands
- Verify after every operation
- Preserve existing Node versions
- Clean up completely on uninstall
- Set global default on downgrade
- Test in new shell
- Run ALL verification gates
- Report verification results
Summary
- SKILL.md — core enforcement, operations, verification gates, error catalog
- references/cross-scenarios.md — complex multi-Node scenarios, PATH conflicts, dual version setups
- references/macos.md — macOS-specific installation, Homebrew, zsh configuration
- references/windows.md — Windows-specific installation, Chocolatey, PowerShell configuration
- commands/ — slash definitions:
/fw-setup-*(Confluence-style); legacy/fdk-*names remain valid aliases in routing above
When uncertain, load the specific references/ file before implementing.
Constraints (Enforced Automatically)
- Strict mode: Reject Platform 2.x / 2.3 requests only. FDK 9.x is allowed with deprecation UX until
docs/engine-matrix.mdend-of-support date—not rejected outright. - No inference without source: If not in references, respond "Insufficient FDK installation certainty"
- Verification mandatory: Every operation MUST pass all verification gates
- Production-ready only: Generate complete, persistent installations
- Global persistence: Downgrade MUST work across all terminals
- Complete cleanup: Uninstall MUST remove all artifacts
More from freshworks-developers/fw-dev-tools
fw-publish
Publish any Freshworks Platform 3.0 custom app via MCP tools: fdk validate/pack, app-upload, and submit/update through openai-server. Pre-publish: confirm Developer JWT matches manifest product modules (Freshdesk support_* vs Freshservice service_*; multiproduct sequential). At publish time, ask new vs existing listing; for new listings, prompt for supportEmail before create_app_upload_url (required for submit_custom_app). list_custom_apps for updates so the developer selects appId, then MCP handover (submit_custom_app or add_app_version with uploadId). Use when the user wants to push an app to the Marketplace for QA (test) or review, check publish status, or list existing apps. Pair with fw-app-dev for manifest or module fixes. Works with Cursor, Claude Code, and any MCP-compliant client.
20fw-review
Full Freshworks marketplace app review — iparams, frontend, serverless, FDK, security, and structured text report output — in one skill.
18fw-app-dev
Expert-level development skill for building, debugging, reviewing, and migrating Freshworks Platform 3.0 marketplace applications. REQUIRES Node.js 24.x + FDK 10.x installed BEFORE use—checks prerequisites and refuses to proceed without them. Does NOT install or manage FDK/Node—use fw-setup skill. Before fdk validate, follow this SKILL.md Manifest + toolchain gate (fw-setup if CLI wrong, /fdk-migrate on 2.x or legacy engines, then validate—never downgrade to FDK 9/Node 18 as a shortcut except LAST RESORT after six validate iterations). New apps default to FDK 10.0.1 and Node.js 24.x; FDK 9.x/Node 18.x allowed when explicitly requested with deprecation notice. Use for: (1) Creating Platform 3.0 apps (frontend, serverless, hybrid, OAuth), (2) Debugging validation errors, (3) Migrating Platform 2.x apps to 3.0, (4) Reviewing manifest.json, requests.json, oauth_config.json, (5) Implementing Crayons UI, (6) Integrating external APIs or OAuth providers, (7) Any Freshworks Platform 3.0 app development, FDK CLI, or marketplace submission task.
18fw-ai-actions-app
Expert-level skill for AI Actions and integrations on Freshworks Platform 3.0. Use when (1) Creating actions.json and SMI functions (flat request, nested response), (2) Request templates and third-party API integration, (3) Pre-build validation (pricing, paywalls, account prerequisites), (4) Failure-case validation and test data guardrails, (5) Debugging broken endpoints, (6) Integration implementation checklist (auth, base URL, request body, trigger-friendly schema), (7) Scoping and planning new integrations (and comparing only when user asks).
17fw-ai-app-dev
Expert-level skill for AI Actions and integrations on Freshworks Platform 3.0. Use when (1) Creating actions.json and SMI functions (flat request, nested response), (2) Request templates and third-party API integration, (3) Pre-build validation (pricing, paywalls, account prerequisites), (4) Failure-case validation and test data guardrails, (5) Debugging broken endpoints, (6) Integration implementation checklist (auth, base URL, request body, trigger-friendly schema), (7) Scoping and planning new integrations (and comparing only when user asks).
2