Install
$ agentstack add skill-ariadoss-superskills-swiftui-charts-3d ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
3D Charts with Swift Charts
Create 3D data visualizations using Chart3D and SurfacePlot. Covers math-driven surfaces, data-driven surfaces, interactive camera pose control, surface styling, and camera projection modes.
When This Skill Activates
Use this skill when the user:
- Wants to create a 3D chart or 3D data visualization
- Asks about
Chart3D,SurfacePlot, or 3D surface plots - Needs to visualize a mathematical function as a 3D surface
- Wants interactive drag-to-rotate on a 3D chart
- Asks about 3D chart camera angles, pose, or projection
- Needs to style 3D surfaces with gradients or height-based coloring
- Wants to render multiple surfaces in a single 3D chart
API Availability
| API | Minimum Version | Notes | |-----|----------------|-------| | Chart3D | iOS 26 / macOS 26 | Main 3D chart container | | SurfacePlot | iOS 26 / macOS 26 | 3D surface mark | | Chart3DPose | iOS 26 / macOS 26 | Viewing angle control | | Chart3DCameraProjection | iOS 26 / macOS 26 | .automatic, .perspective, .orthographic | | Chart3DSurfaceStyle | iOS 26 / macOS 26 | .heightBased, .normalBased |
Quick Start
Math-Driven Surface
import SwiftUI
import Charts
struct WaveSurfaceView: View {
var body: some View {
Chart3D {
SurfacePlot(
x: "X",
y: "Height",
z: "Z",
function: { x, z in
sin(x) * cos(z)
}
)
.foregroundStyle(.blue)
}
}
}
Data-Driven Surface
struct DataPoint: Identifiable {
let id = UUID()
let x: Double
let y: Double
let z: Double
}
struct DataSurfaceView: View {
let points: [DataPoint]
var body: some View {
Chart3D(points) { point in
SurfacePlot(
x: .value("X", point.x),
y: .value("Height", point.y),
z: .value("Z", point.z)
)
}
}
}
Interactive Rotation
struct InteractiveChartView: View {
@State private var pose = Chart3DPose.default
var body: some View {
Chart3D {
SurfacePlot(x: "X", y: "Height", z: "Z", function: { x, z in sin(x) * cos(z) })
.foregroundStyle(.blue)
}
.chart3DPose($pose)
}
}
Surface Styling Patterns
Height-Based Surface Style
SurfacePlot(x: "X", y: "Y", z: "Z", function: { x, z in sin(x) * cos(z) })
.foregroundStyle(
Chart3DSurfaceStyle.heightBased(
Gradient(colors: [.blue, .cyan, .green, .yellow, .red]),
yRange: -1...1
)
)
Normal-Based Surface Style
SurfacePlot(x: "X", y: "Y", z: "Z", function: { x, z in sin(x) * cos(z) })
.foregroundStyle(Chart3DSurfaceStyle.normalBased)
Surface Roughness
SurfacePlot(...)
.foregroundStyle(.blue)
.roughness(0.3) // 0 = reflective, 1 = matte
Interactive Pose Control
Preset Poses
.chart3DPose(.default) // Standard 3/4 angle
.chart3DPose(.front) // Viewing from front
.chart3DPose(.top) // Top-down view
Custom Pose
.chart3DPose(
Chart3DPose(azimuth: .degrees(45), inclination: .degrees(30))
)
Read-Only vs Interactive
// ✅ Read-only — user cannot rotate the chart
.chart3DPose(Chart3DPose.front)
// ✅ Interactive — user can drag to rotate
@State private var pose = Chart3DPose.default
.chart3DPose($pose)
Camera Projection
.chart3DCameraProjection(.perspective) // Objects farther away appear smaller (visual appeal)
.chart3DCameraProjection(.orthographic) // No perspective distortion (scientific precision)
.chart3DCameraProjection(.automatic) // System decides
Top Mistakes
| # | Mistake | Fix | |---|---------|-----| | 1 | Forgetting to import Charts | Both SwiftUI and Charts imports are required | | 2 | Using .chart3DPose(.default) and expecting drag-to-rotate | Use a @State binding: .chart3DPose($pose) | | 3 | Setting yRange that does not cover actual function output | Match yRange to actual min/max of your function | | 4 | Applying .roughness() without .foregroundStyle() | Set a foreground style first | | 5 | Using orthographic projection for presentation contexts | Prefer .perspective for visual appeal |
Review Checklist
- [ ] Both
import SwiftUIandimport Chartsare present - [ ] Deployment target is iOS 26 / macOS 26 or later
- [ ]
Chart3Dwraps allSurfacePlotcontent - [ ] Axis labels are descriptive and meaningful
- [ ]
yRangein.heightBased()matches actual output range - [ ] Pose is
@Statebinding if drag-to-rotate is intended - [ ] Camera projection set appropriately
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: ariadoss
- Source: ariadoss/superskills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.