About core-animation
A reference skill for developers working directly with Core Animation and QuartzCore. Its indexed documents cover layers, animation types, transactions, timing, and display callbacks.
Key features
- 01QuartzCore topic index
- 02Layer and hierarchy guidance
- 03Property, keyframe, and spring animations
- 04Animation grouping and transitions
- 05Particle and display-link references
Use cases
- 01Animating CALayer properties
- 02Creating keyframe or spring effects
- 03Batching layer changes with CATransaction
- 04Building particle or frame-driven effects
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ prisma-labs-dev/ apple-skills --skill core-animationAfter installing, type/core-animationin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
caanimation.mdcaanimationgroup.mdcabasicanimation.mdcadisplaylink.mdcaemittercell.mdcaemitterlayer.mdcagradientlayer.mdcakeyframeanimation.mdcalayer.mdcamediatiming.mdcametallayer.mdcapropertyanimation.mdcareplicatorlayer.mdcashapelayer.mdcaspringanimation.mdcatextlayer.mdcatiledlayer.mdcatransaction.mdcatransform3d.mdcatransition.mdcore-animation-index.mdDetails
From the project READMECore 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:
- Summary — answer the question concisely.
- File paths — list relevant files for full details, e.g.:
calayer.mdfor layer geometry, contents, hierarchycabasicanimation.mdfor animating a single property between two valuescatransaction.mdfor 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
CADisplayLinkper-frame callback (custom drawing loops, scrubbing, physics). - You're rendering thousands of particles with
CAEmitterLayeror replicating sublayers withCAReplicatorLayer.
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
- Search this skill's local
.mdfiles first. - If the topic is not here, check the other installed Apple skills, then grep their local files.
- If no installed skill has the page, the QuartzCore path on Apple's site is
/documentation/quartzcore/<symbol>— fetch via thesosumi.aiMarkdown mirror (e.g.https://sosumi.ai/documentation/quartzcore/camediatimingfunction) or by runningpnpm fetch-docagainst the apple-skills tooling.