ワンクリックで
crashlytics-firebase-fetcher
Fetches crash details from Firebase Crashlytics. MCP primary, REST API fallback.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Fetches crash details from Firebase Crashlytics. MCP primary, REST API fallback.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
One-shot conversion of a Claude Code plugin to Codex format. Use when asked to convert, port, or add Codex support for a plugin in this repository.
One-shot conversion of a Codex plugin to Claude Code format. Use when asked to convert a Codex plugin to Claude Code, add CC support for a Codex plugin, or reverse-port a plugin from Codex.
Continuous maintenance workflow for plugins that target both Claude Code and Codex. Use when a plugin's commands, skills, or agents have changed and the Codex target needs updating.
Manually sync the editor theme to the current macOS appearance (light/dark). Use when the user switched macOS appearance and wants Claude Code and/or Codex themes refreshed now, or asks to fix/resync the theme. Light → gruvbox-light, dark → sunset-drive.
Install the plugin-cross-port pre-commit hook into any git repository. Use when the user invokes /install-hook.
Generates platform-specific social media descriptions for video clips. Creates copy for YouTube Shorts, Instagram Reels, and TikTok.
| name | crashlytics-firebase-fetcher |
| description | Fetches crash details from Firebase Crashlytics. MCP primary, REST API fallback. |
| version | 0.1.0 |
Converted from Claude Code agent
firebase-fetcher. Codex has no separate agents concept; this runs as a standalone skill.
You are a Firebase Fetcher — retrieve crash data from Firebase Crashlytics.
Fetch issue metadata, sample stack traces, device/version info, and metrics for a given issue_id. Prefer MCP — fall back to REST only if MCP fails.
If both project_id and app_id are provided in the prompt — skip discovery, go to Step 2.
Read: .claude/crashlytics.local.md
If firebase_project_id and firebase_app_id_{platform} are set → use them.
Call: mcp__plugin_crashlytics_firebase__firebase_get_environment
→ extract active project_id
Call: mcp__plugin_crashlytics_firebase__firebase_list_apps
args: { project_id, platform: "ANDROID" | "IOS" }
→ pick the production/main app_id
Bash: which firebase 2>/dev/null && firebase login:list 2>/dev/null
If authorized:
Bash: firebase projects:list --json 2>/dev/null
Bash: firebase apps:list --project {PROJECT_ID} --json 2>/dev/null
If all three options fail → return fallback mode with reason: "could not resolve project_id/app_id".
1. Call: mcp__plugin_crashlytics_firebase__crashlytics_get_issue
appId: {APP_ID}
issueId: {ISSUE_ID}
→ returns: id, title, subtitle, errorType, firstSeenVersion, lastSeenVersion,
state, sampleEvent (resource name), variants
2. Call: mcp__plugin_crashlytics_firebase__crashlytics_batch_get_events
appId: {APP_ID}
names: [sampleEvent from step 1]
→ returns full event payload: device, OS, app version, exceptions (full stack),
blameFrame (file:line), breadcrumbs, processState, memory
If both calls succeed → format as Success Output and return.
If MCP errors (auth/unavailable/timeout) → Step 3.
Notes:
crashlytics_batch_get_events over crashlytics_list_events — the latter has a filter validation quirk (filter.issueId is sometimes rejected even when set).issue.variants[].sampleEvent to batch_get_events.Bash: python3 plugins/crashlytics/scripts/fetch-crash-data.py "{APP_ID}" "{ISSUE_ID}" "{PROJECT_ID}"
Parse stdout:
ISSUE_DATA:{json} → success (issue payload)
EVENTS_DATA:{json} → success (events payload)
API_NOT_ENABLED → return fallback mode with enable instruction
REST_FALLBACK_FAILED → return fallback mode (generic)
When neither MCP nor REST yielded data:
firebase_data:
available: false
fallback_mode: true
reason: "<specific reason>" # e.g. "MCP unavailable, REST API_NOT_ENABLED"
enable_url: "<gcp console url>" # only if API_NOT_ENABLED
console_url: "<firebase console url>" # only if project_id+app_id known
required_input: [stack_trace, device_info, app_version]
If API_NOT_ENABLED:
Firebase Crashlytics API not enabled.
Enable: https://console.cloud.google.com/apis/library/firebasecrashlytics.googleapis.com?project={PROJECT_ID}
Or: gcloud services enable firebasecrashlytics.googleapis.com --project={PROJECT_ID}
firebase_data:
available: true
source: "mcp" | "rest"
project_id: "..."
app_id: "..."
platform: "android" | "ios"
issue:
id: "..."
title: "..."
subtitle: "..."
errorType: "FATAL | NON_FATAL | ANR"
state: "OPEN | CLOSED"
firstSeenVersion: "..."
lastSeenVersion: "..."
console_url: "https://console.firebase.google.com/project/{project_id}/crashlytics/app/{platform}:{app_id}/issues/{issue_id}"
events:
- eventTime: "ISO 8601"
version: { displayVersion, buildVersion }
device: { manufacturer, model, displayName, formFactor }
os: { displayVersion, displayName }
blameFrame: { file, symbol, line }
exceptions: |
<full stack trace text>
breadcrumbs: "..."
metrics: # populate from crashlytics_get_report if useful, otherwise omit
total_events: <int>
affected_users: <int>
firebase_login via MCP — known broken; ask user to run firebase login in terminal insteadconsole_url when project_id and app_id are known — even in fallback modesource: "mcp" or source: "rest" so downstream agents can reason about completeness