Axiom axiom-media

Use when working with camera, photos, audio, haptics, ShazamKit, or Now Playing. Covers AVCaptureSession, PHPicker, PhotosPicker, AVFoundation, Core Haptics, audio recognition, MediaPlayer, CarPlay, MusicKit.

install
source · Clone the upstream repo
git clone https://github.com/CharlesWiltgen/Axiom
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/CharlesWiltgen/Axiom "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude-plugin/plugins/axiom/skills/axiom-media" ~/.claude/skills/charleswiltgen-axiom-axiom-media && rm -rf "$T"
manifest: .claude-plugin/plugins/axiom/skills/axiom-media/SKILL.md
source content

Media

You MUST use this skill for ANY camera, photo, audio, haptic, or media playback work.

Quick Reference

Symptom / TaskReference
Camera capture, AVCaptureSessionSee
skills/camera-capture.md
Camera API (RotationCoordinator, etc.)See
skills/camera-capture-ref.md
Camera freezes, black preview, rotationSee
skills/camera-capture-diag.md
Photo pickers, library accessSee
skills/photo-library.md
PHPicker, PhotosPicker API referenceSee
skills/photo-library-ref.md
Audio, AVFoundation, spatial audioSee
skills/avfoundation-ref.md
Audio recognition, ShazamKitSee
skills/shazamkit.md
ShazamKit API referenceSee
skills/shazamkit-ref.md
Haptic feedback, Core HapticsSee
skills/haptics.md
Now Playing metadata, remote commandsSee
skills/now-playing.md
Animated lock-screen artwork (iOS 26+)See
skills/now-playing.md
Pattern 8
CarPlay HIG, app categories, design rules, entitlementsSee
skills/carplay-hig.md
CarPlay templates reference (all 13 templates, availability matrix, depth limits)See
skills/carplay-templates-ref.md
CarPlay navigation reference (base view, route guidance, cluster/HUD, multitouch, voice prompts)See
skills/carplay-navigation-ref.md
CarPlay Now Playing template customization + sports modeSee
skills/now-playing-carplay.md
MusicKit Now PlayingSee
skills/now-playing-musickit.md

Decision Tree

digraph media {
    start [label="Media task" shape=ellipse];
    what [label="Which media feature?" shape=diamond];

    start -> what;
    what -> "skills/camera-capture.md" [label="camera capture"];
    what -> "skills/photo-library.md" [label="photo pickers\n/ library"];
    what -> "skills/avfoundation-ref.md" [label="audio / AVFoundation"];
    what -> "skills/shazamkit.md" [label="ShazamKit\n/ audio recognition"];
    what -> "skills/haptics.md" [label="haptic feedback"];
    what -> "skills/now-playing.md" [label="Now Playing\n/ remote commands"];
    what -> "skills/carplay-hig.md" [label="CarPlay app design\n/ categories / entitlements"];
}
  1. Camera capture? →
    skills/camera-capture.md
    (patterns),
    skills/camera-capture-ref.md
    (API),
    skills/camera-capture-diag.md
    (debugging)
  2. Photo pickers / library? →
    skills/photo-library.md
    ,
    skills/photo-library-ref.md
  3. Audio / AVFoundation? →
    skills/avfoundation-ref.md
  4. ShazamKit / audio recognition? →
    skills/shazamkit.md
    ,
    skills/shazamkit-ref.md
  5. Haptics? →
    skills/haptics.md
  6. Now Playing / remote commands? →
    skills/now-playing.md
    ,
    skills/now-playing-carplay.md
    ,
    skills/now-playing-musickit.md
  7. CarPlay app design, category selection, entitlement request? →
    skills/carplay-hig.md
    (start here for any CarPlay work)
  8. Want camera code audit? → Launch
    camera-auditor
    agent

Cross-Domain Routing

Camera + permissions (camera access denied, Info.plist missing):

  • Camera code → stay here (camera-capture)
  • Privacy manifest / Info.plist → invoke axiom-integration (privacy-ux reference)
  • Build/entitlement errors → invoke axiom-build

ShazamKit + microphone permissions:

  • Microphone NSMicrophoneUsageDescription → invoke axiom-integration (privacy-ux reference)
  • ShazamKit API and matching → stay here (shazamkit)

Now Playing + background audio:

  • Now Playing metadata/controls → stay here (now-playing)
  • Background audio mode / BGTaskScheduler → invoke axiom-integration (background-processing reference)

Photo library + privacy:

  • Photo picker (PHPicker, PhotosPicker) → stay here (photo-library) — no permissions needed
  • Full PHPhotoLibrary access → stay here (photo-library-ref) — limited access model
  • Privacy manifest for photo usage → invoke axiom-integration (privacy-ux reference)

Anti-Rationalization

ThoughtReality
"Camera capture is just AVCaptureSession setup"Camera has interruption handlers, rotation, and threading requirements.
"I'll add haptics with a simple API call"Haptic design has patterns for each interaction type matching HIG.
"ShazamKit is just SHSession + a delegate"iOS 17+ has SHManagedSession which eliminates all AVAudioEngine boilerplate.
"Now Playing info is just setting metadata"Remote commands, artwork handling, and state sync have 15+ gotchas.
"I'll use UIImagePickerController for photos"PHPicker/PhotosPicker are the modern API — no permissions required.

Example Invocations

User: "How do I set up a camera preview?" → Read:

skills/camera-capture.md

User: "Camera freezes when I get a phone call" → Read:

skills/camera-capture-diag.md

User: "How do I let users pick photos in SwiftUI?" → Read:

skills/photo-library.md

User: "Implement haptic feedback for button taps" → Read:

skills/haptics.md

User: "Now Playing info doesn't appear on Lock Screen" → Read:

skills/now-playing.md

User: "How do I identify songs with ShazamKit?" → Read:

skills/shazamkit.md

User: "Check my camera code for issues" → Launch:

camera-auditor
agent