CtrlK
BlogDocsLog inGet started
Tessl Logo

core-animation

API reference: Core Animation (QuartzCore). Query for CALayer, CAAnimation, CABasicAnimation, CAKeyframeAnimation, CASpringAnimation, CATransaction, CAShapeLayer, CAGradientLayer, CAEmitterLayer, CATransform3D, CADisplayLink.

57

Quality

66%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./skills/core-animation/SKILL.md
SKILL.md
Quality
Evals
Security

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

FileContent
core-animation-index.mdFull QuartzCore framework index — layer basics, animation classes, transactions, layer subclasses
calayer.mdCALayer — the root layer class: geometry, contents, hierarchy, layout, animations
caanimation.mdCAAnimation — abstract base class for all Core Animation animation types
capropertyanimation.mdCAPropertyAnimation — abstract subclass animating a single layer property
cabasicanimation.mdCABasicAnimation — interpolate a layer property between two values
cakeyframeanimation.mdCAKeyframeAnimation — animate a property through a sequence of keyframes
caspringanimation.mdCASpringAnimation — spring-based interpolation with mass, stiffness, damping
caanimationgroup.mdCAAnimationGroup — run multiple animations together with a shared duration
catransition.mdCATransition — fade, push, reveal, and move-in transitions between layer states
camediatiming.mdCAMediaTiming — protocol shared by layers and animations (beginTime, duration, repeat, speed)
catransaction.mdCATransaction — batch property changes, disable implicit animations, set default duration/timing
catransform3d.mdCATransform3D — 4×4 matrix used by CALayer.transform for 3D transforms
cashapelayer.mdCAShapeLayer — vector-shape layer driven by a CGPath (stroke, fill, line dash)
cagradientlayer.mdCAGradientLayer — axial, radial, and conic gradient layers
caemitterlayer.mdCAEmitterLayer — particle emitter layer (fire, smoke, confetti, sparkles)
caemittercell.mdCAEmitterCell — individual particle definition used by CAEmitterLayer
careplicatorlayer.mdCAReplicatorLayer — replicate a sublayer with offsets and transforms
cametallayer.mdCAMetalLayer — layer backed by a Metal drawable for GPU-rendered content
catextlayer.mdCATextLayer — layer that renders plain or attributed text
catiledlayer.mdCATiledLayer — tile-based asynchronous content rendering for large or zoomable layers
cadisplaylink.mdCADisplayLink — 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.
Repository
Prisma-Labs-Dev/apple-skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.