[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7GZESK4S1YA0J1YJW2YNQ":3,"skill-same:01M6F7GZESK4S1YA0J1YJW2YNQ":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6F7GZESK4S1YA0J1YJW2YNQ","attio-hello-world",null,"Make your first Attio API calls -- list objects, create a person,\nquery companies, and read attributes.\nUse when starting a new Attio integration or learning the API.\nTrigger: \"attio hello world\", \"attio example\", \"first attio call\",\n\"attio quick start\", \"try attio API\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fattio-hello-world\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"attio","attio hello world","world","hello world","hello","start","api","Bash","read","write","edit","code","create","objects","query","crm","io","quick start","quick","attributes","2026-11-10 10:12:30",false,"---\nname: attio-hello-world\ndescription: |\n  Make your first Attio API calls -- list objects, create a person,\n  query companies, and read attributes.\n  Use when starting a new Attio integration or learning the API.\n  Trigger: \"attio hello world\", \"attio example\", \"first attio call\",\n  \"attio quick start\", \"try attio API\".\nallowed-tools: Read, Write, Edit, Bash(curl:*), Bash(npx:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, crm, attio]\ncompatible-with: claude-code\n---\n\n# Attio Hello World\n\n## Overview\n\nFive progressively deeper API calls that exercise the Attio object\u002Frecord model. Every call targets `https:\u002F\u002Fapi.attio.com\u002Fv2` and returns JSON.\n\n## Prerequisites\n\n- Completed `attio-install-auth` (valid `ATTIO_API_KEY` in env)\n- Scopes: `object_configuration:read`, `record_permission:read`, `record_permission:read-write`\n\n## Instructions\n\n### Step 1: List Workspace Objects\n\nEvery Attio workspace has system objects (people, companies) and optional objects (deals, users, workspaces). Custom objects can be created.\n\n```bash\ncurl -s https:\u002F\u002Fapi.attio.com\u002Fv2\u002Fobjects \\\n  -H \"Authorization: Bearer ${ATTIO_API_KEY}\" | jq '.data[] | {slug: .api_slug, singular: .singular_noun}'\n```\n\n```json\n{\"slug\": \"people\", \"singular\": \"Person\"}\n{\"slug\": \"companies\", \"singular\": \"Company\"}\n{\"slug\": \"deals\", \"singular\": \"Deal\"}\n```\n\n### Step 2: List Attributes on an Object\n\nObjects have attributes (fields). Use the slug from Step 1.\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.attio.com\u002Fv2\u002Fobjects\u002Fpeople\u002Fattributes\" \\\n  -H \"Authorization: Bearer ${ATTIO_API_KEY}\" | jq '.data[] | {slug: .api_slug, type: .type}'\n```\n\nCommon people attributes: `name` (personal-name), `email_addresses` (email-address), `phone_numbers` (phone-number), `description` (text), `primary_location` (location), `company` (record-reference).\n\n### Step 3: Create a Person Record\n\n```typescript\nconst person = await attioFetch\u003C{ data: { id: { record_id: string } } }>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fpeople\u002Frecords\",\n  body: {\n    data: {\n      values: {\n        email_addresses: [\"ada@example.com\"],\n        name: [\n          {\n            first_name: \"Ada\",\n            last_name: \"Lovelace\",\n            full_name: \"Ada Lovelace\",\n          },\n        ],\n        description: [\"First computer programmer\"],\n      },\n    },\n  },\n});\n\nconsole.log(\"Created person:\", person.data.id.record_id);\n```\n\n**Key detail:** Values are keyed by attribute slug. Most attributes accept an array (Attio supports multiselect by default). String shortcuts work for emails and domains.\n\n### Step 4: Query Records with Filters\n\n```typescript\n\u002F\u002F List people whose email contains \"example.com\"\nconst results = await attioFetch\u003C{\n  data: Array\u003C{ id: { record_id: string }; values: Record\u003Cstring, any> }>;\n}>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fpeople\u002Frecords\u002Fquery\",\n  body: {\n    filter: {\n      email_addresses: {\n        email_address: { $contains: \"example.com\" },\n      },\n    },\n    sorts: [\n      {\n        attribute: \"created_at\",\n        field: \"created_at\",\n        direction: \"desc\",\n      },\n    ],\n    limit: 10,\n  },\n});\n\nconsole.log(`Found ${results.data.length} people`);\n```\n\n### Step 5: Create a Company and Link It\n\n```typescript\n\u002F\u002F Create company\nconst company = await attioFetch\u003C{ data: { id: { record_id: string } } }>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fcompanies\u002Frecords\",\n  body: {\n    data: {\n      values: {\n        name: [\"Acme Corp\"],\n        domains: [\"acme.com\"],\n        description: [\"Enterprise widget manufacturer\"],\n      },\n    },\n  },\n});\n\n\u002F\u002F Update person to link to company via record-reference\nawait attioFetch({\n  method: \"PATCH\",\n  path: `\u002Fobjects\u002Fpeople\u002Frecords\u002F${person.data.id.record_id}`,\n  body: {\n    data: {\n      values: {\n        company: [\n          {\n            target_object: \"companies\",\n            target_record_id: company.data.id.record_id,\n          },\n        ],\n      },\n    },\n  },\n});\n```\n\n## Attio Data Model Quick Reference\n\n```\nWorkspace\n └── Objects (people, companies, deals, custom)\n      ├── Attributes (name, email, phone, custom)\n      └── Records (individual people, companies)\n           └── Values (attribute data on each record)\n\n └── Lists (pipelines, boards, custom groupings)\n      └── Entries (records added to a list with list-specific attributes)\n```\n\n## Error Handling\n\n| Error | Status | Cause | Solution |\n|-------|--------|-------|----------|\n| `not_found` | 404 | Wrong object slug or record ID | Verify slug with `GET \u002Fv2\u002Fobjects` |\n| `validation_error` | 422 | Invalid attribute value format | Check attribute type in docs |\n| `insufficient_scopes` | 403 | Token missing write scope | Add `record_permission:read-write` |\n| `duplicate_record` | 409 | Record with same unique field exists | Use `PUT` (assert) instead |\n\n## Resources\n\n- [Attio Create Record](https:\u002F\u002Fdocs.attio.com\u002Frest-api\u002Fendpoint-reference\u002Frecords\u002Fcreate-a-record)\n- [Attio List Records](https:\u002F\u002Fdocs.attio.com\u002Frest-api\u002Fendpoint-reference\u002Frecords\u002Flist-records)\n- [Attio Attribute Types](https:\u002F\u002Fdocs.attio.com\u002Fdocs\u002Fattribute-types\u002Fattribute-types)\n- [Attio Slugs and IDs](https:\u002F\u002Fdocs.attio.com\u002Fdocs\u002Fslugs-and-ids)\n\n## Next Steps\n\nProceed to `attio-local-dev-loop` for development workflow, or `attio-core-workflow-a` for record CRUD patterns.\n\n","# Attio Hello World\n\n## Overview\n\nFive progressively deeper API calls that exercise the Attio object\u002Frecord model. Every call targets `https:\u002F\u002Fapi.attio.com\u002Fv2` and returns JSON.\n\n## Prerequisites\n\n- Completed `attio-install-auth` (valid `ATTIO_API_KEY` in env)\n- Scopes: `object_configuration:read`, `record_permission:read`, `record_permission:read-write`\n\n## Instructions\n\n### Step 1: List Workspace Objects\n\nEvery Attio workspace has system objects (people, companies) and optional objects (deals, users, workspaces). Custom objects can be created.\n\n```bash\ncurl -s https:\u002F\u002Fapi.attio.com\u002Fv2\u002Fobjects \\\n  -H \"Authorization: Bearer ${ATTIO_API_KEY}\" | jq '.data[] | {slug: .api_slug, singular: .singular_noun}'\n```\n\n```json\n{\"slug\": \"people\", \"singular\": \"Person\"}\n{\"slug\": \"companies\", \"singular\": \"Company\"}\n{\"slug\": \"deals\", \"singular\": \"Deal\"}\n```\n\n### Step 2: List Attributes on an Object\n\nObjects have attributes (fields). Use the slug from Step 1.\n\n```bash\ncurl -s \"https:\u002F\u002Fapi.attio.com\u002Fv2\u002Fobjects\u002Fpeople\u002Fattributes\" \\\n  -H \"Authorization: Bearer ${ATTIO_API_KEY}\" | jq '.data[] | {slug: .api_slug, type: .type}'\n```\n\nCommon people attributes: `name` (personal-name), `email_addresses` (email-address), `phone_numbers` (phone-number), `description` (text), `primary_location` (location), `company` (record-reference).\n\n### Step 3: Create a Person Record\n\n```typescript\nconst person = await attioFetch\u003C{ data: { id: { record_id: string } } }>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fpeople\u002Frecords\",\n  body: {\n    data: {\n      values: {\n        email_addresses: [\"ada@example.com\"],\n        name: [\n          {\n            first_name: \"Ada\",\n            last_name: \"Lovelace\",\n            full_name: \"Ada Lovelace\",\n          },\n        ],\n        description: [\"First computer programmer\"],\n      },\n    },\n  },\n});\n\nconsole.log(\"Created person:\", person.data.id.record_id);\n```\n\n**Key detail:** Values are keyed by attribute slug. Most attributes accept an array (Attio supports multiselect by default). String shortcuts work for emails and domains.\n\n### Step 4: Query Records with Filters\n\n```typescript\n\u002F\u002F List people whose email contains \"example.com\"\nconst results = await attioFetch\u003C{\n  data: Array\u003C{ id: { record_id: string }; values: Record\u003Cstring, any> }>;\n}>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fpeople\u002Frecords\u002Fquery\",\n  body: {\n    filter: {\n      email_addresses: {\n        email_address: { $contains: \"example.com\" },\n      },\n    },\n    sorts: [\n      {\n        attribute: \"created_at\",\n        field: \"created_at\",\n        direction: \"desc\",\n      },\n    ],\n    limit: 10,\n  },\n});\n\nconsole.log(`Found ${results.data.length} people`);\n```\n\n### Step 5: Create a Company and Link It\n\n```typescript\n\u002F\u002F Create company\nconst company = await attioFetch\u003C{ data: { id: { record_id: string } } }>({\n  method: \"POST\",\n  path: \"\u002Fobjects\u002Fcompanies\u002Frecords\",\n  body: {\n    data: {\n      values: {\n        name: [\"Acme Corp\"],\n        domains: [\"acme.com\"],\n        description: [\"Enterprise widget manufacturer\"],\n      },\n    },\n  },\n});\n\n\u002F\u002F Update person to link to company via record-reference\nawait attioFetch({\n  method: \"PATCH\",\n  path: `\u002Fobjects\u002Fpeople\u002Frecords\u002F${person.data.id.record_id}`,\n  body: {\n    data: {\n      values: {\n        company: [\n          {\n            target_object: \"companies\",\n            target_record_id: company.data.id.record_id,\n          },\n        ],\n      },\n    },\n  },\n});\n```\n\n## Attio Data Model Quick Reference\n\n```\nWorkspace\n └── Objects (people, companies, deals, custom)\n      ├── Attributes (name, email, phone, custom)\n      └── Records (individual people, companies)\n           └── Values (attribute data on each record)\n\n └── Lists (pipelines, boards, custom groupings)\n      └── Entries (records added to a list with list-specific attributes)\n```\n\n## Error Handling\n\n| Error | Status | Cause | Solution |\n|-------|--------|-------|----------|\n| `not_found` | 404 | Wrong object slug or record ID | Verify slug with `GET \u002Fv2\u002Fobjects` |\n| `validation_error` | 422 | Invalid attribute value format | Check attribute type in docs |\n| `insufficient_scopes` | 403 | Token missing write scope | Add `record_permission:read-write` |\n| `duplicate_record` | 409 | Record with same unique field exists | Use `PUT` (assert) instead |\n\n## Resources\n\n- [Attio Create Record](https:\u002F\u002Fdocs.attio.com\u002Frest-api\u002Fendpoint-reference\u002Frecords\u002Fcreate-a-record)\n- [Attio List Records](https:\u002F\u002Fdocs.attio.com\u002Frest-api\u002Fendpoint-reference\u002Frecords\u002Flist-records)\n- [Attio Attribute Types](https:\u002F\u002Fdocs.attio.com\u002Fdocs\u002Fattribute-types\u002Fattribute-types)\n- [Attio Slugs and IDs](https:\u002F\u002Fdocs.attio.com\u002Fdocs\u002Fslugs-and-ids)\n\n## Next Steps\n\nProceed to `attio-local-dev-loop` for development workflow, or `attio-core-workflow-a` for record CRUD patterns.\n\n",{"name":5,"tags":49,"author":51,"license":15,"version":52,"description":53,"allowed-tools":54,"compatible-with":55},[50,39,24],"saas","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Make your first Attio API calls -- list objects, create a person,\nquery companies, and read attributes.\nUse when starting a new Attio integration or learning the API.\nTrigger: \"attio hello world\", \"attio example\", \"first attio call\",\n\"attio quick start\", \"try attio API\".\n","Read, Write, Edit, Bash(curl:*), Bash(npx:*)","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fattio-hello-world",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill attio-hello-world",{"tool":71,"command":72},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill attio-hello-world",{"tool":74,"command":75},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill attio-hello-world","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fattio-hello-world\u002FSKILL.md",true,[],[80,94,104,113,119,126],{"skillNo":81,"name":82,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":90,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[91,92,93],"model","model hierarchy","model hierarchy skill",{"skillNo":95,"name":96,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":97,"categories":98,"keywords":100,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[99],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[101,102,103],"MCP","zoom","zoom mcp",{"skillNo":105,"name":106,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[110,111,112,102],"sdk","zoom apps sdk","apps",{"skillNo":114,"name":115,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[115],{"skillNo":120,"name":121,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":125,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[124],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},[121],{"skillNo":127,"name":128,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[128]]