Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Create a minimal working Intercom example with contacts, conversations, and messages. Use when starting a new Intercom integration, testing your setup, or learning the core Intercom API data model. Trigger with phrases like "intercom hello world", "intercom example", "intercom quick start", "simple intercom code", "first intercom API call".
.claude/skills/jeremylongshore-intercom-hello-world/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 41% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 29% | 0% |
Minimal working examples covering the Intercom core data model: contacts (users and leads), conversations, messages, and tags. This skill gives you the first end-to-end round trip against the Intercom REST API — create a contact, search it, message it, open a conversation, and tag it — so you can confirm your credentials work and internalize how the entities relate before building anything real.
Before running any snippet below, make sure the following are in place. Each is verified once during the intercom-install-auth setup step:
intercom-install-auth setup (installs the SDK and stores your token).intercom-client npm package installed in your project (npm install intercom-client).INTERCOM_ACCESS_TOKEN in your environment. The SDK reads this token to authenticate every request; there is no separate login call.The workflow is five short steps against the core data model. The first — creating a contact — is shown in full here so you can run immediately. Steps 2 through 5 (search, message, conversation, tag) follow the identical client.<resource>.<verb>(...) shape and live in the walkthrough reference.
Contacts are the core entity. They have a role of either user (identified) or lead (anonymous).
typescriptimport { IntercomClient } from "intercom-client"; const client = new IntercomClient({ token: process.env.INTERCOM_ACCESS_TOKEN!, }); // Create a user contact const user = await client.contacts.create({ role: "user", externalId: "user-12345", email: "jane@example.com", name: "Jane Smith", }); console.log(`Created contact: ${user.id} (${user.role})`);
Continue in the full walkthrough, which covers, with complete code and response shapes:
client.contacts.search)client.messages.create, admin → contact)client.conversations.create)client.tags.create + client.contacts.tag)The walkthrough also carries the full Core Data Model reference table (Contact, Conversation, Message, Tag, Company, Admin and their key fields).
Running the snippets produces:
id, role, email, external_id, custom_attributes, and timestamps (see the full response shape in the walkthrough).Created contact: 6657add46abd0167d9419c3a (user).Nothing is written to disk — every result is an in-memory API object plus the console.log lines above. A successful run means every call returned without throwing.
| Error | Cause | Solution | |-------|-------|----------| | not_found (404) | Contact/conversation ID invalid | Verify the ID exists | | parameter_invalid | Missing required field | Check required params in docs | | conflict (409) | Duplicate external_id | Use unique identifiers | | unauthorized (401) | Invalid token | Regenerate access token (re-run intercom-install-auth) |
each with complete code and response shapes: references/walkthrough.md.
creates a contact, and lists workspace contacts and conversations, with the expected console output: references/complete-script.md.
Both are copy-paste runnable once the Prerequisites above are met.
Proceed to the intercom-local-dev-loop skill to set up a fast local development workflow (watch mode, sandbox workspace, and safe test data) once this hello-world round trip succeeds.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 8,823 | 10,287 | +17% | 1 | 1 | 0% | 1,636 | 2,174 | +33% | 0 | 0 | — |
case-02 | fail→pass | 24,037 | 12,738 | -47% | 1 | 1 | 0% | 2,965 | 3,870 | +31% | 0 | 0 | — |
case-03 | fail→pass | 9,334 | 7,285 | -22% | 1 | 1 | 0% | 1,920 | 2,701 | +41% | 0 | 0 | — |
case-04 | pass→pass | 11,201 | 5,538 | -51% | 1 | 1 | 0% | 2,083 | 2,259 | +8% | 0 | 0 | — |
case-05 | fail→pass | 17,826 | 13,037 | -27% | 1 | 1 | 0% | 2,200 | 2,557 | +16% | 0 | 0 | — |
case-06 | pass→pass | 23,270 | 11,229 | -52% | 1 | 1 | 0% | 1,412 | 2,353 | +67% | 0 | 0 | — |
case-07 | pass→pass | 14,496 | 13,551 | -7% | 1 | 1 | 0% | 1,773 | 2,817 | +59% | 0 | 0 | — |
case-08 | pass→pass | 14,311 | 11,320 | -21% | 1 | 1 | 0% | 2,836 | 3,395 | +20% | 0 | 0 | — |
case-09 | pass→pass | 12,718 | 15,817 | +24% | 1 | 1 | 0% | 2,473 | 3,212 | +30% | 0 | 0 | — |
case-10 | pass→pass | 16,574 | 9,793 | -41% | 1 | 1 | 0% | 1,968 | 2,658 | +35% | 0 | 0 | — |
case-11 | pass→pass | 14,392 | 4,553 | -68% | 1 | 1 | 0% | 1,645 | 1,937 | +18% | 0 | 0 | — |
case-12 | fail→pass | 17,132 | 14,147 | -17% | 1 | 1 | 0% | 2,095 | 2,713 | +29% | 0 | 0 | — |
case-13 | fail→pass | 16,419 | 3,819 | -77% | 1 | 1 | 0% | 1,991 | 1,836 | -8% | 0 | 0 | — |
case-14 | fail→pass | 57,471 | 2,618 | -95% | 1 | 1 | 0% | 1,744 | 1,560 | -11% | 0 | 0 | — |
case-15 | pass→pass | 14,707 | 9,269 | -37% | 1 | 1 | 0% | 1,775 | 2,002 | +13% | 0 | 0 | — |
case-16 | fail→pass | 6,074 | 2,072 | -66% | 1 | 1 | 0% | 990 | 1,474 | +49% | 0 | 0 | — |
case-17 | fail→pass | 6,857 | 7,383 | +8% | 1 | 1 | 0% | 1,249 | 1,539 | +23% | 0 | 0 | — |
case-18 | fail→pass | 15,765 | 3,196 | -80% | 1 | 1 | 0% | 1,814 | 1,707 | -6% | 0 | 0 | — |
case-19 | pass→pass | 13,467 | 3,025 | -78% | 1 | 1 | 0% | 1,406 | 1,569 | +12% | 0 | 0 | — |
case-20 | pass→pass | 13,089 | 17,618 | +35% | 1 | 1 | 0% | 2,647 | 3,564 | +35% | 0 | 0 | — |
case-21 | pass→pass | 17,858 | 21,449 | +20% | 1 | 1 | 0% | 2,491 | 3,812 | +53% | 0 | 0 | — |
case-22 | fail→fail | 22,128 | 17,695 | -20% | 1 | 1 | 0% | 3,272 | 3,673 | +12% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +45 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.