en un clic
review-frontend
// Frontend review checklist for OpenAEV React/TypeScript code: component patterns, forms, MUI usage, permissions, i18n, state management, dead code. Use when reviewing PRs or auditing frontend features.
// Frontend review checklist for OpenAEV React/TypeScript code: component patterns, forms, MUI usage, permissions, i18n, state management, dead code. Use when reviewing PRs or auditing frontend features.
Creates tests for an existing feature following OpenAEV patterns: fixture class, composer, integration test with @Nested groups, and optionally unit tests. Use when asked to add tests or improve test coverage.
Scaffolds a complete feature end-to-end: JPA entity, repository, service, DTOs, mapper, controller, migration, tests (fixture + composer + integration test), and frontend actions/page. Use when asked to create a new feature or module.
Step-by-step general code review procedure for OpenAEV pull requests. Covers architecture, conventions, code quality, and delegation to specialized agents.
Step-by-step tenant isolation audit for OpenAEV pull requests. Use when reviewing PRs that touch entities, repositories, native queries, or migrations.
Creates a Flyway Java-based migration for schema changes. Handles table creation, column additions, tenant isolation, and ES reindex. Use when asked to modify the database schema.
Performance review checklist for OpenAEV code: N+1 queries, fetch strategy, pagination, indexing, memory usage. Use when reviewing PRs or auditing performance of a feature.
| name | review-frontend |
| description | Frontend review checklist for OpenAEV React/TypeScript code: component patterns, forms, MUI usage, permissions, i18n, state management, dead code. Use when reviewing PRs or auditing frontend features. |
FunctionComponent typing.jsx → .tsx migration required when touching)interface Props (not inline)zodImplement<T>().with({...})useForm<T> + FormProviderTextFieldController, SelectFieldController, TagFieldControllergap: theme.spacing(2), no MUI Gridapi-types.d.ts (auto-generated, never manual)div, section, header, flexbox/grid<Can I={ACTIONS.X} a={SUBJECTS.Y}>ability.can()src/utils/permissions/types.tst() called early — pass translated strings to child componentst('Organization name'), not t('organization_name')cd openaev-front && yarn i18n-checker 2>&1 | tail -20
useQueryableWithLocalStorage + PaginationComponentV2actions/{feature}/{feature}-actions.tsuseOrganizations.ts) for local stateany types@ts-ignore without explanatory commentgrep -rn "interface.*Input\|interface.*Output" openaev-front/src/ --include="*.ts" --include="*.tsx" | grep -v api-types | grep -v node_modules | head -20
.jsx files if a .tsx replacement existsDocument findings using conventional comments format:
issue (blocking): for pattern violations that cause bugs or inconsistencysuggestion (non-blocking): for improvements and modernizationnitpick: for style preferencespraise: for well-implemented patterns