[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7VT092X9W4SZKBXSBAF2D":3,"skill-same:01M6F7VT092X9W4SZKBXSBAF2D":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":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":6,"ownerHtmlUrl":61,"ownerBlogUrl":62,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6F7VT092X9W4SZKBXSBAF2D","lindy-sdk-patterns",null,"Lindy AI SDK best practices and common patterns.\nUse when learning SDK patterns, optimizing API usage,\nor implementing advanced agent features.\nTrigger with phrases like \"lindy SDK patterns\", \"lindy best practices\",\n\"lindy API patterns\", \"lindy code patterns\".","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\u002Flindy-pack\u002Fskills\u002Flindy-sdk-patterns\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,44,45,46],"lindy sdk patterns","sdk","patterns","use","when","features","implementing","usage","advanced","with","code patterns","trigger","io","edit","write","read","common","learning","api","api patterns","ai sdk","best practices","code","2026-11-10 10:12:30",false,"---\nname: lindy-sdk-patterns\ndescription: |\n  Lindy AI SDK best practices and common patterns.\n  Use when learning SDK patterns, optimizing API usage,\n  or implementing advanced agent features.\n  Trigger with phrases like \"lindy SDK patterns\", \"lindy best practices\",\n  \"lindy API patterns\", \"lindy code patterns\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Lindy SDK Patterns\n\n## Overview\nEssential SDK patterns and best practices for Lindy AI agent development.\n\n## Prerequisites\n- Completed `lindy-install-auth` setup\n- Basic understanding of async\u002Fawait\n- Familiarity with TypeScript\n\n## Instructions\n\n### Pattern 1: Client Singleton\n```typescript\n\u002F\u002F lib\u002Flindy.ts\nimport { Lindy } from '@lindy-ai\u002Fsdk';\n\nlet client: Lindy | null = null;\n\nexport function getLindyClient(): Lindy {\n  if (!client) {\n    client = new Lindy({\n      apiKey: process.env.LINDY_API_KEY!,\n      timeout: 30000,\n    });\n  }\n  return client;\n}\n```\n\n### Pattern 2: Agent Factory\n```typescript\n\u002F\u002F agents\u002Ffactory.ts\nimport { getLindyClient } from '..\u002Flib\u002Flindy';\n\ninterface AgentConfig {\n  name: string;\n  instructions: string;\n  tools?: string[];\n}\n\nexport async function createAgent(config: AgentConfig) {\n  const lindy = getLindyClient();\n\n  const agent = await lindy.agents.create({\n    name: config.name,\n    instructions: config.instructions,\n    tools: config.tools || [],\n  });\n\n  return agent;\n}\n```\n\n### Pattern 3: Retry with Backoff\n```typescript\nasync function runWithRetry\u003CT>(\n  fn: () => Promise\u003CT>,\n  maxRetries = 3\n): Promise\u003CT> {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    try {\n      return await fn();\n    } catch (error: any) {\n      if (error.status === 429 && i \u003C maxRetries - 1) {\n        await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));\n        continue;\n      }\n      throw error;\n    }\n  }\n  throw new Error('Max retries exceeded');\n}\n```\n\n### Pattern 4: Streaming Responses\n```typescript\nasync function streamAgentResponse(agentId: string, input: string) {\n  const lindy = getLindyClient();\n\n  const stream = await lindy.agents.runStream(agentId, { input });\n\n  for await (const chunk of stream) {\n    process.stdout.write(chunk.delta);\n  }\n  console.log(); \u002F\u002F newline\n}\n```\n\n## Output\n- Reusable client singleton pattern\n- Agent factory for consistent creation\n- Robust error handling with retries\n- Streaming support for real-time output\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Singleton | Connection reuse | Reduced overhead |\n| Factory | Agent creation | Consistency |\n| Retry | Rate limits | Reliability |\n| Streaming | Long responses | Better UX |\n\n## Examples\n\n### Complete Agent Service\n```typescript\n\u002F\u002F services\u002Fagent-service.ts\nimport { getLindyClient } from '..\u002Flib\u002Flindy';\n\nexport class AgentService {\n  private lindy = getLindyClient();\n\n  async createAndRun(name: string, instructions: string, input: string) {\n    const agent = await this.lindy.agents.create({ name, instructions });\n    const result = await this.lindy.agents.run(agent.id, { input });\n    return { agent, result };\n  }\n\n  async listAgents() {\n    return this.lindy.agents.list();\n  }\n\n  async deleteAgent(id: string) {\n    return this.lindy.agents.delete(id);\n  }\n}\n```\n\n## Resources\n- [Lindy SDK Patterns](https:\u002F\u002Fdocs.lindy.ai\u002Fpatterns)\n- [TypeScript Best Practices](https:\u002F\u002Fdocs.lindy.ai\u002Ftypescript)\n\n## Next Steps\nProceed to `lindy-core-workflow-a` for agent creation workflows.\n","# Lindy SDK Patterns\n\n## Overview\nEssential SDK patterns and best practices for Lindy AI agent development.\n\n## Prerequisites\n- Completed `lindy-install-auth` setup\n- Basic understanding of async\u002Fawait\n- Familiarity with TypeScript\n\n## Instructions\n\n### Pattern 1: Client Singleton\n```typescript\n\u002F\u002F lib\u002Flindy.ts\nimport { Lindy } from '@lindy-ai\u002Fsdk';\n\nlet client: Lindy | null = null;\n\nexport function getLindyClient(): Lindy {\n  if (!client) {\n    client = new Lindy({\n      apiKey: process.env.LINDY_API_KEY!,\n      timeout: 30000,\n    });\n  }\n  return client;\n}\n```\n\n### Pattern 2: Agent Factory\n```typescript\n\u002F\u002F agents\u002Ffactory.ts\nimport { getLindyClient } from '..\u002Flib\u002Flindy';\n\ninterface AgentConfig {\n  name: string;\n  instructions: string;\n  tools?: string[];\n}\n\nexport async function createAgent(config: AgentConfig) {\n  const lindy = getLindyClient();\n\n  const agent = await lindy.agents.create({\n    name: config.name,\n    instructions: config.instructions,\n    tools: config.tools || [],\n  });\n\n  return agent;\n}\n```\n\n### Pattern 3: Retry with Backoff\n```typescript\nasync function runWithRetry\u003CT>(\n  fn: () => Promise\u003CT>,\n  maxRetries = 3\n): Promise\u003CT> {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    try {\n      return await fn();\n    } catch (error: any) {\n      if (error.status === 429 && i \u003C maxRetries - 1) {\n        await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));\n        continue;\n      }\n      throw error;\n    }\n  }\n  throw new Error('Max retries exceeded');\n}\n```\n\n### Pattern 4: Streaming Responses\n```typescript\nasync function streamAgentResponse(agentId: string, input: string) {\n  const lindy = getLindyClient();\n\n  const stream = await lindy.agents.runStream(agentId, { input });\n\n  for await (const chunk of stream) {\n    process.stdout.write(chunk.delta);\n  }\n  console.log(); \u002F\u002F newline\n}\n```\n\n## Output\n- Reusable client singleton pattern\n- Agent factory for consistent creation\n- Robust error handling with retries\n- Streaming support for real-time output\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Singleton | Connection reuse | Reduced overhead |\n| Factory | Agent creation | Consistency |\n| Retry | Rate limits | Reliability |\n| Streaming | Long responses | Better UX |\n\n## Examples\n\n### Complete Agent Service\n```typescript\n\u002F\u002F services\u002Fagent-service.ts\nimport { getLindyClient } from '..\u002Flib\u002Flindy';\n\nexport class AgentService {\n  private lindy = getLindyClient();\n\n  async createAndRun(name: string, instructions: string, input: string) {\n    const agent = await this.lindy.agents.create({ name, instructions });\n    const result = await this.lindy.agents.run(agent.id, { input });\n    return { agent, result };\n  }\n\n  async listAgents() {\n    return this.lindy.agents.list();\n  }\n\n  async deleteAgent(id: string) {\n    return this.lindy.agents.delete(id);\n  }\n}\n```\n\n## Resources\n- [Lindy SDK Patterns](https:\u002F\u002Fdocs.lindy.ai\u002Fpatterns)\n- [TypeScript Best Practices](https:\u002F\u002Fdocs.lindy.ai\u002Ftypescript)\n\n## Next Steps\nProceed to `lindy-core-workflow-a` for agent creation workflows.\n",{"name":5,"author":52,"license":15,"version":53,"description":54,"allowed-tools":55},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Lindy AI SDK best practices and common patterns.\nUse when learning SDK patterns, optimizing API usage,\nor implementing advanced agent features.\nTrigger with phrases like \"lindy SDK patterns\", \"lindy best practices\",\n\"lindy API patterns\", \"lindy code patterns\".\n","Read, Write, Edit","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flindy-pack\u002Fskills\u002Flindy-sdk-patterns",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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill lindy-sdk-patterns",{"tool":71,"command":72},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill lindy-sdk-patterns",{"tool":74,"command":75},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill lindy-sdk-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flindy-pack\u002Fskills\u002Flindy-sdk-patterns\u002FSKILL.md",true,[],[80,120,144,170,197,218],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":85,"sourceHtmlUrl":86,"categories":87,"keywords":93,"publishedAt":47},"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",[88],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,27,112,113,114,115,116,117,118,119],"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":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":124,"sourceHtmlUrl":125,"categories":126,"keywords":131,"publishedAt":47},"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",[127,130],{"categoryNo":128,"categoryName":129,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},[132,133,134,99,135,136,95,137,138,139,109,140,141,142,143,33,117],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":148,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":47},"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",[],[152,153,154,155,156,157,158,159,27,160,161,162,163,164,165,166,33,167,168,169,117,28],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":180,"publishedAt":47},"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",[177],{"categoryNo":178,"categoryName":179,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发",[181,182,183,184,185,186,187,188,189,190,191,192,193,194,33,117,195,28,196],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":198,"name":199,"nameZh":6,"description":200,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":201,"sourceHtmlUrl":202,"categories":203,"keywords":205,"publishedAt":47},"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",[204],{"categoryNo":178,"categoryName":179,"taxonomyType":91,"taxonomyTypeDesc":92},[199,206,207,208,209,210,46,139,211,212,27,213,214,215,216,117,217],"google","browser automation","gemini","automation","auth","library","management","only","document","query","Citation","source",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":222,"sourceHtmlUrl":223,"categories":224,"keywords":231,"publishedAt":47},"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",[225,228],{"categoryNo":226,"categoryName":227,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":229,"categoryName":230,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000016","图像与多媒体",[232,233,234,182,235,110,236,237,187,27,238,194,239,240,241,117,242,28],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]