Install any skill in seconds. Free to start, no credit card required.
Get Started Free →jeremylongshore/intercom-core-workflow-a
Manage Intercom contacts: create, search, update, merge leads into users.
Passed 20 of 22 test cases with the skill, and 14 of 22 without it.
and 5 more in the full report
6 fixed14 passed either way2 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
When creating an identified user with custom plan details via client.contacts.create in TypeScript using intercom-client, should the custom attributes parameter be key named custom_attributes or customAttributes?
| Checked | Without skill | With skill |
|---|---|---|
| Specifies customAttributes as the parameter name in SDK create options | Missed | Passed |
The instructions your model reads when the skill loads.
Primary workflow for managing Intercom contacts. Covers creating users and leads, searching with filters, updating custom attributes, merging leads into users, and listing segments. This SKILL.md gives you the high-level workflow and the first example; drill into references/implementation.md for the full step-by-step code and references/examples.md for end-to-end flows.
intercom-install-auth setupThe contact workflow is six operations against the intercom-client SDK. Instantiate the client once, then call the operation you need:
import { IntercomClient } from "intercom-client";
const client = new IntercomClient({
token: process.env.INTERCOM_ACCESS_TOKEN!,
});
// Create an identified user (has external_id)
const user = await client.contacts.create({
role: "user",
externalId: "customer-9001",
email: "[email protected]",
name: "Alice Johnson",
customAttributes: { plan: "enterprise" },
});
The six operations, in the order you typically reach for them:
contacts.create with role: "user" (identified, needs externalId) or role: "lead" (anonymous).contacts.search with a single filter or a compound AND/OR query, plus pagination and sort.contacts.update by contactId to change name or custom attributes.contacts.merge({ from: leadId, into: userId }); the lead's conversations, events, and tags transfer to the user.contacts.listSegments({ contactId }) to see which segments a contact belongs to.test cases passed, vs 14 / 22 without
More skills from the same source and nearby in the registry, with their headline benchmark lift.