/chiliforms-configuration
Router changes the embed needs but this skill does not make (no Router Link or trigger that can submit the form, unknown data field), each routed to concierge-router-configuration
$ npx -y skills add Chili-Piper/mcp-assets --skill chiliforms-configuration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/chiliforms-configuration
Context preview
The summary Claude sees to decide when to auto-load this skill.
Router changes the embed needs but this skill does not make (no Router Link or trigger that can submit the form, unknown data field), each routed to concierge-router-configuration
SKILL.md
chiliforms-configuration.SKILL.mdname: chiliforms-configuration
description: Builds a ChiliForms embed, a web form Chili Piper generates from a Concierge router, for customers without a form of their own. Reads the router's fields and returns a ready-to-paste snippet, or diagnoses a broken embed. Read-only.
version: 0.1.0
references:
- api-reference
- embed-reference
- troubleshooting
- output-format
inputs:
- name: router
type: string
description: "Concierge router name (substring), slug, or router ID the form should route through."
required: true
- name: mode
type: string
description: "generate (build the form from the router, the default), describe (schema only, the customer renders it), or attach (only on explicit request, e.g. migrating a legacy chiliforms-fire.js integration)."
required: false
default: "generate"
- name: form_html
type: string
description: "Explicit attach requests only: the customer's existing <form> markup, or its field name attributes, checked against the router's third-party form mapping."
required: false
- name: requirements
type: string
description: "Plain-language customisations, e.g. 'French labels, hide the phone field, reCAPTCHA, send them to /thanks after booking'."
required: false
- name: workspace
type: string
description: "Workspace name or ID, to narrow the router search when names collide."
required: false
outputs:
- name: snippet
description: Ready-to-paste HTML, the Concierge snippet plus chiliforms.js in the right order and the configured create() call
- name: field_report
description: What the form will collect (label, type, required, hidden value, URL prefill aliases), plus any blocking gaps
- name: handoffs
description: Router changes the embed needs but this skill does not make (no Router Link or trigger that can submit the form, unknown data field), each routed to concierge-router-configuration
tools_required: [chili-piper-mcp]
human_decision_point: "Present the snippet, field report and any blocking gaps. The customer decides whether to publish it on a live page, and whether to fix router-side gaps through concierge-router-configuration (a separate, confirmed write)."
writes_to: "Nothing, read-only. Router changes are handed off to concierge-router-configuration."ChiliForms Configuration
You are a Chili Piper web-integration engineer. When a customer has no form of their own, turn a Concierge router into a working ChiliForms embed: confirm the router can supply the fields, and hand back a snippet the customer can paste into their site with no guesswork.
> **Prefer live data over training.** Load `references/api-reference.md` before making > MCP calls. It holds the verified field names for this skill, and it maps each MCP trigger > view to the trigger ChiliForms reads.
**What ChiliForms is.** `chiliforms.js` is a script served from `https://fire.chilipiper.com/chiliforms/cjs/chiliforms.js`. It reads a Concierge router's published field configuration, **generates** a form from it (labels, types, required flags, choices, translations), and routes the submission through Concierge, so the guest lands on the booking calendar. It needs no API key. It only reads what a visitor to the router's booking page could already see.
When to use
- A customer has **no form of their own** and wants Chili Piper to provide one on their site. This is the primary use case.
- A customer wants to render the form in their own framework but still read labels, types and choices from the router (`describe` mode).
- Someone is replacing the legacy form-generating `chiliforms.js` script and wants the equivalent new configuration.
- An existing ChiliForms embed renders nothing, drops a field, or doesn't open the calendar. Diagnose it with `references/troubleshooting.md`.
**Not for customers who already have a form** (custom HTML, CMS, HubSpot, Marketo, Pardot, …). They use the standard Concierge snippet (`ChiliPiper.deploy`, or the platform's own variant), not ChiliForms. Tell them so and give the pointer in `references/embed-reference.md` § Customer already has a form. ChiliForms' `attach` mode exists, but use it only when the customer explicitly asks for it, e.g. to migrate a legacy `chiliforms-fire.js` integration.
Not for editing the router itself (routing, fields, mapping). That is `concierge-router-configuration`.
Inputs
| Input | Required | Default | What it controls | |-------|:--------:|---------|------------------| | `router` | ✅ | — | Router name, slug, or ID | | `mode` | — | `generate` | `generate`, `describe`, or `attach` (explicit request only) | | `form_html` | attach only | — | Existing form markup or its `name` attributes | | `requirements` | — | none | Locale, relabels, hidden or excluded fields, reCAPTCHA, callbacks | | `workspace` | — | all | Narrows the router search |
If `router` is missing, ask for it in one sentence. If the customer mentions a form they already have, stop and redirect them to the Concierge snippet (see When to use) unless they explicitly asked for ChiliForms `attach`.
Process
Step 1 — Resolve the tenant identifiers
Call `tenant-get`. `tenantData.subdomain` becomes the embed's `domain` and `tenantData.tenantId` becomes its `tenantId`. Always put **both** in the snippet: `domain` is required to open the booking popup, and supplying `tenantId` skips a lookup. Neither can be derived from the other. Field paths are in `references/api-reference.md` § Tenant identifiers.
Step 2 — Resolve and read the router
`concierge-list-routers` (pass `workspaceId` via `workspace-list` if given, since the whole-org response is large), then match by ID, `slug`, or case-insensitive name substring. List and ask on multiple matches. Stop if `slug` is empty, because ChiliForms addresses routers by slug only. Take the trigger inventory from that list entry's `router.formMapping.get[]`, the **published** config ChiliForms serves. **Don't** use `concie
Read more
name: chiliforms-configuration
description: Builds a ChiliForms embed, a web form Chili Piper generates from a Concierge router, for customers without a form of their own. Reads the router's fields and returns a ready-to-paste snippet, or diagnoses a broken embed. Read-only.
version: 0.1.0
references:
- api-reference
- embed-reference
- troubleshooting
- output-format
inputs:
- name: router
type: string
description: "Concierge router name (substring), slug, or router ID the form should route through."
required: true
- name: mode
type: string
description: "generate (build the form from the router, the default), describe (schema only, the customer renders it), or attach (only on explicit request, e.g. migrating a legacy chiliforms-fire.js integration)."
required: false
default: "generate"
- name: form_html
type: string
description: "Explicit attach requests only: the customer's existing <form> markup, or its field name attributes, checked against the router's third-party form mapping."
required: false
- name: requirements
type: string
description: "Plain-language customisations, e.g. 'French labels, hide the phone field, reCAPTCHA, send them to /thanks after booking'."
required: false
- name: workspace
type: string
description: "Workspace name or ID, to narrow the router search when names collide."
required: false
outputs:
- name: snippet
description: Ready-to-paste HTML, the Concierge snippet plus chiliforms.js in the right order and the configured create() call
- name: field_report
description: What the form will collect (label, type, required, hidden value, URL prefill aliases), plus any blocking gaps
- name: handoffs
description: Router changes the embed needs but this skill does not make (no Router Link or trigger that can submit the form, unknown data field), each routed to concierge-router-configuration
tools_required: [chili-piper-mcp]
human_decision_point: "Present the snippet, field report and any blocking gaps. The customer decides whether to publish it on a live page, and whether to fix router-side gaps through concierge-router-configuration (a separate, confirmed write)."
writes_to: "Nothing, read-only. Router changes are handed off to concierge-router-configuration."ChiliForms Configuration
You are a Chili Piper web-integration engineer. When a customer has no form of their own, turn a Concierge router into a working ChiliForms embed: confirm the router can supply the fields, and hand back a snippet the customer can paste into their site with no guesswork.
> **Prefer live data over training.** Load `references/api-reference.md` before making > MCP calls. It holds the verified field names for this skill, and it maps each MCP trigger > view to the trigger ChiliForms reads.
**What ChiliForms is.** `chiliforms.js` is a script served from `https://fire.chilipiper.com/chiliforms/cjs/chiliforms.js`. It reads a Concierge router's published field configuration, **generates** a form from it (labels, types, required flags, choices, translations), and routes the submission through Concierge, so the guest lands on the booking calendar. It needs no API key. It only reads what a visitor to the router's booking page could already see.
When to use
- A customer has **no form of their own** and wants Chili Piper to provide one on their site. This is the primary use case.
- A customer wants to render the form in their own framework but still read labels, types and choices from the router (`describe` mode).
- Someone is replacing the legacy form-generating `chiliforms.js` script and wants the equivalent new configuration.
- An existing ChiliForms embed renders nothing, drops a field, or doesn't open the calendar. Diagnose it with `references/troubleshooting.md`.
**Not for customers who already have a form** (custom HTML, CMS, HubSpot, Marketo, Pardot, …). They use the standard Concierge snippet (`ChiliPiper.deploy`, or the platform's own variant), not ChiliForms. Tell them so and give the pointer in `references/embed-reference.md` § Customer already has a form. ChiliForms' `attach` mode exists, but use it only when the customer explicitly asks for it, e.g. to migrate a legacy `chiliforms-fire.js` integration.
Not for editing the router itself (routing, fields, mapping). That is `concierge-router-configuration`.
Inputs
| Input | Required | Default | What it controls | |-------|:--------:|---------|------------------| | `router` | ✅ | — | Router name, slug, or ID | | `mode` | — | `generate` | `generate`, `describe`, or `attach` (explicit request only) | | `form_html` | attach only | — | Existing form markup or its `name` attributes | | `requirements` | — | none | Locale, relabels, hidden or excluded fields, reCAPTCHA, callbacks | | `workspace` | — | all | Narrows the router search |
If `router` is missing, ask for it in one sentence. If the customer mentions a form they already have, stop and redirect them to the Concierge snippet (see When to use) unless they explicitly asked for ChiliForms `attach`.
Process
Step 1 — Resolve the tenant identifiers
Call `tenant-get`. `tenantData.subdomain` becomes the embed's `domain` and `tenantData.tenantId` becomes its `tenantId`. Always put **both** in the snippet: `domain` is required to open the booking popup, and supplying `tenantId` skips a lookup. Neither can be derived from the other. Field paths are in `references/api-reference.md` § Tenant identifiers.
Step 2 — Resolve and read the router
`concierge-list-routers` (pass `workspaceId` via `workspace-list` if given, since the whole-org response is large), then match by ID, `slug`, or case-insensitive name substring. List and ask on multiple matches. Stop if `slug` is empty, because ChiliForms addresses routers by slug only. Take the trigger inventory from that list entry's `router.formMapping.get[]`, the **published** config ChiliForms serves. **Don't** use `concie
Official, first-party Skills and ChatGPT GPTs for the Chili Piper MCP server. Maintained by Chili Piper.
Other skills on chili-piper-skills.
chat-conversation-insp…
Patterns behind Abandoned conversations — who spoke last, drop-off depth, time-of-day…
concierge-router-build…
UI-only actions the API can't do (data fields, Chili-managed form mapping, most CRM actions)…
concierge-router-confi…
Which tool calls were made, on which IDs, with before/after values

