[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F7RFKAD88GDVMBQ1QF96DJ":3,"skill-same:01M6F7RFKAD88GDVMBQ1QF96DJ":73},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M6F7RFKAD88GDVMBQ1QF96DJ","langfuse-prod-checklist",null,"Langfuse production readiness checklist and verification.\nUse when preparing to deploy Langfuse to production,\nvalidating production configuration, or auditing existing setup.\nTrigger with phrases like \"langfuse production\", \"langfuse prod ready\",\n\"deploy langfuse\", \"langfuse checklist\", \"langfuse go live\".","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\u002Flangfuse-pack\u002Fskills\u002Flangfuse-prod-checklist\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"langfuse","langfuse prod checklist","checklist","ready","when","Existing","with","readiness","trigger","io","live","production readiness","go","use","edit","write","read","grep","Bash","Production","verification","readiness checklist","2026-11-10 10:12:30",false,"---\nname: langfuse-prod-checklist\ndescription: |\n  Langfuse production readiness checklist and verification.\n  Use when preparing to deploy Langfuse to production,\n  validating production configuration, or auditing existing setup.\n  Trigger with phrases like \"langfuse production\", \"langfuse prod ready\",\n  \"deploy langfuse\", \"langfuse checklist\", \"langfuse go live\".\nallowed-tools: Read, Write, Edit, Bash(npm:*), Grep\nversion: 1.0.0\nlicense: MIT\nauthor: Jeremy Longshore \u003Cjeremy@intentsolutions.io>\n---\n\n# Langfuse Production Checklist\n\n## Overview\nComprehensive checklist for deploying Langfuse observability to production.\n\n## Prerequisites\n- Completed development and staging testing\n- Access to production secrets management\n- Production Langfuse project created\n\n## Production Readiness Checklist\n\n### 1. Authentication & Security\n| Item | Status | Command\u002FAction |\n|------|--------|----------------|\n| Production API keys | [ ] | Create in Langfuse dashboard |\n| Keys in secrets manager | [ ] | AWS\u002FGCP\u002FVault |\n| Keys NOT in code\u002Fgit | [ ] | `git log --all -- '*key*'` |\n| Environment isolation | [ ] | Separate dev\u002Fstaging\u002Fprod keys |\n| PII scrubbing enabled | [ ] | Verify scrub functions |\n\n### 2. SDK Configuration\n| Item | Status | Recommended Value |\n|------|--------|-------------------|\n| `flushAt` | [ ] | 15-50 (batch size) |\n| `flushInterval` | [ ] | 5000-10000ms |\n| `requestTimeout` | [ ] | 10000-30000ms |\n| `enabled` | [ ] | `true` for prod |\n| Singleton pattern | [ ] | Single client instance |\n\n### 3. Error Handling\n| Item | Status | Implementation |\n|------|--------|----------------|\n| Try\u002Fcatch around traces | [ ] | All trace operations |\n| Span `.end()` in finally | [ ] | Prevent hanging spans |\n| Error level traces | [ ] | Log errors to Langfuse |\n| Graceful shutdown | [ ] | `shutdownAsync()` on exit |\n\n### 4. Performance\n| Item | Status | Verification |\n|------|--------|--------------|\n| Async tracing (non-blocking) | [ ] | Don't await traces in hot path |\n| Batching configured | [ ] | `flushAt` > 1 |\n| No memory leaks | [ ] | Monitor heap usage |\n| Connection pooling | [ ] | Singleton client |\n\n### 5. Observability\n| Item | Status | Setup |\n|------|--------|-------|\n| Trace URL logging | [ ] | Log trace IDs for debugging |\n| SDK error monitoring | [ ] | Catch\u002Flog SDK errors |\n| Dashboard alerts | [ ] | High error rate, latency |\n| Cost tracking | [ ] | Token usage monitoring |\n\n## Instructions\n\n### Step 1: Verify Production Configuration\n\n```typescript\n\u002F\u002F config\u002Flangfuse.prod.ts\nimport { Langfuse } from \"langfuse\";\n\nfunction validateConfig(config: Record\u003Cstring, any>): void {\n  const required = [\"publicKey\", \"secretKey\"];\n  const missing = required.filter((key) => !config[key]);\n\n  if (missing.length > 0) {\n    throw new Error(`Missing Langfuse config: ${missing.join(\", \")}`);\n  }\n\n  \u002F\u002F Verify production keys (not dev\u002Ftest)\n  if (config.publicKey.includes(\"test\") || config.publicKey.includes(\"dev\")) {\n    console.warn(\"WARNING: Using non-production API keys!\");\n  }\n}\n\nexport function createProductionLangfuse() {\n  const config = {\n    publicKey: process.env.LANGFUSE_PUBLIC_KEY!,\n    secretKey: process.env.LANGFUSE_SECRET_KEY!,\n    baseUrl: process.env.LANGFUSE_HOST || \"https:\u002F\u002Fcloud.langfuse.com\",\n    \u002F\u002F Production settings\n    flushAt: 25,\n    flushInterval: 5000,\n    requestTimeout: 15000,\n    enabled: process.env.NODE_ENV === \"production\",\n  };\n\n  validateConfig(config);\n\n  return new Langfuse(config);\n}\n```\n\n### Step 2: Implement Production Error Handling\n\n```typescript\n\u002F\u002F lib\u002Flangfuse-production.ts\nimport { Langfuse } from \"langfuse\";\n\nlet langfuseInstance: Langfuse | null = null;\n\nexport function getLangfuse(): Langfuse {\n  if (!langfuseInstance) {\n    langfuseInstance = createProductionLangfuse();\n\n    \u002F\u002F Register graceful shutdown\n    const shutdown = async () => {\n      console.log(\"Flushing Langfuse traces...\");\n      await langfuseInstance?.shutdownAsync();\n      console.log(\"Langfuse shutdown complete\");\n    };\n\n    process.on(\"SIGTERM\", shutdown);\n    process.on(\"SIGINT\", shutdown);\n    process.on(\"beforeExit\", shutdown);\n  }\n\n  return langfuseInstance;\n}\n\n\u002F\u002F Production-safe trace wrapper\nexport async function safeTrace\u003CT>(\n  name: string,\n  operation: (trace: ReturnType\u003Ctypeof langfuse.trace>) => Promise\u003CT>,\n  metadata?: Record\u003Cstring, any>\n): Promise\u003CT> {\n  const langfuse = getLangfuse();\n\n  let trace;\n  try {\n    trace = langfuse.trace({\n      name,\n      metadata: {\n        ...metadata,\n        environment: \"production\",\n      },\n    });\n  } catch (error) {\n    console.error(\"Failed to create Langfuse trace:\", error);\n    \u002F\u002F Continue without tracing - don't fail the operation\n    return operation(null as any);\n  }\n\n  try {\n    const result = await operation(trace);\n    trace.update({ output: { success: true } });\n    return result;\n  } catch (error) {\n    trace.update({\n      output: { error: String(error) },\n      level: \"ERROR\",\n    });\n    throw error;\n  }\n}\n```\n\n### Step 3: Run Pre-Deployment Verification\n\n```typescript\n\u002F\u002F scripts\u002Fverify-langfuse-prod.ts\nimport { Langfuse } from \"langfuse\";\n\nasync function verifyProduction() {\n  console.log(\"=== Langfuse Production Verification ===\\n\");\n\n  const checks: Array\u003C{ name: string; check: () => Promise\u003Cboolean> }> = [\n    {\n      name: \"Environment variables set\",\n      check: async () => {\n        const required = [\n          \"LANGFUSE_PUBLIC_KEY\",\n          \"LANGFUSE_SECRET_KEY\",\n        ];\n        const missing = required.filter((key) => !process.env[key]);\n        if (missing.length > 0) {\n          console.log(`  Missing: ${missing.join(\", \")}`);\n          return false;\n        }\n        return true;\n      },\n    },\n    {\n      name: \"API keys are production keys\",\n      check: async () => {\n        const key = process.env.LANGFUSE_PUBLIC_KEY || \"\";\n        const isProduction =\n          !key.includes(\"test\") &&\n          !key.includes(\"dev\") &&\n          key.startsWith(\"pk-lf-\");\n        if (!isProduction) {\n          console.log(\"  Key appears to be non-production\");\n        }\n        return isProduction;\n      },\n    },\n    {\n      name: \"Can create trace\",\n      check: async () => {\n        const langfuse = new Langfuse();\n        const trace = langfuse.trace({\n          name: \"production-verification\",\n          metadata: { test: true },\n        });\n        await langfuse.flushAsync();\n        return true;\n      },\n    },\n    {\n      name: \"Graceful shutdown works\",\n      check: async () => {\n        const langfuse = new Langfuse();\n        langfuse.trace({ name: \"shutdown-test\" });\n        await langfuse.shutdownAsync();\n        return true;\n      },\n    },\n  ];\n\n  let passed = 0;\n  let failed = 0;\n\n  for (const { name, check } of checks) {\n    process.stdout.write(`[ ] ${name}...`);\n    try {\n      const result = await check();\n      if (result) {\n        console.log(\"\\r[✓]\");\n        passed++;\n      } else {\n        console.log(\"\\r[✗]\");\n        failed++;\n      }\n    } catch (error) {\n      console.log(`\\r[✗] Error: ${error}`);\n      failed++;\n    }\n  }\n\n  console.log(`\\n=== Results: ${passed} passed, ${failed} failed ===`);\n\n  if (failed > 0) {\n    process.exit(1);\n  }\n}\n\nverifyProduction();\n```\n\n### Step 4: Configure Production Monitoring\n\n```typescript\n\u002F\u002F Monitor Langfuse health in production\ninterface LangfuseMetrics {\n  tracesCreated: number;\n  tracesFailed: number;\n  flushLatencyMs: number[];\n  lastFlushTime: Date | null;\n}\n\nconst metrics: LangfuseMetrics = {\n  tracesCreated: 0,\n  tracesFailed: 0,\n  flushLatencyMs: [],\n  lastFlushTime: null,\n};\n\n\u002F\u002F Expose metrics endpoint\napp.get(\"\u002Fmetrics\u002Flangfuse\", (req, res) => {\n  const avgFlushLatency =\n    metrics.flushLatencyMs.length > 0\n      ? metrics.flushLatencyMs.reduce((a, b) => a + b) \u002F\n        metrics.flushLatencyMs.length\n      : 0;\n\n  res.json({\n    tracesCreated: metrics.tracesCreated,\n    tracesFailed: metrics.tracesFailed,\n    avgFlushLatencyMs: avgFlushLatency.toFixed(2),\n    lastFlushTime: metrics.lastFlushTime?.toISOString(),\n    errorRate: (\n      (metrics.tracesFailed \u002F (metrics.tracesCreated || 1)) *\n      100\n    ).toFixed(2),\n  });\n});\n```\n\n## Output\n- Verified production configuration\n- Error handling implemented\n- Graceful shutdown configured\n- Monitoring in place\n- All checklist items passed\n\n## Production Configuration Example\n\n```typescript\n\u002F\u002F Final production Langfuse configuration\nexport const productionLangfuseConfig = {\n  \u002F\u002F Authentication\n  publicKey: process.env.LANGFUSE_PUBLIC_KEY!,\n  secretKey: process.env.LANGFUSE_SECRET_KEY!,\n  baseUrl: process.env.LANGFUSE_HOST || \"https:\u002F\u002Fcloud.langfuse.com\",\n\n  \u002F\u002F Batching (optimized for production)\n  flushAt: 25,          \u002F\u002F Batch 25 events\n  flushInterval: 5000,  \u002F\u002F Flush every 5 seconds\n\n  \u002F\u002F Timeouts\n  requestTimeout: 15000, \u002F\u002F 15 second timeout\n\n  \u002F\u002F Enable\u002Fdisable\n  enabled: process.env.NODE_ENV === \"production\",\n\n  \u002F\u002F Debug (disabled in production)\n  debug: false,\n};\n```\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Missing traces in prod | Flush not called | Verify shutdown handler |\n| High latency | Large batches | Reduce `flushAt` |\n| Memory growth | Client recreation | Use singleton pattern |\n| Lost traces on deploy | No graceful shutdown | Add SIGTERM handler |\n\n## Resources\n- [Langfuse Production Guide](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fdeployment)\n- [Langfuse Self-Hosting](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fdeployment\u002Fself-host)\n- [Langfuse SDK Reference](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fsdk)\n\n## Next Steps\nFor SDK upgrades, see `langfuse-upgrade-migration`.\n","# Langfuse Production Checklist\n\n## Overview\nComprehensive checklist for deploying Langfuse observability to production.\n\n## Prerequisites\n- Completed development and staging testing\n- Access to production secrets management\n- Production Langfuse project created\n\n## Production Readiness Checklist\n\n### 1. Authentication & Security\n| Item | Status | Command\u002FAction |\n|------|--------|----------------|\n| Production API keys | [ ] | Create in Langfuse dashboard |\n| Keys in secrets manager | [ ] | AWS\u002FGCP\u002FVault |\n| Keys NOT in code\u002Fgit | [ ] | `git log --all -- '*key*'` |\n| Environment isolation | [ ] | Separate dev\u002Fstaging\u002Fprod keys |\n| PII scrubbing enabled | [ ] | Verify scrub functions |\n\n### 2. SDK Configuration\n| Item | Status | Recommended Value |\n|------|--------|-------------------|\n| `flushAt` | [ ] | 15-50 (batch size) |\n| `flushInterval` | [ ] | 5000-10000ms |\n| `requestTimeout` | [ ] | 10000-30000ms |\n| `enabled` | [ ] | `true` for prod |\n| Singleton pattern | [ ] | Single client instance |\n\n### 3. Error Handling\n| Item | Status | Implementation |\n|------|--------|----------------|\n| Try\u002Fcatch around traces | [ ] | All trace operations |\n| Span `.end()` in finally | [ ] | Prevent hanging spans |\n| Error level traces | [ ] | Log errors to Langfuse |\n| Graceful shutdown | [ ] | `shutdownAsync()` on exit |\n\n### 4. Performance\n| Item | Status | Verification |\n|------|--------|--------------|\n| Async tracing (non-blocking) | [ ] | Don't await traces in hot path |\n| Batching configured | [ ] | `flushAt` > 1 |\n| No memory leaks | [ ] | Monitor heap usage |\n| Connection pooling | [ ] | Singleton client |\n\n### 5. Observability\n| Item | Status | Setup |\n|------|--------|-------|\n| Trace URL logging | [ ] | Log trace IDs for debugging |\n| SDK error monitoring | [ ] | Catch\u002Flog SDK errors |\n| Dashboard alerts | [ ] | High error rate, latency |\n| Cost tracking | [ ] | Token usage monitoring |\n\n## Instructions\n\n### Step 1: Verify Production Configuration\n\n```typescript\n\u002F\u002F config\u002Flangfuse.prod.ts\nimport { Langfuse } from \"langfuse\";\n\nfunction validateConfig(config: Record\u003Cstring, any>): void {\n  const required = [\"publicKey\", \"secretKey\"];\n  const missing = required.filter((key) => !config[key]);\n\n  if (missing.length > 0) {\n    throw new Error(`Missing Langfuse config: ${missing.join(\", \")}`);\n  }\n\n  \u002F\u002F Verify production keys (not dev\u002Ftest)\n  if (config.publicKey.includes(\"test\") || config.publicKey.includes(\"dev\")) {\n    console.warn(\"WARNING: Using non-production API keys!\");\n  }\n}\n\nexport function createProductionLangfuse() {\n  const config = {\n    publicKey: process.env.LANGFUSE_PUBLIC_KEY!,\n    secretKey: process.env.LANGFUSE_SECRET_KEY!,\n    baseUrl: process.env.LANGFUSE_HOST || \"https:\u002F\u002Fcloud.langfuse.com\",\n    \u002F\u002F Production settings\n    flushAt: 25,\n    flushInterval: 5000,\n    requestTimeout: 15000,\n    enabled: process.env.NODE_ENV === \"production\",\n  };\n\n  validateConfig(config);\n\n  return new Langfuse(config);\n}\n```\n\n### Step 2: Implement Production Error Handling\n\n```typescript\n\u002F\u002F lib\u002Flangfuse-production.ts\nimport { Langfuse } from \"langfuse\";\n\nlet langfuseInstance: Langfuse | null = null;\n\nexport function getLangfuse(): Langfuse {\n  if (!langfuseInstance) {\n    langfuseInstance = createProductionLangfuse();\n\n    \u002F\u002F Register graceful shutdown\n    const shutdown = async () => {\n      console.log(\"Flushing Langfuse traces...\");\n      await langfuseInstance?.shutdownAsync();\n      console.log(\"Langfuse shutdown complete\");\n    };\n\n    process.on(\"SIGTERM\", shutdown);\n    process.on(\"SIGINT\", shutdown);\n    process.on(\"beforeExit\", shutdown);\n  }\n\n  return langfuseInstance;\n}\n\n\u002F\u002F Production-safe trace wrapper\nexport async function safeTrace\u003CT>(\n  name: string,\n  operation: (trace: ReturnType\u003Ctypeof langfuse.trace>) => Promise\u003CT>,\n  metadata?: Record\u003Cstring, any>\n): Promise\u003CT> {\n  const langfuse = getLangfuse();\n\n  let trace;\n  try {\n    trace = langfuse.trace({\n      name,\n      metadata: {\n        ...metadata,\n        environment: \"production\",\n      },\n    });\n  } catch (error) {\n    console.error(\"Failed to create Langfuse trace:\", error);\n    \u002F\u002F Continue without tracing - don't fail the operation\n    return operation(null as any);\n  }\n\n  try {\n    const result = await operation(trace);\n    trace.update({ output: { success: true } });\n    return result;\n  } catch (error) {\n    trace.update({\n      output: { error: String(error) },\n      level: \"ERROR\",\n    });\n    throw error;\n  }\n}\n```\n\n### Step 3: Run Pre-Deployment Verification\n\n```typescript\n\u002F\u002F scripts\u002Fverify-langfuse-prod.ts\nimport { Langfuse } from \"langfuse\";\n\nasync function verifyProduction() {\n  console.log(\"=== Langfuse Production Verification ===\\n\");\n\n  const checks: Array\u003C{ name: string; check: () => Promise\u003Cboolean> }> = [\n    {\n      name: \"Environment variables set\",\n      check: async () => {\n        const required = [\n          \"LANGFUSE_PUBLIC_KEY\",\n          \"LANGFUSE_SECRET_KEY\",\n        ];\n        const missing = required.filter((key) => !process.env[key]);\n        if (missing.length > 0) {\n          console.log(`  Missing: ${missing.join(\", \")}`);\n          return false;\n        }\n        return true;\n      },\n    },\n    {\n      name: \"API keys are production keys\",\n      check: async () => {\n        const key = process.env.LANGFUSE_PUBLIC_KEY || \"\";\n        const isProduction =\n          !key.includes(\"test\") &&\n          !key.includes(\"dev\") &&\n          key.startsWith(\"pk-lf-\");\n        if (!isProduction) {\n          console.log(\"  Key appears to be non-production\");\n        }\n        return isProduction;\n      },\n    },\n    {\n      name: \"Can create trace\",\n      check: async () => {\n        const langfuse = new Langfuse();\n        const trace = langfuse.trace({\n          name: \"production-verification\",\n          metadata: { test: true },\n        });\n        await langfuse.flushAsync();\n        return true;\n      },\n    },\n    {\n      name: \"Graceful shutdown works\",\n      check: async () => {\n        const langfuse = new Langfuse();\n        langfuse.trace({ name: \"shutdown-test\" });\n        await langfuse.shutdownAsync();\n        return true;\n      },\n    },\n  ];\n\n  let passed = 0;\n  let failed = 0;\n\n  for (const { name, check } of checks) {\n    process.stdout.write(`[ ] ${name}...`);\n    try {\n      const result = await check();\n      if (result) {\n        console.log(\"\\r[✓]\");\n        passed++;\n      } else {\n        console.log(\"\\r[✗]\");\n        failed++;\n      }\n    } catch (error) {\n      console.log(`\\r[✗] Error: ${error}`);\n      failed++;\n    }\n  }\n\n  console.log(`\\n=== Results: ${passed} passed, ${failed} failed ===`);\n\n  if (failed > 0) {\n    process.exit(1);\n  }\n}\n\nverifyProduction();\n```\n\n### Step 4: Configure Production Monitoring\n\n```typescript\n\u002F\u002F Monitor Langfuse health in production\ninterface LangfuseMetrics {\n  tracesCreated: number;\n  tracesFailed: number;\n  flushLatencyMs: number[];\n  lastFlushTime: Date | null;\n}\n\nconst metrics: LangfuseMetrics = {\n  tracesCreated: 0,\n  tracesFailed: 0,\n  flushLatencyMs: [],\n  lastFlushTime: null,\n};\n\n\u002F\u002F Expose metrics endpoint\napp.get(\"\u002Fmetrics\u002Flangfuse\", (req, res) => {\n  const avgFlushLatency =\n    metrics.flushLatencyMs.length > 0\n      ? metrics.flushLatencyMs.reduce((a, b) => a + b) \u002F\n        metrics.flushLatencyMs.length\n      : 0;\n\n  res.json({\n    tracesCreated: metrics.tracesCreated,\n    tracesFailed: metrics.tracesFailed,\n    avgFlushLatencyMs: avgFlushLatency.toFixed(2),\n    lastFlushTime: metrics.lastFlushTime?.toISOString(),\n    errorRate: (\n      (metrics.tracesFailed \u002F (metrics.tracesCreated || 1)) *\n      100\n    ).toFixed(2),\n  });\n});\n```\n\n## Output\n- Verified production configuration\n- Error handling implemented\n- Graceful shutdown configured\n- Monitoring in place\n- All checklist items passed\n\n## Production Configuration Example\n\n```typescript\n\u002F\u002F Final production Langfuse configuration\nexport const productionLangfuseConfig = {\n  \u002F\u002F Authentication\n  publicKey: process.env.LANGFUSE_PUBLIC_KEY!,\n  secretKey: process.env.LANGFUSE_SECRET_KEY!,\n  baseUrl: process.env.LANGFUSE_HOST || \"https:\u002F\u002Fcloud.langfuse.com\",\n\n  \u002F\u002F Batching (optimized for production)\n  flushAt: 25,          \u002F\u002F Batch 25 events\n  flushInterval: 5000,  \u002F\u002F Flush every 5 seconds\n\n  \u002F\u002F Timeouts\n  requestTimeout: 15000, \u002F\u002F 15 second timeout\n\n  \u002F\u002F Enable\u002Fdisable\n  enabled: process.env.NODE_ENV === \"production\",\n\n  \u002F\u002F Debug (disabled in production)\n  debug: false,\n};\n```\n\n## Error Handling\n| Issue | Cause | Solution |\n|-------|-------|----------|\n| Missing traces in prod | Flush not called | Verify shutdown handler |\n| High latency | Large batches | Reduce `flushAt` |\n| Memory growth | Client recreation | Use singleton pattern |\n| Lost traces on deploy | No graceful shutdown | Add SIGTERM handler |\n\n## Resources\n- [Langfuse Production Guide](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fdeployment)\n- [Langfuse Self-Hosting](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fdeployment\u002Fself-host)\n- [Langfuse SDK Reference](https:\u002F\u002Flangfuse.com\u002Fdocs\u002Fsdk)\n\n## Next Steps\nFor SDK upgrades, see `langfuse-upgrade-migration`.\n",{"name":5,"author":46,"license":15,"version":47,"description":48,"allowed-tools":49},"Jeremy Longshore \u003Cjeremy@intentsolutions.io>","1.0.0","Langfuse production readiness checklist and verification.\nUse when preparing to deploy Langfuse to production,\nvalidating production configuration, or auditing existing setup.\nTrigger with phrases like \"langfuse production\", \"langfuse prod ready\",\n\"deploy langfuse\", \"langfuse checklist\", \"langfuse go live\".\n","Read, Write, Edit, Bash(npm:*), Grep","main","90b50ed0778745a80fd5bfb13b1843d45b9e82f7","tests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flangfuse-pack\u002Fskills\u002Flangfuse-prod-checklist",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":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langfuse-prod-checklist",{"tool":65,"command":66},"bunx","bunx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langfuse-prod-checklist",{"tool":68,"command":69},"pnpm","pnpm dlx skills add Dicklesworthstone\u002Fpi_agent_rust --skill langfuse-prod-checklist","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDicklesworthstone\u002Fpi_agent_rust\u002Fblob\u002Fmain\u002Ftests\u002Fext_conformance\u002Fartifacts\u002Fplugins-community\u002Fplugins\u002Fsaas-packs\u002Flangfuse-pack\u002Fskills\u002Flangfuse-prod-checklist\u002FSKILL.md",true,[],[74,114,138,164,190,212],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":79,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":41},"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",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,32,106,107,108,109,110,111,112,113],"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":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":118,"sourceHtmlUrl":119,"categories":120,"keywords":125,"publishedAt":41},"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",[121,124],{"categoryNo":122,"categoryName":123,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[126,127,128,93,129,130,89,131,132,133,103,134,135,136,137,25,111],"testing","webapp testing","webapp","screenshots","playwright","debugging","toolkit","browser","logs","applications","behavior","local",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":142,"sourceHtmlUrl":143,"categories":144,"keywords":145,"publishedAt":41},"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",[],[146,147,148,149,150,151,152,153,32,154,155,156,157,158,159,160,25,161,162,163,111,23],"analysis","neuropixels analysis","spike","metrics","data","open","quality","user","recordings","Neural","motion","visual","quality metrics","unit","sorting","curation","recording","load",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":168,"sourceHtmlUrl":169,"categories":170,"keywords":174,"publishedAt":41},"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",[171],{"categoryNo":172,"categoryName":173,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发",[175,176,177,178,179,180,181,182,183,184,185,186,187,188,25,111,24,23,189],"skill creator","creator","workflows","create","update","capabilities","knowledge","tool","integrations","specialized","guide","new skill","existing skill","users","new",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":194,"sourceHtmlUrl":195,"categories":196,"keywords":198,"publishedAt":41},"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",[197],{"categoryNo":172,"categoryName":173,"taxonomyType":85,"taxonomyTypeDesc":86},[192,199,200,201,202,203,204,133,205,206,32,207,208,209,210,111,211],"google","browser automation","gemini","automation","auth","code","library","management","only","document","query","Citation","source",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":78,"licenseFileUrl":216,"sourceHtmlUrl":217,"categories":218,"keywords":225,"publishedAt":41},"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",[219,222],{"categoryNo":220,"categoryName":221,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":223,"categoryName":224,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000016","图像与多媒体",[226,227,228,176,229,104,230,231,181,32,232,188,233,234,235,111,236,23],"slack gif creator","slack","gif","validation","constraints","Animation","me","make","Utilities","concepts","request"]