[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KCJA11ZERKKJPV43NHNCDX":3,"skill-same:01M6KCJA11ZERKKJPV43NHNCDX":75},{"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":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":58,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6KCJA11ZERKKJPV43NHNCDX","mobiai-mobile-verification",null,"You MUST use this before declaring any mobile work done, fixed, green, or ready — and before committing, pushing, or opening a PR. No completion claim may be made without fresh verification evidence from this session.","ArisGuimera\u002FMobiAI-Core","ArisGuimera","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F16361358?v=4","01M6KC5MVGRKDA14DWT98445V9","AristiDevs","01M6KC5MZKRFFHFFD340B21YN3",493,"MIT","https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fcore\u002Fskills\u002Fmobiai-mobile-verification\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"mobiai mobile verification","verification","mobile","use","you","fresh","green","done","claim","ready","evidence","gemini","session","work","flutter","code","pr","copilot","react","android","2026-11-10 10:12:30",false,"---\nname: mobiai-mobile-verification\ndescription: \"You MUST use this before declaring any mobile work done, fixed, green, or ready — and before committing, pushing, or opening a PR. No completion claim may be made without fresh verification evidence from this session.\"\nlicense: MIT\ncompatibility: [claude-code, cursor, copilot, codex, gemini]\nplatforms: [android, ios, kmp, flutter, react-native]\n---\n\n# Mobile Verification Before Completion\n\n\u003CHARD-GATE>\nDo NOT state, imply, or signal that work is complete, fixed, passing, ready, or merged-ready until you have just run the verification commands in this message and observed their output. Stale memory of earlier runs does not count.\n\u003C\u002FHARD-GATE>\n\n## Overview\n\nClaiming work is complete without verification is dishonesty, not efficiency.\n\n**Core principle:** Evidence before claims, always.\n\n**Violating the letter of this rule is violating the spirit of this rule.**\n\n## The Iron Law\n\n```\nNO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n```\n\nIf you haven't run the verification command in this message, you cannot claim it passes.\n\n## The Gate Function\n\n```\nBEFORE claiming any status or expressing satisfaction:\n\n1. IDENTIFY: What command proves this claim?\n2. RUN: Execute the FULL command (fresh, complete)\n3. READ: Full output, check exit code, count failures\n4. VERIFY: Does output confirm the claim?\n   - If NO: State actual status with evidence\n   - If YES: State claim WITH evidence\n5. ONLY THEN: Make the claim\n\nSkip any step = lying, not verifying\n```\n\n## Mobile Verification Commands\n\n| Claim | Android | iOS | Flutter | React Native |\n|-------|---------|-----|---------|--------------|\n| **Compiles** | `.\u002Fgradlew assembleDebug` | `xcodebuild build -scheme \u003CS> -destination '...'` | `flutter build apk --debug` | `npx react-native build-android` |\n| **Unit tests** | `.\u002Fgradlew testDebugUnitTest` | `xcodebuild test -scheme \u003CS> -destination '...'` | `flutter test` | `npx jest` |\n| **All tests** | `.\u002Fgradlew connectedDebugAndroidTest` | same as above | `flutter test` | `npx jest` |\n| **KMP shared** | `.\u002Fgradlew allTests` | — | — | — |\n\n## Common Failures\n\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Build succeeds | Build command: exit 0 | \"It compiled before my changes\" |\n| Bug fixed | Test original symptom: passes | \"I changed the line that was wrong\" |\n| No regressions | Run full test suite | \"I only changed one file\" |\n| Works on both platforms | Verify on EACH platform | \"If it works on Android it should work on iOS\" |\n\n## Red Flags - STOP\n\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Done!\")\n- About to commit\u002Fpush\u002FPR without verification\n- Relying on partial verification\n- **ANY wording implying success without having run verification**\n\n## Rationalization Prevention\n\n| Excuse | Reality |\n|--------|---------|\n| \"Should work now\" | RUN the verification |\n| \"I'm confident\" | Confidence ≠ evidence |\n| \"Just this once\" | No exceptions |\n| \"Linter passed\" | Linter ≠ compiler |\n| \"I'm tired\" | Exhaustion ≠ excuse |\n| \"Partial check is enough\" | Partial proves nothing |\n\n## Multi-Platform Verification\n\nFor KMP, Flutter, and React Native projects, verify EACH platform separately:\n\n1. Build for platform A → confirm success\n2. Run tests for platform A → confirm pass\n3. Build for platform B → confirm success\n4. Run tests for platform B → confirm pass\n5. Only then claim \"works on both platforms\"\n\n## When To Apply\n\n**ALWAYS before:**\n- ANY variation of success\u002Fcompletion claims\n- ANY expression of satisfaction\n- Committing, PR creation, task completion\n- Moving to next task\n\n## The Bottom Line\n\n**No shortcuts for verification.**\n\nRun the command. Read the output. THEN claim the result.\n\nThis is non-negotiable.\n","# Mobile Verification Before Completion\n\n\u003CHARD-GATE>\nDo NOT state, imply, or signal that work is complete, fixed, passing, ready, or merged-ready until you have just run the verification commands in this message and observed their output. Stale memory of earlier runs does not count.\n\u003C\u002FHARD-GATE>\n\n## Overview\n\nClaiming work is complete without verification is dishonesty, not efficiency.\n\n**Core principle:** Evidence before claims, always.\n\n**Violating the letter of this rule is violating the spirit of this rule.**\n\n## The Iron Law\n\n```\nNO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE\n```\n\nIf you haven't run the verification command in this message, you cannot claim it passes.\n\n## The Gate Function\n\n```\nBEFORE claiming any status or expressing satisfaction:\n\n1. IDENTIFY: What command proves this claim?\n2. RUN: Execute the FULL command (fresh, complete)\n3. READ: Full output, check exit code, count failures\n4. VERIFY: Does output confirm the claim?\n   - If NO: State actual status with evidence\n   - If YES: State claim WITH evidence\n5. ONLY THEN: Make the claim\n\nSkip any step = lying, not verifying\n```\n\n## Mobile Verification Commands\n\n| Claim | Android | iOS | Flutter | React Native |\n|-------|---------|-----|---------|--------------|\n| **Compiles** | `.\u002Fgradlew assembleDebug` | `xcodebuild build -scheme \u003CS> -destination '...'` | `flutter build apk --debug` | `npx react-native build-android` |\n| **Unit tests** | `.\u002Fgradlew testDebugUnitTest` | `xcodebuild test -scheme \u003CS> -destination '...'` | `flutter test` | `npx jest` |\n| **All tests** | `.\u002Fgradlew connectedDebugAndroidTest` | same as above | `flutter test` | `npx jest` |\n| **KMP shared** | `.\u002Fgradlew allTests` | — | — | — |\n\n## Common Failures\n\n| Claim | Requires | Not Sufficient |\n|-------|----------|----------------|\n| Tests pass | Test command output: 0 failures | Previous run, \"should pass\" |\n| Build succeeds | Build command: exit 0 | \"It compiled before my changes\" |\n| Bug fixed | Test original symptom: passes | \"I changed the line that was wrong\" |\n| No regressions | Run full test suite | \"I only changed one file\" |\n| Works on both platforms | Verify on EACH platform | \"If it works on Android it should work on iOS\" |\n\n## Red Flags - STOP\n\n- Using \"should\", \"probably\", \"seems to\"\n- Expressing satisfaction before verification (\"Great!\", \"Done!\")\n- About to commit\u002Fpush\u002FPR without verification\n- Relying on partial verification\n- **ANY wording implying success without having run verification**\n\n## Rationalization Prevention\n\n| Excuse | Reality |\n|--------|---------|\n| \"Should work now\" | RUN the verification |\n| \"I'm confident\" | Confidence ≠ evidence |\n| \"Just this once\" | No exceptions |\n| \"Linter passed\" | Linter ≠ compiler |\n| \"I'm tired\" | Exhaustion ≠ excuse |\n| \"Partial check is enough\" | Partial proves nothing |\n\n## Multi-Platform Verification\n\nFor KMP, Flutter, and React Native projects, verify EACH platform separately:\n\n1. Build for platform A → confirm success\n2. Run tests for platform A → confirm pass\n3. Build for platform B → confirm success\n4. Run tests for platform B → confirm pass\n5. Only then claim \"works on both platforms\"\n\n## When To Apply\n\n**ALWAYS before:**\n- ANY variation of success\u002Fcompletion claims\n- ANY expression of satisfaction\n- Committing, PR creation, task completion\n- Moving to next task\n\n## The Bottom Line\n\n**No shortcuts for verification.**\n\nRun the command. Read the output. THEN claim the result.\n\nThis is non-negotiable.\n",{"name":5,"license":15,"platforms":44,"description":7,"compatibility":48},[38,45,46,33,47],"ios","kmp","react-native",[49,50,36,51,30],"claude-code","cursor","codex","main","2edc6ac1cde2cc280ae0388aa8072902d2e230d5","skills\u002Fcore\u002Fskills\u002Fmobiai-mobile-verification",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-13 22:28:09",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-mobile-verification",{"tool":67,"command":68},"bunx","bunx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-mobile-verification",{"tool":70,"command":71},"pnpm","pnpm dlx skills add ArisGuimera\u002FMobiAI-Core --skill mobiai-mobile-verification","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FArisGuimera\u002FMobiAI-Core\u002Fblob\u002Fmain\u002Fskills\u002Fcore\u002Fskills\u002Fmobiai-mobile-verification\u002FSKILL.md",true,[],[76,101,114,132,150,164],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":90,"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",[82,87],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":88,"categoryName":89,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000009","前端开发",[37,91,92,93,94,51,36,95,96,34,97,98,50,22,99,47,49,100],"react native","native","mobiai react native","testing","debugging","state management","state","management","navigation","project",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":108,"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",[107],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[109,94,51,36,34,110,111,50,22,49,112,100,113],"mobiai kmp","kotlin","kotlin multiplatform","shared","platform",{"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":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":121,"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",[120],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},[94,45,122,123,124,51,125,36,34,126,127,128,50,129,22,49,100,130,131],"ios testing","mobiai ios testing","writing","unit tests","framework","running tests","ui","snapshot","tests","unit",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":138,"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",[],[45,139,140,141,51,36,142,34,143,144,145,50,22,146,147,49,148,149],"device","mobiai ios device","screenshots","run","logs","capture","read","manage","ios simulator","commands","with",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":156,"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",[],[45,157,158,159,51,36,34,160,50,22,161,49,100,149,162,163],"build","ios build","mobiai ios build","troubleshooting","dependencies","spm","cocoapods",{"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":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"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",[],[171,45,172,173,51,174,36,34,175,176,50,22,177,178,100,179,180,181,182,183],"architecture","ios architecture","mobiai ios architecture","project structure","refactoring","find","patterns","structure","understand","changes","codebase","Existing","features"]