auto-routelisted
Install: claude install-skill ghozimahdi/gm-aiagent-plugins
Resolve `UFIL_ROOT` to the plugin root containing this skill. Claude Code may
provide `CLAUDE_PLUGIN_ROOT`; Codex can resolve it from the installed skill
path.
## Auto Route Patterns (GM Standard)
### Non-Modular — Single AppRouter
```dart
// lib/app_router.dart
@AutoRouterConfig(replaceInRouteName: 'Page,Route')
class AppRouter extends RootStackRouter {
@override
List<AutoRoute> get routes {
return [
AutoRoute(page: SplashRoute.page, initial: true),
AutoRoute(page: LoginRoute.page),
AutoRoute(page: RegisterRoute.page),
AutoRoute(
page: MainRoute.page,
children: [
AutoRoute(page: DashboardRoute.page),
AutoRoute(page: PropertyListRoute.page),
AutoRoute(page: TenantListRoute.page),
AutoRoute(page: SettingsRoute.page),
],
),
AutoRoute(page: PropertyDetailRoute.page),
AutoRoute(page: AddPropertyRoute.page),
];
}
}
```
Every page uses `@RoutePage()`:
```dart
@RoutePage()
class PropertyDetailPage extends StatelessWidget {
const PropertyDetailPage({
super.key,
required this.propertyId,
});
final String propertyId;
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (_) => getIt<PropertyDetailBloc>()
..add(PropertyDetailEvent.started(propertyId: propertyId)),
child: const _PropertyDetailView(),
);
}
}
```
Navigation:
```dart
// Push
context.router.push(PropertyDetailRoute(propertyId: '123