[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M750T644BQJZBJSGG0DC85KB":3,"skill-same:01M750T644BQJZBJSGG0DC85KB":49},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":29,"commitSha":30,"skillDirectory":5,"forksCount":14,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M750T644BQJZBJSGG0DC85KB","ideogram-sdk-patterns",null,"Apply production-ready Ideogram SDK patterns for TypeScript and Python.\nUse when implementing Ideogram integrations, refactoring SDK usage,\nor establishing team coding standards for Ideogram.\nTrigger with phrases like \"ideogram SDK patterns\", \"ideogram best practices\",\n\"ideogram code patterns\", \"idiomatic ideogram\".","SamuelChien\u002Fmega-skills-collection","SamuelChien","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4652114?v=4","01M74KK34WVHA0P5ZYSJRDDFMG","Samuel Chien","01M74KK35FQN1N9VZ9EPTH3P2S",0,"MIT","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fideogram-sdk-patterns\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"---\nname: ideogram-sdk-patterns\ndescription: |\n  Apply production-ready Ideogram SDK patterns for TypeScript and Python.\n  Use when implementing Ideogram integrations, refactoring SDK usage,\n  or establishing team coding standards for Ideogram.\n  Trigger with phrases like \"ideogram SDK patterns\", \"ideogram best practices\",\n  \"ideogram code patterns\", \"idiomatic ideogram\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\ncompatible-with: claude-code, codex, openclaw\n---\n# Ideogram SDK Patterns\n\n## Overview\nProduction-ready patterns for Ideogram SDK usage in TypeScript and Python.\n\n## Prerequisites\n- Completed `ideogram-install-auth` setup\n- Familiarity with async\u002Fawait patterns\n- Understanding of error handling best practices\n\n## Instructions\n\n### Step 1: Implement Singleton Pattern (Recommended)\n```typescript\n\u002F\u002F src\u002Fideogram\u002Fclient.ts\nimport { IdeogramClient } from '@ideogram\u002Fsdk';\n\nlet instance: IdeogramClient | null = null;\n\nexport function getIdeogramClient(): IdeogramClient {\n  if (!instance) {\n    instance = new IdeogramClient({\n      apiKey: process.env.IDEOGRAM_API_KEY!,\n      \u002F\u002F Additional options\n    });\n  }\n  return instance;\n}\n```\n\n### Step 2: Add Error Handling Wrapper\n```typescript\nimport { IdeogramError } from '@ideogram\u002Fsdk';\n\nasync function safeIdeogramCall\u003CT>(\n  operation: () => Promise\u003CT>\n): Promise\u003C{ data: T | null; error: Error | null }> {\n  try {\n    const data = await operation();\n    return { data, error: null };\n  } catch (err) {\n    if (err instanceof IdeogramError) {\n      console.error({\n        code: err.code,\n        message: err.message,\n      });\n    }\n    return { data: null, error: err as Error };\n  }\n}\n```\n\n### Step 3: Implement Retry Logic\n```typescript\nasync function withRetry\u003CT>(\n  operation: () => Promise\u003CT>,\n  maxRetries = 3,\n  backoffMs = 1000  # 1000: 1 second in ms\n): Promise\u003CT> {\n  for (let attempt = 1; attempt \u003C= maxRetries; attempt++) {\n    try {\n      return await operation();\n    } catch (err) {\n      if (attempt === maxRetries) throw err;\n      const delay = backoffMs * Math.pow(2, attempt - 1);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error('Unreachable');\n}\n```\n\n## Output\n- Type-safe client singleton\n- Robust error handling with structured logging\n- Automatic retry with exponential backoff\n- Runtime validation for API responses\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Safe wrapper | All API calls | Prevents uncaught exceptions |\n| Retry logic | Transient failures | Improves reliability |\n| Type guards | Response validation | Catches API changes |\n| Logging | All operations | Debugging and monitoring |\n\n## Examples\n\n### Factory Pattern (Multi-tenant)\n```typescript\nconst clients = new Map\u003Cstring, IdeogramClient>();\n\nexport function getClientForTenant(tenantId: string): IdeogramClient {\n  if (!clients.has(tenantId)) {\n    const apiKey = getTenantApiKey(tenantId);\n    clients.set(tenantId, new IdeogramClient({ apiKey }));\n  }\n  return clients.get(tenantId)!;\n}\n```\n\n### Python Context Manager\n```python\nfrom contextlib import asynccontextmanager\nfrom ideogram import IdeogramClient\n\n@asynccontextmanager\nasync def get_ideogram_client():\n    client = IdeogramClient()\n    try:\n        yield client\n    finally:\n        await client.close()\n```\n\n### Zod Validation\n```typescript\nimport { z } from 'zod';\n\nconst ideogramResponseSchema = z.object({\n  id: z.string(),\n  status: z.enum(['active', 'inactive']),\n  createdAt: z.string().datetime(),\n});\n```\n\n## Resources\n- [Ideogram SDK Reference](https:\u002F\u002Fdocs.ideogram.com\u002Fsdk)\n- [Ideogram API Types](https:\u002F\u002Fdocs.ideogram.com\u002Ftypes)\n- [Zod Documentation](https:\u002F\u002Fzod.dev\u002F)\n\n## Next Steps\nApply patterns in `ideogram-core-workflow-a` for real-world usage.","# Ideogram SDK Patterns\n\n## Overview\nProduction-ready patterns for Ideogram SDK usage in TypeScript and Python.\n\n## Prerequisites\n- Completed `ideogram-install-auth` setup\n- Familiarity with async\u002Fawait patterns\n- Understanding of error handling best practices\n\n## Instructions\n\n### Step 1: Implement Singleton Pattern (Recommended)\n```typescript\n\u002F\u002F src\u002Fideogram\u002Fclient.ts\nimport { IdeogramClient } from '@ideogram\u002Fsdk';\n\nlet instance: IdeogramClient | null = null;\n\nexport function getIdeogramClient(): IdeogramClient {\n  if (!instance) {\n    instance = new IdeogramClient({\n      apiKey: process.env.IDEOGRAM_API_KEY!,\n      \u002F\u002F Additional options\n    });\n  }\n  return instance;\n}\n```\n\n### Step 2: Add Error Handling Wrapper\n```typescript\nimport { IdeogramError } from '@ideogram\u002Fsdk';\n\nasync function safeIdeogramCall\u003CT>(\n  operation: () => Promise\u003CT>\n): Promise\u003C{ data: T | null; error: Error | null }> {\n  try {\n    const data = await operation();\n    return { data, error: null };\n  } catch (err) {\n    if (err instanceof IdeogramError) {\n      console.error({\n        code: err.code,\n        message: err.message,\n      });\n    }\n    return { data: null, error: err as Error };\n  }\n}\n```\n\n### Step 3: Implement Retry Logic\n```typescript\nasync function withRetry\u003CT>(\n  operation: () => Promise\u003CT>,\n  maxRetries = 3,\n  backoffMs = 1000  # 1000: 1 second in ms\n): Promise\u003CT> {\n  for (let attempt = 1; attempt \u003C= maxRetries; attempt++) {\n    try {\n      return await operation();\n    } catch (err) {\n      if (attempt === maxRetries) throw err;\n      const delay = backoffMs * Math.pow(2, attempt - 1);\n      await new Promise(r => setTimeout(r, delay));\n    }\n  }\n  throw new Error('Unreachable');\n}\n```\n\n## Output\n- Type-safe client singleton\n- Robust error handling with structured logging\n- Automatic retry with exponential backoff\n- Runtime validation for API responses\n\n## Error Handling\n| Pattern | Use Case | Benefit |\n|---------|----------|---------|\n| Safe wrapper | All API calls | Prevents uncaught exceptions |\n| Retry logic | Transient failures | Improves reliability |\n| Type guards | Response validation | Catches API changes |\n| Logging | All operations | Debugging and monitoring |\n\n## Examples\n\n### Factory Pattern (Multi-tenant)\n```typescript\nconst clients = new Map\u003Cstring, IdeogramClient>();\n\nexport function getClientForTenant(tenantId: string): IdeogramClient {\n  if (!clients.has(tenantId)) {\n    const apiKey = getTenantApiKey(tenantId);\n    clients.set(tenantId, new IdeogramClient({ apiKey }));\n  }\n  return clients.get(tenantId)!;\n}\n```\n\n### Python Context Manager\n```python\nfrom contextlib import asynccontextmanager\nfrom ideogram import IdeogramClient\n\n@asynccontextmanager\nasync def get_ideogram_client():\n    client = IdeogramClient()\n    try:\n        yield client\n    finally:\n        await client.close()\n```\n\n### Zod Validation\n```typescript\nimport { z } from 'zod';\n\nconst ideogramResponseSchema = z.object({\n  id: z.string(),\n  status: z.enum(['active', 'inactive']),\n  createdAt: z.string().datetime(),\n});\n```\n\n## Resources\n- [Ideogram SDK Reference](https:\u002F\u002Fdocs.ideogram.com\u002Fsdk)\n- [Ideogram API Types](https:\u002F\u002Fdocs.ideogram.com\u002Ftypes)\n- [Zod Documentation](https:\u002F\u002Fzod.dev\u002F)\n\n## Next Steps\nApply patterns in `ideogram-core-workflow-a` for real-world usage.",{"name":5,"author":24,"license":15,"version":25,"description":26,"allowed-tools":27,"compatible-with":28},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Apply production-ready Ideogram SDK patterns for TypeScript and Python.\nUse when implementing Ideogram integrations, refactoring SDK usage,\nor establishing team coding standards for Ideogram.\nTrigger with phrases like \"ideogram SDK patterns\", \"ideogram best practices\",\n\"ideogram code patterns\", \"idiomatic ideogram\".\n","Read, Write, Edit","claude-code, codex, openclaw","main","c2b1fdccc779e99ac814e55fb69ca8d71215dd0f","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection","https:\u002F\u002Fgithub.com\u002FSamuelChien","http:\u002F\u002Fsamuelchien.com\u002F","2026-05-26 08:27:14",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add SamuelChien\u002Fmega-skills-collection --skill ideogram-sdk-patterns",{"tool":41,"command":42},"bunx","bunx skills add SamuelChien\u002Fmega-skills-collection --skill ideogram-sdk-patterns",{"tool":44,"command":45},"pnpm","pnpm dlx skills add SamuelChien\u002Fmega-skills-collection --skill ideogram-sdk-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fideogram-sdk-patterns\u002FSKILL.md",true,[],[50,57,64,71,78,86],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":19},"01M76R4WZQZAXGGXMQCA0FZ716","zustand-store-ts","Create Zustand stores with TypeScript, subscribeWithSelector middleware, and proper state\u002Faction separation. Use when building React state management, creating global stores, or implementing reactive state patterns with Zustand.","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fzustand-store-ts\u002FSKILL.md",[],[],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":19},"01M76R4T9KENDH7FENGZQHBW4G","zustand-store-creator","Zustand Store Creator - Auto-activating skill for Frontend Development.\nTriggers on: zustand store creator, zustand store creator\nPart of the Frontend Development skill category.","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fzustand-store-creator\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M76R3YWN84B7SANJ52X799ZE","zero-trust-config-helper","Zero Trust Config Helper - Auto-activating skill for Security Advanced.\nTriggers on: zero trust config helper, zero trust config helper\nPart of the Security Advanced skill category.","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fzero-trust-config-helper\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M76R3HNSV2AEYSKHM915GJ58","zapier-integration-helper","Zapier Integration Helper - Auto-activating skill for Business Automation.\nTriggers on: zapier integration helper, zapier integration helper\nPart of the Business Automation skill category.","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fzapier-integration-helper\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":82,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":19},"01M76R3DJSKAT4FA7DV4BF3GCE","zai-cli","Execute z.AI CLI providing vision, search, reader, and GitHub exploration via CLI and MCP.\nUse when user needs image\u002Fvideo analysis, OCR, UI-to-code conversion, error diagnosis,\nreal-time web search, web page to markdown extraction, or GitHub code exploration.\nTrigger with phrases like \"analyze this image\", \"search the web for\", \"read this page\",\n\"explore this repo\", or \"use zai\". Requires Z_AI_API_KEY.","Apache-2.0","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fzai-cli\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"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":92,"publishedAt":19},"01M76R2KAM699XE9AJVAWE4H2E","yt-research","Research competitor YouTube channels, niches, and trending topics for your content strategy.\nUse this skill whenever the user says \"research channels\", \"analyze competitors\", \"find trending topics\",\n\"niche analysis\", \"competitive research\", \"what are other creators doing\", \"scrape YouTube channels\",\nor wants to understand the competitive landscape for a specific tool or topic area. Use when working with yt research. Trigger with 'yt', 'research'.","https:\u002F\u002Fgithub.com\u002FSamuelChien\u002Fmega-skills-collection\u002Fblob\u002Fmain\u002Fyt-research\u002FSKILL.md",[],[]]