[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BYTCS7G0DEJD19DQPW6EM9":3,"skill-same:01M6BYTCS7G0DEJD19DQPW6EM9":115},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":13,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M6BYTCS7G0DEJD19DQPW6EM9","swiftui-pro",null,"Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.","ApP1eSauc3\u002FN3ONProduction","ApP1eSauc3","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F34333461?v=4","01M6BYT4T2CEWM9047RMTP1YD9","01M6BYT4YAC9GY4E3NTB3R4EYT",0,"MIT","https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002FSKILL.md",[],[18,19,20,21,22,23,24],"swiftui pro","swiftui","writing","performance","code","best practices","projects","2026-11-10 10:12:30",false,"---\nname: swiftui-pro\ndescription: Comprehensively reviews SwiftUI code for best practices on modern APIs, maintainability, and performance. Use when reading, writing, or reviewing SwiftUI projects.\nlicense: MIT\nmetadata:\n  author: Paul Hudson\n  version: \"1.0\"\n---\n\nReview Swift and SwiftUI code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues.\n\nReview process:\n\n1. Check for deprecated API using `references\u002Fapi.md`.\n1. Check that views, modifiers, and animations have been written optimally using `references\u002Fviews.md`.\n1. Validate that data flow is configured correctly using `references\u002Fdata.md`.\n1. Ensure navigation is updated and performant using `references\u002Fnavigation.md`.\n1. Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using `references\u002Fdesign.md`.\n1. Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using `references\u002Faccessibility.md`.\n1. Ensure the code is able to run efficiently using `references\u002Fperformance.md`.\n1. Quick validation of Swift code using `references\u002Fswift.md`.\n1. Final code hygiene check using `references\u002Fhygiene.md`.\n\nIf doing a partial review, load only the relevant reference files.\n\n\n## Core Instructions\n\n- iOS 26 exists, and is the default deployment target for new apps.\n- Target Swift 6.2 or later, using modern Swift concurrency.\n- As a SwiftUI developer, the user will want to avoid UIKit unless requested.\n- Do not introduce third-party frameworks without asking first.\n- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.\n- Use a consistent project structure, with folder layout determined by app features.\n\n\n## Output Format\n\nOrganize findings by file. For each issue:\n\n1. State the file and relevant line(s).\n2. Name the rule being violated (e.g., \"Use `foregroundStyle()` instead of `foregroundColor()`\").\n3. Show a brief before\u002Fafter code fix.\n\nSkip files with no issues. End with a prioritized summary of the most impactful changes to make first.\n\nExample output:\n\n### ContentView.swift\n\n**Line 12: Use `foregroundStyle()` instead of `foregroundColor()`.**\n\n```swift\n\u002F\u002F Before\nText(\"Hello\").foregroundColor(.red)\n\n\u002F\u002F After\nText(\"Hello\").foregroundStyle(.red)\n```\n\n**Line 24: Icon-only button is bad for VoiceOver - add a text label.**\n\n```swift\n\u002F\u002F Before\nButton(action: addUser) {\n    Image(systemName: \"plus\")\n}\n\n\u002F\u002F After\nButton(\"Add User\", systemImage: \"plus\", action: addUser)\n```\n\n**Line 31: Avoid `Binding(get:set:)` in view body - use `@State` with `onChange()` instead.**\n\n```swift\n\u002F\u002F Before\nTextField(\"Username\", text: Binding(\n    get: { model.username },\n    set: { model.username = $0; model.save() }\n))\n\n\u002F\u002F After\nTextField(\"Username\", text: $model.username)\n    .onChange(of: model.username) {\n        model.save()\n    }\n```\n\n### Summary\n\n1. **Accessibility (high):** The add button on line 24 is invisible to VoiceOver.\n2. **Deprecated API (medium):** `foregroundColor()` on line 12 should be `foregroundStyle()`.\n3. **Data flow (medium):** The manual binding on line 31 is fragile and harder to maintain.\n\nEnd of example.\n\n\n## References\n\n- `references\u002Faccessibility.md` - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.\n- `references\u002Fapi.md` - updating code for modern API, and the deprecated code it replaces.\n- `references\u002Fdesign.md` - guidance for building accessible apps that meet Apple’s Human Interface Guidelines.\n- `references\u002Fhygiene.md` - making code compile cleanly and be maintainable in the long term.\n- `references\u002Fnavigation.md` - navigation using `NavigationStack`\u002F`NavigationSplitView`, plus alerts, confirmation dialogs, and sheets.\n- `references\u002Fperformance.md` - optimizing SwiftUI code for maximum performance.\n- `references\u002Fdata.md` - data flow, shared state, and property wrappers.\n- `references\u002Fswift.md` - tips on writing modern Swift code, including using Swift Concurrency effectively.\n- `references\u002Fviews.md` - view structure, composition, and animation.\n","Review Swift and SwiftUI code for correctness, modern API usage, and adherence to project conventions. Report only genuine problems - do not nitpick or invent issues.\n\nReview process:\n\n1. Check for deprecated API using `references\u002Fapi.md`.\n1. Check that views, modifiers, and animations have been written optimally using `references\u002Fviews.md`.\n1. Validate that data flow is configured correctly using `references\u002Fdata.md`.\n1. Ensure navigation is updated and performant using `references\u002Fnavigation.md`.\n1. Ensure the code uses designs that are accessible and compliant with Apple’s Human Interface Guidelines using `references\u002Fdesign.md`.\n1. Validate accessibility compliance including Dynamic Type, VoiceOver, and Reduce Motion using `references\u002Faccessibility.md`.\n1. Ensure the code is able to run efficiently using `references\u002Fperformance.md`.\n1. Quick validation of Swift code using `references\u002Fswift.md`.\n1. Final code hygiene check using `references\u002Fhygiene.md`.\n\nIf doing a partial review, load only the relevant reference files.\n\n\n## Core Instructions\n\n- iOS 26 exists, and is the default deployment target for new apps.\n- Target Swift 6.2 or later, using modern Swift concurrency.\n- As a SwiftUI developer, the user will want to avoid UIKit unless requested.\n- Do not introduce third-party frameworks without asking first.\n- Break different types up into different Swift files rather than placing multiple structs, classes, or enums into a single file.\n- Use a consistent project structure, with folder layout determined by app features.\n\n\n## Output Format\n\nOrganize findings by file. For each issue:\n\n1. State the file and relevant line(s).\n2. Name the rule being violated (e.g., \"Use `foregroundStyle()` instead of `foregroundColor()`\").\n3. Show a brief before\u002Fafter code fix.\n\nSkip files with no issues. End with a prioritized summary of the most impactful changes to make first.\n\nExample output:\n\n### ContentView.swift\n\n**Line 12: Use `foregroundStyle()` instead of `foregroundColor()`.**\n\n```swift\n\u002F\u002F Before\nText(\"Hello\").foregroundColor(.red)\n\n\u002F\u002F After\nText(\"Hello\").foregroundStyle(.red)\n```\n\n**Line 24: Icon-only button is bad for VoiceOver - add a text label.**\n\n```swift\n\u002F\u002F Before\nButton(action: addUser) {\n    Image(systemName: \"plus\")\n}\n\n\u002F\u002F After\nButton(\"Add User\", systemImage: \"plus\", action: addUser)\n```\n\n**Line 31: Avoid `Binding(get:set:)` in view body - use `@State` with `onChange()` instead.**\n\n```swift\n\u002F\u002F Before\nTextField(\"Username\", text: Binding(\n    get: { model.username },\n    set: { model.username = $0; model.save() }\n))\n\n\u002F\u002F After\nTextField(\"Username\", text: $model.username)\n    .onChange(of: model.username) {\n        model.save()\n    }\n```\n\n### Summary\n\n1. **Accessibility (high):** The add button on line 24 is invisible to VoiceOver.\n2. **Deprecated API (medium):** `foregroundColor()` on line 12 should be `foregroundStyle()`.\n3. **Data flow (medium):** The manual binding on line 31 is fragile and harder to maintain.\n\nEnd of example.\n\n\n## References\n\n- `references\u002Faccessibility.md` - Dynamic Type, VoiceOver, Reduce Motion, and other accessibility requirements.\n- `references\u002Fapi.md` - updating code for modern API, and the deprecated code it replaces.\n- `references\u002Fdesign.md` - guidance for building accessible apps that meet Apple’s Human Interface Guidelines.\n- `references\u002Fhygiene.md` - making code compile cleanly and be maintainable in the long term.\n- `references\u002Fnavigation.md` - navigation using `NavigationStack`\u002F`NavigationSplitView`, plus alerts, confirmation dialogs, and sheets.\n- `references\u002Fperformance.md` - optimizing SwiftUI code for maximum performance.\n- `references\u002Fdata.md` - data flow, shared state, and property wrappers.\n- `references\u002Fswift.md` - tips on writing modern Swift code, including using Swift Concurrency effectively.\n- `references\u002Fviews.md` - view structure, composition, and animation.\n",{"name":5,"license":14,"metadata":30,"description":7},{"author":31,"version":32},"Paul Hudson","1.0","main","63b34aa87ca2d622702e23545172f25589a6e868","N3ON\u002F.agents\u002Fskills\u002Fswiftui-pro","https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction","https:\u002F\u002Fgithub.com\u002FApP1eSauc3","2026-11-09 06:54:01",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add ApP1eSauc3\u002FN3ONProduction --skill swiftui-pro",{"tool":45,"command":46},"bunx","bunx skills add ApP1eSauc3\u002FN3ONProduction --skill swiftui-pro",{"tool":48,"command":49},"pnpm","pnpm dlx skills add ApP1eSauc3\u002FN3ONProduction --skill swiftui-pro","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002FSKILL.md",true,[53,59,65,69,73,77,81,85,89,93,97,101,105,109],{"path":54,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"agents\u002Fopenai.yaml","REFERENCE","参考文档",330,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Fagents\u002Fopenai.yaml",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"assets\u002Fswiftui-pro-icon.png","ASSET","资产文件",3117,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Fassets\u002Fswiftui-pro-icon.png",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"assets\u002Fswiftui-pro-icon.svg",1533,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Fassets\u002Fswiftui-pro-icon.svg",{"path":70,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Faccessibility.md",1920,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Faccessibility.md",{"path":74,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fapi.md",3090,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fapi.md",{"path":78,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fdata.md",2987,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fdata.md",{"path":82,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fdesign.md",2510,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fdesign.md",{"path":86,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fhygiene.md",1082,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fhygiene.md",{"path":90,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":91,"sourceHtmlUrl":92},"references\u002Fnavigation.md",1300,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fnavigation.md",{"path":94,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":95,"sourceHtmlUrl":96},"references\u002Fperformance.md",2781,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fperformance.md",{"path":98,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":99,"sourceHtmlUrl":100},"references\u002Fswift.md",4138,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fswift.md",{"path":102,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":103,"sourceHtmlUrl":104},"references\u002Fviews.md",2933,"https:\u002F\u002Fgithub.com\u002FApP1eSauc3\u002FN3ONProduction\u002Fblob\u002Fmain\u002FN3ON\u002F.agents\u002Fskills\u002Fswiftui-pro\u002Freferences\u002Fviews.md",{"path":106,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":107,"sourceHtmlUrl":108},"references\u002Fvoice-dimensions.md",1985,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fvoice\u002Fskills\u002Fvoice-apply\u002Freferences\u002Fvoice-dimensions.md",{"path":110,"resourceType":111,"resourceTypeDesc":112,"sizeBytes":113,"sourceHtmlUrl":114},"scripts\u002Fvoice_loader.py","SCRIPT","脚本",8577,"https:\u002F\u002Fgithub.com\u002Fjmagly\u002Faiwg\u002Fblob\u002Fmain\u002Fagentic\u002Fcode\u002Fplugins\u002Fvoice\u002Fskills\u002Fvoice-apply\u002Fscripts\u002Fvoice_loader.py",[]]