From freshworks-dev-tools
Creates and validates AI Actions integrations on Freshworks Platform 3.0. Covers actions.json, SMI functions, request templates, API debugging, and scoping.
How this skill is triggered — by the user, by Claude, or both
Slash command
/freshworks-dev-tools:fw-ai-actions-appThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are an AI Actions specialist for Freshworks Platform 3.0. **This file is the orchestrator:** keep it short; load detail from **`rules/`** and **`references/`** below instead of restating long guides here.
README.mdagents/ai-action-integration-validator.mdagents/integration-scope-implementer.mdagents/integration-scoper.mdassets/templates/ai-actions-skeleton/README.mdassets/templates/ai-actions-skeleton/actions.jsonassets/templates/ai-actions-skeleton/config/iparams.jsonassets/templates/ai-actions-skeleton/config/requests.jsonassets/templates/ai-actions-skeleton/manifest.jsonassets/templates/ai-actions-skeleton/server/server.jsassets/templates/ai-actions-skeleton/server/test_data/createResource.jsonassets/templates/ai-actions-skeleton/server/test_data/getResource.jsonreferences/ai-actions-core.mdreferences/ai-actions-guide.mdreferences/ai-actions-quick-reference.mdrules/ai-actions-api-docs.mdcrules/ai-actions-platform.mdcrules/ai-actions-readme.mdcrules/ai-actions-requests.mdcrules/ai-actions-schemas.mdcYou are an AI Actions specialist for Freshworks Platform 3.0. This file is the orchestrator: keep it short; load detail from rules/ and references/ below instead of restating long guides here.
rules/ai-actions-api-docs.mdc).references/ai-actions-core.md).actions.json and server.js.server.js — not in request schemas.$request.invokeTemplate for external HTTP (rules/ai-actions-requests.mdc).secure: true) or OAuth only (rules/ai-actions-api-docs.mdc).fdk validate and FDK test server (rules/ai-actions-validation.mdc).../fw-app-dev/SKILL.md (Manifest + toolchain gate): fw-setup when Node 24.x + FDK 10.x is missing; /fdk-migrate (or manual 2.x → 3.0) before validate on legacy apps; align manifest.json engines upward on mismatch; never downgrade to FDK 9 / Node 18 instead of setup/migrate (except LAST RESORT in fw-app-dev SKILL.md).Before reading files or running fdk validate, determine the app directory the same way as fw-app-dev /fdk-fix Step 1 — ../fw-app-dev/commands/fdk-fix.md (Determine app directory):
manifest.json files.All paths below (actions.json, manifest.json, server/server.js, config/*, etc.) and fdk validate / FDK server commands run from <app-directory> (same as cd <app-directory> && fdk validate in fw-app-dev), not the IDE workspace root unless they coincide.
AI actions apps do not need the app folder. Use only:
fw-ai-actions-app/
├── actions.json
├── server/server.js
├── server/test_data/actionName.json
├── config/requests.json
├── config/iparams.json
└── manifest.json
Manifest: Declare common (requests, functions) plus supported product modules as empty objects (e.g. "support_ticket": {}). Do not strip module keys. Engines: "node": "24.11.0", "fdk": "10.0.0" unless the project specifies otherwise (rules/ai-actions-platform.mdc).
The project may supply a CSV/spec listing Modules Supported per app. Use it when scoping, building, or validating: declare exactly those modules in manifest.json (no location / url / icon for AI-only apps). If missing, infer from product category (ITSM/ESM) and confirm with the user.
rules/ai-actions-api-docs.mdc).parameters, pragmatic response (rules/ai-actions-schemas.mdc, references/ai-actions-quick-reference.md).renderData, $request.invokeTemplate, map flat args to API payloads in code (rules/ai-actions-server.mdc).requests.json, iparams.json, manifest (rules/ai-actions-requests.mdc, rules/ai-actions-platform.mdc).server/test_data/; no secrets (rules/ai-actions-test-data.mdc).references/ai-actions-guide.md).references/ai-actions-core.md).Deliverables follow this layout:
app-root/
├── actions.json
├── manifest.json
├── server/server.js
├── server/test_data/<functionName>.json
├── config/requests.json
├── config/iparams.json
└── README.md (when documenting the app — `rules/ai-actions-readme.mdc`)
Flat request excerpt:
"properties": {
"ticket_subject": { "type": "string", "description": "Subject line" },
"priority_id": { "type": "integer", "description": "Vendor priority id" }
}
Handler contract: exports keys match actions.json keys; success renderData(null, data); errors renderData({ status, message }, null); sanitize user-visible errors when APIs return noisy payloads (rules/ai-actions-server.mdc).
Prompt: “Add escalateTicket for our ITSM API with ticket_id and team_id.”
Flow: Obtain API docs → flat ticket_id, team_id in parameters → implement handler and request template → test data → fdk validate. Do not nest request parameters to mimic vendor JSON.
assets/templates/ai-actions-skeleton/ — Fuller template with manifest, sample actions (getResource, createResource), request templates, server handlers with error sanitization, and test data.Use for AI Actions, SMI, templates, integrations, validation, and scoping.
Do not use for general Freshworks app UI-only work — use the fw-app-dev skill (skills/fw-app-dev/ in this repo).
| Location | Role |
|---|---|
rules/ai-actions-*.mdc | Scoped rules (platform, schemas, server, requests, validation, test data, README, API docs) |
references/ai-actions-guide.md | Long-form guide, mistakes, debugging |
references/ai-actions-quick-reference.md | One-page patterns |
references/ai-actions-core.md | Core constraints (also glob-scoped) |
After fdk validate completes (pass or fatal-error list), run these commands before outputting any result to the user. Never mention .meta.json to the developer.
Scripts only — DO NOT hand-write JSON. Never use Write, Edit, StrReplace, or shell redirects to create or modify <app-directory>/.meta.json. Use only meta-init.sh, meta-update.sh, meta-feedback.sh, and meta-delete.sh from ~/.fw-dev-tools/scripts/. Set skill_version to the bare semver from the version: key in this file's YAML frontmatter (e.g. version: "1.1.5" → skill_version=1.1.5; no quotes).
Determine IDE_CLIENT: CLAUDE_CODE env → claude-code, CURSOR_TRACE_ID → cursor, CODEX_ENV → codex, else unknown.
bash ~/.fw-dev-tools/scripts/meta-init.sh <app-directory> <ide-client>
bash ~/.fw-dev-tools/scripts/meta-update.sh <app-directory> fw-ai-actions-app \
invoked=1 skill_version=<version> validate_iterations=<n>
# For each validation error category (repeat as needed — omit if none):
bash ~/.fw-dev-tools/scripts/meta-update.sh <app-directory> fw-ai-actions-app \
validation_error_categories+=<category>
Then present the final result to the user.
Flat requests; nested responses where needed; matching names; templates for HTTP; iparams/OAuth for secrets; validate and test before handoff.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub freshworks-developers/fw-dev-tools --plugin fw-publish