[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71AE5C6KVBK16M0J2S9BJTK":3,"skill-same:01M71AE5C6KVBK16M0J2S9BJTK":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M71AE5C6KVBK16M0J2S9BJTK","swiftui-webkit",null,"Embed and control web content in SwiftUI apps using WebView and WebPage. Use when displaying URLs or HTML in a SwiftUI app, implementing JavaScript interop, controlling web navigation, capturing snapshots, or handling custom URL schemes. Core APIs require iOS\u002FmacOS 26+.","ariadoss\u002Fsuperskills","ariadoss","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F414341?v=4","01M71AC7383PT6JCRZSQJ4AVTM","Danilo Stern-Sapad","01M71AC73Y7NTBTJ9KQYNENRRE",12,"MIT","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fdesign-skills\u002Fswiftui-webkit\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"webkit","swiftui webkit","swiftui","navigation","web navigation","ios","web","control","javascript","embed","web content","URL","when","apps","snapshots","use","custom","implementing","core","app","2026-11-10 10:12:30",false,"---\nname: swiftui-webkit\ndescription: Embed and control web content in SwiftUI apps using WebView and WebPage. Use when displaying URLs or HTML in a SwiftUI app, implementing JavaScript interop, controlling web navigation, capturing snapshots, or handling custom URL schemes. Core APIs require iOS\u002FmacOS 26+.\nmetadata:\n  author: rshankras\n---\n\n# WebKit Integration for SwiftUI\n\nEmbed and control web content in SwiftUI using `WebView` and `WebPage`.\n\n## When This Skill Activates\n\nUse this skill when the user needs to:\n- Display web content within SwiftUI applications\n- Load URLs, HTML strings, or data blobs\n- Execute JavaScript from SwiftUI\n- Control navigation (back, forward, reload)\n- Customize web view behavior\n- Capture snapshots or generate PDFs\n- Intercept navigation requests\n- Configure private browsing or custom user agents\n\n## API Availability\n\n| API | Minimum Version | Notes |\n|-----|----------------|-------|\n| `WebView` | iOS\u002FmacOS 26 | Main SwiftUI web view |\n| `WebPage` | iOS\u002FmacOS 26 | Observable web page controller |\n| `WebPage.Configuration` | iOS\u002FmacOS 26 | Configuration object |\n| `WKContentWorld` | iOS 14 \u002F macOS 11 | JavaScript execution worlds |\n| `WKSnapshotConfiguration` | iOS 11 \u002F macOS 10.13 | Snapshot capture |\n\n## Quick Start\n\n### Minimal — Just a URL\n\n```swift\nimport SwiftUI\nimport WebKit\n\nstruct SimpleWebView: View {\n    var body: some View {\n        WebView(url: URL(string: \"https:\u002F\u002Fapple.com\")!)\n    }\n}\n```\n\n### Full Control — with WebPage\n\n```swift\nimport SwiftUI\nimport WebKit\n\nstruct ControlledWebView: View {\n    @State private var page = WebPage()\n\n    var body: some View {\n        VStack {\n            HStack {\n                Button(\"Back\") { page.goBack() }\n                    .disabled(!page.canGoBack)\n                Button(\"Forward\") { page.goForward() }\n                    .disabled(!page.canGoForward)\n                Button(\"Reload\") { page.reload() }\n            }\n            WebView(page)\n        }\n        .onAppear {\n            page.load(URLRequest(url: URL(string: \"https:\u002F\u002Fapple.com\")!))\n        }\n    }\n}\n```\n\n## JavaScript Execution\n\n```swift\n\u002F\u002F Execute after page loads\nlet result = try await page.callJavaScript(\"document.title\")\n\n\u002F\u002F Inject script\nawait page.evaluateJavaScript(\"document.body.style.backgroundColor = 'red'\")\n```\n\nWait for page load before executing JavaScript — check `page.isLoading` or observe load events.\n\n## Navigation Control\n\n```swift\npage.load(URLRequest(url: url))\npage.loadHTMLString(\"\u003Ch1>Hello\u003C\u002Fh1>\", baseURL: nil)\npage.goBack()\npage.goForward()\npage.reload()\npage.stopLoading()\n```\n\n## Critical Mistakes to Avoid\n\n| # | Mistake | Fix |\n|---|---------|-----|\n| 1 | Using `WebView(url:)` when you need navigation control | Use `WebPage` for any interactivity |\n| 2 | Missing `import WebKit` | Required alongside `import SwiftUI` |\n| 3 | Not observing navigation events | Observe `page.isLoading` and navigation callbacks |\n| 4 | Executing JavaScript before DOM is ready | Wait for page load completion |\n| 5 | Using persistent data store in private mode | Use ephemeral data store for private browsing |\n| 6 | String interpolation in JavaScript | Sanitize all user input before injecting into JS |\n\n## Review Checklist\n\n- [ ] `import WebKit` present alongside `import SwiftUI`\n- [ ] Using `WebPage` for any navigation or JavaScript needs\n- [ ] JavaScript execution waits for page load\n- [ ] User input sanitized before JavaScript injection\n- [ ] Navigation events observed for loading states\n- [ ] iOS\u002FmacOS 26+ requirement documented\n","# WebKit Integration for SwiftUI\n\nEmbed and control web content in SwiftUI using `WebView` and `WebPage`.\n\n## When This Skill Activates\n\nUse this skill when the user needs to:\n- Display web content within SwiftUI applications\n- Load URLs, HTML strings, or data blobs\n- Execute JavaScript from SwiftUI\n- Control navigation (back, forward, reload)\n- Customize web view behavior\n- Capture snapshots or generate PDFs\n- Intercept navigation requests\n- Configure private browsing or custom user agents\n\n## API Availability\n\n| API | Minimum Version | Notes |\n|-----|----------------|-------|\n| `WebView` | iOS\u002FmacOS 26 | Main SwiftUI web view |\n| `WebPage` | iOS\u002FmacOS 26 | Observable web page controller |\n| `WebPage.Configuration` | iOS\u002FmacOS 26 | Configuration object |\n| `WKContentWorld` | iOS 14 \u002F macOS 11 | JavaScript execution worlds |\n| `WKSnapshotConfiguration` | iOS 11 \u002F macOS 10.13 | Snapshot capture |\n\n## Quick Start\n\n### Minimal — Just a URL\n\n```swift\nimport SwiftUI\nimport WebKit\n\nstruct SimpleWebView: View {\n    var body: some View {\n        WebView(url: URL(string: \"https:\u002F\u002Fapple.com\")!)\n    }\n}\n```\n\n### Full Control — with WebPage\n\n```swift\nimport SwiftUI\nimport WebKit\n\nstruct ControlledWebView: View {\n    @State private var page = WebPage()\n\n    var body: some View {\n        VStack {\n            HStack {\n                Button(\"Back\") { page.goBack() }\n                    .disabled(!page.canGoBack)\n                Button(\"Forward\") { page.goForward() }\n                    .disabled(!page.canGoForward)\n                Button(\"Reload\") { page.reload() }\n            }\n            WebView(page)\n        }\n        .onAppear {\n            page.load(URLRequest(url: URL(string: \"https:\u002F\u002Fapple.com\")!))\n        }\n    }\n}\n```\n\n## JavaScript Execution\n\n```swift\n\u002F\u002F Execute after page loads\nlet result = try await page.callJavaScript(\"document.title\")\n\n\u002F\u002F Inject script\nawait page.evaluateJavaScript(\"document.body.style.backgroundColor = 'red'\")\n```\n\nWait for page load before executing JavaScript — check `page.isLoading` or observe load events.\n\n## Navigation Control\n\n```swift\npage.load(URLRequest(url: url))\npage.loadHTMLString(\"\u003Ch1>Hello\u003C\u002Fh1>\", baseURL: nil)\npage.goBack()\npage.goForward()\npage.reload()\npage.stopLoading()\n```\n\n## Critical Mistakes to Avoid\n\n| # | Mistake | Fix |\n|---|---------|-----|\n| 1 | Using `WebView(url:)` when you need navigation control | Use `WebPage` for any interactivity |\n| 2 | Missing `import WebKit` | Required alongside `import SwiftUI` |\n| 3 | Not observing navigation events | Observe `page.isLoading` and navigation callbacks |\n| 4 | Executing JavaScript before DOM is ready | Wait for page load completion |\n| 5 | Using persistent data store in private mode | Use ephemeral data store for private browsing |\n| 6 | String interpolation in JavaScript | Sanitize all user input before injecting into JS |\n\n## Review Checklist\n\n- [ ] `import WebKit` present alongside `import SwiftUI`\n- [ ] Using `WebPage` for any navigation or JavaScript needs\n- [ ] JavaScript execution waits for page load\n- [ ] User input sanitized before JavaScript injection\n- [ ] Navigation events observed for loading states\n- [ ] iOS\u002FmacOS 26+ requirement documented\n",{"name":5,"metadata":44,"description":7},{"author":45},"rshankras","main","c7ec8d78e5dc37484c2cfe90ab04de163d97dd41","design-skills\u002Fswiftui-webkit",0,"https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills","https:\u002F\u002Fhyperion360.com\u002Fblog\u002Fparallel-ai-agents-engineering-workflow\u002F","https:\u002F\u002Fgithub.com\u002Fariadoss","https:\u002F\u002Fdanilosapad.com\u002F","CEO & Founder of @Hyperion360","2026-11-13 15:29:19",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add ariadoss\u002Fsuperskills --skill swiftui-webkit",{"tool":62,"command":63},"bunx","bunx skills add ariadoss\u002Fsuperskills --skill swiftui-webkit",{"tool":65,"command":66},"pnpm","pnpm dlx skills add ariadoss\u002Fsuperskills --skill swiftui-webkit","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fdesign-skills\u002Fswiftui-webkit\u002FSKILL.md",true,[],[71,97,122,141,169,185],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":82,"publishedAt":39},"01M71AZE3MPF891RM354EMRYA1","youtube","Download YouTube video transcripts when user provides a YouTube URL or asks to download\u002Fget\u002Ffetch a transcript from YouTube. Also use when user wants to transcribe or get captions\u002Fsubtitles from a YouTube video.","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fyoutube\u002FSKILL.md",[77],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[73,83,84,85,86,87,88,89,30,31,90,91,92,93,94,34,95,96],"user","download","transcribe","write","transcript","video transcripts","Bash","Captions","get","fetch","Video","read","subtitles","transcripts",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":39},"01M71AZAYR85PW6BJGSQXS4BN2","write-plan","Use when you have a spec or requirements for a multi-step task, before touching code. Produces an engineering plan complete with TDD tasks, DRY\u002FSOLID\u002FYAGNI principles, a required Test Plan & Verification section, and a coverage target — then auto-runs \u002Fplan-eng-review as an independent double-check before execution.","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fwrite-plan\u002FSKILL.md",[],[104,105,86,106,107,108,109,110,111,31,112,113,114,115,116,117,118,119,120,121],"write plan","plan","dry","verification","review","tasks","code","you","auto","eng","coverage","complete","section","for","test plan","target","as","yagni",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":39},"01M71AZ8NDDP5ZMGEE6FSC4FKR","worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - creates isolated git worktrees with smart directory selection and safety verification","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fworktrees\u002FSKILL.md",[],[124,129,130,131,34,132,133,134,135,136,137,107,138,31,139,140],"implementation","workspace","with","plans","feature","isolation","git","directory","work","git worktrees","selection","Safety",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":150,"publishedAt":39},"01M71AZ4ZQHTNWFRZVYHKQFP08","web-perf","Analyzes web performance using Chrome DevTools MCP. Measures Core Web Vitals (LCP, INP, CLS) and supplementary metrics (FCP, TBT, Speed Index), identifies render-blocking resources, network dependency chains, layout shifts, caching issues, and accessibility gaps. Use when asked to audit, profile, debug, or optimize page load performance, Lighthouse scores, or site speed. Biases towards retrieval from current documentation over pre-trained knowledge.","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fweb-perf\u002FSKILL.md",[147],{"categoryNo":148,"categoryName":149,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发",[25,151,152,153,154,155,156,157,158,31,159,160,161,162,163,164,165,166,167,168],"perf","web perf","resources","MCP","layout","optimize","documentation","caching","qa","knowledge","devtools","issues","render","re","performance","chrome devtools","vitals","never",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":39},"01M71AZ2KZNWYEGKKRMJH8PYG2","verify","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fverify\u002FSKILL.md",[],[171,115,176,177,137,107,178,179,31,180,34,181,182,183,184],"commands","about","claims","output","assertions","claim","prs","evidence","running",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":191,"publishedAt":39},"01M71AZ0ACCK7N1QMWQK1FV2HJ","validate-idea","Validate a business idea using the minimalist entrepreneur framework. Use when someone has a business idea and wants to test if it's worth pursuing before building anything.","https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fskills\u002Fvalidate-idea\u002FSKILL.md",[],[192,193,194,195,196,197,198,31,199,34,200],"validate","idea","validate idea","framework","it","minimalist","test","business","before building"]