원클릭으로
validate-conventions
Review changed code against project conventions and rules
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Review changed code against project conventions and rules
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Transform the base template into a specific application
Add or update i18n keys in both English and Arabic locale files
Scaffold a UI component with unistyles variants pattern
Scaffold a complete feature module with types, service, hooks, schema, and constants
Generate a validated form with Zod schema, react-hook-form, and i18n
Add a new screen or tab to the app with routing and i18n
| name | validate-conventions |
| description | Review changed code against project conventions and rules |
| auto-invocable | true |
| triggers | ["review my code","check conventions","validate changes","lint my changes","check my code"] |
Review changed code against all project conventions defined in CONVENTIONS.md.
Run git diff --name-only HEAD to find modified files. If no uncommitted changes, check git diff --name-only HEAD~1 for the last commit.
If the user specifies particular files, use those instead.
Read each changed file to inspect the code.
For each file, check ALL of the following rules:
StyleSheet imported from react-native-unistyles, NOT react-nativeText imported from @/common/components/Text, NOT react-nativez imported from zod/v4, NOT zod@/ or ~/), no deep relative imports (../../..)@/ internal > relativeimport type { ... }@/common/components/Button not @/common/components/Button/Button)src/ filesapp/ screen filesstyles.useVariants() called before accessing styles (if using variants)StyleSheet.createaccessibilityRole on Pressable, TouchableOpacity, buttonsaccessibilityLabel on interactive elementsaccessibilityState for disabled/busy/selected statesStyleSheet.create((theme) => ({...})) pattern with theme callback#hex, rgb(), named colors) - use theme.colors.*theme.metrics.spacing.* or theme.metrics.spacingV.*theme.fonts.size.*theme.metrics.borderRadius.*useStore((s) => s.field), NOT useStore()useAuthStore() without selectoruseAuthStore.getState() inside React components (only in non-React code)t('key') from useTranslation()en.json and ar.json updated together (check git diff for both)any typesimport type{ComponentName}PropsButton.tsx, Button.styles.ts, Button.types.ts)order-details.tsx)use (useProducts.ts)Service (productService.ts)Schema (productSchema.ts)Store (authStore.ts)api from @/services/api, not raw fetch or axiosconsole.log in production code (use if (__DEV__) guard or remove)expo-router (router.push, router.replace)useAuthStoreFor each issue found, report:
[RULE] <rule name>
[FILE] <file_path>:<line_number>
[ISSUE] <description of the violation>
[FIX] <how to fix it>
Group findings by file. Show clean files too: <file_path> - No issues found
Run npm run validate as a final automated check (TypeScript + ESLint + Prettier).
Report the results.
Checked: X files
Issues found: Y
- Import issues: N
- Style issues: N
- i18n issues: N
- TypeScript issues: N
- Other: N
npm run validate: PASS/FAIL
npm run validate as the final step