.cursor/skills/clean-architecture-implementation/SKILL.md
Enforces Clean Architecture layer separation (core, data, domain, presentation). Use when creating new features, organizing code, or ensuring proper dependency direction.
npx skillsauth add avra-cadavra/avrai clean-architecture-implementationInstall 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.
lib/
├── core/ # Core business logic, models, services
├── data/ # Data sources, repositories (implementation)
├── domain/ # Use cases, repository interfaces
└── presentation/ # UI, BLoCs, widgets, pages
lib/core/)lib/domain/)lib/data/)lib/presentation/)Dependencies flow inward:
Presentation → Domain ← Data
↓ ↓
Core ←──────┘
// Domain (abstract interface)
abstract class SpotsRepository {
Future<List<Spot>> getSpots();
}
// Data (implements domain interface)
class SpotsRepositoryImpl implements SpotsRepository {
final SpotsRemoteDataSource remoteDataSource;
final SpotsLocalDataSource localDataSource;
// Implementation
}
// Domain (use case uses repository interface)
class GetSpotsUseCase {
final SpotsRepository repository;
Future<List<Spot>> call() => repository.getSpots();
}
// Presentation (uses use case)
class SpotsBloc extends Bloc<SpotsEvent, SpotsState> {
final GetSpotsUseCase getSpotsUseCase;
// Uses use case
}
// Domain depending on data (WRONG)
import 'package:avrai/data/models/spot_model.dart'; // ❌
// Presentation depending on data (WRONG)
import 'package:avrai/data/repositories/spots_repository_impl.dart'; // ❌
lib/
├── core/
│ ├── models/
│ │ └── spot.dart
│ └── services/
│ └── spot_service.dart
├── domain/
│ ├── repositories/
│ │ └── spots_repository.dart
│ └── usecases/
│ └── get_spots_usecase.dart
├── data/
│ ├── datasources/
│ │ └── spots_remote_datasource.dart
│ └── repositories/
│ └── spots_repository_impl.dart
└── presentation/
├── pages/
│ └── spots_page.dart
└── blocs/
└── spots_bloc.dart
Core services belong in lib/core/services/:
// lib/core/services/my_service.dart
class MyService {
// Business logic
// No Flutter dependencies
}
Use cases belong in lib/domain/usecases/:
// lib/domain/usecases/get_data_usecase.dart
class GetDataUseCase {
final RepositoryInterface repository;
Future<Data> call() {
// Orchestrates business logic
}
}
test/
├── unit/
│ ├── models/ # Domain entities
│ ├── repositories/ # Data layer
│ ├── usecases/ # Business logic
│ ├── blocs/ # State management
│ └── services/ # Core services
├── integration/ # Cross-layer
└── widget/ # Presentation layer
See existing architecture in:
lib/core/ - Core layer exampleslib/domain/ - Domain layer exampleslib/data/ - Data layer exampleslib/presentation/ - Presentation layer examplesdevelopment
--- 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