[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KCFDRDXQRF6AC26MAVB9JQ":3,"skill-same:01M6KCFDRDXQRF6AC26MAVB9JQ":69},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6KCFDRDXQRF6AC26MAVB9JQ","mobiai-crashlytics",null,"Use when the user shares a Firebase Crashlytics crash link, crash ID, or asks to investigate a Crashlytics issue in depth.","ArisGuimera\u002FMobiAI-Core","ArisGuimera","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16361358?v=4","01M6KC5MVGRKDA14DWT98445V9","AristiDevs","01M6KC5MZKRFFHFFD340B21YN3",492,"MIT","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fcore\u002Fskills\u002Fmobiai-crashlytics\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"mobiai crashlytics","cursor","native","link","id","claude-code","issue","react-native","crash","use","android","user","flutter","investigate","firebase","ios","code","copilot","react","codex","2026-11-10 10:12:30",false,"---\nname: mobiai-crashlytics\ndescription: Use when the user shares a Firebase Crashlytics crash link, crash ID, or asks to investigate a Crashlytics issue in depth.\nlicense: MIT\ncompatibility: [claude-code, cursor, copilot, codex]\nplatforms: [android, ios, flutter, react-native]\n---\n\n# Crashlytics Investigation\n\nDeep investigation of a crash reported through Firebase Crashlytics. Goes beyond a raw stack trace — uses Crashlytics data to understand the full context: user journey, breadcrumbs, affected versions, device info, and event frequency.\n\n## When to Use\n\n- User shares a Crashlytics link, crash ID, or issue title\n- User asks to investigate a specific Crashlytics issue\n- User mentions Firebase crashes or production crash reports from Crashlytics\n\n## Prerequisites\n\nThis skill requires access to Firebase Crashlytics data. Check what tools are available:\n\n1. **Firebase MCP tools** — if the Firebase MCP server is configured, use these tools:\n   - `firebase_update_environment` — set the active Firebase project before querying\n   - `firebase_list_apps` — get the app IDs for the project\n   - `crashlytics_get_issue` — fetch issue metadata: event count, user count, error type. Parameters: `appId`, `issueId`\n   - `crashlytics_list_events` — fetch crash events with full stack traces. Parameters: `appId`, `issueId`, `pageSize`\n2. **Firebase CLI** — `firebase crashlytics:list` and related commands\n3. **User provides the data** — if no tools are available, ask the user to paste or export the crash details from the Crashlytics console\n\nIf none of these are available, fall back to the `mobiai-analyze-crash` skill with whatever information the user can provide manually.\n\n## Workflow\n\n### Step 1: Fetch Crash Details\n\nGet the full crash information from Crashlytics:\n\n- **Stack trace** — the complete symbolicated stack trace, not just the top frame\n- **Event count** — how many times this crash has occurred\n- **Affected users** — how many unique users have been affected\n- **Affected versions** — which app versions are seeing this crash\n- **First seen \u002F last seen** — when did it start and is it still happening?\n- **Device breakdown** — which devices and OS versions are most affected\n\n### Step 2: Analyze the User Journey\n\nCrashlytics provides breadcrumbs — the sequence of events before the crash:\n\n- **Screen flow** — which screens did the user visit before crashing?\n- **User actions** — taps, navigation events, custom log events\n- **Network calls** — did a network request fail before the crash?\n- **App state transitions** — did the app go to background and come back?\n- **Custom keys\u002Flogs** — any custom data the app logs to Crashlytics\n\nThis context is what makes Crashlytics investigation more powerful than a raw stack trace. Use it to understand the conditions that trigger the crash.\n\n### Step 3: Identify Patterns\n\nLook across multiple crash events for patterns:\n\n- Does it only happen on specific devices or OS versions?\n- Does it only happen after a specific user action?\n- Did it start with a specific app version? (regression)\n- Is it correlated with a specific time of day or network condition?\n- Check `git log` for changes introduced in the first affected version\n\n### Step 4: Find the Root Cause in Code\n\nWith the full context from Crashlytics, trace the crash in the codebase:\n\n1. **Start from the stack trace** — find the crashing file and method\n2. **Use breadcrumbs to understand the state** — what screen was the user on? What data was loaded?\n3. **Check the conditions** — what combination of state + action triggers this?\n4. **Read the code path** from the triggering action through to the crash point\n5. **Check recent changes** in the affected files:\n   ```bash\n   git log --oneline -10 -- \u003Ccrashing-file>\n   ```\n\n### Step 5: Decide — Fix or Report\n\nBased on what you found:\n\n- **Clear root cause, simple fix** — apply the fix directly. Verify it compiles, run tests.\n- **Clear root cause, complex fix** — explain the root cause, the conditions that trigger it, and propose a fix approach. Include which files need to change and why.\n- **Unclear root cause** — report what you found, what patterns you identified, and what additional information would help narrow it down.\n\nIn all cases, include:\n- **Root cause** — what code is wrong and why\n- **Trigger conditions** — what combination of state\u002Factions causes the crash\n- **Affected scope** — which versions, devices, user flows\n- **Suggested fix** — what to change, with risk assessment\n","# Crashlytics Investigation\n\nDeep investigation of a crash reported through Firebase Crashlytics. Goes beyond a raw stack trace — uses Crashlytics data to understand the full context: user journey, breadcrumbs, affected versions, device info, and event frequency.\n\n## When to Use\n\n- User shares a Crashlytics link, crash ID, or issue title\n- User asks to investigate a specific Crashlytics issue\n- User mentions Firebase crashes or production crash reports from Crashlytics\n\n## Prerequisites\n\nThis skill requires access to Firebase Crashlytics data. Check what tools are available:\n\n1. **Firebase MCP tools** — if the Firebase MCP server is configured, use these tools:\n   - `firebase_update_environment` — set the active Firebase project before querying\n   - `firebase_list_apps` — get the app IDs for the project\n   - `crashlytics_get_issue` — fetch issue metadata: event count, user count, error type. Parameters: `appId`, `issueId`\n   - `crashlytics_list_events` — fetch crash events with full stack traces. Parameters: `appId`, `issueId`, `pageSize`\n2. **Firebase CLI** — `firebase crashlytics:list` and related commands\n3. **User provides the data** — if no tools are available, ask the user to paste or export the crash details from the Crashlytics console\n\nIf none of these are available, fall back to the `mobiai-analyze-crash` skill with whatever information the user can provide manually.\n\n## Workflow\n\n### Step 1: Fetch Crash Details\n\nGet the full crash information from Crashlytics:\n\n- **Stack trace** — the complete symbolicated stack trace, not just the top frame\n- **Event count** — how many times this crash has occurred\n- **Affected users** — how many unique users have been affected\n- **Affected versions** — which app versions are seeing this crash\n- **First seen \u002F last seen** — when did it start and is it still happening?\n- **Device breakdown** — which devices and OS versions are most affected\n\n### Step 2: Analyze the User Journey\n\nCrashlytics provides breadcrumbs — the sequence of events before the crash:\n\n- **Screen flow** — which screens did the user visit before crashing?\n- **User actions** — taps, navigation events, custom log events\n- **Network calls** — did a network request fail before the crash?\n- **App state transitions** — did the app go to background and come back?\n- **Custom keys\u002Flogs** — any custom data the app logs to Crashlytics\n\nThis context is what makes Crashlytics investigation more powerful than a raw stack trace. Use it to understand the conditions that trigger the crash.\n\n### Step 3: Identify Patterns\n\nLook across multiple crash events for patterns:\n\n- Does it only happen on specific devices or OS versions?\n- Does it only happen after a specific user action?\n- Did it start with a specific app version? (regression)\n- Is it correlated with a specific time of day or network condition?\n- Check `git log` for changes introduced in the first affected version\n\n### Step 4: Find the Root Cause in Code\n\nWith the full context from Crashlytics, trace the crash in the codebase:\n\n1. **Start from the stack trace** — find the crashing file and method\n2. **Use breadcrumbs to understand the state** — what screen was the user on? What data was loaded?\n3. **Check the conditions** — what combination of state + action triggers this?\n4. **Read the code path** from the triggering action through to the crash point\n5. **Check recent changes** in the affected files:\n   ```bash\n   git log --oneline -10 -- \u003Ccrashing-file>\n   ```\n\n### Step 5: Decide — Fix or Report\n\nBased on what you found:\n\n- **Clear root cause, simple fix** — apply the fix directly. Verify it compiles, run tests.\n- **Clear root cause, complex fix** — explain the root cause, the conditions that trigger it, and propose a fix approach. Include which files need to change and why.\n- **Unclear root cause** — report what you found, what patterns you identified, and what additional information would help narrow it down.\n\nIn all cases, include:\n- **Root cause** — what code is wrong and why\n- **Trigger conditions** — what combination of state\u002Factions causes the crash\n- **Affected scope** — which versions, devices, user flows\n- **Suggested fix** — what to change, with risk assessment\n",{"name":5,"license":15,"platforms":44,"description":7,"compatibility":45},[29,34,31,26],[24,20,36,38],"main","2edc6ac1cde2cc280ae0388aa8072902d2e230d5","skills\u002Fcore\u002Fskills\u002Fmobiai-crashlytics",14,"https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core","https:\u002F\u002Fgithub.com\u002FArisGuimera","https:\u002F\u002Faristi.dev","⭐️ GitHub Star\r\n📲 Mobile developer\r\n🎥 Te enseño a programar apps en Youtube (AristiDevs)\r\n✍🏻 Y por escrito en CursoKotlin.com\r\n❤️ Kotlin Fanboy\r\n👇👇👇👇","2026-11-09 14:18:52",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-crashlytics",{"tool":61,"command":62},"bunx","bunx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-crashlytics",{"tool":64,"command":65},"pnpm","pnpm dlx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-crashlytics","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fcore\u002Fskills\u002Fmobiai-crashlytics\u002FSKILL.md",true,[],[70,94,107,125,143,157],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":84,"publishedAt":39},"01M6KCMR2WVBEC7T0YY4J2SCAR","mobiai-react-native","Use when working on a React Native project — building, testing, debugging, understanding navigation and state management.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Freact-native\u002Fskills\u002Fmobiai-react-native\u002FSKILL.md",[76,81],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":82,"categoryName":83,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000009","前端开发",[37,85,21,86,87,38,36,88,89,35,90,91,20,28,92,26,24,93],"react native","mobiai react native","testing","debugging","state management","state","management","navigation","project",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":39},"01M6KCMKFC3DKFW5B2208SM59W","mobiai-kmp","Use when working on a Kotlin Multiplatform project — shared code, expect\u002Factual declarations, platform-specific implementations, building and testing.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fkmp\u002Fskills\u002Fmobiai-kmp\u002FSKILL.md",[100],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},[102,87,38,36,35,103,104,20,28,24,105,93,106],"mobiai kmp","kotlin","kotlin multiplatform","shared","platform",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":114,"publishedAt":39},"01M6KCMEC4YP1FFAX4ZX80Q10R","mobiai-ios-testing","Use when writing or running tests in an iOS project — unit tests, UI tests, snapshot tests, choosing the right framework.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-testing\u002FSKILL.md",[113],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},[87,34,115,116,117,38,118,36,35,119,120,121,20,122,28,24,93,123,124],"ios testing","mobiai ios testing","writing","unit tests","framework","running tests","ui","snapshot","tests","unit",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":39},"01M6KCM78C8P9R6X78EZCQ0YF9","mobiai-ios-device","Use when interacting with an iOS Simulator — run simctl commands, capture screenshots, read device logs, manage simulators.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-device\u002FSKILL.md",[],[34,132,133,134,38,36,135,35,136,137,138,20,28,139,140,24,141,142],"device","mobiai ios device","screenshots","run","logs","capture","read","manage","ios simulator","commands","with",{"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":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":39},"01M6KCM2HE6Z1B7WREJ9DTKKWA","mobiai-ios-build","Use when building an iOS project, configuring schemes, troubleshooting build failures, or managing dependencies with CocoaPods or SPM.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-build\u002FSKILL.md",[],[34,150,151,152,38,36,35,153,20,28,154,24,93,142,155,156],"build","ios build","mobiai ios build","troubleshooting","dependencies","spm","cocoapods",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":39},"01M6KCKWZNT8P6K5SYXE1YAT9E","mobiai-ios-architecture","Use when creating features, refactoring, or navigating an iOS codebase — understand project structure, find where to make changes, follow existing patterns.","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fios\u002Fskills\u002Fmobiai-ios-architecture\u002FSKILL.md",[],[164,34,165,166,38,167,36,35,168,169,20,28,170,171,93,172,173,174,175,176],"architecture","ios architecture","mobiai ios architecture","project structure","refactoring","find","patterns","structure","understand","changes","codebase","Existing","features"]