nghyane/vstep/mobile-anti-patterns
Claude Code and agent skill by nghyane/vstep
- community
Checking that the SKILL.md file is still in the repository.
Common mistakes in React Native/Expo development with this codebase. Anti-patterns to avoid. Load when code review or debugging.
Install
npx vskill@latest install nghyane/vstep/mobile-anti-patternsSKILL.md
Mobile Anti-patterns
Type Safety
Wrong: payload.prompt as string Right: Discriminated union + switch or === check. TS auto-narrows.
Wrong: tokens.getRefresh()! Right: tokens.getRefresh() ?? "" or early return.
Wrong: .json<{ data: { id: string; name: string } }>() Right: Define type in types.ts, use .json<ApiResponse<MyType>>().
Auth Redirect in Render
Wrong:
Right:
Error Handling Scattered
Wrong: Each component does try/catch + Alert.alert(). Right: Global QueryClient onError handles 401 → logout. Components use Alert only for user-friendly messages.
API Calls Outside useMutation
Wrong:
Right:
Why: QueryClient onError only catches errors from queries + mutations, not plain async calls.
Token Manipulation Outside Auth Store
Wrong: SecureStore.setItemAsync("vstep_access_token", token) in component. Right: Auth store (src/lib/auth.ts) is the only place that calls SecureStore.*. External code calls store actions.
Optional Chaining on Guaranteed Data
Wrong: profile?.nickname inside authenticated context. Right: useAuth() returns typed state. Use profile!.nickname only if guard is certain, better: use discriminated union.
Inline Map for Fixed UI Sets
Wrong:
Right: Write each card explicitly. Easier to read, style individually.
Too Many Props
Wrong: Component receives 6+ separate props. Right: Group related props into shared type. Props ≤ 3.
Route Page Contains Logic
Wrong: Route page 140+ lines with hooks, handlers, sub-components inline. Right: Route page ≤ 80 lines, only compose. Logic in src/hooks/, UI in src/components/.
Hardcoded Values
Wrong: color: "#58CC02", padding: 16, fontSize: 16 Right: colors.light.primary, spacing.base, fontSize.base
Mock Data in Components
Wrong: Hardcoded exam/practice data in components. Right: Data from API (TanStack Query). If API doesn't exist, create endpoint first.
Audio Controls During Exam
Wrong: Using native audio controls (<audio controls />). Right: Hidden audio + custom progress bar. VSTEP standard: audio plays once only.
AsyncStorage for Tokens
Wrong: AsyncStorage.setItem("token", value) Right: expo-secure-store for sensitive data. Only use AsyncStorage for non-sensitive cached data.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingapps/mobile-v2/.agents/skills/mobile-anti-patterns/SKILL.md
Popularity
- Repository stars
- 3
- Repository forks
- 1
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/nghyane/vstep/mobile-anti-patterns)