ワンクリックで
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