[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71GP9NSTHP5YDKFC0MTSYHD":3,"skill-same:01M71GP9NSTHP5YDKFC0MTSYHD":56},{"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":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":28,"commitSha":29,"skillDirectory":30,"forksCount":31,"repositoryHtmlUrl":32,"repositoryHomepageUrl":6,"ownerHtmlUrl":33,"ownerBlogUrl":34,"ownerDescription":6,"updatedAt":35,"install":36,"resources":49},"01M71GP9NSTHP5YDKFC0MTSYHD","mobile-ios-swift",null,"lookatitude\u002Fguild","lookatitude","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F524917?v=4","01M71GJ2KGXFSJZKAZC5P1ZXXM","Miguel Pinto","01M71GJ2MH4SH9WJKP8M7XZZ0P",8,"MIT","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fmobile-ios-swift\u002FSKILL.md",[],[18,19,20,21,22],"swift","ios","mobile","mobile ios","mobile ios swift","2026-11-10 10:12:30",false,"---\nname: mobile-ios-swift\ndescription: Authors idiomatic Swift for iOS (SwiftUI or UIKit, chosen by target version and fit), with Swift Concurrency, proper main-actor isolation, and no force-unwraps. Output: Swift source files plus a build-notes section for SPM \u002F Xcode integration. Pulled by the `mobile` specialist. TRIGGER: \"write the iOS screen for X in Swift\", \"implement the SwiftUI view for X\", \"author the UIKit controller for X\", \"build the iOS feature X\", \"Swift code for X\", \"add the iOS-side implementation of X\". DO NOT TRIGGER for: Android code (use `mobile-android-kotlin`), React Native \u002F cross-platform (use `mobile-react-native`), mobile performance profiling (use `mobile-performance-tuning`), backend API contract (backend-api-contract), design system visual spec (frontend-design), CI\u002FCD for the iOS build (devops-ci-cd-pipeline).\nwhen_to_use: The parent `mobile` specialist pulls this skill when the task requires native iOS implementation in Swift. Also fires on explicit user request.\ntype: specialist\n---\n\n# mobile-ios-swift\n\nIdiomatic Swift, compiler-enforced safety, and concurrency that the language actually tracks.\n\n## What you do\n\nWrite Swift that the compiler helps keep correct. Pick SwiftUI when the minimum deployment target allows and the screen is data-driven; fall back to UIKit when custom transitions, legacy integration, or fine control demand it. Use Swift Concurrency (`async\u002Fawait`, actors) rather than GCD unless interop requires it.\n\n- Prefer `let`, value types, and protocol-oriented composition over inheritance.\n- Use optional binding (`if let`, `guard let`) and typed throws — `!` is a smell.\n- Mark UI work `@MainActor`; keep I\u002FO off the main thread with `Task.detached` or `async` functions.\n- Manage references: `[weak self]` in closures that outlive the owner, break retain cycles explicitly.\n- Use structured concurrency (`TaskGroup`, `async let`) for parallel work; cancel cooperatively.\n- Accessibility first: `accessibilityLabel`, Dynamic Type, VoiceOver checked.\n\n## Output shape\n\nSwift source files plus a short build note:\n\n1. **Source** — one file per logical unit; follow Apple's API Design Guidelines.\n2. **Previews** — `#Preview` for SwiftUI, snapshot tests for UIKit.\n3. **Build notes** — SPM dependency additions, minimum iOS target, Xcode scheme impact.\n4. **Tests** — XCTest file exercising the non-UI logic.\n5. **Accessibility** — a short checklist pass (labels, traits, Dynamic Type).\n\n## Anti-patterns\n\n- Force-unwraps (`!`) and forced casts (`as!`) in production paths.\n- Retain cycles in `self`-capturing closures (timers, Combine sinks, callbacks).\n- Main-thread blocking: `DispatchQueue.main.sync`, disk \u002F network on UI calls.\n- `@ObservedObject` on a model the view owns — use `@StateObject`.\n- Massive view controllers \u002F massive views — extract models and view models.\n- Swallowed errors with `try?` where a real error path exists.\n\n## Handoff\n\nReturn the Swift source paths and build notes to the invoking `mobile` specialist. If the feature needs Android parity, the mobile agent chains into `mobile-android-kotlin`; for cross-platform, `mobile-react-native`. Performance tuning lives in `mobile-performance-tuning`. This skill does not dispatch.\n","# mobile-ios-swift\n\nIdiomatic Swift, compiler-enforced safety, and concurrency that the language actually tracks.\n\n## What you do\n\nWrite Swift that the compiler helps keep correct. Pick SwiftUI when the minimum deployment target allows and the screen is data-driven; fall back to UIKit when custom transitions, legacy integration, or fine control demand it. Use Swift Concurrency (`async\u002Fawait`, actors) rather than GCD unless interop requires it.\n\n- Prefer `let`, value types, and protocol-oriented composition over inheritance.\n- Use optional binding (`if let`, `guard let`) and typed throws — `!` is a smell.\n- Mark UI work `@MainActor`; keep I\u002FO off the main thread with `Task.detached` or `async` functions.\n- Manage references: `[weak self]` in closures that outlive the owner, break retain cycles explicitly.\n- Use structured concurrency (`TaskGroup`, `async let`) for parallel work; cancel cooperatively.\n- Accessibility first: `accessibilityLabel`, Dynamic Type, VoiceOver checked.\n\n## Output shape\n\nSwift source files plus a short build note:\n\n1. **Source** — one file per logical unit; follow Apple's API Design Guidelines.\n2. **Previews** — `#Preview` for SwiftUI, snapshot tests for UIKit.\n3. **Build notes** — SPM dependency additions, minimum iOS target, Xcode scheme impact.\n4. **Tests** — XCTest file exercising the non-UI logic.\n5. **Accessibility** — a short checklist pass (labels, traits, Dynamic Type).\n\n## Anti-patterns\n\n- Force-unwraps (`!`) and forced casts (`as!`) in production paths.\n- Retain cycles in `self`-capturing closures (timers, Combine sinks, callbacks).\n- Main-thread blocking: `DispatchQueue.main.sync`, disk \u002F network on UI calls.\n- `@ObservedObject` on a model the view owns — use `@StateObject`.\n- Massive view controllers \u002F massive views — extract models and view models.\n- Swallowed errors with `try?` where a real error path exists.\n\n## Handoff\n\nReturn the Swift source paths and build notes to the invoking `mobile` specialist. If the feature needs Android parity, the mobile agent chains into `mobile-android-kotlin`; for cross-platform, `mobile-react-native`. Performance tuning lives in `mobile-performance-tuning`. This skill does not dispatch.\n",{},"main","2e58b0360ca51ca3c96ca8e015ef5aba5738803d","skills\u002Fspecialists\u002Fmobile-ios-swift",0,"https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild","https:\u002F\u002Fgithub.com\u002Flookatitude","https:\u002F\u002Flookatitude.com","2026-11-06 03:55:18",{"source":7,"skillName":5,"commands":37,"prompt":47,"zipAvailable":48},[38,41,44],{"tool":39,"command":40},"npx","npx skills add lookatitude\u002Fguild --skill mobile-ios-swift",{"tool":42,"command":43},"bunx","bunx skills add lookatitude\u002Fguild --skill mobile-ios-swift",{"tool":45,"command":46},"pnpm","pnpm dlx skills add lookatitude\u002Fguild --skill mobile-ios-swift","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fmobile-ios-swift\u002FSKILL.md",true,[50],{"path":51,"resourceType":52,"resourceTypeDesc":53,"sizeBytes":54,"sourceHtmlUrl":55},"evals.json","REFERENCE","参考文档",697,"https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fmobile-ios-swift\u002Fevals.json",[57,69,79,99,117,128],{"skillNo":58,"name":59,"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":60,"categories":61,"keywords":62,"publishedAt":23},"01M71GQQ1ZAND0XQBS4GTSWYFK","technical-writer-user-manual","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-user-manual\u002FSKILL.md",[],[63,64,65,66,67,68],"writer","technical","technical writer","technical writer user manual","manual","user",{"skillNo":70,"name":71,"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":72,"categories":73,"keywords":74,"publishedAt":23},"01M71GQMQ71DQNH4A7REXRVFCB","technical-writer-release-notes","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-release-notes\u002FSKILL.md",[],[75,63,76,77,78,64,65],"release","notes","technical writer release notes","release notes",{"skillNo":80,"name":81,"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":82,"categories":83,"keywords":94,"publishedAt":23},"01M71GQJQT9G8QHE0A9SN01VE4","technical-writer-api-docs","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Ftechnical-writer-api-docs\u002FSKILL.md",[84,89],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":90,"categoryName":91,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[95,64,65,96,97,98,63],"technical writer api docs","docs","api docs","api",{"skillNo":100,"name":101,"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":102,"categories":103,"keywords":110,"publishedAt":23},"01M71GQH3T5F23M2M298WXVAQ5","social-media-platform-post","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-platform-post\u002FSKILL.md",[104,107],{"categoryNo":105,"categoryName":106,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000019","营销推广",{"categoryNo":108,"categoryName":109,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000035","市场营销",[111,112,113,114,115,116],"social media platform post","post","Media","platform","social","social media",{"skillNo":118,"name":119,"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":120,"categories":121,"keywords":124,"publishedAt":23},"01M71GQFS4MJ4S8ZRK7KQNNPJE","social-media-engagement-templates","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-engagement-templates\u002FSKILL.md",[122,123],{"categoryNo":105,"categoryName":106,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":108,"categoryName":109,"taxonomyType":92,"taxonomyTypeDesc":93},[115,125,113,126,127,116],"engagement","social media engagement templates","templates",{"skillNo":129,"name":130,"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":131,"categories":132,"keywords":138,"publishedAt":23},"01M71GQEPZ5GX6NBFQ9H0W5E0C","social-media-content-calendar","https:\u002F\u002Fgithub.com\u002Flookatitude\u002Fguild\u002Fblob\u002Fmain\u002Fskills\u002Fspecialists\u002Fsocial-media-content-calendar\u002FSKILL.md",[133,134,135],{"categoryNo":105,"categoryName":106,"taxonomyType":87,"taxonomyTypeDesc":88},{"categoryNo":108,"categoryName":109,"taxonomyType":92,"taxonomyTypeDesc":93},{"categoryNo":136,"categoryName":137,"taxonomyType":92,"taxonomyTypeDesc":93},"01JBSEEDCAT000000000000036","内容创作者",[139,140,115,116,141,142,113],"calendar","content calendar","social media content calendar","content"]