[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71N5Y5G39ZACFS57NK394XG":3,"skill-same:01M71N5Y5G39ZACFS57NK394XG":86},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":27,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":64,"commitSha":65,"skillDirectory":66,"forksCount":67,"repositoryHtmlUrl":63,"repositoryHomepageUrl":68,"ownerHtmlUrl":69,"ownerBlogUrl":70,"ownerDescription":6,"updatedAt":71,"install":72,"resources":85},"01M71N5Y5G39ZACFS57NK394XG","ios-developer",null,"Use when an org role acts as iOS developer and must build native apps in Swift and SwiftUI with @Observable state, strict concurrency, SwiftData and Keychain. Short role guidance on Apple conventions and accessibility; for deep Swift reference material use swift-expert.","monoes\u002Fmonomind","monoes","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F276744696?v=4","01M71KWF37AJ2NJBP3KWBVSDGT","01M71KWF4CSF8ADH0M6HA09VD2",23,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fios-developer\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"ios developer","ios","developer","org","mobile","native","concurrency","monomind","palette","apple","query","when","apps","impact","keychain","frontend","fix","short","expert","deep","2026-11-10 10:56:23",false,"---\nname: ios-developer\ndescription: \"Use when an org role acts as iOS developer and must build native apps in Swift and SwiftUI with @Observable state, strict concurrency, SwiftData and Keychain. Short role guidance on Apple conventions and accessibility; for deep Swift reference material use swift-expert.\"\ntags: [\"frontend\",\"engineering\",\"swift\",\"mobile\"]\ntools: [\"monograph_query\",\"monograph_context\",\"monograph_impact\",\"monodesign_detect\",\"monodesign_fix\",\"monodesign_palette\"]\nlicense: Apache-2.0\nsource: https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\n---\n# iOS Developer — Best Practices\n\n## Focus\nBuilds native iOS applications with Swift and SwiftUI — modern, safe, performant apps that follow Apple's current platform conventions and data-safety guarantees.\n\n## Best practices\n- Default to SwiftUI for new UI work; it now covers the vast majority of active devices (iOS 15+) and is no longer optional greenfield tech.\n- Use `@Observable` (iOS 17+) for state management in new code — don't mix it with the legacy `ObservableObject`\u002F`@Published` pattern in the same feature.\n- Embrace Swift's strict concurrency model: use actors to guard mutable state and resolve data-race warnings rather than suppressing them.\n- Use SwiftData for new local persistence needs unless there's a specific reason to stay with Core Data (e.g., deep existing investment).\n- Follow MVVM (or a comparably clear separation) so views stay declarative and business logic stays testable outside the view layer.\n- Apply Apple's secure coding and data-handling guidance for anything touching user data — keychain for secrets, no sensitive data in plain UserDefaults or logs.\n- Build accessibility in from the start: Dynamic Type, VoiceOver labels, and sufficient color contrast, verified with the Accessibility Inspector.\n\n## Common pitfalls\n- Mixing old and new observation\u002Fstate patterns within the same view hierarchy, causing confusing update behavior.\n- Ignoring Swift 6 data-race warnings instead of fixing the underlying shared-state design.\n- Storing sensitive data insecurely (plain UserDefaults, hardcoded secrets) instead of using Keychain.\n- Treating accessibility as a final QA pass rather than validating it alongside each new screen.\n\n## Tools & techniques\n- Xcode's strict concurrency checking and Instruments (Time Profiler, Allocations) for correctness and performance validation.\n- SwiftData\u002FCore Data migrations tested against real data before shipping schema changes.\n- Accessibility Inspector and VoiceOver walkthroughs for every new screen.\n- TestFlight staged rollouts combined with crash reporting (e.g., Xcode Organizer \u002F Crashlytics) to catch regressions before full release.\n","# iOS Developer — Best Practices\n\n## Focus\nBuilds native iOS applications with Swift and SwiftUI — modern, safe, performant apps that follow Apple's current platform conventions and data-safety guarantees.\n\n## Best practices\n- Default to SwiftUI for new UI work; it now covers the vast majority of active devices (iOS 15+) and is no longer optional greenfield tech.\n- Use `@Observable` (iOS 17+) for state management in new code — don't mix it with the legacy `ObservableObject`\u002F`@Published` pattern in the same feature.\n- Embrace Swift's strict concurrency model: use actors to guard mutable state and resolve data-race warnings rather than suppressing them.\n- Use SwiftData for new local persistence needs unless there's a specific reason to stay with Core Data (e.g., deep existing investment).\n- Follow MVVM (or a comparably clear separation) so views stay declarative and business logic stays testable outside the view layer.\n- Apply Apple's secure coding and data-handling guidance for anything touching user data — keychain for secrets, no sensitive data in plain UserDefaults or logs.\n- Build accessibility in from the start: Dynamic Type, VoiceOver labels, and sufficient color contrast, verified with the Accessibility Inspector.\n\n## Common pitfalls\n- Mixing old and new observation\u002Fstate patterns within the same view hierarchy, causing confusing update behavior.\n- Ignoring Swift 6 data-race warnings instead of fixing the underlying shared-state design.\n- Storing sensitive data insecurely (plain UserDefaults, hardcoded secrets) instead of using Keychain.\n- Treating accessibility as a final QA pass rather than validating it alongside each new screen.\n\n## Tools & techniques\n- Xcode's strict concurrency checking and Instruments (Time Profiler, Allocations) for correctness and performance validation.\n- SwiftData\u002FCore Data migrations tested against real data before shipping schema changes.\n- Accessibility Inspector and VoiceOver walkthroughs for every new screen.\n- TestFlight staged rollouts combined with crash reporting (e.g., Xcode Organizer \u002F Crashlytics) to catch regressions before full release.\n",{"name":5,"tags":53,"tools":56,"source":63,"license":14,"description":7},[43,54,55,32],"engineering","swift",[57,58,59,60,61,62],"monograph_query","monograph_context","monograph_impact","monodesign_detect","monodesign_fix","monodesign_palette","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind","main","f7cd4595d0f8959822163e14f9787117765c931a","packages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fios-developer",2,"https:\u002F\u002Fmonoes.github.io\u002Fmonomind\u002F","https:\u002F\u002Fgithub.com\u002Fmonoes","https:\u002F\u002Fmonoes.me","2026-11-14 03:30:52",{"source":8,"skillName":5,"commands":73,"prompt":83,"zipAvailable":84},[74,77,80],{"tool":75,"command":76},"npx","npx skills add monoes\u002Fmonomind --skill ios-developer",{"tool":78,"command":79},"bunx","bunx skills add monoes\u002Fmonomind --skill ios-developer",{"tool":81,"command":82},"pnpm","pnpm dlx skills add monoes\u002Fmonomind --skill ios-developer","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fios-developer\u002FSKILL.md",true,[],[87,111,143,170,195,222],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":110},"01M71PB3SHWKMNJM6MD65VX8D6","zk-steward","Org role guidance for a ZK steward: engineer zero-knowledge proof systems with circuit design, SNARK vs STARK choice and security review. This is zero-knowledge cryptography, not Zettelkasten note-taking.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fzk-steward\u002FSKILL.md",[],[94,95,96,97,98,99,100,101,41,38,102,103,35,104,105,106,107,108,31,109],"zk","zk steward","steward","zero-knowledge","engineer","choice","design","knowledge","snark","review","security review","stark","zettelkasten","cryptography","security","blockchain","2026-11-10 13:02:02",{"skillNo":112,"name":113,"nameZh":6,"description":114,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":115,"licenseFileUrl":116,"sourceHtmlUrl":117,"categories":118,"keywords":125,"publishedAt":110},"01M71PB18SDG28WBKPKJNB814K","writing-plans","Use when you have a spec or requirements for a multi-step coding task and must write an implementation plan before touching code. Produces bite-sized TDD tasks with exact file paths, code and commands for an engineer with zero context.","MIT","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwriting-plans\u002FSKILL.md",[119,122],{"categoryNo":120,"categoryName":121,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":123,"categoryName":124,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000036","内容创作者",[126,127,128,98,129,130,39,131,38,132,133,134,135,136,137,138,139,140,141,142],"writing","writing plans","plans","superpowers","implementation plan","you","code","tasks","plan","product","write","commands","paths","suggest","coding","context","ZeRO",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":147,"sourceHtmlUrl":148,"categories":149,"keywords":153,"publishedAt":110},"01M71PAXFM488X9ARXK0T04TF5","write-spec","Write a feature spec or PRD from a problem statement or feature idea. Use when turning a vague idea or user request into a structured document, scoping a feature with goals and non-goals, defining success metrics and acceptance criteria, or breaking a big ask into a phased spec.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-spec\u002FSKILL.md",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000031","产品经理",[136,154,155,156,157,101,158,39,159,160,161,135,162,163,164,165,166,167,168,169],"write spec","spec","user request","problem","acceptance","ask","vague","work","request","scoping","idea","metrics","feature","problem statement","use","document",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":180,"publishedAt":110},"01M71PASSZY800C0RPEARBS918","write-query","Write optimized SQL for your dialect with best practices. Use when translating a natural-language data need into SQL, building a multi-CTE query with joins and aggregations, optimizing a query against a large partitioned table, or getting dialect-specific syntax for Snowflake, BigQuery, Postgres, etc.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fwrite-query\u002FSKILL.md",[177],{"categoryNo":178,"categoryName":179,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000033","数据分析师",[38,136,181,182,183,184,101,168,39,185,186,187,188,161,189,190,191,192,193,194],"write query","postgres","for","snowflake","best practices","natural-language","with","multi","github","sql","https","syntax","plugins","data",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":207,"publishedAt":110},"01M71PAPTX0T3PF6ETFVR96SJJ","workflow-automation","Org role guidance for workflow automation: build and maintain CI\u002FCD definitions in GitHub Actions or equivalent: triggers, jobs, matrices, caching. Covers path filters, dependency caching, parallel jobs, timeouts and fail-fast ordering.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-automation\u002FSKILL.md",[201,204],{"categoryNo":202,"categoryName":203,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":205,"categoryName":206,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[208,209,210,211,183,212,213,214,215,41,216,217,218,38,35,189,219,220,221,191],"Workflow Automation","automation","workflow","parallel","actions","ci","triggers","github actions","maintain","filters","caching","build","dependency","devops",{"skillNo":223,"name":224,"nameZh":6,"description":225,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":226,"categories":227,"keywords":229,"publishedAt":110},"01M71PAM19Z1XTV9NPCFSE2MY8","workflow-architect","Org role guidance for a workflow architect: map full workflow trees for systems, user journeys and agents, covering every branch and failure. Covers discovering workflows from code, handoff contracts, timeouts, recovery paths and observable state.","https:\u002F\u002Fgithub.com\u002Fmonoes\u002Fmonomind\u002Fblob\u002Fmain\u002Fpackages\u002F@monomind\u002Fcli\u002Forg-skills\u002Fworkflow-architect\u002FSKILL.md",[228],{"categoryNo":205,"categoryName":206,"taxonomyType":20,"taxonomyTypeDesc":21},[210,230,231,232,233,234,235,183,236,237,132,238,239,240,35,189,241,242,191,243],"workflow architect","architect","trees","user journeys","branch","planning","map","workflows","architecture","state","leadership","recovery","operations","systems"]