[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F9005RG30AYPAWNGCPCCHA":3,"skill-same:01M6F9005RG30AYPAWNGCPCCHA":73},{"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":18,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6F9005RG30AYPAWNGCPCCHA","retellai-webhooks-events",null,"Implement Retell AI webhook signature validation and event handling.\nUse when setting up webhook endpoints, implementing signature verification,\nor handling Retell AI event notifications securely.\nTrigger with phrases like \"retellai webhook\", \"retellai events\",\n\"retellai webhook signature\", \"handle retellai events\", \"retellai notifications\".","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1981,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-webhooks-events\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"retellai webhooks events","events","webhooks","when","implement","implementing","with","event","trigger","io","webhook","endpoints","up","use","edit","write","read","curl","Bash","notifications","verification","validation","2026-11-10 10:12:30",false,"---\nname: retellai-webhooks-events\ndescription: |\n  Implement Retell AI webhook signature validation and event handling.\n  Use when setting up webhook endpoints, implementing signature verification,\n  or handling Retell AI event notifications securely.\n  Trigger with phrases like \"retellai webhook\", \"retellai events\",\n  \"retellai webhook signature\", \"handle retellai events\", \"retellai notifications\".\nallowed-tools: Read, Write, Edit, Bash(curl:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Retell AI Webhooks & Events\n\n## Overview\nSecurely handle Retell AI webhooks with signature validation and replay protection.\n\n## Prerequisites\n- Retell AI webhook secret configured\n- HTTPS endpoint accessible from internet\n- Understanding of cryptographic signatures\n- Redis or database for idempotency (optional)\n\n## Webhook Endpoint Setup\n\n### Express.js\n```typescript\nimport express from 'express';\nimport crypto from 'crypto';\n\nconst app = express();\n\n\u002F\u002F IMPORTANT: Raw body needed for signature verification\napp.post('\u002Fwebhooks\u002Fretellai',\n  express.raw({ type: 'application\u002Fjson' }),\n  async (req, res) => {\n    const signature = req.headers['x-retellai-signature'] as string;\n    const timestamp = req.headers['x-retellai-timestamp'] as string;\n\n    if (!verifyRetell AISignature(req.body, signature, timestamp)) {\n      return res.status(401).json({ error: 'Invalid signature' });\n    }\n\n    const event = JSON.parse(req.body.toString());\n    await handleRetell AIEvent(event);\n\n    res.status(200).json({ received: true });\n  }\n);\n```\n\n## Signature Verification\n\n```typescript\nfunction verifyRetell AISignature(\n  payload: Buffer,\n  signature: string,\n  timestamp: string\n): boolean {\n  const secret = process.env.RETELLAI_WEBHOOK_SECRET!;\n\n  \u002F\u002F Reject old timestamps (replay attack protection)\n  const timestampAge = Date.now() - parseInt(timestamp) * 1000;\n  if (timestampAge > 300000) { \u002F\u002F 5 minutes\n    console.error('Webhook timestamp too old');\n    return false;\n  }\n\n  \u002F\u002F Compute expected signature\n  const signedPayload = `${timestamp}.${payload.toString()}`;\n  const expectedSignature = crypto\n    .createHmac('sha256', secret)\n    .update(signedPayload)\n    .digest('hex');\n\n  \u002F\u002F Timing-safe comparison\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(expectedSignature)\n  );\n}\n```\n\n## Event Handler Pattern\n\n```typescript\ntype Retell AIEventType = 'resource.created' | 'resource.updated' | 'resource.deleted';\n\ninterface Retell AIEvent {\n  id: string;\n  type: Retell AIEventType;\n  data: Record\u003Cstring, any>;\n  created: string;\n}\n\nconst eventHandlers: Record\u003CRetell AIEventType, (data: any) => Promise\u003Cvoid>> = {\n  'resource.created': async (data) => { \u002F* handle *\u002F },\n  'resource.updated': async (data) => { \u002F* handle *\u002F },\n  'resource.deleted': async (data) => { \u002F* handle *\u002F }\n};\n\nasync function handleRetell AIEvent(event: Retell AIEvent): Promise\u003Cvoid> {\n  const handler = eventHandlers[event.type];\n\n  if (!handler) {\n    console.log(`Unhandled event type: ${event.type}`);\n    return;\n  }\n\n  try {\n    await handler(event.data);\n    console.log(`Processed ${event.type}: ${event.id}`);\n  } catch (error) {\n    console.error(`Failed to process ${event.type}: ${event.id}`, error);\n    throw error; \u002F\u002F Rethrow to trigger retry\n  }\n}\n```\n\n## Idempotency Handling\n\n```typescript\nimport { Redis } from 'ioredis';\n\nconst redis = new Redis(process.env.REDIS_URL);\n\nasync function isEventProcessed(eventId: string): Promise\u003Cboolean> {\n  const key = `retellai:event:${eventId}`;\n  const exists = await redis.exists(key);\n  return exists === 1;\n}\n\nasync function markEventProcessed(eventId: string): Promise\u003Cvoid> {\n  const key = `retellai:event:${eventId}`;\n  await redis.set(key, '1', 'EX', 86400 * 7); \u002F\u002F 7 days TTL\n}\n```\n\n## Webhook Testing\n\n```bash\n# Use Retell AI CLI to send test events\nretellai webhooks trigger resource.created --url http:\u002F\u002Flocalhost:3000\u002Fwebhooks\u002Fretellai\n\n# Or use webhook.site for debugging\ncurl -X POST https:\u002F\u002Fwebhook.site\u002Fyour-uuid \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"resource.created\", \"data\": {}}'\n```\n\n## Instructions\n\n### Step 1: Register Webhook Endpoint\nConfigure your webhook URL in the Retell AI dashboard.\n\n### Step 2: Implement Signature Verification\nUse the signature verification code to validate incoming webhooks.\n\n### Step 3: Handle Events\nImplement handlers for each event type your application needs.\n\n### Step 4: Add Idempotency\nPrevent duplicate processing with event ID tracking.\n\n## Output\n- Secure webhook endpoint\n- Signature validation enabled\n- Event handlers implemented\n- Replay attack protection active\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Invalid signature | Wrong secret | Verify webhook secret |\n| Timestamp rejected | Clock drift | Check server time sync |\n| Duplicate events | Missing idempotency | Implement event ID tracking |\n| Handler timeout | Slow processing | Use async queue |\n\n## Examples\n\n### Testing Webhooks Locally\n```bash\n# Use ngrok to expose local server\nngrok http 3000\n\n# Send test webhook\ncurl -X POST https:\u002F\u002Fyour-ngrok-url\u002Fwebhooks\u002Fretellai \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"test\", \"data\": {}}'\n```\n\n## Resources\n- [Retell AI Webhooks Guide](https:\u002F\u002Fdocs.retellai.com\u002Fwebhooks)\n- [Webhook Security Best Practices](https:\u002F\u002Fdocs.retellai.com\u002Fwebhooks\u002Fsecurity)\n\n## Next Steps\nFor performance optimization, see `retellai-performance-tuning`.","# Retell AI Webhooks & Events\n\n## Overview\nSecurely handle Retell AI webhooks with signature validation and replay protection.\n\n## Prerequisites\n- Retell AI webhook secret configured\n- HTTPS endpoint accessible from internet\n- Understanding of cryptographic signatures\n- Redis or database for idempotency (optional)\n\n## Webhook Endpoint Setup\n\n### Express.js\n```typescript\nimport express from 'express';\nimport crypto from 'crypto';\n\nconst app = express();\n\n\u002F\u002F IMPORTANT: Raw body needed for signature verification\napp.post('\u002Fwebhooks\u002Fretellai',\n  express.raw({ type: 'application\u002Fjson' }),\n  async (req, res) => {\n    const signature = req.headers['x-retellai-signature'] as string;\n    const timestamp = req.headers['x-retellai-timestamp'] as string;\n\n    if (!verifyRetell AISignature(req.body, signature, timestamp)) {\n      return res.status(401).json({ error: 'Invalid signature' });\n    }\n\n    const event = JSON.parse(req.body.toString());\n    await handleRetell AIEvent(event);\n\n    res.status(200).json({ received: true });\n  }\n);\n```\n\n## Signature Verification\n\n```typescript\nfunction verifyRetell AISignature(\n  payload: Buffer,\n  signature: string,\n  timestamp: string\n): boolean {\n  const secret = process.env.RETELLAI_WEBHOOK_SECRET!;\n\n  \u002F\u002F Reject old timestamps (replay attack protection)\n  const timestampAge = Date.now() - parseInt(timestamp) * 1000;\n  if (timestampAge > 300000) { \u002F\u002F 5 minutes\n    console.error('Webhook timestamp too old');\n    return false;\n  }\n\n  \u002F\u002F Compute expected signature\n  const signedPayload = `${timestamp}.${payload.toString()}`;\n  const expectedSignature = crypto\n    .createHmac('sha256', secret)\n    .update(signedPayload)\n    .digest('hex');\n\n  \u002F\u002F Timing-safe comparison\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(expectedSignature)\n  );\n}\n```\n\n## Event Handler Pattern\n\n```typescript\ntype Retell AIEventType = 'resource.created' | 'resource.updated' | 'resource.deleted';\n\ninterface Retell AIEvent {\n  id: string;\n  type: Retell AIEventType;\n  data: Record\u003Cstring, any>;\n  created: string;\n}\n\nconst eventHandlers: Record\u003CRetell AIEventType, (data: any) => Promise\u003Cvoid>> = {\n  'resource.created': async (data) => { \u002F* handle *\u002F },\n  'resource.updated': async (data) => { \u002F* handle *\u002F },\n  'resource.deleted': async (data) => { \u002F* handle *\u002F }\n};\n\nasync function handleRetell AIEvent(event: Retell AIEvent): Promise\u003Cvoid> {\n  const handler = eventHandlers[event.type];\n\n  if (!handler) {\n    console.log(`Unhandled event type: ${event.type}`);\n    return;\n  }\n\n  try {\n    await handler(event.data);\n    console.log(`Processed ${event.type}: ${event.id}`);\n  } catch (error) {\n    console.error(`Failed to process ${event.type}: ${event.id}`, error);\n    throw error; \u002F\u002F Rethrow to trigger retry\n  }\n}\n```\n\n## Idempotency Handling\n\n```typescript\nimport { Redis } from 'ioredis';\n\nconst redis = new Redis(process.env.REDIS_URL);\n\nasync function isEventProcessed(eventId: string): Promise\u003Cboolean> {\n  const key = `retellai:event:${eventId}`;\n  const exists = await redis.exists(key);\n  return exists === 1;\n}\n\nasync function markEventProcessed(eventId: string): Promise\u003Cvoid> {\n  const key = `retellai:event:${eventId}`;\n  await redis.set(key, '1', 'EX', 86400 * 7); \u002F\u002F 7 days TTL\n}\n```\n\n## Webhook Testing\n\n```bash\n# Use Retell AI CLI to send test events\nretellai webhooks trigger resource.created --url http:\u002F\u002Flocalhost:3000\u002Fwebhooks\u002Fretellai\n\n# Or use webhook.site for debugging\ncurl -X POST https:\u002F\u002Fwebhook.site\u002Fyour-uuid \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"resource.created\", \"data\": {}}'\n```\n\n## Instructions\n\n### Step 1: Register Webhook Endpoint\nConfigure your webhook URL in the Retell AI dashboard.\n\n### Step 2: Implement Signature Verification\nUse the signature verification code to validate incoming webhooks.\n\n### Step 3: Handle Events\nImplement handlers for each event type your application needs.\n\n### Step 4: Add Idempotency\nPrevent duplicate processing with event ID tracking.\n\n## Output\n- Secure webhook endpoint\n- Signature validation enabled\n- Event handlers implemented\n- Replay attack protection active\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Invalid signature | Wrong secret | Verify webhook secret |\n| Timestamp rejected | Clock drift | Check server time sync |\n| Duplicate events | Missing idempotency | Implement event ID tracking |\n| Handler timeout | Slow processing | Use async queue |\n\n## Examples\n\n### Testing Webhooks Locally\n```bash\n# Use ngrok to expose local server\nngrok http 3000\n\n# Send test webhook\ncurl -X POST https:\u002F\u002Fyour-ngrok-url\u002Fwebhooks\u002Fretellai \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"test\", \"data\": {}}'\n```\n\n## Resources\n- [Retell AI Webhooks Guide](https:\u002F\u002Fdocs.retellai.com\u002Fwebhooks)\n- [Webhook Security Best Practices](https:\u002F\u002Fdocs.retellai.com\u002Fwebhooks\u002Fsecurity)\n\n## Next Steps\nFor performance optimization, see `retellai-performance-tuning`.",{"name":5,"author":46,"license":15,"version":47,"description":48,"allowed-tools":49},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement Retell AI webhook signature validation and event handling.\nUse when setting up webhook endpoints, implementing signature verification,\nor handling Retell AI event notifications securely.\nTrigger with phrases like \"retellai webhook\", \"retellai events\",\n\"retellai webhook signature\", \"handle retellai events\", \"retellai notifications\".\n","Read, Write, Edit, Bash(curl:*)","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-webhooks-events",231,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust","https:\u002F\u002Fgithub.com\u002FDicklesworthstone","https:\u002F\u002Fwww.jeffreyemanuel.com\u002F","Building in NY","2026-11-12 03:15:57",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill retellai-webhooks-events",{"tool":65,"command":66},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill retellai-webhooks-events",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill retellai-webhooks-events","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fretellai-pack\u002Fskills\u002Fretellai-webhooks-events\u002FSKILL.md",true,[],[74,114,138,164,191,213],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":79,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":41},"01M6FEGPPK0ZTKCCM0R3E3KS33","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,32,106,107,108,109,110,111,112,113],"web artifacts builder","web","artifacts","artifacts builder","builder","frontend","css","components","react","component","routing","state management","state","shadcn","file","ui","Tools","Tailwind","html","single-file","simple","ui components","multi","for","jsx","suite",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":118,"sourceHtmlUrl":119,"categories":120,"keywords":125,"publishedAt":41},"01M6FEE9VTK1W4GY21AKREJXRG","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[121,124],{"categoryNo":122,"categoryName":123,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[126,127,128,93,129,130,89,131,132,133,103,134,135,136,137,25,111],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":142,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":41},"01M6FE20F7ZTQBFWKF4MPJ2SBX","neuropixels-analysis","Neuropixels neural recording analysis. Load SpikeGLX\u002FOpenEphys data, preprocess, motion correction, Kilosort4 spike sorting, quality metrics, Allen\u002FIBL curation, AI-assisted visual analysis, for Neuropixels 1.0\u002F2.0 extracellular electrophysiology. Use when working with neural recordings, spike sorting, extracellular electrophysiology, or when the user mentions Neuropixels, SpikeGLX, Open Ephys, Kilosort, quality metrics, or unit curation.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fscientific\u002Fneuropixels-analysis\u002FSKILL.md",[],[146,147,148,149,150,151,152,153,32,154,155,156,157,158,159,160,25,161,162,163,111,22],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":41},"01M6FDP0PDK6F1GGX395C7625Z","skill-creator","Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fskill-creator\u002FSKILL.md",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发",[175,176,177,178,179,180,181,182,183,184,185,186,187,188,25,111,189,22,190],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":195,"sourceHtmlUrl":196,"categories":197,"keywords":199,"publishedAt":41},"01M6FDM8Y7VK7NYG9SM7QPA3PW","notebooklm","Use this skill to query your Google NotebookLM notebooks directly from Claude Code for source-grounded, citation-backed answers from Gemini. Browser automation, library management, persistent auth. Drastically reduced hallucinations through document-only responses.","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FLICENSE","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fnotebooklm\u002FSKILL.md",[198],{"categoryNo":172,"categoryName":173,"taxonomyType":85,"taxonomyTypeDesc":86},[193,200,201,202,203,204,205,133,206,207,32,208,209,210,211,111,212],"google","browser automation","gemini","automation","auth","code","library","management","only","document","query","Citation","source",{"skillNo":214,"name":215,"nameZh":6,"description":216,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":217,"sourceHtmlUrl":218,"categories":219,"keywords":226,"publishedAt":41},"01M6FDHPXE10J3XGTCH5HBHS1M","slack-gif-creator","Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Ftemplates-davila7\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fenterprise-communication\u002Fslack-gif-creator\u002FSKILL.md",[220,223],{"categoryNo":221,"categoryName":222,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":224,"categoryName":225,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000016","图像与多媒体",[227,228,229,176,40,104,230,231,181,32,232,188,233,234,235,111,236,22],"slack gif creator","slack","gif","constraints","Animation","me","make","Utilities","concepts","request"]