Skip to main content
lokalise-debug-bundle Collect Lokalise debug evidence for support tickets and troubleshooting.
Use when encountering persistent issues, preparing support tickets,
or collecting diagnostic information for Lokalise problems.
Trigger with phrases like "lokalise debug", "lokalise support bundle",
"collect lokalise logs", "lokalise diagnostic".
インストールへ移動 Skills Marketplace コミュニティが作成したAIスキルを発見・探索
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/jeremylongshore/claude-code-plugins-plus-skills --skill lokalise-debug-bundleコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Zipをダウンロード ダウンロード中... jeremylongshore
jeremylongshore/claude-code-plugins-plus-skills
GitHub リポジトリを開く このリポジトリの他の Skills Implement user sign-up and sign-in flows with Clerk.
Use when building authentication UI, customizing sign-in experience,
or implementing OAuth social login.
Trigger with phrases like "clerk sign-in", "clerk sign-up",
"clerk login flow", "clerk OAuth", "clerk social login".
Implement session management and middleware with Clerk.
Use when managing user sessions, configuring route protection,
or implementing token refresh and custom JWT templates.
Trigger with phrases like "clerk session", "clerk middleware",
"clerk route protection", "clerk token", "clerk JWT".
Configure enterprise SSO, role-based access control, and organization management.
Use when implementing SSO integration, configuring role-based permissions,
or setting up organization-level controls.
Trigger with phrases like "clerk SSO", "clerk RBAC",
"clerk enterprise", "clerk roles", "clerk permissions", "clerk organizations".
name lokalise-debug-bundle description Collect Lokalise debug evidence for support tickets and troubleshooting.
Use when encountering persistent issues, preparing support tickets,
or collecting diagnostic information for Lokalise problems.
Trigger with phrases like "lokalise debug", "lokalise support bundle",
"collect lokalise logs", "lokalise diagnostic".
allowed-tools Read, Bash(grep:*), Bash(curl:*), Bash(tar:*), Bash(lokalise2:*), Bash(node:*), Bash(npm:*), Bash(jq:*), Bash(sed:*), Bash(mkdir:*), Grep version 1.14.0 license MIT author Jeremy Longshore <jeremy@intentsolutions.io> tags ["saas","lokalise","debugging"] compatibility Designed for Claude Code, also compatible with Codex and OpenClaw
Lokalise Debug Bundle
Current State
!node --version 2>/dev/null || echo 'N/A'
!python3 --version 2>/dev/null || echo 'N/A'
!uname -a
Overview
Collect all diagnostic information needed to troubleshoot Lokalise integration issues or file a support ticket — environment versions, SDK/CLI status, API connectivity, project listings with key counts, upload process status, and redacted logs, bundled into a timestamped .tar.gz archive.
Prerequisites
LOKALISE_API_TOKEN environment variable set (or token available to provide)
curl and jq available on PATH
Optional: @lokalise/node-api SDK installed in current project
Optional: lokalise2 CLI installed
Instructions
Step 1: Create the Bundle Directory
set -euo pipefail
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BUNDLE_DIR="lokalise-debug-${TIMESTAMP} "
mkdir -p "${BUNDLE_DIR} "
echo "Bundle directory: ${BUNDLE_DIR} "
Step 2: Collect Environment Information
set -euo pipefail
cat > "${BUNDLE_DIR} /environment.txt" <<ENVEOF
=== System ===
OS: $(uname -srm)
Shell: ${SHELL:-unknown}
Date: $(date -u +"%Y-%m-%dT%H:%M:%SZ")
=== Runtime Versions ===
Node.js: $(node --version 2>/dev/null || echo 'not installed')
npm: $(npm --version 2>/dev/null || echo 'not installed')
Python: $(python3 --version 2>/dev/null || echo 'not installed')
=== Lokalise SDK ===
$(npm list @lokalise/node-api 2>/dev/null || echo 'SDK not found in project')
=== Lokalise CLI ===
$(lokalise2 --version 2>/dev/null || echo 'CLI not installed')
=== Token Status ===
LOKALISE_API_TOKEN: $([ -n "${LOKALISE_API_TOKEN:-}" ] && echo "SET (${#LOKALISE_API_TOKEN} chars)" || echo "NOT SET")
ENVEOF
echo "Environment info collected."
Step 3: Test API Connectivity
set -euo pipefail
echo "=== API Connectivity Test ===" > "${BUNDLE_DIR} /api-connectivity.txt"
echo -e "\n--- DNS Resolution ---" >> "${BUNDLE_DIR} /api-connectivity.txt"
nslookup api.lokalise.com 2>&1 | tail -4 >> "${BUNDLE_DIR} /api-connectivity.txt" || echo "nslookup failed" >> "${BUNDLE_DIR} /api-connectivity.txt"
echo -e "\n--- HTTPS Connectivity ---" >> "${BUNDLE_DIR} /api-connectivity.txt"
curl -s -o /dev/null -w "HTTP Status: %{http_code}\nConnect Time: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal Time: %{time_total}s\nRemote IP: %{remote_ip}\n" \
-H "X-Api-Token: ${LOKALISE_API_TOKEN} " \
"https://api.lokalise.com/api2/system/languages?limit=1" \
>> "${BUNDLE_DIR} /api-connectivity.txt" 2>&1
echo -e "\n--- Rate Limit Headers ---" >> "${BUNDLE_DIR} /api-connectivity.txt"
curl -s -D - -o /dev/null \
-H "X-Api-Token: ${LOKALISE_API_TOKEN} " \
"https://api.lokalise.com/api2/system/languages?limit=1" 2>/dev/null \
| grep -iE '(x-ratelimit|retry-after)' >> "${BUNDLE_DIR} /api-connectivity.txt" || echo "No rate limit headers found" >> "${BUNDLE_DIR} /api-connectivity.txt"
echo "API connectivity tested."
Step 4: List Projects and Key Counts set -euo pipefail
echo "Fetching project list..."
curl -s -H "X-Api-Token: ${LOKALISE_API_TOKEN} " \
"https://api.lokalise.com/api2/projects?limit=100&include_statistics=1" \
| jq '[.projects[] | {
project_id: .project_id,
name: .name,
base_language: .base_language_iso,
keys: .statistics.keys_total,
languages: (.statistics.languages // [] | length),
progress: .statistics.progress_total,
created: .created_at
}]' > "${BUNDLE_DIR} /projects.json" 2>/dev/null || echo '{"error": "Failed to fetch projects"}' > "${BUNDLE_DIR} /projects.json"
PROJ_COUNT=$(jq 'length' "${BUNDLE_DIR} /projects.json" 2>/dev/null || echo "0" )
TOTAL_KEYS=$(jq '[.[].keys // 0] | add // 0' "${BUNDLE_DIR} /projects.json" 2>/dev/null || echo "0" )
echo "Found ${PROJ_COUNT} projects with ${TOTAL_KEYS} total keys."
Step 5: Check File Upload Process Status set -euo pipefail
echo "[]" > "${BUNDLE_DIR} /processes.json"
for PID in $(jq -r '.[].project_id' "${BUNDLE_DIR} /projects.json" 2>/dev/null); do
curl -s -H "X-Api-Token: ${LOKALISE_API_TOKEN} " \
"https://api.lokalise.com/api2/projects/${PID} /processes?limit=10" \
| jq --arg pid "$PID " '[.processes[]? | {project_id: $pid, type: .type, status: .status, created_at: .created_at, message: .message}]' \
>> "${BUNDLE_DIR} /processes-raw.json" 2>/dev/null || true
sleep 0.17
done
jq -s 'flatten' "${BUNDLE_DIR} /processes-raw.json" > "${BUNDLE_DIR} /processes.json" 2>/dev/null || true
rm -f "${BUNDLE_DIR} /processes-raw.json"
PROC_COUNT=$(jq 'length' "${BUNDLE_DIR} /processes.json" 2>/dev/null || echo "0" )
echo "Found ${PROC_COUNT} recent upload processes."
Step 6: Collect and Redact Application Logs set -euo pipefail
{
echo "=== npm debug log (if exists) ==="
cat ~/.npm/_logs/*-debug.log 2>/dev/null | grep -i lokalise | tail -50 || echo "No npm debug logs"
echo -e "\n=== Application stderr/stdout (recent) ==="
grep -ri "lokalise" /tmp/*.log 2>/dev/null | tail -30 || echo "No /tmp logs found"
} > "${BUNDLE_DIR} /logs-raw.txt" 2>/dev/null || true
sed -E \
-e 's/([0-9a-f]{32,})/[REDACTED_TOKEN]/gi' \
-e 's/(X-Api-Token:\s*)[^ ]*/\1[REDACTED]/gi' \
-e 's/(apiKey:\s*["' "'" ']?)[^"' "'" ',]+/\1[REDACTED]/gi' \
-e 's/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/[REDACTED_EMAIL]/g' \
"${BUNDLE_DIR} /logs-raw.txt" > "${BUNDLE_DIR} /logs-redacted.txt" 2>/dev/null || true
rm -f "${BUNDLE_DIR} /logs-raw.txt"
echo "Logs collected and redacted."
Step 7: Create the tar.gz Bundle set -euo pipefail
tar -czf "${BUNDLE_DIR} .tar.gz" "${BUNDLE_DIR} /"
SIZE=$(du -h "${BUNDLE_DIR} .tar.gz" | cut -f1)
echo "Bundle created: ${BUNDLE_DIR} .tar.gz (${SIZE} )"
echo "Contents:"
tar -tzf "${BUNDLE_DIR} .tar.gz"
Output
lokalise-debug-YYYYMMDD-HHMMSS.tar.gz archive containing:
environment.txt — Node.js, SDK, CLI versions, token status
api-connectivity.txt — DNS, HTTPS latency, rate limit headers
projects.json — Project list with key/language counts and progress
processes.json — Recent file upload process statuses per project
logs-redacted.txt — Relevant logs with tokens and emails scrubbed
Error Handling Issue Cause Solution 401 UnauthorizedToken invalid or expired Regenerate token in Lokalise > User Profile > API Tokens 403 ForbiddenToken lacks read scope Use a read-write token or admin token 429 Too Many RequestsRate limit exceeded during project scan Script includes sleep 0.17 between calls; reduce --limit if still hitting Empty projects.json Token has no project access Verify the token owner is a contributor on at least one project nslookup failsDNS resolution blocked Try dig api.lokalise.com or check /etc/resolv.conf tar permission deniedBundle dir in read-only location Run from a writable directory like ~/tmp
Examples
Quick One-Liner API Health Check set -euo pipefail
curl -s -w "\nHTTP %{http_code} in %{time_total}s\n" \
-H "X-Api-Token: $LOKALISE_API_TOKEN " \
"https://api.lokalise.com/api2/projects?limit=1" | jq '{project: .projects[0].name, keys: .projects[0].statistics.keys_total}'
Check SDK Version Programmatically set -euo pipefail
node -e "const pkg = require('@lokalise/node-api/package.json'); console.log('SDK:', pkg.version, '| Node:', process.version)"
Redaction Safety Checklist Always redacted: API tokens, webhook secrets, OAuth credentials, email addresses, any 32+ character hex strings.
Safe to include: Error messages, stack traces (after redaction pass), SDK and runtime versions, project IDs, HTTP status codes, rate limit header values.
Resources
Next Steps
For rate limit issues found in the bundle, see lokalise-performance-tuning.
For SDK version mismatches, see lokalise-upgrade-migration.
Attach the .tar.gz bundle directly to a Lokalise support ticket at support@lokalise.com .