.cursor/skills/test-template-generation/SKILL.md
--- 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
npx skillsauth add avra-cadavra/avrai .cursor/skills/test-template-generationInstall 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.
Test templates are located in test/templates/:
unit_test_template.dartwidget_test_template.dartintegration_test_template.dartservice_test_template.dart/// SPOTS Component Unit Tests
/// Date: [Current Date]
/// Purpose: Test Component functionality
///
/// Test Coverage:
/// - Feature 1: [Description]
/// - Feature 2: [Description]
/// - Edge Cases: [Description]
///
/// Dependencies:
/// - Mock 1: [Purpose]
/// - Service 2: [Purpose]
///
/// ⚠️ TEST QUALITY GUIDELINES:
/// ❌ DON'T: Test property assignment (e.g., expect(model.id, equals('1')))
/// ❌ DON'T: Test constructor-only (e.g., test('should create', () { expect(obj, isNotNull); }))
/// ✅ DO: Test behavior, business logic, validation, error handling
/// ✅ DO: Consolidate related checks into comprehensive test blocks
///
/// See: docs/plans/test_refactoring/TEST_WRITING_GUIDE.md
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
// Import component under test
import 'package:avrai/core/path/component.dart';
// Mock dependencies
class MockDependency extends Mock implements Dependency {}
void main() {
group('Component', () {
late Component component;
late MockDependency mockDependency;
setUp(() {
mockDependency = MockDependency();
component = Component(dependency: mockDependency);
});
group('performAction', () {
test('should return success result when operation succeeds', () async {
// Arrange
when(() => mockDependency.method()).thenAnswer((_) async => 'result');
// Act
final result = await component.performAction('input');
// Assert
expect(result.value, equals('result'));
expect(result.input, equals('input'));
verify(() => mockDependency.method()).called(1);
});
test('should handle errors gracefully', () async {
// Arrange
when(() => mockDependency.method()).thenThrow(Exception('Error'));
// Act & Assert
expect(
() => component.performAction('input'),
throwsException,
);
});
});
group('calculateValue', () {
test('should throw ArgumentError for invalid input', () {
expect(
() => component.calculateValue(-1),
throwsArgumentError,
);
});
});
});
}
/// SPOTS Widget Tests
/// Date: [Current Date]
/// Purpose: Test Widget behavior
///
/// Test Coverage:
/// - User interactions: [Description]
/// - State changes: [Description]
/// - Error states: [Description]
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:avrai/presentation/widgets/my_widget.dart';
void main() {
group('MyWidget', () {
testWidgets('should display widget content', (tester) async {
// Arrange
await tester.pumpWidget(
MaterialApp(
home: MyWidget(),
),
);
// Assert
expect(find.text('Expected Text'), findsOneWidget);
});
testWidgets('should handle user interaction', (tester) async {
// Arrange
await tester.pumpWidget(
MaterialApp(
home: MyWidget(),
),
);
// Act
await tester.tap(find.byType(Button));
await tester.pump();
// Assert
expect(find.text('Updated Text'), findsOneWidget);
});
});
}
/// SPOTS Integration Tests
/// Date: [Current Date]
/// Purpose: Test complete workflows
///
/// Test Coverage:
/// - End-to-end workflow: [Description]
/// - Integration points: [Description]
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:avrai/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('Complete Workflow', () {
testWidgets('should complete user journey', (tester) async {
// Arrange
app.main();
await tester.pumpAndSettle();
// Act & Assert
// Test complete user workflow
});
});
}
/// SPOTS Service Tests
/// Date: [Current Date]
/// Purpose: Test Service functionality
///
/// Test Coverage:
/// - Service methods: [Description]
/// - Error handling: [Description]
/// - Integration: [Description]
import 'package:flutter_test/flutter_test.dart';
import 'package:mocktail/mocktail.dart';
import 'package:avrai/core/services/my_service.dart';
// Mock dependencies
class MockDependency extends Mock implements Dependency {}
void main() {
group('MyService', () {
late MyService service;
late MockDependency mockDependency;
setUp(() {
mockDependency = MockDependency();
service = MyService(dependency: mockDependency);
});
group('serviceMethod', () {
test('should perform operation successfully', () async {
// Test implementation
});
});
});
}
test/templates/test/templates/unit_test_template.darttest/templates/widget_test_template.darttest/templates/integration_test_template.darttest/templates/service_test_template.dartdocs/plans/test_refactoring/TEST_WRITING_GUIDE.mddevelopment
--- 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
development
--- name: test-quality-enforcement description: Enforces test quality standards: behavior-focused tests, no property-only tests, round-trip JSON, comprehensive test blocks. Use when writing tests, reviewing test code, or ensuring test quality. --- # Test Quality Enforcement ## Core Principle **Test what the code DOES, not what it IS.** ## ✅ DO Test - **Behavior** - What happens when you call a method? - **Business Logic** - Calculations, validation, transformations - **Error Handling** - Ho