[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F6Y5AS2FAKNF20MA48ZGX6":3,"skill-same:01M6F6Y5AS2FAKNF20MA48ZGX6":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":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6F6Y5AS2FAKNF20MA48ZGX6","gamma-sdk-patterns",null,"Learn idiomatic Gamma SDK patterns and best practices.\nUse when implementing complex presentation workflows,\nhandling async operations, or structuring Gamma code.\nTrigger with phrases like \"gamma patterns\", \"gamma best practices\",\n\"gamma SDK usage\", \"gamma async\", \"gamma code structure\".","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1991,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fgamma-pack\u002Fskills\u002Fgamma-sdk-patterns\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000003","演示文稿","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"sdk","gamma sdk patterns","gamma","patterns","when","code structure","idiomatic","implementing","usage","with","presentation","trigger","io","structure","async","use","operations","edit","write","read","best practices","code","learn","workflows","2026-11-10 10:12:30",false,"---\nname: gamma-sdk-patterns\ndescription: |\n  Learn idiomatic Gamma SDK patterns and best practices.\n  Use when implementing complex presentation workflows,\n  handling async operations, or structuring Gamma code.\n  Trigger with phrases like \"gamma patterns\", \"gamma best practices\",\n  \"gamma SDK usage\", \"gamma async\", \"gamma code structure\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Gamma SDK Patterns\n\n## Overview\nLearn idiomatic patterns and best practices for the Gamma SDK to build robust presentation automation.\n\n## Prerequisites\n- Completed `gamma-local-dev-loop` setup\n- Familiarity with async\u002Fawait patterns\n- TypeScript recommended\n\n## Instructions\n\n### Pattern 1: Client Singleton\n```typescript\n\u002F\u002F lib\u002Fgamma.ts\nimport { GammaClient } from '@gamma\u002Fsdk';\n\nlet client: GammaClient | null = null;\n\nexport function getGammaClient(): GammaClient {\n  if (!client) {\n    client = new GammaClient({\n      apiKey: process.env.GAMMA_API_KEY,\n      timeout: 30000,\n      retries: 3,\n    });\n  }\n  return client;\n}\n```\n\n### Pattern 2: Presentation Builder\n```typescript\n\u002F\u002F lib\u002Fpresentation-builder.ts\nimport { getGammaClient } from '.\u002Fgamma';\n\ninterface SlideContent {\n  title: string;\n  content: string;\n  layout?: 'title' | 'content' | 'image' | 'split';\n}\n\nexport class PresentationBuilder {\n  private slides: SlideContent[] = [];\n  private title: string = '';\n  private style: string = 'professional';\n\n  setTitle(title: string): this {\n    this.title = title;\n    return this;\n  }\n\n  addSlide(slide: SlideContent): this {\n    this.slides.push(slide);\n    return this;\n  }\n\n  setStyle(style: string): this {\n    this.style = style;\n    return this;\n  }\n\n  async build() {\n    const gamma = getGammaClient();\n    return gamma.presentations.create({\n      title: this.title,\n      slides: this.slides,\n      style: this.style,\n    });\n  }\n}\n```\n\n### Pattern 3: Error Handling Wrapper\n```typescript\n\u002F\u002F lib\u002Fsafe-gamma.ts\nimport { GammaError } from '@gamma\u002Fsdk';\n\nexport async function safeGammaCall\u003CT>(\n  fn: () => Promise\u003CT>\n): Promise\u003C{ data: T; error: null } | { data: null; error: string }> {\n  try {\n    const data = await fn();\n    return { data, error: null };\n  } catch (err) {\n    if (err instanceof GammaError) {\n      return { data: null, error: err.message };\n    }\n    throw err;\n  }\n}\n```\n\n### Pattern 4: Template Factory\n```typescript\n\u002F\u002F lib\u002Ftemplates.ts\ntype TemplateType = 'pitch-deck' | 'report' | 'tutorial' | 'proposal';\n\nconst TEMPLATES: Record\u003CTemplateType, object> = {\n  'pitch-deck': { slides: 10, style: 'bold' },\n  'report': { slides: 15, style: 'professional' },\n  'tutorial': { slides: 8, style: 'friendly' },\n  'proposal': { slides: 12, style: 'corporate' },\n};\n\nexport function fromTemplate(type: TemplateType, title: string) {\n  return { ...TEMPLATES[type], title };\n}\n```\n\n## Output\n- Reusable client singleton\n- Fluent builder pattern\n- Type-safe error handling\n- Template factory system\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Singleton | Multiple modules | Consistent config |\n| Builder | Complex presentations | Readable code |\n| Safe Call | Error boundaries | Graceful failures |\n| Factory | Repeated templates | DRY code |\n\n## Resources\n- [Gamma SDK Patterns](https:\u002F\u002Fgamma.app\u002Fdocs\u002Fpatterns)\n- [TypeScript Design Patterns](https:\u002F\u002Frefactoring.guru\u002Fdesign-patterns\u002Ftypescript)\n\n## Next Steps\nProceed to `gamma-core-workflow-a` for presentation generation workflows.\n","# Gamma SDK Patterns\n\n## Overview\nLearn idiomatic patterns and best practices for the Gamma SDK to build robust presentation automation.\n\n## Prerequisites\n- Completed `gamma-local-dev-loop` setup\n- Familiarity with async\u002Fawait patterns\n- TypeScript recommended\n\n## Instructions\n\n### Pattern 1: Client Singleton\n```typescript\n\u002F\u002F lib\u002Fgamma.ts\nimport { GammaClient } from '@gamma\u002Fsdk';\n\nlet client: GammaClient | null = null;\n\nexport function getGammaClient(): GammaClient {\n  if (!client) {\n    client = new GammaClient({\n      apiKey: process.env.GAMMA_API_KEY,\n      timeout: 30000,\n      retries: 3,\n    });\n  }\n  return client;\n}\n```\n\n### Pattern 2: Presentation Builder\n```typescript\n\u002F\u002F lib\u002Fpresentation-builder.ts\nimport { getGammaClient } from '.\u002Fgamma';\n\ninterface SlideContent {\n  title: string;\n  content: string;\n  layout?: 'title' | 'content' | 'image' | 'split';\n}\n\nexport class PresentationBuilder {\n  private slides: SlideContent[] = [];\n  private title: string = '';\n  private style: string = 'professional';\n\n  setTitle(title: string): this {\n    this.title = title;\n    return this;\n  }\n\n  addSlide(slide: SlideContent): this {\n    this.slides.push(slide);\n    return this;\n  }\n\n  setStyle(style: string): this {\n    this.style = style;\n    return this;\n  }\n\n  async build() {\n    const gamma = getGammaClient();\n    return gamma.presentations.create({\n      title: this.title,\n      slides: this.slides,\n      style: this.style,\n    });\n  }\n}\n```\n\n### Pattern 3: Error Handling Wrapper\n```typescript\n\u002F\u002F lib\u002Fsafe-gamma.ts\nimport { GammaError } from '@gamma\u002Fsdk';\n\nexport async function safeGammaCall\u003CT>(\n  fn: () => Promise\u003CT>\n): Promise\u003C{ data: T; error: null } | { data: null; error: string }> {\n  try {\n    const data = await fn();\n    return { data, error: null };\n  } catch (err) {\n    if (err instanceof GammaError) {\n      return { data: null, error: err.message };\n    }\n    throw err;\n  }\n}\n```\n\n### Pattern 4: Template Factory\n```typescript\n\u002F\u002F lib\u002Ftemplates.ts\ntype TemplateType = 'pitch-deck' | 'report' | 'tutorial' | 'proposal';\n\nconst TEMPLATES: Record\u003CTemplateType, object> = {\n  'pitch-deck': { slides: 10, style: 'bold' },\n  'report': { slides: 15, style: 'professional' },\n  'tutorial': { slides: 8, style: 'friendly' },\n  'proposal': { slides: 12, style: 'corporate' },\n};\n\nexport function fromTemplate(type: TemplateType, title: string) {\n  return { ...TEMPLATES[type], title };\n}\n```\n\n## Output\n- Reusable client singleton\n- Fluent builder pattern\n- Type-safe error handling\n- Template factory system\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Singleton | Multiple modules | Consistent config |\n| Builder | Complex presentations | Readable code |\n| Safe Call | Error boundaries | Graceful failures |\n| Factory | Repeated templates | DRY code |\n\n## Resources\n- [Gamma SDK Patterns](https:\u002F\u002Fgamma.app\u002Fdocs\u002Fpatterns)\n- [TypeScript Design Patterns](https:\u002F\u002Frefactoring.guru\u002Fdesign-patterns\u002Ftypescript)\n\n## Next Steps\nProceed to `gamma-core-workflow-a` for presentation generation workflows.\n",{"name":5,"author":53,"license":15,"version":54,"description":55,"allowed-tools":56},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Learn idiomatic Gamma SDK patterns and best practices.\nUse when implementing complex presentation workflows,\nhandling async operations, or structuring Gamma code.\nTrigger with phrases like \"gamma patterns\", \"gamma best practices\",\n\"gamma SDK usage\", \"gamma async\", \"gamma code structure\".\n","Read, Write, Edit","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fgamma-pack\u002Fskills\u002Fgamma-sdk-patterns",234,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust","https:\u002F\u002Fgithub.com\u002FDicklesworthstone","https:\u002F\u002Fwww.jeffreyemanuel.com\u002F","Building in NY","2026-11-13 11:50:27",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill gamma-sdk-patterns",{"tool":72,"command":73},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill gamma-sdk-patterns",{"tool":75,"command":76},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill gamma-sdk-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Fgamma-pack\u002Fskills\u002Fgamma-sdk-patterns\u002FSKILL.md",true,[],[81,119,143,169,195,216],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":85,"licenseFileUrl":86,"sourceHtmlUrl":87,"categories":88,"keywords":92,"publishedAt":48},"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",[89],{"categoryNo":90,"categoryName":91,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,39,111,112,113,114,115,116,117,118],"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":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":85,"licenseFileUrl":123,"sourceHtmlUrl":124,"categories":125,"keywords":130,"publishedAt":48},"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",[126,129],{"categoryNo":127,"categoryName":128,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":90,"categoryName":91,"taxonomyType":21,"taxonomyTypeDesc":22},[131,132,133,98,134,135,94,136,137,138,108,139,140,141,142,33,116],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":147,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":48},"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",[],[151,152,153,154,155,156,157,158,39,159,160,161,162,163,164,165,33,166,167,168,116,28],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":85,"licenseFileUrl":173,"sourceHtmlUrl":174,"categories":175,"keywords":179,"publishedAt":48},"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",[176],{"categoryNo":177,"categoryName":178,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[180,181,47,182,183,184,185,186,187,188,189,190,191,192,33,116,193,28,194],"skill creator","creator","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":199,"sourceHtmlUrl":200,"categories":201,"keywords":203,"publishedAt":48},"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",[202],{"categoryNo":177,"categoryName":178,"taxonomyType":21,"taxonomyTypeDesc":22},[197,204,205,206,207,208,45,138,209,210,39,211,212,213,214,116,215],"google","browser automation","gemini","automation","auth","library","management","only","document","query","Citation","source",{"skillNo":217,"name":218,"nameZh":6,"description":219,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":85,"licenseFileUrl":220,"sourceHtmlUrl":221,"categories":222,"keywords":229,"publishedAt":48},"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",[223,226],{"categoryNo":224,"categoryName":225,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":227,"categoryName":228,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[230,231,232,181,233,109,234,235,185,39,236,192,237,238,239,116,240,28],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]