.cursor/skills/device-discovery-service/SKILL.md
Guides device discovery implementation patterns for AI2AI connections. Use when implementing device discovery, BLE scanning, or WiFi-based device detection.
npx skillsauth add avra-cadavra/avrai device-discovery-serviceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Discover nearby SPOTS-enabled devices for AI2AI connections.
/// Device Discovery Service
///
/// Discovers nearby SPOTS-enabled devices
class DeviceDiscoveryService {
final BLEScanner _bleScanner;
final WiFiDirectScanner? _wifiScanner;
/// Start continuous device discovery
Future<void> startDiscovery({
Duration scanInterval = const Duration(seconds: 5),
Duration scanWindow = const Duration(seconds: 4),
Duration deviceTimeout = const Duration(minutes: 2),
}) async {
// Start continuous scanning
await _bleScanner.startScan(
serviceUuid: spotsServiceUuid,
scanInterval: scanInterval,
scanWindow: scanWindow,
);
// Optional: WiFi Direct for Android
if (_wifiScanner != null) {
await _wifiScanner.startScan();
}
}
/// Stop device discovery
Future<void> stopDiscovery() async {
await _bleScanner.stopScan();
await _wifiScanner?.stopScan();
}
/// Get discovered devices
Stream<List<DiscoveredDevice>> get discoveredDevices => _deviceStream;
}
/// SPOTS Service UUID for hardware-level filtering
static const String spotsServiceUuid = '0000ff00-0000-1000-8000-00805f9b34fb';
/// Start scanning with service UUID filter (power efficient)
await ble.scan(
withServices: [Guid(spotsServiceUuid)],
scanMode: ScanMode.lowPower,
);
/// Extract personality data from device advertisement
Future<AnonymizedPersonalityData?> extractPersonalityData(
DiscoveredDevice device,
) async {
// Extract anonymized personality data from advertisement
// No personal identifiers, only anonymized personality dimensions
final advertisementData = device.advertisementData;
return AnonymizedPersonalityData.fromAdvertisement(advertisementData);
}
/// Android BLE Device Discovery
class BLEDeviceDiscoveryAndroid implements DeviceDiscovery {
@override
Future<void> startDiscovery() async {
// Use Android BLE APIs
// Foreground service for background scanning
}
}
/// iOS Multipeer Connectivity Discovery
class DeviceDiscoveryIOS implements DeviceDiscovery {
@override
Future<void> startDiscovery() async {
// Use Multipeer Connectivity framework
// Background modes for continuous operation
}
}
docs/ai2ai/06_network_connectivity/DEVICE_DISCOVERY.mdlib/core/network/device_discovery_android.dartlib/core/network/device_discovery_ios.dartdevelopment
--- name: world-model-development description: Guides world model development patterns: state/action encoders, ONNX inference, feature extraction pipeline, latency budgets. Use when implementing world model components, state encoders, action encoders, feature extractors, or ONNX models. Core skill for Phases 3-6. --- # World Model Development Patterns ## Core Principle All world model components follow LeCun's autonomous machine intelligence framework. State observations flow through a percep
tools
Implements base workflow controller patterns for multi-step processes. Use when creating complex workflows that require orchestration of multiple steps with error handling and rollback.
testing
--- name: widget-test-patterns description: Guides widget test patterns: BLoC testing, user interactions, state changes, material app setup. Use when writing widget tests, testing UI components, or validating widget behavior. --- # Widget Test Patterns ## Core Pattern Widget tests verify UI behavior: user interactions, state changes, and visual display. ## Basic Widget Test Setup ```dart testWidgets('widget displays correctly', (WidgetTester tester) async { // Arrange: Create widget awa
testing
--- name: test-template-generation description: Generates test templates: unit, widget, integration, service tests following project patterns. Use when creating new tests or ensuring tests follow project standards. --- # Test Template Generation ## Available Templates Test templates are located in `test/templates/`: - `unit_test_template.dart` - `widget_test_template.dart` - `integration_test_template.dart` - `service_test_template.dart` ## Unit Test Template ```dart /// SPOTS Component Uni