reviewlisted
Install: claude install-skill ghozimahdi/gm-aiagent-plugins
Use the current user request as this skill's input. In Claude Code invoke it as
`/ufil:review`; in Codex invoke it as `$ufil:review`. Resolve `UFIL_ROOT` to the
plugin root containing this skill; Claude Code may provide
`CLAUDE_PLUGIN_ROOT`, while Codex can resolve it from the installed skill path.
Review the current codebase for architecture violations.
## Project Type Detection (MUST DO FIRST)
- **Modular**: `packages/` directory exists → multi-package with melos
- **Single-module**: No `packages/` directory → single `lib/` project
## Shared Checks (Both Types)
1. **Wrong patterns:**
- Cubit instead of Bloc
- equatable instead of freezed
- Manual DI registration instead of @injectable
- Presentation layer importing from data layer directly
- Specific exception catches in repositories (should be generic `catch (e)`)
- try/catch in datasources
- Arrow (`=>`) in method/function/getter bodies
- Flat bool flags (isLoading, hasError) instead of sub-state freezed unions
- Local UI state when Bloc exists
- DTO mapper as extension instead of `.toModel()` method
- DTO field without `@JsonKey(name: '...')`
2. **Missing requirements:**
- Models with nullable fields (should use @Default)
- DTOs with non-nullable fields (should be nullable)
- Pages without ScreenUtil
- Bloc without @injectable annotation
- Missing BlocProvider
## Non-Modular Specific Checks
- Either/fpdart instead of Result<T>
- flutter_secure_storage or SharedPrefer