accessorysetupkit
Discover and configure Bluetooth and Wi-Fi accessories using AccessorySetupKit. Use when presenting a privacy-preserving…
Control smart-home accessories and commission Matter devices using HomeKit and MatterSupport. Use when managing homes/rooms/accessories, creating action sets or triggers, reading accessory characteristics, onboarding Matter devices, or building a third-party smart-home ecosystem
Claude Code
$ npx -y skills add dpearson2699/swift-ios-skills --skill homekit --agent claude-code
Codex
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a codex -y
Cursor
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a cursor -y
Gemini CLI
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a gemini-cli -y
GitHub Copilot
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a github-copilot -y
OpenCode
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a opencode -y
Windsurf
$ npx skills add dpearson2699/swift-ios-skills --skill homekit -a windsurf -y
name: homekit description: "Control smart-home accessories and commission Matter devices using HomeKit and MatterSupport. Use when managing homes/rooms/accessories, creating action sets or triggers, reading accessory characteristics, onboarding Matter devices, or building a third-party smart-home ecosystem app."
Control home automation accessories and commission Matter devices. HomeKit manages the home/room/accessory model, action sets, and triggers. MatterSupport handles device commissioning into your ecosystem.
1. Enable the **HomeKit** capability in Xcode (Signing & Capabilities) 2. Add `NSHomeKitUsageDescription` to Info.plist:
<key>NSHomeKitUsageDescription</key> <string>This app controls your smart home accessories.</string>
For Matter commissioning into your own ecosystem:
1. Add a **MatterSupport Extension** target and set its principal class to a `MatterAddDeviceExtensionRequestHandler` subclass 2. Add `NSBonjourServices` entries for `_matter._tcp`, `_matterc._udp`, and `_matterd._udp` 3. Add `com.apple.developer.matter.allow-setup-payload` only if the caller supplies a Matter setup payload programmatically
| Need | Framework | |---|---| | Homes, rooms, accessories, characteristics, actions, triggers | HomeKit | | Commission Matter into the app ecosystem | MatterSupport | | Select and authorize a nearby Bluetooth or Wi-Fi accessory | AccessorySetupKit | | Exchange Bluetooth GATT data after selection | CoreBluetooth | | Join or configure an accessory's Wi-Fi network after selection | NetworkExtension |
HomeKit organizes home automation in a hierarchy:
HMHomeManager
-> HMHome (one or more)
-> HMRoom (rooms in the home)
-> HMAccessory (devices in a room)
-> HMService (functions: light, thermostat, etc.)
-> HMCharacteristic (readable/writable values)
-> HMZone (groups of rooms)
-> HMActionSet (grouped actions)
-> HMTrigger (time or event-based triggers)Create a single `HMHomeManager` and implement the delegate to know when data is loaded. HomeKit loads asynchronously -- do not access `homes` until the delegate fires.
import HomeKit
final class HomeStore: NSObject, HMHomeManagerDelegate {
let homeManager = HMHomeManager()
override init() {
super.init()
homeManager.delegate = self
}
func homeManagerDidUpdateHomes(_ manager: HMHomeManager) {
// Safe to access manager.homes now
let homes = manager.homes
let primaryHome = manager.primaryHome
print("Loaded \(homes.count) homes")
}
func homeManager(
_ manager: HMHomeManager,
didUpdate status: HMHomeManagerAuthorizationStatus
) {
if status.contains(.authorized) {
print("HomeKit access granted")
}
}
}guard let home = homeManager.primaryHome else { return }
let rooms = home.rooms
let kitchen = rooms.first { $0.name == "Kitchen" }
// Room for accessories not assigned to a specific room
let defaultRoom = home.roomForEntireHome()Use the [Framework Boundary](#framework-boundary) table before adding an accessory; only HomeKit/MatterSupport work continues in this skill.
// System UI for accessory discovery
home.addAndSetupAccessories { error in
if let error {
print("Setup failed: \(error)")
}
}for accessory in home.accessories {
print("\(accessory.name) in \(accessory.room?.name ?? "unassigned")")
for service in accessory.services {
print(" Service: \(service.serviceType)")
for characteristic in service.characteristics {
print(" \(characteristic.characteristicType): \(characteristic.value ?? "nil")")
}
}
}guard let accessory = home.accessories.first,
let bedroom = home.rooms.first(where: { $0.name == "Bedroom" }) else { return }
home.assignAccessory(accessory, to: bedroom) { error in
if let error {
print("Failed to move accessory: \(error)")
}
}let characteristic: HMCharacteristic = // obtained from a service
characteristic.readValue { error in
guard error == nil else { return }
if let value = characteristic.value as? Bool {
print("Power state: \(value)")
}
}// Turn on a light
characteristic.writeValue(true) { error in
if let error {
print("Write failed: \(error)")
}
}Enable notifications for real-time updates:
characteristic.enableNotification(true) { error in
guard error == nil else { return }
}
// In HMAccessoryDelegate:
func accessory(
_ accessory: HMAccessory,
service: HMService,
didUpdateValueFor characteristic: HMCharacteristic
) {
print("Updated: \(characteristic.value ?? "nil")")
}An `HMActionSet` groups characteristic writes that execute together:
home.addActionSet(withName: "Good Night") { actionSet, error in
guard let actionSet, error ==86 agent skills optimized for iOS 26+ development with Swift 6.3 and modern Apple frameworks.
Discover and configure Bluetooth and Wi-Fi accessories using AccessorySetupKit. Use when presenting a privacy-preserving…
Implement, review, or improve Live Activities and Dynamic Island experiences in iOS apps using ActivityKit. Use when building…
Measure ad effectiveness with privacy-preserving attribution using AdAttributionKit. Use when registering ad impressions,…
Implement AlarmKit alarms and countdown timers for iOS and iPadOS with Lock Screen, Dynamic Island, StandBy, and paired Apple…
Build iOS App Clips with invocation URLs, App Clip Codes, NFC, QR codes, Safari banners, Maps, Messages, target setup, App Store…
Implement App Intents for Siri, Shortcuts, Spotlight, widgets, Control Center, and Apple Intelligence on iOS. Covers AppIntent…
Decompile Android APK, XAPK, JAR, and AAR files using jadx or Fernflower/Vineflower. Reverse engineer Android apps, extract HTTP…