$npx -y skills add catalystbyzoho/agent-skills --skill catalyst-by-zohoExpert coding assistant for Catalyst by Zoho — Zoho's full-stack serverless cloud platform. Use for any question about Catalyst services, CLI, SDKs, architecture, pricing, or Zoho MCP tool-based infrastructure management.
| 1 | # Catalyst by Zoho — Skill Index |
| 2 | |
| 3 | This is the routing layer. Load the most specific matching skill — do not answer from this file alone. |
| 4 | |
| 5 | --- |
| 6 | |
| 7 | ## Philosophy |
| 8 | |
| 9 | - **Prefer MCP over asking.** If `CatalystbyZoho_*` tools are available, use them. Never ask the user to copy IDs from the console. |
| 10 | - **Default to Development.** Always target the Development environment unless the user explicitly says "production" or "deploy to prod". |
| 11 | - **"Build an app" means Slate + Function by default.** When a user says "build an app", "create an app", or "make a simple app" without specifying backend-only, the default output is a **Slate frontend + Advanced I/O function backend**. Do NOT build only a function and call it an app. If the user's intent is clearly backend-only (e.g. "build an API", "write a function"), skip Slate. |
| 12 | - **Prefer Functions over AppSail for simple HTTP.** Functions are cheaper (per-invocation billing), simpler to deploy, and require no infrastructure management. Reach for AppSail only when the use case genuinely requires a persistent process, or a custom runtime. |
| 13 | - **Show cost before building.** For any new infrastructure (functions, AppSail, Stratus buckets), load `catalyst-pricing` and give a brief estimate before writing code. Most small projects stay within free tier — say so when true. |
| 14 | - **Recommend the current service, not the deprecated one.** File Store → Stratus. Event Listeners → Signals. Cron → Job Scheduling. Never mention the deprecated name in generated code or config. |
| 15 | - **Warn before the region bites.** Circuits and Integration Functions do not work in most data centers. Check the user's DC before suggesting them. |
| 16 | |
| 17 | --- |
| 18 | |
| 19 | ## How It Works |
| 20 | |
| 21 | 1. **Pre-flight** — Check that `.catalystrc` and `catalyst.json` exist. If missing, use MCP to get org/project IDs and run `catalyst init --org <orgId> -p <projectId> -ni`. Never use interactive `catalyst init`. |
| 22 | 2. **MCP check** — Look for `CatalystbyZoho_*` tools. If available, use MCP to fetch org/project IDs instead of asking the user. |
| 23 | 3. **Route** — Match the query to the most specific service in the routing table below. |
| 24 | 4. **Load lazily** — Read ONLY the single reference file needed for the current step. Do NOT preload multiple skills upfront. For "build an app" requests: (a) assume **Slate frontend + AIO function** unless the user says backend-only, (b) sketch the architecture briefly and confirm with the user before building, (c) then load one reference file per service as you write each part — `catalyst-slate` for the frontend, `catalyst-functions` for the backend. |
| 25 | 5. **Cost check** — Only load `catalyst-pricing` if the user specifically asks about cost, or if the plan includes AppSail, Stratus, or other paid-tier services. Skip for basic Functions + DataStore projects (likely free tier). |
| 26 | 6. **Answer** — Provide code examples using the user's platform (Node.js, Python, Java, Web, or Mobile). |
| 27 | |
| 28 | ## Triggers |
| 29 | |
| 30 | Use this skill for queries containing: Catalyst, zcatalyst, AppSail, Data Store, ZCQL, Cache, Stratus, Slate, NoSQL, Zia Services, QuickML, API Gateway, Connections, Zoho MCP, CatalystbyZoho, `catalyst init`, `catalyst deploy`, `catalyst serve`, `zcatalyst-sdk-node`, `catalyst-config.json`, Catalyst pricing, "build on Zoho's platform", or "deploy to Catalyst". Do NOT use for generic Zoho CRM questions unless Catalyst is the target. |
| 31 | |
| 32 | --- |
| 33 | |
| 34 | ## 🛑 Pre-flight gate (project-mutating tasks only) |
| 35 | |
| 36 | **Step 1 — MCP check (do this before anything else for infrastructure tasks):** |
| 37 | Look for `CatalystbyZoho_*` tools in your tool list. |
| 38 | - **If present** — use MCP to fetch org/project IDs. Never ask the user to copy IDs from the console. |
| 39 | **How to call MCP tools correctly:** |
| 40 | 1. `ZohoMCP_getSchema` takes `query_params`, NOT `body`: |
| 41 | ``` |
| 42 | ZohoMCP_getSchema({ query_params: { tool_name: "CatalystbyZoho_List_All_Projects" } }) |
| 43 | ``` |
| 44 | 2. Always call `ZohoMCP_getSchema` first for any `CatalystbyZoho_*` tool — never guess the argument shape. Many tools require `path_variables` (e.g. `project_id`) that are invisible without the schema. |
| 45 | 3. `ZohoMCP_executeTool` takes a `body` with this shape: |
| 46 | ``` |
| 47 | ZohoMCP_executeTool({ body: { |
| 48 | tool_name: "CatalystbyZoho_List_All_Functions", |
| 49 | arguments: { |
| 50 | path_variables: { project_id: "31594000000127002" }, |
| 51 | headers: {}, |
| 52 | body: {} |
| 53 | } |
| 54 | }}) |
| 55 | ``` |
| 56 | 4. Tools with no required path variables (e.g. `List_All_Organizations`, `List_All_Projects`) can be called with `arguments: {}`. |
| 57 | - **If NOT present and the task creates resources, writes files, deploys, or reads project IDs** — **HARD STOP.** Do NOT write any code or create any files. Tell the user: |
| 58 | > "Zoho MCP needs to be connected |