[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FCRQ364PY5VBH6KDXBV12X":3,"skill-same:01M6FCRQ364PY5VBH6KDXBV12X":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6FCRQ364PY5VBH6KDXBV12X","android-to-ios",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmichaelboeding\u002Fskills\u002Fandroid-to-ios\u002FSKILL.md",[],[18,19,20],"android","ios","android to ios","2026-11-10 10:12:30",false,"# Android to iOS: Feature Parity Implementation\n\nUse Android code as the reference to implement the equivalent iOS feature. Not a literal translation - understand what the Android code does, then implement it idiomatically for iOS.\n\n**Use this when:**\n- Porting a feature from Android to iOS\n- Android is the \"source of truth\" for a feature\n- Ensuring feature parity between platforms\n\n## Key Principle\n\n```\nAndroid Code → Understand Feature → Match iOS Codebase Patterns → Implement\n                  (what)                  (how it's done here)\n```\n\n**Preserved:** Feature behavior, data structure shapes, business logic, user flows\n**Adapted:** Language idioms, frameworks, patterns to match the iOS codebase\n\n---\n\n## Workflow\n\n### Step 0: Gather Context\n\n**Ask the user for both pieces of information:**\n\n```\nTo port a feature from Android to iOS, I need:\n\n1. PATH TO ANDROID CODEBASE (source of truth)\n   Where is the Android project located?\n   Example: \u002Fpath\u002Fto\u002Fandroid-app or ..\u002Fandroid-app\n\n2. FEATURE TO IMPLEMENT\n   What feature or component should I port?\n   Example: \"UserProfile screen\" or \"the authentication flow\" or \"app\u002Fsrc\u002Fmain\u002Fjava\u002Ffeatures\u002Fcheckout\"\n```\n\n**Assumptions:**\n- Current working directory = iOS codebase (target)\n- User provides path to Android codebase (source)\n\nIf the user already provided this info, proceed. Otherwise, ask.\n\n### Step 1: Locate the Android Feature\n\nNavigate to the Android codebase path and find the relevant files:\n\n1. Go to the Android path provided\n2. Find files related to the feature\n3. Read and understand the implementation\n\n### Step 2: Analyze the Android Code\n\nThoroughly understand:\n\n| Aspect | What to Extract |\n|--------|-----------------|\n| **Feature Behavior** | What does this feature do? User-facing functionality |\n| **Data Structures** | Models, types, sealed classes - their shapes and relationships |\n| **Business Logic** | Core logic, validations, transformations |\n| **State Management** | What state exists, how it flows |\n| **API Contracts** | Network calls, request\u002Fresponse shapes |\n| **UI Flow** | Screens, navigation, user interactions |\n| **Edge Cases** | Error handling, loading states, empty states |\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n                  ANDROID FEATURE ANALYSIS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n## Feature: [Name]\n\n### What It Does\n[User-facing description]\n\n### Data Structures\n[Key models and their relationships]\n\n### Business Logic\n[Core logic summary]\n\n### State\n[What state is managed, how it changes]\n\n### API Calls\n[Endpoints, request\u002Fresponse shapes]\n\n### UI Flow\n[Screens, navigation]\n\n### Edge Cases Handled\n- [Case 1]\n- [Case 2]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n### Step 3: Analyze iOS Codebase Patterns\n\n**Before implementing, understand how THIS iOS codebase does things:**\n\n1. **Check if `.claude\u002Fcodebase-style.md` exists** - If yes, use it and skip manual analysis\n2. Find similar features in the codebase\n3. Note the patterns used:\n   - Architecture pattern\n   - UI framework and patterns\n   - State management approach\n   - Networking approach\n   - Dependency injection\n   - File\u002Ffolder organization\n   - Naming conventions\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n                 iOS CODEBASE PATTERNS\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nStyle Guide: [Found \u002F Not found]\n\nPatterns observed from existing code:\n- Architecture: [what pattern is used]\n- UI: [how UI is built]\n- State: [how state is managed]\n- Networking: [how API calls are made]\n- DI: [how dependencies are injected]\n- Navigation: [how navigation works]\n\nSimilar features to reference:\n- [Feature 1]: [path]\n- [Feature 2]: [path]\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n### Step 4: Create Implementation Plan\n\nMap the Android feature to iOS equivalents **using the patterns from Step 3**:\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n                  IMPLEMENTATION PLAN\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n## Files to Create\n\n| # | File | Purpose | Android Equivalent |\n|---|------|---------|-------------------|\n| 1 | [path matching codebase conventions] | [purpose] | [Android file] |\n| 2 | ... | ... | ... |\n\n## Key Mappings\n\n| Android Concept | iOS Equivalent (matching codebase patterns) |\n|-----------------|---------------------------------------------|\n| [Android thing] | [iOS equivalent as done in this codebase] |\n| ... | ... |\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n### Step 5: Implement\n\nCreate the iOS implementation:\n\n- **Match the codebase's existing patterns exactly**\n- Use the same architecture, UI patterns, state management as other features\n- Follow the same naming conventions\n- Keep data structure shapes equivalent for API compatibility\n\n**⚠️ IMPORTANT: After creating each `.swift` file, register it with Xcode:**\n\n```bash\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb \u003Cfilepath>\n```\n\nWithout this step, files won't appear in Xcode or compile. See the `add-to-xcode` skill.\n\n### Step 6: Copy Assets (if needed)\n\n**If the feature uses assets, offer to copy them:**\n\nAssets that may need to be copied:\n- Images, icons, colors, fonts, Lottie animations, sounds, etc.\n\nIf assets are needed and the user wants them copied, use file operations to transfer them from the Android codebase to the appropriate iOS locations.\n\n### Step 7: Report Results\n\n```\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n                 ANDROID → iOS COMPLETE\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n## Feature: [Name]\n\n### Files Created\n\n| File | Purpose |\n|------|---------|\n| [path] | [description] |\n\n### Feature Parity Checklist\n\n- [x] Core functionality matches Android\n- [x] Data structures equivalent\n- [x] Error handling preserved\n- [x] Loading states preserved\n- [x] Edge cases handled\n- [x] Matches iOS codebase patterns\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n```\n\n---\n\n## Triggers\n\n```\n\"android to ios\"\n\"convert from android\"\n\"port this kotlin to swift\"\n\"implement this android feature for ios\"\n\"ios version of this android code\"\n```\n\n---\n\n## Integration with style-guide\n\n**Recommended:** Run the `style-guide` skill on the iOS codebase first.\n\n```\nstyle guide     ← Run this first on iOS codebase\nandroid to ios  ← Then run this\n```\n\nThis generates `.claude\u002Fcodebase-style.md` which this skill will automatically reference.\n\n**If style guide exists:**\n- Skip manual pattern analysis (Step 3)\n- Reference the documented patterns directly\n- Ensure perfect consistency with existing code\n\n**If no style guide:**\n- This skill will analyze patterns manually (Step 3)\n- Consider running `style-guide` first for better results\n\n---\n\n## Tips\n\n1. **Don't translate literally** - Understand the feature, then implement idiomatically\n2. **Match the codebase** - Use the same patterns as existing iOS code\n3. **Keep data shapes equivalent** - API compatibility matters\n4. **Handle platform differences** - Some things work differently (lifecycle, permissions)\n5. **Verify feature parity** - Same behavior, not same code\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fmichaelboeding\u002Fskills\u002Fandroid-to-ios",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill android-to-ios",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill android-to-ios",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill android-to-ios","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmichaelboeding\u002Fskills\u002Fandroid-to-ios\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]