[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7WD5NX2P2PVMWRKJKW820":3,"skill-same:01M6F7WD5NX2P2PVMWRKJKW820":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},"01M6F7WD5NX2P2PVMWRKJKW820","linear-common-errors",null,"Diagnose and fix common Linear API errors.\nUse when encountering Linear API errors, debugging integration issues,\nor troubleshooting authentication problems.\nTrigger with phrases like \"linear error\", \"linear API error\",\n\"debug linear\", \"linear not working\", \"linear authentication error\".","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\u002Flinear-pack\u002Fskills\u002Flinear-common-errors\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],"errors","linear common errors","linear","common","write","when","api errors","with","error","trigger","io","use","fix","edit","debug","read","curl","Bash","api","issues","authentication","debugging","diagnose","2026-11-10 10:12:30",false,"---\nname: linear-common-errors\ndescription: |\n  Diagnose and fix common Linear API errors.\n  Use when encountering Linear API errors, debugging integration issues,\n  or troubleshooting authentication problems.\n  Trigger with phrases like \"linear error\", \"linear API error\",\n  \"debug linear\", \"linear not working\", \"linear authentication error\".\nallowed-tools: Read, Write, Edit, Grep, Bash(curl:*)\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Linear Common Errors\n\n## Overview\nQuick reference for diagnosing and resolving common Linear API errors.\n\n## Prerequisites\n- Linear SDK or API access configured\n- Access to application logs\n- Understanding of HTTP status codes\n\n## Error Categories\n\n### Authentication Errors (401\u002F403)\n\n#### Invalid API Key\n```\nError: Authentication required\nCode: UNAUTHENTICATED\n```\n\n**Causes:**\n- API key is invalid, expired, or revoked\n- Key format is incorrect (should start with `lin_api_`)\n- Environment variable not loaded\n\n**Solutions:**\n```typescript\n\u002F\u002F Verify key format\nconst apiKey = process.env.LINEAR_API_KEY;\nif (!apiKey?.startsWith(\"lin_api_\")) {\n  console.error(\"Invalid API key format\");\n}\n\n\u002F\u002F Test authentication\nconst client = new LinearClient({ apiKey });\ntry {\n  await client.viewer;\n  console.log(\"Authentication successful\");\n} catch (e) {\n  console.error(\"Authentication failed:\", e);\n}\n```\n\n#### Permission Denied\n```\nError: You don't have permission to access this resource\nCode: FORBIDDEN\n```\n\n**Causes:**\n- API key doesn't have required scope\n- User not a member of the team\u002Forganization\n- Resource belongs to different workspace\n\n**Solutions:**\n- Check API key permissions in Linear Settings > API\n- Verify team membership\n- Regenerate key with correct permissions\n\n### Rate Limiting Errors (429)\n\n```\nError: Rate limit exceeded\nCode: RATE_LIMITED\nHeaders: X-RateLimit-Remaining: 0, Retry-After: 60\n```\n\n**Causes:**\n- Too many requests in time window\n- Burst of requests without throttling\n\n**Solutions:**\n```typescript\n\u002F\u002F Implement exponential backoff\nasync function withRetry\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?.extensions?.code === \"RATE_LIMITED\" && i \u003C maxRetries - 1) {\n        const delay = Math.pow(2, i) * 1000;\n        console.log(`Rate limited, retrying in ${delay}ms...`);\n        await new Promise(r => setTimeout(r, delay));\n        continue;\n      }\n      throw error;\n    }\n  }\n  throw new Error(\"Max retries exceeded\");\n}\n```\n\n### Validation Errors (400)\n\n```\nError: Variable \"$input\" got invalid value\nCode: BAD_USER_INPUT\n```\n\n**Common Validation Failures:**\n\n| Field | Error | Fix |\n|-------|-------|-----|\n| `teamId` | \"Team not found\" | Verify team exists and accessible |\n| `priority` | \"Invalid priority\" | Use 0-4 (0=None, 1=Urgent, 4=Low) |\n| `estimate` | \"Invalid estimate\" | Use team's configured values |\n| `stateId` | \"State not found\" | State must belong to same team |\n| `assigneeId` | \"User not found\" | User must be team member |\n\n**Debug Validation:**\n```typescript\nasync function createIssueWithValidation(input: {\n  teamId: string;\n  title: string;\n  stateId?: string;\n  assigneeId?: string;\n}) {\n  \u002F\u002F Validate team exists\n  const team = await client.team(input.teamId);\n  if (!team) throw new Error(`Team not found: ${input.teamId}`);\n\n  \u002F\u002F Validate state belongs to team\n  if (input.stateId) {\n    const states = await team.states();\n    if (!states.nodes.find(s => s.id === input.stateId)) {\n      throw new Error(`State ${input.stateId} not in team ${team.key}`);\n    }\n  }\n\n  \u002F\u002F Validate assignee is team member\n  if (input.assigneeId) {\n    const members = await team.members();\n    if (!members.nodes.find(m => m.id === input.assigneeId)) {\n      throw new Error(`User ${input.assigneeId} not in team ${team.key}`);\n    }\n  }\n\n  return client.createIssue(input);\n}\n```\n\n### GraphQL Errors\n\n```\nError: Cannot query field \"nonExistent\" on type \"Issue\"\nCode: GRAPHQL_VALIDATION_FAILED\n```\n\n**Causes:**\n- Field name typo\n- Querying deprecated field\n- SDK version mismatch with API\n\n**Solutions:**\n```bash\n# Update SDK to latest\nnpm update @linear\u002Fsdk\n\n# Check API schema\ncurl -H \"Authorization: $LINEAR_API_KEY\" \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql \\\n  -d '{\"query\": \"{ __schema { types { name } } }\"}'\n```\n\n### Network Errors\n\n```\nError: fetch failed\nCause: ECONNREFUSED \u002F ETIMEDOUT\n```\n\n**Solutions:**\n```typescript\n\u002F\u002F Add timeout and retry\nconst controller = new AbortController();\nconst timeout = setTimeout(() => controller.abort(), 30000);\n\ntry {\n  const response = await fetch(\"https:\u002F\u002Fapi.linear.app\u002Fgraphql\", {\n    signal: controller.signal,\n    \u002F\u002F ... other options\n  });\n} finally {\n  clearTimeout(timeout);\n}\n```\n\n## Diagnostic Commands\n\n### Test API Connection\n```bash\ncurl -s -H \"Authorization: $LINEAR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"query\": \"{ viewer { name email } }\"}' \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql | jq\n```\n\n### Check Rate Limit Status\n```bash\ncurl -I -H \"Authorization: $LINEAR_API_KEY\" \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql\n# Look for: X-RateLimit-Limit, X-RateLimit-Remaining\n```\n\n### Validate Webhook Signature\n```typescript\nimport crypto from \"crypto\";\n\nfunction verifyWebhookSignature(\n  body: string,\n  signature: string,\n  secret: string\n): boolean {\n  const hmac = crypto.createHmac(\"sha256\", secret);\n  const digest = hmac.update(body).digest(\"hex\");\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(digest)\n  );\n}\n```\n\n## Error Handling Pattern\n```typescript\nimport { LinearClient, LinearError } from \"@linear\u002Fsdk\";\n\nasync function safeLinearCall\u003CT>(\n  operation: () => Promise\u003CT>,\n  context: string\n): Promise\u003CT> {\n  try {\n    return await operation();\n  } catch (error) {\n    if (error instanceof LinearError) {\n      console.error(`Linear API Error in ${context}:`, {\n        message: error.message,\n        type: error.type,\n        errors: error.errors,\n      });\n\n      \u002F\u002F Handle specific error types\n      switch (error.type) {\n        case \"AuthenticationError\":\n          throw new Error(\"Please check your Linear API key\");\n        case \"RateLimitedError\":\n          throw new Error(\"Too many requests, please retry later\");\n        default:\n          throw error;\n      }\n    }\n    throw error;\n  }\n}\n```\n\n## Resources\n- [Linear API Error Reference](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Ferrors)\n- [Rate Limiting Guide](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Frate-limiting)\n- [Authentication Guide](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Fauthentication)\n\n## Next Steps\nSet up comprehensive debugging with `linear-debug-bundle`.\n","# Linear Common Errors\n\n## Overview\nQuick reference for diagnosing and resolving common Linear API errors.\n\n## Prerequisites\n- Linear SDK or API access configured\n- Access to application logs\n- Understanding of HTTP status codes\n\n## Error Categories\n\n### Authentication Errors (401\u002F403)\n\n#### Invalid API Key\n```\nError: Authentication required\nCode: UNAUTHENTICATED\n```\n\n**Causes:**\n- API key is invalid, expired, or revoked\n- Key format is incorrect (should start with `lin_api_`)\n- Environment variable not loaded\n\n**Solutions:**\n```typescript\n\u002F\u002F Verify key format\nconst apiKey = process.env.LINEAR_API_KEY;\nif (!apiKey?.startsWith(\"lin_api_\")) {\n  console.error(\"Invalid API key format\");\n}\n\n\u002F\u002F Test authentication\nconst client = new LinearClient({ apiKey });\ntry {\n  await client.viewer;\n  console.log(\"Authentication successful\");\n} catch (e) {\n  console.error(\"Authentication failed:\", e);\n}\n```\n\n#### Permission Denied\n```\nError: You don't have permission to access this resource\nCode: FORBIDDEN\n```\n\n**Causes:**\n- API key doesn't have required scope\n- User not a member of the team\u002Forganization\n- Resource belongs to different workspace\n\n**Solutions:**\n- Check API key permissions in Linear Settings > API\n- Verify team membership\n- Regenerate key with correct permissions\n\n### Rate Limiting Errors (429)\n\n```\nError: Rate limit exceeded\nCode: RATE_LIMITED\nHeaders: X-RateLimit-Remaining: 0, Retry-After: 60\n```\n\n**Causes:**\n- Too many requests in time window\n- Burst of requests without throttling\n\n**Solutions:**\n```typescript\n\u002F\u002F Implement exponential backoff\nasync function withRetry\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?.extensions?.code === \"RATE_LIMITED\" && i \u003C maxRetries - 1) {\n        const delay = Math.pow(2, i) * 1000;\n        console.log(`Rate limited, retrying in ${delay}ms...`);\n        await new Promise(r => setTimeout(r, delay));\n        continue;\n      }\n      throw error;\n    }\n  }\n  throw new Error(\"Max retries exceeded\");\n}\n```\n\n### Validation Errors (400)\n\n```\nError: Variable \"$input\" got invalid value\nCode: BAD_USER_INPUT\n```\n\n**Common Validation Failures:**\n\n| Field | Error | Fix |\n|-------|-------|-----|\n| `teamId` | \"Team not found\" | Verify team exists and accessible |\n| `priority` | \"Invalid priority\" | Use 0-4 (0=None, 1=Urgent, 4=Low) |\n| `estimate` | \"Invalid estimate\" | Use team's configured values |\n| `stateId` | \"State not found\" | State must belong to same team |\n| `assigneeId` | \"User not found\" | User must be team member |\n\n**Debug Validation:**\n```typescript\nasync function createIssueWithValidation(input: {\n  teamId: string;\n  title: string;\n  stateId?: string;\n  assigneeId?: string;\n}) {\n  \u002F\u002F Validate team exists\n  const team = await client.team(input.teamId);\n  if (!team) throw new Error(`Team not found: ${input.teamId}`);\n\n  \u002F\u002F Validate state belongs to team\n  if (input.stateId) {\n    const states = await team.states();\n    if (!states.nodes.find(s => s.id === input.stateId)) {\n      throw new Error(`State ${input.stateId} not in team ${team.key}`);\n    }\n  }\n\n  \u002F\u002F Validate assignee is team member\n  if (input.assigneeId) {\n    const members = await team.members();\n    if (!members.nodes.find(m => m.id === input.assigneeId)) {\n      throw new Error(`User ${input.assigneeId} not in team ${team.key}`);\n    }\n  }\n\n  return client.createIssue(input);\n}\n```\n\n### GraphQL Errors\n\n```\nError: Cannot query field \"nonExistent\" on type \"Issue\"\nCode: GRAPHQL_VALIDATION_FAILED\n```\n\n**Causes:**\n- Field name typo\n- Querying deprecated field\n- SDK version mismatch with API\n\n**Solutions:**\n```bash\n# Update SDK to latest\nnpm update @linear\u002Fsdk\n\n# Check API schema\ncurl -H \"Authorization: $LINEAR_API_KEY\" \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql \\\n  -d '{\"query\": \"{ __schema { types { name } } }\"}'\n```\n\n### Network Errors\n\n```\nError: fetch failed\nCause: ECONNREFUSED \u002F ETIMEDOUT\n```\n\n**Solutions:**\n```typescript\n\u002F\u002F Add timeout and retry\nconst controller = new AbortController();\nconst timeout = setTimeout(() => controller.abort(), 30000);\n\ntry {\n  const response = await fetch(\"https:\u002F\u002Fapi.linear.app\u002Fgraphql\", {\n    signal: controller.signal,\n    \u002F\u002F ... other options\n  });\n} finally {\n  clearTimeout(timeout);\n}\n```\n\n## Diagnostic Commands\n\n### Test API Connection\n```bash\ncurl -s -H \"Authorization: $LINEAR_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"query\": \"{ viewer { name email } }\"}' \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql | jq\n```\n\n### Check Rate Limit Status\n```bash\ncurl -I -H \"Authorization: $LINEAR_API_KEY\" \\\n  https:\u002F\u002Fapi.linear.app\u002Fgraphql\n# Look for: X-RateLimit-Limit, X-RateLimit-Remaining\n```\n\n### Validate Webhook Signature\n```typescript\nimport crypto from \"crypto\";\n\nfunction verifyWebhookSignature(\n  body: string,\n  signature: string,\n  secret: string\n): boolean {\n  const hmac = crypto.createHmac(\"sha256\", secret);\n  const digest = hmac.update(body).digest(\"hex\");\n  return crypto.timingSafeEqual(\n    Buffer.from(signature),\n    Buffer.from(digest)\n  );\n}\n```\n\n## Error Handling Pattern\n```typescript\nimport { LinearClient, LinearError } from \"@linear\u002Fsdk\";\n\nasync function safeLinearCall\u003CT>(\n  operation: () => Promise\u003CT>,\n  context: string\n): Promise\u003CT> {\n  try {\n    return await operation();\n  } catch (error) {\n    if (error instanceof LinearError) {\n      console.error(`Linear API Error in ${context}:`, {\n        message: error.message,\n        type: error.type,\n        errors: error.errors,\n      });\n\n      \u002F\u002F Handle specific error types\n      switch (error.type) {\n        case \"AuthenticationError\":\n          throw new Error(\"Please check your Linear API key\");\n        case \"RateLimitedError\":\n          throw new Error(\"Too many requests, please retry later\");\n        default:\n          throw error;\n      }\n    }\n    throw error;\n  }\n}\n```\n\n## Resources\n- [Linear API Error Reference](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Ferrors)\n- [Rate Limiting Guide](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Frate-limiting)\n- [Authentication Guide](https:\u002F\u002Fdevelopers.linear.app\u002Fdocs\u002Fgraphql\u002Fauthentication)\n\n## Next Steps\nSet up comprehensive debugging with `linear-debug-bundle`.\n",{"name":5,"author":52,"license":15,"version":53,"description":54,"allowed-tools":55},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Diagnose and fix common Linear API errors.\nUse when encountering Linear API errors, debugging integration issues,\nor troubleshooting authentication problems.\nTrigger with phrases like \"linear error\", \"linear API error\",\n\"debug linear\", \"linear not working\", \"linear authentication error\".\n","Read, Write, Edit, Grep, Bash(curl:*)","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flinear-pack\u002Fskills\u002Flinear-common-errors",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":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill linear-common-errors",{"tool":71,"command":72},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill linear-common-errors",{"tool":74,"command":75},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill linear-common-errors","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flinear-pack\u002Fskills\u002Flinear-common-errors\u002FSKILL.md",true,[],[80,120,143,169,196,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,35,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,45,137,138,109,139,140,141,142,31,117],"testing","webapp testing","webapp","screenshots","playwright","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":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",[],[151,152,153,154,155,156,157,158,35,159,160,161,162,163,164,165,31,166,167,168,117,29],"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":84,"licenseFileUrl":173,"sourceHtmlUrl":174,"categories":175,"keywords":179,"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",[176],{"categoryNo":177,"categoryName":178,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发",[180,181,182,183,184,185,186,187,188,189,190,191,192,193,31,117,194,29,195],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","Existing","new",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":200,"sourceHtmlUrl":201,"categories":202,"keywords":204,"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",[203],{"categoryNo":177,"categoryName":178,"taxonomyType":91,"taxonomyTypeDesc":92},[198,205,206,207,208,209,210,138,211,212,35,213,214,215,216,117,217],"google","browser automation","gemini","automation","auth","code","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,181,235,110,236,237,186,35,238,193,239,240,241,117,242,29],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]