Accessorysetupkit
Picker iOS AccessorySetupKit, descrittori di scoperta e handoff CoreBluetooth/Wi-Fi.
Promosso
Cosa fa
Skill di riferimento per AccessorySetupKit di Apple (iOS 18+): chiavi Info.plist richieste, regole di corrispondenza ASDiscoveryDescriptor per accessori BLE e Wi-Fi, ordinamento degli eventi ASAccessorySession e l'handoff a CoreBluetooth o NEHotspotConfiguration dopo l'accoppiamento. Si attiva quando si costruisce un flusso di accoppiamento accessori, si scrivono descrittori di scoperta, si gestiscono eventi di sessione accessori o si migrano dispositivi esistenti autorizzati da CoreBluetooth al picker di sistema. Fornisce un file di pattern di 636 righe che copre il filtraggio personalizzato, la gestione della rimozione, il recupero dagli errori e un pattern manager SwiftUI.
Rapporto di test
Installato in una HOME temporanea (export HOME=$(mktemp -d)) tramite git clone + cp; frontmatter analizzato correttamente con solo name+description, e tutti e tre i percorsi controllati a campione hanno restituito HTTP 200 (references/accessorysetupkit-patterns.md 18712 B, evals/evals.json 4308 B, README.md 26060 B). Un grep per curl|sh, blob base64, stringhe di credenziali/token, percorsi assoluti /Users e frasi di iniezione attraverso SKILL.md e il file patterns ha restituito zero risultati. Frasi di attivazione giudicate: DOVREBBE attivarsi - "Aggiungi un picker di accessori di sistema in modo che gli utenti possano accoppiare il nostro termostato BLE senza un prompt di permesso Bluetooth" (sì), "Quali campi ASDiscoveryDescriptor corrispondono a un accessorio Wi-Fi per prefisso SSID?" (sì), "Oggi scansioniamo con CBCentralManager; migra i nostri dispositivi accoppiati al flusso di configurazione accessori di iOS 18" (sì); NON DOVREBBE attivarsi - "Scrivi un client CoreBluetooth GATT che si iscrive alle notifiche di frequenza cardiaca su un periferico già accoppiato" (correttamente saltato, GATT post-accoppiamento è fuori scopo) e "Configura NEHotspotConfiguration per connettersi a una rete Wi-Fi digitata manualmente dall'utente" (correttamente saltato, nessun accessorio). Test di output: ho scritto baseline.swift.md e poi skill.swift.md per lo stesso task. La baseline ha impostato descriptor.bluetoothNameSubstring = "ThermoX" ma ha dichiarato solo NSAccessorySetupBluetoothServices in Info.plist - il caso di crash documentato durante la scoperta; ha anche aggiunto un NSBluetoothAlwaysUsageDescription non necessario, ha costruito CBCentralManager in init() e ha chiamato retrievePeripherals senza attendere .poweredOn, ha catturato self fortemente in session.activate, ha forzato l'unwrapping di UIImage(named:)!, e ha gestito solo .accessoryAdded/.accessoryRemoved dietro un default: (quindi .activated non riconnette mai accessori precedentemente accoppiati, e nessun @unknown default). La versione della skill ha aggiunto NSAccessorySetupBluetoothNames, ha rimosso la chiave usage-description, ha usato [weak self], ha posticipato la connessione da .accessoryAdded a .pickerDidDismiss tramite un campo pendingAccessory, ha vincolato retrievePeripherals a .poweredOn con un retry in centralManagerDidUpdateState, e ha coperto .activated/.invalidated/@unknown default. Documentazione penalizzata di un punto: non ho potuto verificare le API solo per iOS 26.1 che cita (ASDiscoveredDisplayItem, updatePicker, finishPickerDiscovery) rispetto alla documentazione Apple live, e nessun Swift qui è stato compilato.
Testato il: 2026-07-21 · Claude Code 2.x (agent harness)
Installazione
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
Comandi e prompt di esempio
/accessorysetupkitPicker iOS AccessorySetupKit, descrittori di scoperta e handoff CoreBluetooth/Wi-Fi.
Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):
Add a BLE accessory picker using AccessorySetupKitMigrate from CoreBluetooth scanning to AccessorySetupKitDefine a discovery descriptor for my Wi-Fi device