[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7NTJ9M1MHAHT6MN9S9XFR":3,"skill-same:01M6F7NTJ9M1MHAHT6MN9S9XFR":74},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":6,"ownerHtmlUrl":56,"ownerBlogUrl":57,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M6F7NTJ9M1MHAHT6MN9S9XFR","langchain-sdk-patterns",null,"Apply production-ready LangChain SDK patterns for chains, agents, and memory.\nUse when implementing LangChain integrations, refactoring code,\nor establishing team coding standards for LangChain applications.\nTrigger with phrases like \"langchain SDK patterns\", \"langchain best practices\",\n\"langchain code patterns\", \"idiomatic langchain\", \"langchain architecture\".","Dicklesworthstone\u002Fpi_agent_rust","Dicklesworthstone","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35050222?v=4","01M6CG26AR942CSVMN1M5E3DSE","Jeff Emanuel","01M6CG26EPP71PSHW1VDS71121",1992,"MIT","https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flangchain-pack\u002Fskills\u002Flangchain-sdk-patterns\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"langchain sdk patterns","patterns","langchain","sdk","write","when","implementing","production-ready","code patterns","io","langchain architecture","standards","ready","edit","read","coding","integrations","refactoring","team","coding standards","code","architecture","memory","2026-11-10 10:12:30",false,"---\nname: langchain-sdk-patterns\ndescription: |\n  Apply production-ready LangChain SDK patterns for chains, agents, and memory.\n  Use when implementing LangChain integrations, refactoring code,\n  or establishing team coding standards for LangChain applications.\n  Trigger with phrases like \"langchain SDK patterns\", \"langchain best practices\",\n  \"langchain code patterns\", \"idiomatic langchain\", \"langchain architecture\".\nallowed-tools: Read, Write, Edit\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# LangChain SDK Patterns\n\n## Overview\nProduction-ready patterns for LangChain applications including LCEL chains, structured output, and error handling.\n\n## Prerequisites\n- Completed `langchain-install-auth` setup\n- Familiarity with async\u002Fawait patterns\n- Understanding of error handling best practices\n\n## Core Patterns\n\n### Pattern 1: Type-Safe Chain with Pydantic\n```python\nfrom pydantic import BaseModel, Field\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.prompts import ChatPromptTemplate\n\nclass SentimentResult(BaseModel):\n    \"\"\"Structured output for sentiment analysis.\"\"\"\n    sentiment: str = Field(description=\"positive, negative, or neutral\")\n    confidence: float = Field(description=\"Confidence score 0-1\")\n    reasoning: str = Field(description=\"Brief explanation\")\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\nstructured_llm = llm.with_structured_output(SentimentResult)\n\nprompt = ChatPromptTemplate.from_template(\n    \"Analyze the sentiment of: {text}\"\n)\n\nchain = prompt | structured_llm\n\n# Returns typed SentimentResult\nresult: SentimentResult = chain.invoke({\"text\": \"I love LangChain!\"})\nprint(f\"Sentiment: {result.sentiment} ({result.confidence})\")\n```\n\n### Pattern 2: Retry with Fallback\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_core.runnables import RunnableWithFallbacks\n\nprimary = ChatOpenAI(model=\"gpt-4o\")\nfallback = ChatAnthropic(model=\"claude-3-5-sonnet-20241022\")\n\n# Automatically falls back on failure\nrobust_llm = primary.with_fallbacks([fallback])\n\nresponse = robust_llm.invoke(\"Hello!\")\n```\n\n### Pattern 3: Async Batch Processing\n```python\nimport asyncio\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.prompts import ChatPromptTemplate\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\nprompt = ChatPromptTemplate.from_template(\"Summarize: {text}\")\nchain = prompt | llm\n\nasync def process_batch(texts: list[str]) -> list:\n    \"\"\"Process multiple texts concurrently.\"\"\"\n    inputs = [{\"text\": t} for t in texts]\n    results = await chain.abatch(inputs, config={\"max_concurrency\": 5})\n    return results\n\n# Usage\nresults = asyncio.run(process_batch([\"text1\", \"text2\", \"text3\"]))\n```\n\n### Pattern 4: Streaming with Callbacks\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.callbacks import StreamingStdOutCallbackHandler\n\nllm = ChatOpenAI(\n    model=\"gpt-4o-mini\",\n    streaming=True,\n    callbacks=[StreamingStdOutCallbackHandler()]\n)\n\n# Streams tokens to stdout as they arrive\nfor chunk in llm.stream(\"Tell me a story\"):\n    # Each chunk contains partial content\n    pass\n```\n\n### Pattern 5: Caching for Cost Reduction\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.globals import set_llm_cache\nfrom langchain_community.cache import SQLiteCache\n\n# Enable SQLite caching\nset_llm_cache(SQLiteCache(database_path=\".langchain_cache.db\"))\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\n\n# First call hits API\nresponse1 = llm.invoke(\"What is 2+2?\")\n\n# Second identical call uses cache (no API cost)\nresponse2 = llm.invoke(\"What is 2+2?\")\n```\n\n## Output\n- Type-safe chains with Pydantic models\n- Robust error handling with fallbacks\n- Efficient async batch processing\n- Cost-effective caching strategies\n\n## Error Handling\n\n### Standard Error Pattern\n```python\nfrom langchain_core.exceptions import OutputParserException\nfrom openai import RateLimitError, APIError\n\ndef safe_invoke(chain, input_data, max_retries=3):\n    \"\"\"Invoke chain with error handling.\"\"\"\n    for attempt in range(max_retries):\n        try:\n            return chain.invoke(input_data)\n        except RateLimitError:\n            if attempt \u003C max_retries - 1:\n                time.sleep(2 ** attempt)\n                continue\n            raise\n        except OutputParserException as e:\n            # Handle parsing failures\n            return {\"error\": str(e), \"raw\": e.llm_output}\n        except APIError as e:\n            raise RuntimeError(f\"API error: {e}\")\n```\n\n## Resources\n- [LCEL Documentation](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Flcel\u002F)\n- [Structured Output](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Fstructured_outputs\u002F)\n- [Fallbacks](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fhow_to\u002Ffallbacks\u002F)\n- [Caching](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fhow_to\u002Fllm_caching\u002F)\n\n## Next Steps\nProceed to `langchain-core-workflow-a` for chains and prompts workflow.\n","# LangChain SDK Patterns\n\n## Overview\nProduction-ready patterns for LangChain applications including LCEL chains, structured output, and error handling.\n\n## Prerequisites\n- Completed `langchain-install-auth` setup\n- Familiarity with async\u002Fawait patterns\n- Understanding of error handling best practices\n\n## Core Patterns\n\n### Pattern 1: Type-Safe Chain with Pydantic\n```python\nfrom pydantic import BaseModel, Field\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.prompts import ChatPromptTemplate\n\nclass SentimentResult(BaseModel):\n    \"\"\"Structured output for sentiment analysis.\"\"\"\n    sentiment: str = Field(description=\"positive, negative, or neutral\")\n    confidence: float = Field(description=\"Confidence score 0-1\")\n    reasoning: str = Field(description=\"Brief explanation\")\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\nstructured_llm = llm.with_structured_output(SentimentResult)\n\nprompt = ChatPromptTemplate.from_template(\n    \"Analyze the sentiment of: {text}\"\n)\n\nchain = prompt | structured_llm\n\n# Returns typed SentimentResult\nresult: SentimentResult = chain.invoke({\"text\": \"I love LangChain!\"})\nprint(f\"Sentiment: {result.sentiment} ({result.confidence})\")\n```\n\n### Pattern 2: Retry with Fallback\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_core.runnables import RunnableWithFallbacks\n\nprimary = ChatOpenAI(model=\"gpt-4o\")\nfallback = ChatAnthropic(model=\"claude-3-5-sonnet-20241022\")\n\n# Automatically falls back on failure\nrobust_llm = primary.with_fallbacks([fallback])\n\nresponse = robust_llm.invoke(\"Hello!\")\n```\n\n### Pattern 3: Async Batch Processing\n```python\nimport asyncio\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.prompts import ChatPromptTemplate\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\nprompt = ChatPromptTemplate.from_template(\"Summarize: {text}\")\nchain = prompt | llm\n\nasync def process_batch(texts: list[str]) -> list:\n    \"\"\"Process multiple texts concurrently.\"\"\"\n    inputs = [{\"text\": t} for t in texts]\n    results = await chain.abatch(inputs, config={\"max_concurrency\": 5})\n    return results\n\n# Usage\nresults = asyncio.run(process_batch([\"text1\", \"text2\", \"text3\"]))\n```\n\n### Pattern 4: Streaming with Callbacks\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.callbacks import StreamingStdOutCallbackHandler\n\nllm = ChatOpenAI(\n    model=\"gpt-4o-mini\",\n    streaming=True,\n    callbacks=[StreamingStdOutCallbackHandler()]\n)\n\n# Streams tokens to stdout as they arrive\nfor chunk in llm.stream(\"Tell me a story\"):\n    # Each chunk contains partial content\n    pass\n```\n\n### Pattern 5: Caching for Cost Reduction\n```python\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.globals import set_llm_cache\nfrom langchain_community.cache import SQLiteCache\n\n# Enable SQLite caching\nset_llm_cache(SQLiteCache(database_path=\".langchain_cache.db\"))\n\nllm = ChatOpenAI(model=\"gpt-4o-mini\")\n\n# First call hits API\nresponse1 = llm.invoke(\"What is 2+2?\")\n\n# Second identical call uses cache (no API cost)\nresponse2 = llm.invoke(\"What is 2+2?\")\n```\n\n## Output\n- Type-safe chains with Pydantic models\n- Robust error handling with fallbacks\n- Efficient async batch processing\n- Cost-effective caching strategies\n\n## Error Handling\n\n### Standard Error Pattern\n```python\nfrom langchain_core.exceptions import OutputParserException\nfrom openai import RateLimitError, APIError\n\ndef safe_invoke(chain, input_data, max_retries=3):\n    \"\"\"Invoke chain with error handling.\"\"\"\n    for attempt in range(max_retries):\n        try:\n            return chain.invoke(input_data)\n        except RateLimitError:\n            if attempt \u003C max_retries - 1:\n                time.sleep(2 ** attempt)\n                continue\n            raise\n        except OutputParserException as e:\n            # Handle parsing failures\n            return {\"error\": str(e), \"raw\": e.llm_output}\n        except APIError as e:\n            raise RuntimeError(f\"API error: {e}\")\n```\n\n## Resources\n- [LCEL Documentation](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Flcel\u002F)\n- [Structured Output](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fconcepts\u002Fstructured_outputs\u002F)\n- [Fallbacks](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fhow_to\u002Ffallbacks\u002F)\n- [Caching](https:\u002F\u002Fpython.langchain.com\u002Fdocs\u002Fhow_to\u002Fllm_caching\u002F)\n\n## Next Steps\nProceed to `langchain-core-workflow-a` for chains and prompts workflow.\n",{"name":5,"author":47,"license":15,"version":48,"description":49,"allowed-tools":50},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Apply production-ready LangChain SDK patterns for chains, agents, and memory.\nUse when implementing LangChain integrations, refactoring code,\nor establishing team coding standards for LangChain applications.\nTrigger with phrases like \"langchain SDK patterns\", \"langchain best practices\",\n\"langchain code patterns\", \"idiomatic langchain\", \"langchain architecture\".\n","Read, Write, Edit","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flangchain-pack\u002Fskills\u002Flangchain-sdk-patterns",233,"https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust","https:\u002F\u002Fgithub.com\u002FDicklesworthstone","https:\u002F\u002Fwww.jeffreyemanuel.com\u002F","Building in NY","2026-11-15 01:54:15",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langchain-sdk-patterns",{"tool":66,"command":67},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langchain-sdk-patterns",{"tool":69,"command":70},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langchain-sdk-patterns","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flangchain-pack\u002Fskills\u002Flangchain-sdk-patterns\u002FSKILL.md",true,[],[75,116,141,167,193,214],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":79,"licenseFileUrl":80,"sourceHtmlUrl":81,"categories":82,"keywords":88,"publishedAt":42},"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",[83],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115],"web artifacts builder","web","artifacts","artifacts builder","builder","frontend","css","components","react","component","routing","state management","state","shadcn","file","ui","Tools","Tailwind","use","html","single-file","simple","ui components","multi","for","jsx","suite",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":79,"licenseFileUrl":120,"sourceHtmlUrl":121,"categories":122,"keywords":127,"publishedAt":42},"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",[123,126],{"categoryNo":124,"categoryName":125,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},[128,129,130,94,131,132,90,133,134,135,104,136,137,138,139,140,113],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local","with",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":145,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":42},"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",[],[149,150,151,152,153,154,155,156,107,157,158,159,160,161,162,163,140,164,165,166,113,24],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":79,"licenseFileUrl":171,"sourceHtmlUrl":172,"categories":173,"keywords":177,"publishedAt":42},"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",[174],{"categoryNo":175,"categoryName":176,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000023","Skill与智能体开发",[178,179,180,181,182,183,184,185,35,186,187,188,189,190,140,113,191,24,192],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":194,"name":195,"nameZh":6,"description":196,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":197,"sourceHtmlUrl":198,"categories":199,"keywords":201,"publishedAt":42},"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",[200],{"categoryNo":175,"categoryName":176,"taxonomyType":86,"taxonomyTypeDesc":87},[195,202,203,204,205,206,39,135,207,208,107,209,210,211,212,113,213],"google","browser automation","gemini","automation","auth","library","management","only","document","query","Citation","source",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":79,"licenseFileUrl":218,"sourceHtmlUrl":219,"categories":220,"keywords":227,"publishedAt":42},"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",[221,224],{"categoryNo":222,"categoryName":223,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":225,"categoryName":226,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000016","图像与多媒体",[228,229,230,179,231,105,232,233,184,107,234,190,235,236,237,113,238,24],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]