
Dockkit
Wire an iOS camera app to a DockKit stand—tracking, tap-to-track, ROI framing, manual pan/tilt, and accessory button events.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill dockkitWhat is this skill?
- DockAccessoryManager.shared.accessoryStateChanges for docked vs undocked DockAccessory lifecycle
- System tracking via setSystemTrackingEnabled(_:) with explicit note that persistence across lifecycle is not guaranteed
- Framing: .automatic default vs explicit .center; selectSubject(at:) with normalized unit coordinates and ROI in video-fr
- Manual pan/tilt requires disabling system tracking before setAngularVelocity or related manual controls
- Privacy: DockKit has no separate entitlement; camera still needs NSCameraUsageDescription and normal capture privacy
Adoption & trust: 1.2k installs on skills.sh; 713 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Vercel React Native Skillsvercel-labs/agent-skills
Firebase Basicsfirebase/agent-skills
Building Native Uiexpo/skills
Firebase Ai Logic Basicsfirebase/agent-skills
Native Data Fetchingexpo/skills
Firebase Firestorefirebase/agent-skills
Journey fit
Primary fit
DockKit integration is mobile client work done while building the camera product experience on device. Frontend/mobile UI and capture flow live here: DockAccessoryManager, framing modes, and subject selection—not App Store ASO or backend APIs.
Common Questions / FAQ
Is Dockkit safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Dockkit
{ "skill_name": "dockkit", "evals": [ { "id": 0, "prompt": "I'm building an iOS camera app that should work with a DockKit stand. Sketch the setup and control flow for system tracking, tap-to-track, framing or region-of-interest controls, manual pan/tilt mode, and hardware button events. Include the privacy/setup caveats that matter.", "expected_output": "A DockKit camera-app implementation outline that uses DockAccessoryManager, handles dock/undock, keeps DockKit-specific setup distinct from normal camera privacy, uses current framing and ROI guidance, and handles iOS 17.4+ accessory events with throwing async sequences.", "files": [], "expectations": [ "States that DockKit itself has no special entitlement or DockKit-specific Info.plist key while camera capture still needs normal camera privacy such as NSCameraUsageDescription.", "Uses DockAccessoryManager.shared.accessoryStateChanges to obtain a DockAccessory and handle both docked and undocked states.", "Enables or disables system tracking with setSystemTrackingEnabled(_:) and does not claim the setting persists across app lifecycle events.", "Represents .automatic as the documented default framing mode and .center as an explicit mode.", "Uses selectSubject(at:) with normalized unit coordinates and explains that region of interest uses normalized video-frame coordinates.", "Disables system tracking before manual setAngularVelocity or setOrientation control.", "Marks accessoryEvents as iOS 17.4+ and iterates it as a throwing async sequence.", "Does not route the answer into generic Bluetooth pairing, AccessorySetupKit picker, or AVFoundation-only camera setup." ] }, { "id": 1, "prompt": "Review this DockKit custom tracking plan: keep system tracking on, run Vision at 5 fps, create DockAccessory.Observation rectangles in UIKit view coordinates, call track once per second with an optional CVPixelBuffer when convenient, and animate the dock repeatedly in a tight loop until the subject is centered.", "expected_output": "A correction-focused review that disables system tracking before custom tracking, uses normalized lower-left observation coordinates, sends track() data at 10-30 fps, describes the actual image overloads, and separates track() frame-rate limits from animate/setOrientation call-rate limits.", "files": [], "expectations": [ "Explains that custom DockAccessory.track calls require disabling system tracking first.", "Corrects the 5 fps or 1 fps cadence to the supported 10-30 fps range for track(_:cameraInformation:).", "Corrects UIKit view coordinates to normalized observation rectangles with DockKit/Vision lower-left origin coordinates.", "Builds DockAccessory.CameraInformation from the active AVCaptureDevice type, position, orientation, intrinsics, and reference dimensions as available.", "States that CVPixelBuffer is supplied through separate image: overloads and is required when those overloads are chosen, not an optional parameter on every track call.", "Warns that animate(motion:) and setOrientation(_:duration:relative:) should not be called more than twice per second.", "Uses .humanFace, .humanBody, or .object observation types appropriately and avoids inventing unsupported observation cases." ] }, { "id": 2, "prompt": "I want a feature that follows whichever person is speaking, shows the dock battery in my SwiftUI UI, reacts to the dock zoom and shutter buttons, and also pairs a new BLE camera accessory if none is connected. What belongs in DockKit, what availability checks should I use, and what should move to another skill?", "expected_output": "A boundary-aware DockKit answer that uses iOS 18 trackingStates and batteryStates for intelligent tracking and status, iOS 17.4 accessoryEvents for buttons, and routes BLE accessory onb