[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7MP25VP32CCQYCMPYWJJH":3,"skill-same:01M6F7MP25VP32CCQYCMPYWJJH":80},{"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":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":6,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6F7MP25VP32CCQYCMPYWJJH","bamboohr-hello-world",null,"Create a minimal working BambooHR example — fetch employee directory and single employee.\nUse when starting a new BambooHR integration, testing your setup,\nor learning basic BambooHR REST API patterns.\nTrigger with phrases like \"bamboohr hello world\", \"bamboohr example\",\n\"bamboohr quick start\", \"simple bamboohr code\", \"first bamboohr call\".","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\u002Fbamboohr-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],"bamboohr hello world","hello world","bamboohr","hello","world","write","quick","hr","quick start","io","fetch","edit","testing","read","Bash","api","code","create","rest api patterns","directory","2026-11-10 10:12:30",false,"---\nname: bamboohr-hello-world\ndescription: |\n  Create a minimal working BambooHR example — fetch employee directory and single employee.\n  Use when starting a new BambooHR integration, testing your setup,\n  or learning basic BambooHR REST API patterns.\n  Trigger with phrases like \"bamboohr hello world\", \"bamboohr example\",\n  \"bamboohr quick start\", \"simple bamboohr code\", \"first bamboohr call\".\nallowed-tools: Read, Write, Edit, Bash(curl:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, hr, bamboohr, quickstart]\ncompatible-with: claude-code\n---\n\n# BambooHR Hello World\n\n## Overview\n\nMinimal working examples for the three most common BambooHR API operations: fetch the employee directory, get a single employee by ID, and run a custom report.\n\n## Prerequisites\n\n- Completed `bamboohr-install-auth` setup\n- `BAMBOOHR_API_KEY` and `BAMBOOHR_COMPANY_DOMAIN` env vars set\n\n## Instructions\n\n### Step 1: Fetch Employee Directory\n\n```typescript\nimport 'dotenv\u002Fconfig';\n\nconst COMPANY = process.env.BAMBOOHR_COMPANY_DOMAIN!;\nconst API_KEY = process.env.BAMBOOHR_API_KEY!;\nconst BASE = `https:\u002F\u002Fapi.bamboohr.com\u002Fapi\u002Fgateway.php\u002F${COMPANY}\u002Fv1`;\nconst AUTH = `Basic ${Buffer.from(`${API_KEY}:x`).toString('base64')}`;\n\n\u002F\u002F GET \u002Femployees\u002Fdirectory — returns all active employees\nconst dirRes = await fetch(`${BASE}\u002Femployees\u002Fdirectory`, {\n  headers: { Authorization: AUTH, Accept: 'application\u002Fjson' },\n});\nconst directory = await dirRes.json();\n\nconsole.log(`Company has ${directory.employees.length} employees`);\nfor (const emp of directory.employees.slice(0, 5)) {\n  console.log(`  ${emp.displayName} — ${emp.jobTitle} (${emp.department})`);\n}\n```\n\n**Directory response shape:**\n\n```json\n{\n  \"fields\": [\n    { \"id\": \"displayName\", \"type\": \"text\", \"name\": \"Display Name\" },\n    { \"id\": \"jobTitle\", \"type\": \"text\", \"name\": \"Job Title\" }\n  ],\n  \"employees\": [\n    {\n      \"id\": \"123\",\n      \"displayName\": \"Jane Smith\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"jobTitle\": \"Software Engineer\",\n      \"department\": \"Engineering\",\n      \"location\": \"Remote\",\n      \"workEmail\": \"jane@acme.com\",\n      \"photoUrl\": \"https:\u002F\u002F...\"\n    }\n  ]\n}\n```\n\n### Step 2: Get a Single Employee\n\n```typescript\n\u002F\u002F GET \u002Femployees\u002F{id}\u002F?fields=firstName,lastName,jobTitle,department,hireDate,workEmail\nconst empRes = await fetch(\n  `${BASE}\u002Femployees\u002F123\u002F?fields=firstName,lastName,jobTitle,department,hireDate,workEmail,status`,\n  { headers: { Authorization: AUTH, Accept: 'application\u002Fjson' } },\n);\nconst employee = await empRes.json();\n\nconsole.log(`${employee.firstName} ${employee.lastName}`);\nconsole.log(`  Title: ${employee.jobTitle}`);\nconsole.log(`  Dept:  ${employee.department}`);\nconsole.log(`  Hired: ${employee.hireDate}`);\nconsole.log(`  Email: ${employee.workEmail}`);\n```\n\n**Common employee fields you can request:**\n\n| Field | Description |\n|-------|-------------|\n| `firstName`, `lastName`, `displayName` | Name fields |\n| `jobTitle`, `department`, `division` | Position |\n| `workEmail`, `homeEmail`, `mobilePhone` | Contact |\n| `hireDate`, `originalHireDate` | Dates |\n| `status` | `Active` or `Inactive` |\n| `employeeNumber`, `location`, `supervisor` | Org data |\n| `payRate`, `payType`, `exempt` | Compensation (admin only) |\n\n### Step 3: Run a Custom Report\n\n```typescript\n\u002F\u002F POST \u002Freports\u002Fcustom?format=JSON\nconst reportRes = await fetch(`${BASE}\u002Freports\u002Fcustom?format=JSON`, {\n  method: 'POST',\n  headers: {\n    Authorization: AUTH,\n    'Content-Type': 'application\u002Fjson',\n    Accept: 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    title: 'Hello World Report',\n    fields: ['firstName', 'lastName', 'department', 'jobTitle', 'hireDate'],\n    filters: {\n      lastChanged: { includeNull: 'no', value: '2024-01-01T00:00:00Z' },\n    },\n  }),\n});\nconst report = await reportRes.json();\n\nconsole.log(`Report: ${report.title} — ${report.employees.length} rows`);\nfor (const row of report.employees) {\n  console.log(`  ${row.firstName} ${row.lastName} | ${row.department}`);\n}\n```\n\n### Python Equivalent\n\n```python\nimport os, requests\nfrom dotenv import load_dotenv\n\nload_dotenv()\nCOMPANY = os.environ[\"BAMBOOHR_COMPANY_DOMAIN\"]\nAPI_KEY = os.environ[\"BAMBOOHR_API_KEY\"]\nBASE = f\"https:\u002F\u002Fapi.bamboohr.com\u002Fapi\u002Fgateway.php\u002F{COMPANY}\u002Fv1\"\n\n# Employee directory\nr = requests.get(f\"{BASE}\u002Femployees\u002Fdirectory\",\n                 auth=(API_KEY, \"x\"),\n                 headers={\"Accept\": \"application\u002Fjson\"})\ndirectory = r.json()\nfor emp in directory[\"employees\"][:5]:\n    print(f\"  {emp['displayName']} — {emp['jobTitle']}\")\n\n# Single employee\nr = requests.get(f\"{BASE}\u002Femployees\u002F123\u002F\",\n                 params={\"fields\": \"firstName,lastName,department,hireDate\"},\n                 auth=(API_KEY, \"x\"),\n                 headers={\"Accept\": \"application\u002Fjson\"})\nprint(r.json())\n```\n\n## Output\n\n- Employee directory listing with names, titles, and departments\n- Single employee detail response\n- Custom report with filtered results\n- Console output confirming working connection\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| 401 Unauthorized | Bad API key | Check `BAMBOOHR_API_KEY` value |\n| 404 Not Found | Wrong employee ID or company domain | Verify ID exists; check `BAMBOOHR_COMPANY_DOMAIN` |\n| 400 Bad Request | Invalid field name in request | Check field name list in docs |\n| Empty `employees` array | No active employees or permissions | Verify API key has read access |\n\n## Resources\n\n- [BambooHR Field Names Reference](https:\u002F\u002Fdocumentation.bamboohr.com\u002Fdocs\u002Flist-of-field-names)\n- [BambooHR API Technical Overview](https:\u002F\u002Fdocumentation.bamboohr.com\u002Fdocs\u002Fapi-details)\n\n## Next Steps\n\nProceed to `bamboohr-local-dev-loop` for development workflow setup.\n\n","# BambooHR Hello World\n\n## Overview\n\nMinimal working examples for the three most common BambooHR API operations: fetch the employee directory, get a single employee by ID, and run a custom report.\n\n## Prerequisites\n\n- Completed `bamboohr-install-auth` setup\n- `BAMBOOHR_API_KEY` and `BAMBOOHR_COMPANY_DOMAIN` env vars set\n\n## Instructions\n\n### Step 1: Fetch Employee Directory\n\n```typescript\nimport 'dotenv\u002Fconfig';\n\nconst COMPANY = process.env.BAMBOOHR_COMPANY_DOMAIN!;\nconst API_KEY = process.env.BAMBOOHR_API_KEY!;\nconst BASE = `https:\u002F\u002Fapi.bamboohr.com\u002Fapi\u002Fgateway.php\u002F${COMPANY}\u002Fv1`;\nconst AUTH = `Basic ${Buffer.from(`${API_KEY}:x`).toString('base64')}`;\n\n\u002F\u002F GET \u002Femployees\u002Fdirectory — returns all active employees\nconst dirRes = await fetch(`${BASE}\u002Femployees\u002Fdirectory`, {\n  headers: { Authorization: AUTH, Accept: 'application\u002Fjson' },\n});\nconst directory = await dirRes.json();\n\nconsole.log(`Company has ${directory.employees.length} employees`);\nfor (const emp of directory.employees.slice(0, 5)) {\n  console.log(`  ${emp.displayName} — ${emp.jobTitle} (${emp.department})`);\n}\n```\n\n**Directory response shape:**\n\n```json\n{\n  \"fields\": [\n    { \"id\": \"displayName\", \"type\": \"text\", \"name\": \"Display Name\" },\n    { \"id\": \"jobTitle\", \"type\": \"text\", \"name\": \"Job Title\" }\n  ],\n  \"employees\": [\n    {\n      \"id\": \"123\",\n      \"displayName\": \"Jane Smith\",\n      \"firstName\": \"Jane\",\n      \"lastName\": \"Smith\",\n      \"jobTitle\": \"Software Engineer\",\n      \"department\": \"Engineering\",\n      \"location\": \"Remote\",\n      \"workEmail\": \"jane@acme.com\",\n      \"photoUrl\": \"https:\u002F\u002F...\"\n    }\n  ]\n}\n```\n\n### Step 2: Get a Single Employee\n\n```typescript\n\u002F\u002F GET \u002Femployees\u002F{id}\u002F?fields=firstName,lastName,jobTitle,department,hireDate,workEmail\nconst empRes = await fetch(\n  `${BASE}\u002Femployees\u002F123\u002F?fields=firstName,lastName,jobTitle,department,hireDate,workEmail,status`,\n  { headers: { Authorization: AUTH, Accept: 'application\u002Fjson' } },\n);\nconst employee = await empRes.json();\n\nconsole.log(`${employee.firstName} ${employee.lastName}`);\nconsole.log(`  Title: ${employee.jobTitle}`);\nconsole.log(`  Dept:  ${employee.department}`);\nconsole.log(`  Hired: ${employee.hireDate}`);\nconsole.log(`  Email: ${employee.workEmail}`);\n```\n\n**Common employee fields you can request:**\n\n| Field | Description |\n|-------|-------------|\n| `firstName`, `lastName`, `displayName` | Name fields |\n| `jobTitle`, `department`, `division` | Position |\n| `workEmail`, `homeEmail`, `mobilePhone` | Contact |\n| `hireDate`, `originalHireDate` | Dates |\n| `status` | `Active` or `Inactive` |\n| `employeeNumber`, `location`, `supervisor` | Org data |\n| `payRate`, `payType`, `exempt` | Compensation (admin only) |\n\n### Step 3: Run a Custom Report\n\n```typescript\n\u002F\u002F POST \u002Freports\u002Fcustom?format=JSON\nconst reportRes = await fetch(`${BASE}\u002Freports\u002Fcustom?format=JSON`, {\n  method: 'POST',\n  headers: {\n    Authorization: AUTH,\n    'Content-Type': 'application\u002Fjson',\n    Accept: 'application\u002Fjson',\n  },\n  body: JSON.stringify({\n    title: 'Hello World Report',\n    fields: ['firstName', 'lastName', 'department', 'jobTitle', 'hireDate'],\n    filters: {\n      lastChanged: { includeNull: 'no', value: '2024-01-01T00:00:00Z' },\n    },\n  }),\n});\nconst report = await reportRes.json();\n\nconsole.log(`Report: ${report.title} — ${report.employees.length} rows`);\nfor (const row of report.employees) {\n  console.log(`  ${row.firstName} ${row.lastName} | ${row.department}`);\n}\n```\n\n### Python Equivalent\n\n```python\nimport os, requests\nfrom dotenv import load_dotenv\n\nload_dotenv()\nCOMPANY = os.environ[\"BAMBOOHR_COMPANY_DOMAIN\"]\nAPI_KEY = os.environ[\"BAMBOOHR_API_KEY\"]\nBASE = f\"https:\u002F\u002Fapi.bamboohr.com\u002Fapi\u002Fgateway.php\u002F{COMPANY}\u002Fv1\"\n\n# Employee directory\nr = requests.get(f\"{BASE}\u002Femployees\u002Fdirectory\",\n                 auth=(API_KEY, \"x\"),\n                 headers={\"Accept\": \"application\u002Fjson\"})\ndirectory = r.json()\nfor emp in directory[\"employees\"][:5]:\n    print(f\"  {emp['displayName']} — {emp['jobTitle']}\")\n\n# Single employee\nr = requests.get(f\"{BASE}\u002Femployees\u002F123\u002F\",\n                 params={\"fields\": \"firstName,lastName,department,hireDate\"},\n                 auth=(API_KEY, \"x\"),\n                 headers={\"Accept\": \"application\u002Fjson\"})\nprint(r.json())\n```\n\n## Output\n\n- Employee directory listing with names, titles, and departments\n- Single employee detail response\n- Custom report with filtered results\n- Console output confirming working connection\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| 401 Unauthorized | Bad API key | Check `BAMBOOHR_API_KEY` value |\n| 404 Not Found | Wrong employee ID or company domain | Verify ID exists; check `BAMBOOHR_COMPANY_DOMAIN` |\n| 400 Bad Request | Invalid field name in request | Check field name list in docs |\n| Empty `employees` array | No active employees or permissions | Verify API key has read access |\n\n## Resources\n\n- [BambooHR Field Names Reference](https:\u002F\u002Fdocumentation.bamboohr.com\u002Fdocs\u002Flist-of-field-names)\n- [BambooHR API Technical Overview](https:\u002F\u002Fdocumentation.bamboohr.com\u002Fdocs\u002Fapi-details)\n\n## Next Steps\n\nProceed to `bamboohr-local-dev-loop` for development workflow setup.\n\n",{"name":5,"tags":49,"author":52,"license":15,"version":53,"description":54,"allowed-tools":55,"compatible-with":56},[50,31,26,51],"saas","quickstart","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Create a minimal working BambooHR example — fetch employee directory and single employee.\nUse when starting a new BambooHR integration, testing your setup,\nor learning basic BambooHR REST API patterns.\nTrigger with phrases like \"bamboohr hello world\", \"bamboohr example\",\n\"bamboohr quick start\", \"simple bamboohr code\", \"first bamboohr call\".\n","Read, Write, Edit, Bash(curl:*)","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fbamboohr-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":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill bamboohr-hello-world",{"tool":72,"command":73},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill bamboohr-hello-world",{"tool":75,"command":76},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill bamboohr-hello-world","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fbamboohr-hello-world\u002FSKILL.md",true,[],[81,95,105,114,120,127],{"skillNo":82,"name":83,"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":84,"categories":85,"keywords":91,"publishedAt":44},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"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":98,"categories":99,"keywords":101,"publishedAt":44},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"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":108,"categories":109,"keywords":110,"publishedAt":44},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"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":117,"categories":118,"keywords":119,"publishedAt":44},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"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":123,"categories":124,"keywords":126,"publishedAt":44},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[122],{"skillNo":128,"name":129,"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":130,"categories":131,"keywords":132,"publishedAt":44},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]