[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F89K4AJ74VS7M09VENG97F":3,"skill-same:01M6F89K4AJ74VS7M09VENG97F":86},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":63,"commitSha":64,"skillDirectory":65,"forksCount":66,"repositoryHtmlUrl":67,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":6,"ownerDescription":70,"updatedAt":71,"install":72,"resources":85},"01M6F89K4AJ74VS7M09VENG97F","clari-hello-world",null,"Export your first Clari forecast and pipeline snapshot.\nUse when testing Clari API connectivity, pulling forecast data,\nor learning the export API structure.\nTrigger with phrases like \"clari hello world\", \"clari first export\",\n\"clari test api\", \"clari forecast export\".","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\u002Fclari-hello-world\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"hello world","clari hello world","clari","world","hello","data","pipeline","api","Bash","read","write","edit","snapshot","export","code","intelligence","structure","io","revenue","testing","2026-11-10 10:12:30",false,"---\nname: clari-hello-world\ndescription: |\n  Export your first Clari forecast and pipeline snapshot.\n  Use when testing Clari API connectivity, pulling forecast data,\n  or learning the export API structure.\n  Trigger with phrases like \"clari hello world\", \"clari first export\",\n  \"clari test api\", \"clari forecast export\".\nallowed-tools: Read, Write, Edit, Bash(curl:*), Bash(python3:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ntags: [saas, revenue-intelligence, forecasting, clari]\ncompatible-with: claude-code\n---\n\n# Clari Hello World\n\n## Overview\n\nFirst API calls against Clari: list available forecasts, export a forecast snapshot, and check export job status. The Clari Export API is the primary integration point for getting forecast, quota, and CRM data out of Clari.\n\n## Prerequisites\n\n- Completed `clari-install-auth` setup\n- `CLARI_API_KEY` environment variable set\n- At least one forecast configured in Clari\n\n## Instructions\n\n### Step 1: List Available Forecasts\n\n```bash\ncurl -s -H \"apikey: ${CLARI_API_KEY}\" \\\n  https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fforecast\u002Flist \\\n  | jq '.forecasts[] | {forecastName, forecastId, timePeriods}'\n```\n\n### Step 2: Export a Forecast\n\n```python\nimport requests\nimport json\nimport os\nimport time\n\napi_key = os.environ[\"CLARI_API_KEY\"]\nheaders = {\"apikey\": api_key, \"Content-Type\": \"text\u002Fplain\"}\n\n# Replace with your forecast name from Step 1\nforecast_name = \"company_forecast\"\n\npayload = json.dumps({\n    \"timePeriod\": \"2026_Q1\",\n    \"typesToExport\": [\n        \"forecast\",\n        \"quota\",\n        \"forecast_updated\",\n        \"adjustment\",\n        \"crm_total\",\n        \"crm_closed\"\n    ],\n    \"currency\": \"USD\",\n    \"schedule\": \"NONE\",\n    \"includeHistorical\": False,\n    \"exportFormat\": \"JSON\"\n})\n\nresponse = requests.post(\n    f\"https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fforecast\u002F{forecast_name}\",\n    headers=headers,\n    data=payload,\n)\nresponse.raise_for_status()\n\njob = response.json()\nprint(f\"Export job started: {job['jobId']}\")\nprint(f\"Status: {job['status']}\")\n```\n\n### Step 3: Check Export Job Status\n\n```python\n# Poll for job completion\njob_id = job[\"jobId\"]\n\nwhile True:\n    status_resp = requests.get(\n        f\"https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fjobs\u002F{job_id}\",\n        headers={\"apikey\": api_key},\n    )\n    status = status_resp.json()\n\n    if status[\"status\"] == \"COMPLETED\":\n        print(f\"Export ready: {status['downloadUrl']}\")\n        break\n    elif status[\"status\"] == \"FAILED\":\n        print(f\"Export failed: {status.get('error', 'Unknown')}\")\n        break\n\n    print(f\"Status: {status['status']}... waiting 5s\")\n    time.sleep(5)\n```\n\n### Step 4: Download and Parse Results\n\n```python\nif status[\"status\"] == \"COMPLETED\":\n    download = requests.get(status[\"downloadUrl\"])\n    forecast_data = download.json()\n\n    # Print summary\n    for entry in forecast_data.get(\"entries\", [])[:5]:\n        print(f\"  Rep: {entry.get('ownerName')}\")\n        print(f\"  Forecast: ${entry.get('forecastAmount', 0):,.0f}\")\n        print(f\"  Quota: ${entry.get('quotaAmount', 0):,.0f}\")\n        print()\n```\n\n## Output\n\n- List of forecasts with IDs and time periods\n- Exported forecast data with rep-level calls\n- Quota, adjustments, and CRM totals\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `401 Unauthorized` | Bad API key | Regenerate token in Clari settings |\n| No forecasts listed | Wrong org or no forecasts configured | Contact Clari admin |\n| Job stays `PENDING` | Large export | Wait longer, check job status endpoint |\n| `404` on forecast name | Name mismatch | Use exact name from list endpoint |\n\n## Resources\n\n- [Clari Export API](https:\u002F\u002Fdeveloper.clari.com\u002Fdocumentation\u002Fexternal_spec)\n- [Clari Community - API Guide](https:\u002F\u002Fcommunity.clari.com\u002Fproduct-q-a-6\u002Fclari-api-all-you-need-to-know-556)\n\n## Next Steps\n\nProceed to `clari-local-dev-loop` for development workflow setup.\n\n","# Clari Hello World\n\n## Overview\n\nFirst API calls against Clari: list available forecasts, export a forecast snapshot, and check export job status. The Clari Export API is the primary integration point for getting forecast, quota, and CRM data out of Clari.\n\n## Prerequisites\n\n- Completed `clari-install-auth` setup\n- `CLARI_API_KEY` environment variable set\n- At least one forecast configured in Clari\n\n## Instructions\n\n### Step 1: List Available Forecasts\n\n```bash\ncurl -s -H \"apikey: ${CLARI_API_KEY}\" \\\n  https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fforecast\u002Flist \\\n  | jq '.forecasts[] | {forecastName, forecastId, timePeriods}'\n```\n\n### Step 2: Export a Forecast\n\n```python\nimport requests\nimport json\nimport os\nimport time\n\napi_key = os.environ[\"CLARI_API_KEY\"]\nheaders = {\"apikey\": api_key, \"Content-Type\": \"text\u002Fplain\"}\n\n# Replace with your forecast name from Step 1\nforecast_name = \"company_forecast\"\n\npayload = json.dumps({\n    \"timePeriod\": \"2026_Q1\",\n    \"typesToExport\": [\n        \"forecast\",\n        \"quota\",\n        \"forecast_updated\",\n        \"adjustment\",\n        \"crm_total\",\n        \"crm_closed\"\n    ],\n    \"currency\": \"USD\",\n    \"schedule\": \"NONE\",\n    \"includeHistorical\": False,\n    \"exportFormat\": \"JSON\"\n})\n\nresponse = requests.post(\n    f\"https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fforecast\u002F{forecast_name}\",\n    headers=headers,\n    data=payload,\n)\nresponse.raise_for_status()\n\njob = response.json()\nprint(f\"Export job started: {job['jobId']}\")\nprint(f\"Status: {job['status']}\")\n```\n\n### Step 3: Check Export Job Status\n\n```python\n# Poll for job completion\njob_id = job[\"jobId\"]\n\nwhile True:\n    status_resp = requests.get(\n        f\"https:\u002F\u002Fapi.clari.com\u002Fv4\u002Fexport\u002Fjobs\u002F{job_id}\",\n        headers={\"apikey\": api_key},\n    )\n    status = status_resp.json()\n\n    if status[\"status\"] == \"COMPLETED\":\n        print(f\"Export ready: {status['downloadUrl']}\")\n        break\n    elif status[\"status\"] == \"FAILED\":\n        print(f\"Export failed: {status.get('error', 'Unknown')}\")\n        break\n\n    print(f\"Status: {status['status']}... waiting 5s\")\n    time.sleep(5)\n```\n\n### Step 4: Download and Parse Results\n\n```python\nif status[\"status\"] == \"COMPLETED\":\n    download = requests.get(status[\"downloadUrl\"])\n    forecast_data = download.json()\n\n    # Print summary\n    for entry in forecast_data.get(\"entries\", [])[:5]:\n        print(f\"  Rep: {entry.get('ownerName')}\")\n        print(f\"  Forecast: ${entry.get('forecastAmount', 0):,.0f}\")\n        print(f\"  Quota: ${entry.get('quotaAmount', 0):,.0f}\")\n        print()\n```\n\n## Output\n\n- List of forecasts with IDs and time periods\n- Exported forecast data with rep-level calls\n- Quota, adjustments, and CRM totals\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| `401 Unauthorized` | Bad API key | Regenerate token in Clari settings |\n| No forecasts listed | Wrong org or no forecasts configured | Contact Clari admin |\n| Job stays `PENDING` | Large export | Wait longer, check job status endpoint |\n| `404` on forecast name | Name mismatch | Use exact name from list endpoint |\n\n## Resources\n\n- [Clari Export API](https:\u002F\u002Fdeveloper.clari.com\u002Fdocumentation\u002Fexternal_spec)\n- [Clari Community - API Guide](https:\u002F\u002Fcommunity.clari.com\u002Fproduct-q-a-6\u002Fclari-api-all-you-need-to-know-556)\n\n## Next Steps\n\nProceed to `clari-local-dev-loop` for development workflow setup.\n\n",{"name":5,"tags":54,"author":58,"license":15,"version":59,"description":60,"allowed-tools":61,"compatible-with":62},[55,56,57,31],"saas","revenue-intelligence","forecasting","Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Export your first Clari forecast and pipeline snapshot.\nUse when testing Clari API connectivity, pulling forecast data,\nor learning the export API structure.\nTrigger with phrases like \"clari hello world\", \"clari first export\",\n\"clari test api\", \"clari forecast export\".\n","Read, Write, Edit, Bash(curl:*), Bash(python3:*)","claude-code","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclari-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":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill clari-hello-world",{"tool":78,"command":79},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill clari-hello-world",{"tool":81,"command":82},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill clari-hello-world","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fjeremylongshore\u002Fclaude-code-plugins-plus-skills\u002Fclari-hello-world\u002FSKILL.md",true,[],[87,99,109,118,124,131],{"skillNo":88,"name":89,"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":90,"categories":91,"keywords":95,"publishedAt":49},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[92],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[96,97,98],"model","model hierarchy","model hierarchy skill",{"skillNo":100,"name":101,"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":102,"categories":103,"keywords":105,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[104],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},[106,107,108],"MCP","zoom","zoom mcp",{"skillNo":110,"name":111,"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":112,"categories":113,"keywords":114,"publishedAt":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[115,116,117,107],"sdk","zoom apps sdk","apps",{"skillNo":119,"name":120,"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":121,"categories":122,"keywords":123,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[120],{"skillNo":125,"name":126,"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":127,"categories":128,"keywords":130,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[129],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},[126],{"skillNo":132,"name":133,"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":134,"categories":135,"keywords":136,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[133]]