core-animation — Claude Code skill for QuartzCore reference
This skill helps an agent find QuartzCore documentation for layer properties, animations, and related APIs. Use it when you need direct control over Core Animation behavior.
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a claude-codeWhat core-animation does
The skill searches its QuartzCore reference files for guidance on CALayer, keyframe and spring animations, transactions, gradients, particles, and CADisplayLink. Its docs include a framework index and focused Markdown pages such as cabasicanimation.md and catransaction.md. Responses should give a concise summary and point to relevant files.
Use it for direct Core Animation work, such as animating CAShapeLayer.strokeEnd or adjusting a CAEmitterLayer particle system. For cases covered by SwiftUI’s withAnimation or UIKit’s UIView.animate, the skill recommends those APIs instead. SwiftUI animation questions belong with the separate swiftui-specialist skill.
What it helps with
- find reference material for
CALayergeometry and hierarchy - choose an animation class for keyframes or spring motion
- disable implicit animations with
CATransaction - look up particle controls or per-frame callbacks
Example prompts for the agent
- Explain how to animate
CAShapeLayer.strokeEndand point me to the relevant reference files. - Show how to disable implicit animations when changing a layer property.
- Compare
CASpringAnimationandCAKeyframeAnimationfor animating a layer property.
How to install core-animation
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a claude-code2Manually: put the files in place
~/.claude/skills/core-animation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/core-animation/
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a codex2Manually: put the files in place
.agents/skills/core-animation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a cursor2Manually: put the files in place
.cursor/skills/core-animation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Prisma-Labs-Dev/apple-skills core-animation2Manually: put the files in place
.github/skills/core-animation/SKILL.md1Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a gemini-cli2Platform CLI
gemini skills install https://github.com/Prisma-Labs-Dev/apple-skills --path skills/core-animationManually: put the files in place
.devin/skills/core-animation/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about core-animation
How do I install core-animation in Claude Code?
Run npx skills add Prisma-Labs-Dev/apple-skills --skill core-animation -a claude-code. The skill file is at ~/.claude/skills/core-animation/SKILL.md.
What does core-animation do?
It searches QuartzCore reference material and helps answer questions about layers, animation classes, and related APIs. Responses include a short summary and paths to relevant files.
Can I use core-animation for SwiftUI animations?
For declarative SwiftUI animation APIs such as withAnimation and transitions, the skill points to swiftui-specialist. This skill covers direct work with Core Animation.
Source text
SKILL.md · MIT
---
name: core-animation
user-invocable: true
description: "API reference: Core Animation (QuartzCore). Query for CALayer, CAAnimation, CABasicAnimation, CAKeyframeAnimation, CASpringAnimation, CATransaction, CAShapeLayer, CAGradientLayer, CAEmitterLayer, CATransform3D, CADisplayLink."
context: fork
agent: Explore
---
# Core Animation Reference
Search these docs to answer questions about Core Animation (the QuartzCore framework). Use this skill when working directly with `CALayer`, layer-backed UIKit/AppKit views, explicit keyframe or spring animations on layer properties, particle systems, or per-frame callbacks via `CADisplayLink`.
For SwiftUI's declarative animation API (`withAnimation`, `Animation`, `.animation(_:value:)`, transitions), use Apple's `swiftui-specialist` skill (its animations reference) instead. For SwiftUI immediate-mode drawing, use `swiftui/canvas.md` and `swiftui/graphicscontext.md`.
## Return Format
Always include:
1. **Summary** — answer the question concisely.
2. **File paths** — list relevant files for full details, e.g.:
- `calayer.md` for layer geometry, contents, hierarchy
- `cabasicanimation.md` for animating a single property between two values
- `catransaction.md` for batching, disabling implicit animations, or changing default duration
## Files
| File | Content |
|------|---------|
| `core-animation-index.md` | Full QuartzCore framework index — layer basics, animation classes, transactions, layer subclasses |
| `calayer.md` | `CALayer` — the root layer class: geometry, contents, hierarchy, layout, animations |
| `caanimation.md` | `CAAnimation` — abstract base class for all Core Animation animation types |
| `capropertyanimation.md` | `CAPropertyAnimation` — abstract subclass animating a single layer property |
| `cabasicanimation.md` | `CABasicAnimation` — interpolate a layer property between two values |
| `cakeyframeanimation.md` | `CAKeyframeAnimation` — animate a property through a sequence of keyframes |
| `caspringanimation.md` | `CASpringAnimation` — spring-based interpolation with mass, stiffness, damping |
| `caanimationgroup.md` | `CAAnimationGroup` — run multiple animations together with a shared duration |
| `catransition.md` | `CATransition` — fade, push, reveal, and move-in transitions between layer states |
| `camediatiming.md` | `CAMediaTiming` — protocol shared by layers and animations (beginTime, duration, repeat, speed) |
| `catransaction.md` | `CATransaction` — batch property changes, disable implicit animations, set default duration/timing |
| `catransform3d.md` | `CATransform3D` — 4×4 matrix used by `CALayer.transform` for 3D transforms |
| `cashapelayer.md` | `CAShapeLayer` — vector-shape layer driven by a `CGPath` (stroke, fill, line dash) |
| `cagradientlayer.md` | `CAGradientLayer` — axial, radial, and conic gradient layers |
| `caemitterlayer.md` | `CAEmitterLayer` — particle emitter layer (fire, smoke, confetti, sparkles) |
| `caemittercell.md` | `CAEmitterCell` — individual particle definition used by `CAEmitterLayer` |
| `careplicatorlayer.md` | `CAReplicatorLayer` — replicate a sublayer with offsets and transforms |
| `cametallayer.md` | `CAMetalLayer` — layer backed by a Metal drawable for GPU-rendered content |
| `catextlayer.md` | `CATextLayer` — layer that renders plain or attributed text |
| `catiledlayer.md` | `CATiledLayer` — tile-based asynchronous content rendering for large or zoomable layers |
| `cadisplaylink.md` | `CADisplayLink` — timer synchronized to the display's refresh rate |
## When to Reach for Core Animation
- You need to animate a layer property SwiftUI/UIKit doesn't expose declaratively (e.g., `CAGradientLayer.colors`, `CAShapeLayer.strokeEnd`, `CAEmitterLayer.birthRate`).
- You need explicit keyframe or spring control with timing functions (`CAMediaTimingFunction`) per segment.
- You want to batch implicit animations off (`CATransaction.setDisableActions(true)`).
- You need a `CADisplayLink` per-frame callback (custom drawing loops, scrubbing, physics).
- You're rendering thousands of particles with `CAEmitterLayer` or replicating sublayers with `CAReplicatorLayer`.
If your problem fits inside `withAnimation { ... }` in SwiftUI or `UIView.animate { ... }` in UIKit, prefer those — Core Animation sits underneath both and is rarely the right starting point in 2026-era code.
## Fetching More Docs
1. Search this skill's local `.md` files first.
2. If the topic is not here, check the other installed Apple skills, then grep their local files.
3. If no installed skill has the page, the QuartzCore path on Apple's site is `/documentation/quartzcore/<symbol>` — fetch via the `sosumi.ai` Markdown mirror (e.g. `https://sosumi.ai/documentation/quartzcore/camediatimingfunction`) or by running `pnpm fetch-doc` against the apple-skills tooling.
© Prisma-Labs-Dev · MIT · Prisma-Labs-Dev/apple-skills