From langfuse-pack
Generates Langfuse debug bundle with env versions, SDK details, redacted config, API health checks, and logs for support tickets and troubleshooting.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin langfuse-packThis skill is limited to using the following tools:
!`node --version 2>/dev/null || echo 'N/A'`
Diagnoses common Langfuse errors like 401 auth failures, missing traces, network timeouts. Provides bash curl tests and TypeScript SDK fixes for flush/shutdown.
Collects LangChain diagnostics: environment info, @langchain deps, LLM traces via callbacks, error logs for bug reports and LangSmith. Use for troubleshooting failures.
Interact with Langfuse via CLI to query/modify traces, prompts, datasets, scores, sessions; access documentation, SDK usage, integrations, and features.
Share bugs, ideas, or general feedback.
!node --version 2>/dev/null || echo 'N/A'
!python3 --version 2>/dev/null || echo 'N/A'
!npm list langfuse @langfuse/client @langfuse/tracing 2>/dev/null | head -5 || echo 'No langfuse packages'
Collect all diagnostic information needed for Langfuse support tickets: environment versions, SDK config, API connectivity, redacted logs, and a reproduction template.
Save this as langfuse-debug.sh and run it:
#!/bin/bash
set -euo pipefail
BUNDLE_DIR="langfuse-debug-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BUNDLE_DIR"
echo "=== Langfuse Debug Bundle ===" | tee "$BUNDLE_DIR/summary.txt"
echo "Generated: $(date)" | tee -a "$BUNDLE_DIR/summary.txt"
# --- Environment ---
{
echo ""
echo "--- Environment ---"
echo "Node.js: $(node --version 2>/dev/null || echo 'not installed')"
echo "Python: $(python3 --version 2>/dev/null || echo 'not installed')"
echo "npm: $(npm --version 2>/dev/null || echo 'not installed')"
echo "OS: $(uname -srm)"
} >> "$BUNDLE_DIR/summary.txt"
# --- SDK Versions ---
{
echo ""
echo "--- SDK Versions ---"
npm list langfuse @langfuse/client @langfuse/tracing @langfuse/otel @langfuse/openai @langfuse/langchain 2>/dev/null || echo "npm: no langfuse packages"
pip show langfuse 2>/dev/null | grep -E "Name|Version" || echo "pip: langfuse not found"
} >> "$BUNDLE_DIR/summary.txt"
# --- Config (redacted) ---
{
echo ""
echo "--- Langfuse Config ---"
echo "LANGFUSE_PUBLIC_KEY: ${LANGFUSE_PUBLIC_KEY:+SET (${LANGFUSE_PUBLIC_KEY:0:12}...)}"
echo "LANGFUSE_SECRET_KEY: ${LANGFUSE_SECRET_KEY:+SET}"
echo "LANGFUSE_BASE_URL: ${LANGFUSE_BASE_URL:-NOT SET}"
echo "LANGFUSE_HOST: ${LANGFUSE_HOST:-NOT SET}"
} >> "$BUNDLE_DIR/summary.txt"
# --- Network Connectivity ---
{
echo ""
echo "--- Network Test ---"
HOST="${LANGFUSE_BASE_URL:-${LANGFUSE_HOST:-https://cloud.langfuse.com}}"
echo "Target host: $HOST"
echo -n "Health endpoint: "
curl -s -o /dev/null -w "%{http_code} (%{time_total}s)" "$HOST/api/public/health" 2>/dev/null || echo "FAILED"
echo ""
if [ -n "${LANGFUSE_PUBLIC_KEY:-}" ] && [ -n "${LANGFUSE_SECRET_KEY:-}" ]; then
AUTH=$(echo -n "$LANGFUSE_PUBLIC_KEY:$LANGFUSE_SECRET_KEY" | base64)
echo -n "Auth test: "
curl -s -o /dev/null -w "%{http_code}" \
-H "Authorization: Basic $AUTH" \
"$HOST/api/public/traces?limit=1" 2>/dev/null || echo "FAILED"
echo ""
fi
} >> "$BUNDLE_DIR/summary.txt"
# --- Application Logs (redacted) ---
if [ -d "logs" ]; then
grep -i "langfuse\|trace\|generation\|flush" logs/*.log 2>/dev/null | \
tail -100 | \
sed 's/sk-lf-[a-zA-Z0-9]*/sk-lf-***REDACTED***/g' | \
sed 's/pk-lf-[a-zA-Z0-9]*/pk-lf-***REDACTED***/g' \
> "$BUNDLE_DIR/app-logs-redacted.txt" 2>/dev/null || true
fi
# --- Package Dependencies ---
if [ -f "package.json" ]; then
grep -A 100 '"dependencies"' package.json | head -60 > "$BUNDLE_DIR/package-deps.txt" 2>/dev/null || true
fi
# --- Reproduction Template ---
cat > "$BUNDLE_DIR/reproduction-steps.md" << 'REPRO'
# Bug Report
## Environment
- Node.js version:
- Langfuse SDK version:
- Langfuse host: Cloud / Self-hosted (version: )
## Steps to Reproduce
1.
2.
3.
## Expected Behavior
## Actual Behavior
## Error Messages
Paste error output here
## Relevant Code
```typescript
// Paste minimal reproduction here
REPRO
tar -czf "$BUNDLE_DIR.tar.gz" "$BUNDLE_DIR" 2>/dev/null echo "" echo "Bundle created: $BUNDLE_DIR.tar.gz" echo "Contents:" ls -la "$BUNDLE_DIR/"
### Step 2: Review Before Sharing
**Always redact before submitting:**
| Include | Redact |
|---------|--------|
| Error messages and stack traces | API keys (`pk-lf-*`, `sk-lf-*`) |
| SDK versions and config structure | Secret keys and passwords |
| HTTP status codes | PII (emails, user IDs) |
| Timing and latency data | Internal URLs and IPs |
| OS and runtime versions | Database connection strings |
### Step 3: Submit to Support
1. Run: `bash langfuse-debug.sh`
2. Review bundle contents for leaked secrets
3. Fill in `reproduction-steps.md`
4. Submit via:
- [GitHub Issues](https://github.com/langfuse/langfuse/issues) (public)
- [Discord](https://langfuse.com/discord) (community)
- Email support (enterprise customers)
### Step 4: Quick Inline Diagnostic (No File)
For a fast check without creating files:
```bash
set -euo pipefail
echo "=== Quick Langfuse Check ==="
echo "Node: $(node --version 2>/dev/null || echo N/A)"
npm list langfuse @langfuse/client 2>/dev/null | head -5
echo ""
echo "Public Key: ${LANGFUSE_PUBLIC_KEY:+SET} | Secret Key: ${LANGFUSE_SECRET_KEY:+SET}"
HOST="${LANGFUSE_BASE_URL:-${LANGFUSE_HOST:-https://cloud.langfuse.com}}"
echo "Health: $(curl -s -o /dev/null -w '%{http_code}' $HOST/api/public/health)"
| Collected Item | Why It Matters |
|---|---|
| SDK version | Version-specific bugs, breaking changes between v3/v4/v5 |
| Environment versions | Node 18+ required, Python 3.9+ |
| Network test | Firewall, DNS, self-hosted connectivity |
| Auth test | Key validity, project mismatch |
| Redacted logs | Trace errors, flush failures, rate limits |
| Package deps | Conflicting versions, missing peer deps |