[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7CRE9PGQBW7VR4JM7B070":3,"skill-same:01M6F7CRE9PGQBW7VR4JM7B070":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},"01M6F7CRE9PGQBW7VR4JM7B070","instantly-webhooks-events",null,"Implement Instantly webhook signature validation and event handling.\nUse when setting up webhook endpoints, implementing signature verification,\nor handling Instantly event notifications securely.\nTrigger with phrases like \"instantly webhook\", \"instantly events\",\n\"instantly webhook signature\", \"handle instantly events\", \"instantly notifications\".","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1979,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Finstantly-pack\u002Fskills\u002Finstantly-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],"instantly 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: instantly-webhooks-events\ndescription: |\n  Implement Instantly webhook signature validation and event handling.\n  Use when setting up webhook endpoints, implementing signature verification,\n  or handling Instantly event notifications securely.\n  Trigger with phrases like \"instantly webhook\", \"instantly events\",\n  \"instantly webhook signature\", \"handle instantly events\", \"instantly notifications\".\nallowed-tools: Read, Write, Edit, Bash(curl:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Instantly Webhooks & Events\n\n## Overview\nSecurely handle Instantly webhooks with signature validation and replay protection.\n\n## Prerequisites\n- Instantly 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\u002Finstantly',\n  express.raw({ type: 'application\u002Fjson' }),\n  async (req, res) => {\n    const signature = req.headers['x-instantly-signature'] as string;\n    const timestamp = req.headers['x-instantly-timestamp'] as string;\n\n    if (!verifyInstantlySignature(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 handleInstantlyEvent(event);\n\n    res.status(200).json({ received: true });\n  }\n);\n```\n\n## Signature Verification\n\n```typescript\nfunction verifyInstantlySignature(\n  payload: Buffer,\n  signature: string,\n  timestamp: string\n): boolean {\n  const secret = process.env.INSTANTLY_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 InstantlyEventType = 'resource.created' | 'resource.updated' | 'resource.deleted';\n\ninterface InstantlyEvent {\n  id: string;\n  type: InstantlyEventType;\n  data: Record\u003Cstring, any>;\n  created: string;\n}\n\nconst eventHandlers: Record\u003CInstantlyEventType, (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 handleInstantlyEvent(event: InstantlyEvent): 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 = `instantly: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 = `instantly: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 Instantly CLI to send test events\ninstantly webhooks trigger resource.created --url http:\u002F\u002Flocalhost:3000\u002Fwebhooks\u002Finstantly\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 Instantly 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\u002Finstantly \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"test\", \"data\": {}}'\n```\n\n## Resources\n- [Instantly Webhooks Guide](https:\u002F\u002Fdocs.instantly.com\u002Fwebhooks)\n- [Webhook Security Best Practices](https:\u002F\u002Fdocs.instantly.com\u002Fwebhooks\u002Fsecurity)\n\n## Next Steps\nFor performance optimization, see `instantly-performance-tuning`.","# Instantly Webhooks & Events\n\n## Overview\nSecurely handle Instantly webhooks with signature validation and replay protection.\n\n## Prerequisites\n- Instantly 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\u002Finstantly',\n  express.raw({ type: 'application\u002Fjson' }),\n  async (req, res) => {\n    const signature = req.headers['x-instantly-signature'] as string;\n    const timestamp = req.headers['x-instantly-timestamp'] as string;\n\n    if (!verifyInstantlySignature(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 handleInstantlyEvent(event);\n\n    res.status(200).json({ received: true });\n  }\n);\n```\n\n## Signature Verification\n\n```typescript\nfunction verifyInstantlySignature(\n  payload: Buffer,\n  signature: string,\n  timestamp: string\n): boolean {\n  const secret = process.env.INSTANTLY_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 InstantlyEventType = 'resource.created' | 'resource.updated' | 'resource.deleted';\n\ninterface InstantlyEvent {\n  id: string;\n  type: InstantlyEventType;\n  data: Record\u003Cstring, any>;\n  created: string;\n}\n\nconst eventHandlers: Record\u003CInstantlyEventType, (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 handleInstantlyEvent(event: InstantlyEvent): 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 = `instantly: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 = `instantly: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 Instantly CLI to send test events\ninstantly webhooks trigger resource.created --url http:\u002F\u002Flocalhost:3000\u002Fwebhooks\u002Finstantly\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 Instantly 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\u002Finstantly \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"type\": \"test\", \"data\": {}}'\n```\n\n## Resources\n- [Instantly Webhooks Guide](https:\u002F\u002Fdocs.instantly.com\u002Fwebhooks)\n- [Webhook Security Best Practices](https:\u002F\u002Fdocs.instantly.com\u002Fwebhooks\u002Fsecurity)\n\n## Next Steps\nFor performance optimization, see `instantly-performance-tuning`.",{"name":5,"author":46,"license":15,"version":47,"description":48,"allowed-tools":49},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Implement Instantly webhook signature validation and event handling.\nUse when setting up webhook endpoints, implementing signature verification,\nor handling Instantly event notifications securely.\nTrigger with phrases like \"instantly webhook\", \"instantly events\",\n\"instantly webhook signature\", \"handle instantly events\", \"instantly notifications\".\n","Read, Write, Edit, Bash(curl:*)","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Finstantly-pack\u002Fskills\u002Finstantly-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-11 01:23:40",{"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 instantly-webhooks-events",{"tool":65,"command":66},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill instantly-webhooks-events",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill instantly-webhooks-events","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Finstantly-pack\u002Fskills\u002Finstantly-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"]