Accessorysetupkit
Sélecteur iOS AccessorySetupKit, descripteurs de découverte, et transfert CoreBluetooth/Wi-Fi.
Testé · Fonctionne
Ce que fait
Compétence de référence pour l'AccessorySetupKit d'Apple (iOS 18+) : clés Info.plist requises, règles de correspondance ASDiscoveryDescriptor pour les accessoires BLE et Wi-Fi, ordre des événements ASAccessorySession, et le transfert vers CoreBluetooth ou NEHotspotConfiguration après l'appairage. Se déclenche lors de la construction d'un flux d'appairage d'accessoires, de l'écriture de descripteurs de découverte, de la gestion des événements de session d'accessoires, ou de la migration de périphériques CoreBluetooth-autorisés existants vers le sélecteur système. Fournit un fichier de modèles de 636 lignes couvrant le filtrage personnalisé, la gestion des suppressions, la récupération d'erreurs et un modèle de gestionnaire SwiftUI.
Rapport de test
Installé dans un HOME temporaire (export HOME=$(mktemp -d)) via git clone + cp ; frontmatter analysé proprement avec seulement name+description, et les trois chemins vérifiés ponctuellement ont retourné HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Un grep pour curl|sh, blobs base64, chaînes d'identifiants/jetons, chemins absolus /Users et phrases d'injection à travers SKILL.md et le fichier de modèles n'a retourné aucun résultat. Phrases de déclenchement jugées : DEVRAIT se déclencher - "Add a system accessory picker so users can pair our BLE thermostat without a Bluetooth permission prompt" (oui), "Which ASDiscoveryDescriptor fields match a Wi-Fi accessory by SSID prefix?" (oui), "We scan with CBCentralManager today; migrate our paired devices to the iOS 18 accessory setup flow" (oui) ; NE DEVRAIT PAS se déclencher - "Write a CoreBluetooth GATT client that subscribes to heart-rate notifications on an already-paired peripheral" (correctement ignoré, GATT post-appairage est hors de portée) et "Set up NEHotspotConfiguration to join a Wi-Fi network the user typed in manually" (correctement ignoré, pas d'accessoire). Test de sortie : écrit baseline.swift.md puis skill.swift.md pour la même tâche. La référence a défini descriptor.bluetoothNameSubstring = "ThermoX" mais n'a déclaré que NSAccessorySetupBluetoothServices dans Info.plist - le cas de crash documenté pendant la découverte ; elle a également ajouté un NSBluetoothAlwaysUsageDescription inutile, construit CBCentralManager dans init() et appelé retrievePeripherals sans attendre .poweredOn, capturé self fortement dans session.activate, déballé de force UIImage(named:)!, et géré uniquement .accessoryAdded/.accessoryRemoved derrière un default: (donc .activated ne reconnecte jamais les accessoires précédemment appairés, et pas de @unknown default). La version de la compétence a ajouté NSAccessorySetupBluetoothNames, supprimé la clé usage-description, utilisé [weak self], différé la connexion de .accessoryAdded à .pickerDidDismiss via un champ pendingAccessory, conditionné retrievePeripherals sur .poweredOn avec une nouvelle tentative dans centralManagerDidUpdateState, et couvert .activated/.invalidated/@unknown default. Docs pénalisées d'un point : je n'ai pas pu vérifier les APIs iOS 26.1-only qu'elle cite (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) par rapport aux docs Apple en direct, et aucun Swift ici n'a été compilé.
Testé le: 2026-07-21 · Claude Code 2.x (agent harness)
Installation
git clone --depth 1 https://github.com/dpearson2699/swift-ios-skills.git /tmp/accessorysetupkit-src mkdir -p ~/.claude/skills cp -R /tmp/accessorysetupkit-src/skills/accessorysetupkit ~/.claude/skills/accessorysetupkit # No deps, no API keys, no scripts: SKILL.md (14 KB) + references/accessorysetupkit-patterns.md (19 KB) + evals/evals.json # Alternative (whole 86-skill repo, interactive picker): npx skills add dpearson2699/swift-ios-skills # Alternative (Claude Code plugin marketplace): /plugin marketplace add dpearson2699/swift-ios-skills # Usage: model-invoked. Just describe the accessory pairing task inside an iOS project. # License is PolyForm Perimeter 1.0.0 (not OSI open source) - read LICENSE before redistributing
Commandes et exemples de prompts
/accessorysetupkitSélecteur iOS AccessorySetupKit, descripteurs de découverte, et transfert CoreBluetooth/Wi-Fi.
Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :
Add a BLE accessory picker using AccessorySetupKitMigrate from CoreBluetooth scanning to AccessorySetupKitDefine a discovery descriptor for my Wi-Fi device