[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FCRM955MEPFRCFRXYRW2XR":3,"skill-same:01M6FCRM955MEPFRCFRXYRW2XR":53},{"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":22,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":28,"frontMatter":29,"refName":30,"commitSha":31,"skillDirectory":32,"forksCount":33,"repositoryHtmlUrl":34,"repositoryHomepageUrl":35,"ownerHtmlUrl":36,"ownerBlogUrl":6,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6FCRM955MEPFRCFRXYRW2XR","add-to-xcode",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmichaelboeding\u002Fskills\u002Fadd-to-xcode\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25],"xcode","add","add to xcode","2026-11-10 10:12:30",false,"# Add to Xcode\n\n## ⚠️ MANDATORY: Run After Creating Source Files\n\n**Every time you create a `.swift`, `.m`, `.mm`, `.c`, `.cpp`, or `.h` file in an Xcode project, you MUST run:**\n\n```bash\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb \u003Cfilepath>\n```\n\n**If you skip this step:**\n- ❌ File will NOT appear in Xcode's navigator\n- ❌ File will NOT compile with the app\n- ❌ User will have to manually add it\n\n---\n\n## Quick Reference\n\n```bash\n# ALWAYS do this after creating any source file:\n# Use subshell to get latest version (handles multiple cached versions)\nruby \"$(ls -1d ~\u002F.claude\u002Fplugins\u002Fcache\u002Fmichaelboeding-skills\u002Fskills\u002F*\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb 2>\u002Fdev\u002Fnull | sort -V | tail -1)\" NewFile.swift\n```\n\n---\n\n## Supported File Types\n\n| Extension | Added to Compile Sources |\n|-----------|-------------------------|\n| `.swift` | ✅ Yes |\n| `.m` | ✅ Yes |\n| `.mm` | ✅ Yes |\n| `.c` | ✅ Yes |\n| `.cpp` | ✅ Yes |\n| `.h` | ❌ No (reference only) |\n\n## Workflow\n\n### Step 1: Create the file normally\n\n```bash\n# Example: Create a new Swift file\ncat > Sources\u002FFeatures\u002FMyFeature.swift \u003C\u003C 'EOF'\nimport Foundation\n\nclass MyFeature {\n    \u002F\u002F Implementation\n}\nEOF\n```\n\n### Step 2: Add to Xcode project\n\n```bash\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb Sources\u002FFeatures\u002FMyFeature.swift\n```\n\n**Output:**\n```\n✓ Added Sources\u002FFeatures\u002FMyFeature.swift to MyApp.xcodeproj (target: MyApp)\n```\n\n## What the Script Does\n\n1. **Finds the `.xcodeproj`** - Searches current directory and parents\n2. **Creates group hierarchy** - Matches the file's directory structure\n3. **Adds file reference** - Registers with the project\n4. **Adds to build target** - Source files (`.swift`, `.m`, `.mm`, `.c`, `.cpp`) are added to the first target's compile sources\n\n## Requirements\n\nRuby with the `xcodeproj` gem:\n\n```bash\ngem install xcodeproj\n```\n\n## Examples\n\n### Adding a new Swift file\n\n```bash\n# Create the file\ncat > MyApp\u002FViewModels\u002FProfileViewModel.swift \u003C\u003C 'EOF'\nimport SwiftUI\n\n@Observable\nclass ProfileViewModel {\n    var name: String = \"\"\n    var email: String = \"\"\n}\nEOF\n\n# Add to Xcode\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb MyApp\u002FViewModels\u002FProfileViewModel.swift\n```\n\n### Adding a header file\n\n```bash\n# Create header\ncat > MyApp\u002FBridge\u002FMyApp-Bridging-Header.h \u003C\u003C 'EOF'\n#import \u003CSomeLibrary\u002FSomeLibrary.h>\nEOF\n\n# Add to Xcode (headers are added but not to compile sources)\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb MyApp\u002FBridge\u002FMyApp-Bridging-Header.h\n```\n\n### Adding Objective-C files\n\n```bash\n# Create implementation\ncat > MyApp\u002FLegacy\u002FLegacyManager.m \u003C\u003C 'EOF'\n#import \"LegacyManager.h\"\n\n@implementation LegacyManager\n\u002F\u002F Implementation\n@end\nEOF\n\n# Add to Xcode\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb MyApp\u002FLegacy\u002FLegacyManager.m\n```\n\n## Agent Integration\n\nWhen working in an Xcode project, agents should:\n\n1. **Check for `.xcodeproj`** before creating source files\n2. **Create the file** using standard file creation\n3. **Run add_to_xcode.rb** immediately after file creation\n\n```bash\n# Pattern for agents:\n# 1. Create file\ncat > NewFile.swift \u003C\u003C 'EOF'\n\u002F\u002F content\nEOF\n\n# 2. Register with Xcode\nruby ${CLAUDE_PLUGIN_ROOT}\u002Fskills\u002Fadd-to-xcode\u002Fscripts\u002Fadd_to_xcode.rb NewFile.swift\n```\n\n## Troubleshooting\n\n### \"No .xcodeproj found\"\n- Make sure you're running from within the Xcode project directory or a subdirectory\n\n### \"gem not found: xcodeproj\"\n- Install with: `gem install xcodeproj`\n- On macOS with system Ruby, you may need: `sudo gem install xcodeproj`\n\n### File added but not compiling\n- Check that the file extension is recognized (`.swift`, `.m`, `.mm`, `.c`, `.cpp`)\n- Verify the target exists and has a source build phase\n- Header files (`.h`) are not added to compile sources (this is correct)\n\n## Related Skills\n\n| Skill | Use Case |\n|-------|----------|\n| `ios-to-android` | Convert iOS code to Android |\n| `android-to-ios` | Convert Android code to iOS |\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Fmichaelboeding\u002Fskills\u002Fadd-to-xcode",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":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill add-to-xcode",{"tool":45,"command":46},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill add-to-xcode",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill add-to-xcode","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fmichaelboeding\u002Fskills\u002Fadd-to-xcode\u002FSKILL.md",true,[],[54,64,74,83,89,96],{"skillNo":55,"name":56,"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":57,"categories":58,"keywords":60,"publishedAt":26},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[59],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[61,62,63],"model","model hierarchy","model hierarchy skill",{"skillNo":65,"name":66,"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":67,"categories":68,"keywords":70,"publishedAt":26},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[69],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[71,72,73],"MCP","zoom","zoom mcp",{"skillNo":75,"name":76,"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":77,"categories":78,"keywords":79,"publishedAt":26},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[80,81,82,72],"sdk","zoom apps sdk","apps",{"skillNo":84,"name":85,"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":86,"categories":87,"keywords":88,"publishedAt":26},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[85],{"skillNo":90,"name":91,"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":92,"categories":93,"keywords":95,"publishedAt":26},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[94],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[91],{"skillNo":97,"name":98,"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":99,"categories":100,"keywords":101,"publishedAt":26},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[98]]