[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71ADY2AS31JB6EJGPXV1N32":3,"skill-same:01M71ADY2AS31JB6EJGPXV1N32":73},{"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":23,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":57,"updatedAt":58,"install":59,"resources":72},"01M71ADY2AS31JB6EJGPXV1N32","swiftui-charts-3d",null,"Create 3D data visualizations using Swift Charts. Use when the user wants to create a 3D chart, asks about Chart3D or SurfacePlot, needs interactive drag-to-rotate, or wants height-based surface coloring. Requires iOS 26 \u002F macOS 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-charts-3d\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"Charts","swiftui","swiftui charts 3d","3D","swift","macos","user","swift charts","data","about","ios","create","interactive","when","chart","use","drag","visualizations","2026-11-10 10:12:30",false,"---\nname: swiftui-charts-3d\ndescription: Create 3D data visualizations using Swift Charts. Use when the user wants to create a 3D chart, asks about Chart3D or SurfacePlot, needs interactive drag-to-rotate, or wants height-based surface coloring. Requires iOS 26 \u002F macOS 26+.\nmetadata:\n  author: rshankras\n---\n\n# 3D Charts with Swift Charts\n\nCreate 3D data visualizations using `Chart3D` and `SurfacePlot`. Covers math-driven surfaces, data-driven surfaces, interactive camera pose control, surface styling, and camera projection modes.\n\n## When This Skill Activates\n\nUse this skill when the user:\n- Wants to create a 3D chart or 3D data visualization\n- Asks about `Chart3D`, `SurfacePlot`, or 3D surface plots\n- Needs to visualize a mathematical function as a 3D surface\n- Wants interactive drag-to-rotate on a 3D chart\n- Asks about 3D chart camera angles, pose, or projection\n- Needs to style 3D surfaces with gradients or height-based coloring\n- Wants to render multiple surfaces in a single 3D chart\n\n## API Availability\n\n| API | Minimum Version | Notes |\n|-----|----------------|-------|\n| `Chart3D` | iOS 26 \u002F macOS 26 | Main 3D chart container |\n| `SurfacePlot` | iOS 26 \u002F macOS 26 | 3D surface mark |\n| `Chart3DPose` | iOS 26 \u002F macOS 26 | Viewing angle control |\n| `Chart3DCameraProjection` | iOS 26 \u002F macOS 26 | `.automatic`, `.perspective`, `.orthographic` |\n| `Chart3DSurfaceStyle` | iOS 26 \u002F macOS 26 | `.heightBased`, `.normalBased` |\n\n## Quick Start\n\n### Math-Driven Surface\n\n```swift\nimport SwiftUI\nimport Charts\n\nstruct WaveSurfaceView: View {\n    var body: some View {\n        Chart3D {\n            SurfacePlot(\n                x: \"X\",\n                y: \"Height\",\n                z: \"Z\",\n                function: { x, z in\n                    sin(x) * cos(z)\n                }\n            )\n            .foregroundStyle(.blue)\n        }\n    }\n}\n```\n\n### Data-Driven Surface\n\n```swift\nstruct DataPoint: Identifiable {\n    let id = UUID()\n    let x: Double\n    let y: Double\n    let z: Double\n}\n\nstruct DataSurfaceView: View {\n    let points: [DataPoint]\n\n    var body: some View {\n        Chart3D(points) { point in\n            SurfacePlot(\n                x: .value(\"X\", point.x),\n                y: .value(\"Height\", point.y),\n                z: .value(\"Z\", point.z)\n            )\n        }\n    }\n}\n```\n\n### Interactive Rotation\n\n```swift\nstruct InteractiveChartView: View {\n    @State private var pose = Chart3DPose.default\n\n    var body: some View {\n        Chart3D {\n            SurfacePlot(x: \"X\", y: \"Height\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n                .foregroundStyle(.blue)\n        }\n        .chart3DPose($pose)\n    }\n}\n```\n\n## Surface Styling Patterns\n\n### Height-Based Surface Style\n\n```swift\nSurfacePlot(x: \"X\", y: \"Y\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n    .foregroundStyle(\n        Chart3DSurfaceStyle.heightBased(\n            Gradient(colors: [.blue, .cyan, .green, .yellow, .red]),\n            yRange: -1...1\n        )\n    )\n```\n\n### Normal-Based Surface Style\n\n```swift\nSurfacePlot(x: \"X\", y: \"Y\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n    .foregroundStyle(Chart3DSurfaceStyle.normalBased)\n```\n\n### Surface Roughness\n\n```swift\nSurfacePlot(...)\n    .foregroundStyle(.blue)\n    .roughness(0.3)  \u002F\u002F 0 = reflective, 1 = matte\n```\n\n## Interactive Pose Control\n\n### Preset Poses\n\n```swift\n.chart3DPose(.default)   \u002F\u002F Standard 3\u002F4 angle\n.chart3DPose(.front)     \u002F\u002F Viewing from front\n.chart3DPose(.top)       \u002F\u002F Top-down view\n```\n\n### Custom Pose\n\n```swift\n.chart3DPose(\n    Chart3DPose(azimuth: .degrees(45), inclination: .degrees(30))\n)\n```\n\n### Read-Only vs Interactive\n\n```swift\n\u002F\u002F ✅ Read-only — user cannot rotate the chart\n.chart3DPose(Chart3DPose.front)\n\n\u002F\u002F ✅ Interactive — user can drag to rotate\n@State private var pose = Chart3DPose.default\n.chart3DPose($pose)\n```\n\n## Camera Projection\n\n```swift\n.chart3DCameraProjection(.perspective)   \u002F\u002F Objects farther away appear smaller (visual appeal)\n.chart3DCameraProjection(.orthographic)  \u002F\u002F No perspective distortion (scientific precision)\n.chart3DCameraProjection(.automatic)     \u002F\u002F System decides\n```\n\n## Top Mistakes\n\n| # | Mistake | Fix |\n|---|---------|-----|\n| 1 | Forgetting to `import Charts` | Both `SwiftUI` and `Charts` imports are required |\n| 2 | Using `.chart3DPose(.default)` and expecting drag-to-rotate | Use a `@State` binding: `.chart3DPose($pose)` |\n| 3 | Setting `yRange` that does not cover actual function output | Match `yRange` to actual min\u002Fmax of your function |\n| 4 | Applying `.roughness()` without `.foregroundStyle()` | Set a foreground style first |\n| 5 | Using orthographic projection for presentation contexts | Prefer `.perspective` for visual appeal |\n\n## Review Checklist\n\n- [ ] Both `import SwiftUI` and `import Charts` are present\n- [ ] Deployment target is iOS 26 \u002F macOS 26 or later\n- [ ] `Chart3D` wraps all `SurfacePlot` content\n- [ ] Axis labels are descriptive and meaningful\n- [ ] `yRange` in `.heightBased()` matches actual output range\n- [ ] Pose is `@State` binding if drag-to-rotate is intended\n- [ ] Camera projection set appropriately\n","# 3D Charts with Swift Charts\n\nCreate 3D data visualizations using `Chart3D` and `SurfacePlot`. Covers math-driven surfaces, data-driven surfaces, interactive camera pose control, surface styling, and camera projection modes.\n\n## When This Skill Activates\n\nUse this skill when the user:\n- Wants to create a 3D chart or 3D data visualization\n- Asks about `Chart3D`, `SurfacePlot`, or 3D surface plots\n- Needs to visualize a mathematical function as a 3D surface\n- Wants interactive drag-to-rotate on a 3D chart\n- Asks about 3D chart camera angles, pose, or projection\n- Needs to style 3D surfaces with gradients or height-based coloring\n- Wants to render multiple surfaces in a single 3D chart\n\n## API Availability\n\n| API | Minimum Version | Notes |\n|-----|----------------|-------|\n| `Chart3D` | iOS 26 \u002F macOS 26 | Main 3D chart container |\n| `SurfacePlot` | iOS 26 \u002F macOS 26 | 3D surface mark |\n| `Chart3DPose` | iOS 26 \u002F macOS 26 | Viewing angle control |\n| `Chart3DCameraProjection` | iOS 26 \u002F macOS 26 | `.automatic`, `.perspective`, `.orthographic` |\n| `Chart3DSurfaceStyle` | iOS 26 \u002F macOS 26 | `.heightBased`, `.normalBased` |\n\n## Quick Start\n\n### Math-Driven Surface\n\n```swift\nimport SwiftUI\nimport Charts\n\nstruct WaveSurfaceView: View {\n    var body: some View {\n        Chart3D {\n            SurfacePlot(\n                x: \"X\",\n                y: \"Height\",\n                z: \"Z\",\n                function: { x, z in\n                    sin(x) * cos(z)\n                }\n            )\n            .foregroundStyle(.blue)\n        }\n    }\n}\n```\n\n### Data-Driven Surface\n\n```swift\nstruct DataPoint: Identifiable {\n    let id = UUID()\n    let x: Double\n    let y: Double\n    let z: Double\n}\n\nstruct DataSurfaceView: View {\n    let points: [DataPoint]\n\n    var body: some View {\n        Chart3D(points) { point in\n            SurfacePlot(\n                x: .value(\"X\", point.x),\n                y: .value(\"Height\", point.y),\n                z: .value(\"Z\", point.z)\n            )\n        }\n    }\n}\n```\n\n### Interactive Rotation\n\n```swift\nstruct InteractiveChartView: View {\n    @State private var pose = Chart3DPose.default\n\n    var body: some View {\n        Chart3D {\n            SurfacePlot(x: \"X\", y: \"Height\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n                .foregroundStyle(.blue)\n        }\n        .chart3DPose($pose)\n    }\n}\n```\n\n## Surface Styling Patterns\n\n### Height-Based Surface Style\n\n```swift\nSurfacePlot(x: \"X\", y: \"Y\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n    .foregroundStyle(\n        Chart3DSurfaceStyle.heightBased(\n            Gradient(colors: [.blue, .cyan, .green, .yellow, .red]),\n            yRange: -1...1\n        )\n    )\n```\n\n### Normal-Based Surface Style\n\n```swift\nSurfacePlot(x: \"X\", y: \"Y\", z: \"Z\", function: { x, z in sin(x) * cos(z) })\n    .foregroundStyle(Chart3DSurfaceStyle.normalBased)\n```\n\n### Surface Roughness\n\n```swift\nSurfacePlot(...)\n    .foregroundStyle(.blue)\n    .roughness(0.3)  \u002F\u002F 0 = reflective, 1 = matte\n```\n\n## Interactive Pose Control\n\n### Preset Poses\n\n```swift\n.chart3DPose(.default)   \u002F\u002F Standard 3\u002F4 angle\n.chart3DPose(.front)     \u002F\u002F Viewing from front\n.chart3DPose(.top)       \u002F\u002F Top-down view\n```\n\n### Custom Pose\n\n```swift\n.chart3DPose(\n    Chart3DPose(azimuth: .degrees(45), inclination: .degrees(30))\n)\n```\n\n### Read-Only vs Interactive\n\n```swift\n\u002F\u002F ✅ Read-only — user cannot rotate the chart\n.chart3DPose(Chart3DPose.front)\n\n\u002F\u002F ✅ Interactive — user can drag to rotate\n@State private var pose = Chart3DPose.default\n.chart3DPose($pose)\n```\n\n## Camera Projection\n\n```swift\n.chart3DCameraProjection(.perspective)   \u002F\u002F Objects farther away appear smaller (visual appeal)\n.chart3DCameraProjection(.orthographic)  \u002F\u002F No perspective distortion (scientific precision)\n.chart3DCameraProjection(.automatic)     \u002F\u002F System decides\n```\n\n## Top Mistakes\n\n| # | Mistake | Fix |\n|---|---------|-----|\n| 1 | Forgetting to `import Charts` | Both `SwiftUI` and `Charts` imports are required |\n| 2 | Using `.chart3DPose(.default)` and expecting drag-to-rotate | Use a `@State` binding: `.chart3DPose($pose)` |\n| 3 | Setting `yRange` that does not cover actual function output | Match `yRange` to actual min\u002Fmax of your function |\n| 4 | Applying `.roughness()` without `.foregroundStyle()` | Set a foreground style first |\n| 5 | Using orthographic projection for presentation contexts | Prefer `.perspective` for visual appeal |\n\n## Review Checklist\n\n- [ ] Both `import SwiftUI` and `import Charts` are present\n- [ ] Deployment target is iOS 26 \u002F macOS 26 or later\n- [ ] `Chart3D` wraps all `SurfacePlot` content\n- [ ] Axis labels are descriptive and meaningful\n- [ ] `yRange` in `.heightBased()` matches actual output range\n- [ ] Pose is `@State` binding if drag-to-rotate is intended\n- [ ] Camera projection set appropriately\n",{"name":5,"metadata":47,"description":7},{"author":48},"rshankras","main","c7ec8d78e5dc37484c2cfe90ab04de163d97dd41","design-skills\u002Fswiftui-charts-3d",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-01 12:36:50",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add ariadoss\u002Fsuperskills --skill swiftui-charts-3d",{"tool":65,"command":66},"bunx","bunx skills add ariadoss\u002Fsuperskills --skill swiftui-charts-3d",{"tool":68,"command":69},"pnpm","pnpm dlx skills add ariadoss\u002Fsuperskills --skill swiftui-charts-3d","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fariadoss\u002Fsuperskills\u002Fblob\u002Fmain\u002Fdesign-skills\u002Fswiftui-charts-3d\u002FSKILL.md",true,[],[74,100,125,144,173,188],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":85,"publishedAt":42},"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",[80],{"categoryNo":81,"categoryName":82,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[76,30,86,87,88,89,90,91,92,37,93,94,95,96,97,39,98,99],"download","transcribe","write","transcript","video transcripts","Bash","URL","Captions","get","fetch","Video","read","subtitles","transcripts",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":106,"publishedAt":42},"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",[],[107,108,88,109,110,111,112,113,114,37,115,116,117,118,119,120,121,122,123,124],"write plan","plan","dry","verification","review","tasks","code","you","auto","eng","coverage","complete","section","for","test plan","target","as","yagni",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":42},"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",[],[127,132,133,134,39,135,136,137,138,139,140,110,141,37,142,143],"implementation","workspace","with","plans","feature","isolation","git","directory","work","git worktrees","selection","Safety",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":153,"publishedAt":42},"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",[150],{"categoryNo":151,"categoryName":152,"taxonomyType":83,"taxonomyTypeDesc":84},"01JBSEEDCAT000000000000023","Skill与智能体开发",[154,155,156,157,158,159,160,161,162,37,163,164,165,166,167,168,169,170,171,172],"web","perf","web perf","resources","MCP","layout","optimize","documentation","caching","qa","knowledge","devtools","issues","render","re","performance","chrome devtools","vitals","never",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":179,"publishedAt":42},"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",[],[175,118,180,33,140,110,181,182,37,183,39,184,185,186,187],"commands","claims","output","assertions","claim","prs","evidence","running",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":42},"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",[],[195,196,197,198,199,200,201,37,202,39,203],"validate","idea","validate idea","framework","it","minimalist","test","business","before building"]