core
Generate core infrastructure for Flutter apps. Creates theme system (AppColors, AppTheme), router (GoRouter), services (SecureStorage, SharedPrefs, Supabase), error handling (Failures), and providers.
SKILL.md.claude/skills/core/SKILL.md
GitHubCore - Infrastructure Generation
Generates the core infrastructure that all features depend on.
When to Use This Skill
- After
/initcompletes - Before adding any features or
/auth - Setting up app-wide infrastructure
- User asks to "generate core", "create infrastructure", or "setup theme/router"
What This Skill Creates
lib/app.dart- Root app widget with MaterialApp.routerlib/core/theme/- AppColors, AppTypography, AppThemelib/core/router/- GoRouter configurationlib/core/services/- SecureStorage, SharedPrefs, Supabase, iOS network permissionlib/core/errors/- Typed failures and exceptionslib/core/constants/- App constants, legal URLs, storage keys, debug flagslib/core/network/- Dio client (if custom API)lib/core/navigation/- StatefulShellRoute (if bottom nav)lib/core/providers.dart- Core Riverpod providers
Workflow
Phase 1: Gather Requirements
Use AskUserQuestion to confirm settings from /init:
- Primary Color (hex, from /init or ask)
- Theme Mode (light/dark/both)
- Use Supabase? (from /init)
- Use Custom API? (from /init)
- Bottom Navigation? (yes/no - determines shell creation)
- Privacy Policy URL? (can be placeholder, required before release)
- Terms of Service URL? (can be placeholder, required before release)
Phase 2: Create Directory Structure
mkdir -p lib/core/{constants,errors,network,router,navigation,services,theme,utils,widgets}
mkdir -p lib/features
Phase 3: Generate Files
Copy from reference/ directories and customize:
| Category | Files | Notes |
|---|---|---|
theme/ |
app_colors, app_typography, app_theme | Customize primary color |
services/ |
secure_storage, shared_prefs, ios_network_permission | Always |
services/ |
supabase_service | If Supabase = yes |
network/ |
dio_client | If Custom API = yes |
router/ |
app_router | Customize routes |
navigation/ |
main_shell | If bottom nav = yes |
errors/ |
failures, exceptions | Always |
constants/ |
app_constants, legal_constants, storage_keys, debug_constants | Always |
utils/ |
legal_utils | Always |
| root | providers.dart | Customize based on services |
Note: ios_network_permission_service.dart triggers the iOS permission dialog early to prevent first API call failures.
Phase 10: Generate App Widget
Copy reference/app.dart and customize with theme/router.
Phase 11: Update main.dart
Replace placeholder with actual App():
import 'app.dart';
runApp(const ProviderScope(child: App()));
Phase 12: Verify
dart run build_runner build --delete-conflicting-outputs
flutter analyze
Reference Files
| Directory | Content |
|---|---|
reference/theme/ |
AppColors, AppTypography, AppTheme |
reference/router/ |
GoRouter setup |
reference/navigation/ |
StatefulShellRoute scaffold |
reference/services/ |
Storage, Supabase, iOS permission services |
reference/network/ |
Dio client with interceptors |
reference/errors/ |
Failure types, exceptions |
reference/constants/ |
App constants, legal URLs, storage keys, debug flags |
reference/utils/ |
Legal URL utilities |
reference/ |
app.dart, providers.dart |
Guides
This skill is code-heavy with all templates in reference/. No separate guides needed.
Related guidance from other skills:
| Topic | See |
|---|---|
| Architecture patterns | .claude/skills/plan/architecture.md |
| Color usage (contrast, dark mode) | /design → visual-guide.md |
| Typography sizes & hierarchy | /design → visual-guide.md |
| Color contrast requirements | /a11y → semantics-guide.md |
| Text scaling accessibility | /a11y → testing-guide.md |
Quick Reference
AppColors.primary; AppTheme.light(); // Theme
context.go('/dashboard'); context.push('/profile'); // Router
ref.watch(secureStorageProvider).write('key', 'value'); // Secure storage
ref.watch(sharedPrefsProvider).setBool('onboarded', true); // Shared prefs
triggerIOSNetworkPermission(); // iOS permission (call in main.dart)
Next Steps
After /core:
/auth- Add authentication feature/feature-init dashboard- Initialize dashboard scaffold/i18n- Add localization
Checklist
-
lib/app.dartcreated with MaterialApp.router -
lib/core/theme/has AppColors, AppTypography, AppTheme -
lib/core/router/app_router.dartconfigured -
lib/core/services/has required services -
lib/core/services/ios_network_permission_service.dartcreated -
lib/core/errors/failures.darthas typed failures -
lib/core/constants/has storage keys, legal URLs, and debug flags -
lib/core/utils/legal_utils.dartcreated -
lib/core/providers.dartexports all providers -
main.dartupdated to use App() -
main.dartcallstriggerIOSNetworkPermission()early -
build_runnerexecuted successfully -
flutter analyzepasses
Related Skills
/init- Run before core (project setup)/auth- Run after core (authentication)/feature-init- Initialize feature scaffolds after core/design- UI patterns reference