| name | research |
| description | Use when encountering errors, investigating library APIs, troubleshooting issues, or needing up-to-date documentation. Prioritizes Context7 and WebSearch over outdated training data. |
Research Skill
Use this skill when you need to research solutions, understand library APIs, or troubleshoot issues with current, accurate information.
🚨 Critical Rule
NEVER rely solely on training data for:
- Library-specific APIs or methods
- Recent version changes
- Error troubleshooting
- Package configuration
- Framework-specific patterns
ALWAYS use research tools first, then apply findings.
Research Workflow
Step 1: Identify What You Need
Determine the type of information needed:
- Library Documentation: API references, usage patterns
- Error Solutions: Stack traces, error messages
- Configuration: Setup, package.json, config files
- Best Practices: Current patterns, anti-patterns
- Version-Specific: Breaking changes, migration guides
Step 2: Choose the Right Tool
| Need | Tool | When to Use |
|---|---|---|
| Library docs | mcp__context7__resolve-library-id + get-library-docs |
API references, examples, official docs |
| Supabase docs | mcp__supabase__search_docs |
Database, RLS, auth, storage |
| Error solutions | WebSearch |
Stack traces, error messages |
| General issues | WebSearch |
Troubleshooting, "how to" |
| Recent changes | WebSearch |
Migration guides, changelogs |
Using Context7 for Library Documentation
Step 1: Resolve Library ID
Always start by resolving the library name to get the Context7-compatible ID:
User asks: "How do I use Zustand persist?"
1. Resolve library:
mcp__context7__resolve-library-id({ libraryName: "zustand" })
Result: "/pmndrs/zustand"
2. Get documentation:
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/pmndrs/zustand",
topic: "persist middleware"
})
Step 2: Get Documentation
// General library docs
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/vercel/next.js",
tokens: 5000 // default
})
// Focused topic search
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/facebook/react",
topic: "hooks useEffect",
tokens: 3000
})
// Specific version
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/vercel/next.js/v15.0.0"
})
Common Libraries for Hounii
| Library | Context7 ID | Usage |
|---|---|---|
| React | /facebook/react |
Core React APIs |
| Next.js | /vercel/next.js |
Web app patterns |
| Expo | /expo/expo |
Mobile dev |
| Tamagui | /tamagui/tamagui |
UI components |
| Zustand | /pmndrs/zustand |
State management |
| React i18next | /i18next/react-i18next |
Translations |
| Supabase JS | /supabase/supabase-js |
Database client |
Context7 Best Practices
- Be specific with topics: Instead of "hooks", use "useState vs useReducer"
- Check multiple versions: Compare current vs latest
- Cross-reference: Verify with WebSearch if uncertain
- Token budget: Start with 5000, reduce to 3000 for focused queries
Using Supabase Search
For Database & Backend Questions
// Search Supabase docs with GraphQL
mcp__supabase__search_docs({
graphql_query: `
{
searchDocs(query: "row level security policies", limit: 5) {
nodes {
title
href
content
}
}
}
`
})
// Get specific error details
mcp__supabase__search_docs({
graphql_query: `
{
error(code: "PGRST116", service: api) {
code
message
httpStatusCode
}
}
`
})
Common Supabase Queries
// RLS policies
searchDocs(query: "row level security examples")
// PostGIS / location
searchDocs(query: "postgis distance queries")
// Auth patterns
searchDocs(query: "authentication social providers")
// Edge functions
searchDocs(query: "edge functions deno")
// Storage / files
searchDocs(query: "storage upload presigned urls")
Using WebSearch
For Troubleshooting Errors
// When you encounter an error:
WebSearch({
query: "React Native Text strings must be rendered within a <Text> component 2025"
})
// For specific error codes:
WebSearch({
query: "Supabase error PGRST116 solution"
})
// For version-specific issues:
WebSearch({
query: "Next.js 15 app router middleware breaking changes"
})
Search Query Best Practices
✅ GOOD Queries:
"Expo SDK 53 camera permissions android"
"Tamagui theme switching not working"
"pnpm workspace dependency resolution error"
"Turborepo cache not working Windows"
"React Native 0.73 hermes crash"
❌ BAD Queries (too vague):
"expo camera"
"tamagui dark mode"
"pnpm error"
"turborepo"
"react native crash"
Query Components:
- Technology name + version: "Next.js 15", "Expo SDK 53"
- Specific issue: "middleware not running", "build fails"
- Platform/context: "Windows", "iOS", "production"
- Year: "2025" (ensures recent results)
Research Patterns
Pattern 1: Library API Research
1. User asks: "How do I use Expo Router's tabs?"
2. Research steps:
a. Resolve library:
mcp__context7__resolve-library-id({ libraryName: "expo router" })
b. Get documentation:
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/expo/expo-router",
topic: "tabs layout navigation"
})
c. Verify with web search if needed:
WebSearch({ query: "Expo Router tabs example 2025" })
3. Synthesize findings and provide answer with code examples
Pattern 2: Error Troubleshooting
1. User reports: "Getting 'PGRST116' error from Supabase"
2. Research steps:
a. Search Supabase docs:
mcp__supabase__search_docs({
graphql_query: `{ error(code: "PGRST116", service: api) { message } }`
})
b. Search for solutions:
WebSearch({ query: "Supabase PGRST116 error solution 2025" })
c. Check project logs:
mcp__supabase__get_logs({ service: "api" })
3. Diagnose root cause and provide solution
Pattern 3: Version Migration
1. User asks: "How to migrate from Next.js 14 to 15?"
2. Research steps:
a. Get Next.js 15 docs:
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/vercel/next.js/v15.0.0",
topic: "migration upgrade guide"
})
b. Search for breaking changes:
WebSearch({ query: "Next.js 15 breaking changes migration guide 2025" })
c. Check Hounii's current version:
Read package.json in apps/web
3. Provide step-by-step migration plan
Pattern 4: Best Practices Research
1. User asks: "What's the best way to handle auth in Expo?"
2. Research steps:
a. Get Expo auth docs:
mcp__context7__get-library-docs({
context7CompatibleLibraryID: "/expo/expo",
topic: "authentication secure storage"
})
b. Get Supabase auth patterns:
mcp__supabase__search_docs({
graphql_query: `{ searchDocs(query: "mobile authentication") { nodes { content } } }`
})
c. Search community patterns:
WebSearch({ query: "Expo Supabase auth best practices 2025" })
3. Synthesize findings into recommended approach for Hounii
Research Checklist
Before providing an answer based on memory:
Is this library-specific?
- Yes → Use Context7 for official docs
- No → Proceed with general knowledge
Is this an error or issue?
- Yes → Use WebSearch for solutions
- Check project logs if relevant
Is this Supabase-related?
- Yes → Use
mcp__supabase__search_docs - Check advisors for security/performance issues
- Yes → Use
Is this version-specific?
- Yes → Search for version changelog/migration guide
- Check package.json for current version
Have I verified the information?
- Cross-referenced multiple sources
- Checked against project configuration
- Tested approach if possible
Common Research Scenarios
Scenario 1: "How do I use X library?"
Steps:
- Resolve library ID with Context7
- Get documentation for specific topic
- Search for recent examples if needed
- Provide code example adapted to Hounii patterns
Scenario 2: "I'm getting error Y"
Steps:
- Search error message + technology + year
- Check Supabase docs if database-related
- Check project logs with MCP tools
- Diagnose cause and provide solution
Scenario 3: "What's the best way to do Z?"
Steps:
- Get official docs via Context7
- Search community best practices
- Cross-reference with Hounii patterns (CLAUDE.md)
- Recommend approach with rationale
Scenario 4: "Is there a newer way to do this?"
Steps:
- Check current version in package.json
- Get latest docs from Context7
- Search for deprecation notices
- Compare old vs new approach
Anti-Patterns
❌ Don't Guess Library APIs
User: "How do I use Zustand's persist?"
❌ WRONG Response:
"Based on my knowledge, you use persist like this..."
(May be outdated or incorrect)
✅ CORRECT Response:
[First use Context7 to get current Zustand docs]
"According to the official Zustand documentation, here's the current pattern..."
❌ Don't Skip Research for Errors
User: "Getting error: Cannot read property 'map' of undefined"
❌ WRONG Response:
"This usually means the array is undefined. Add a check..."
(Generic answer without context)
✅ CORRECT Response:
[Ask for full stack trace, search for specific error context]
"Let me search for this specific error in your stack...
Based on the error occurring in [file:line], the issue is..."
❌ Don't Trust Outdated Memory
User: "How do I configure Expo Router?"
❌ WRONG Response:
"In my training data from 2023, you configure it like..."
(Likely outdated for Expo SDK 53)
✅ CORRECT Response:
[Use Context7 for Expo Router current docs]
"According to Expo Router's current documentation for SDK 53..."
Integration with Other Skills
With mobile-feature Skill
User: "Add camera feature to mobile app"
1. Load mobile-feature skill (patterns, i18n, etc.)
2. Use research skill:
- Get Expo camera docs via Context7
- Search for permission handling patterns
3. Combine: Apply Expo camera API + mobile patterns
With database-migration Skill
User: "Add PostGIS location search"
1. Load database-migration skill (RLS, table structure)
2. Use research skill:
- Search Supabase PostGIS docs
- Get location query examples
3. Combine: Apply PostGIS + Supabase patterns
With commit-protocol Skill
User: "Commit fails with lint error"
1. Use research skill:
- Search specific lint error
- Get ESLint rule documentation
2. Fix the error
3. Load commit-protocol skill (quality gates, approval)
Token Budget Management
Context7 queries consume tokens. Be strategic:
High-value queries (5000+ tokens):
- Migration guides
- Comprehensive API references
- Architecture patterns
Medium queries (3000 tokens):
- Specific feature docs
- Focused troubleshooting
- Component examples
Low queries (1000 tokens):
- Quick API lookups
- Single function references
- Error code definitions
Optimize:
// ❌ Too broad (wastes tokens)
get-library-docs({ id: "/vercel/next.js" })
// ✅ Focused (efficient)
get-library-docs({
id: "/vercel/next.js",
topic: "app router middleware",
tokens: 3000
})
When NOT to Research
Skip research for:
- Basic JavaScript/TypeScript syntax (use existing knowledge)
- Core React concepts (unless version-specific changes)
- General programming patterns (DRY, SOLID, etc.)
- Already confirmed in project docs (CLAUDE.md, package.json)
Research Documentation
When providing answers after research:
- Cite sources: "According to Next.js 15 docs..."
- Show recency: Include year/version when relevant
- Link references: Provide documentation URLs
- Acknowledge uncertainty: If sources conflict, say so
Example Response:
According to the official Expo documentation for SDK 53 (2025),
camera permissions are handled with:
[code example]
Source: https://docs.expo.dev/versions/latest/sdk/camera/
Note: This differs from SDK 51 where [old pattern] was used.
References
- Main config: CLAUDE.md
- Context7 MCP:
mcp__context7__*tools - Supabase MCP:
mcp__supabase__search_docs - Web Search:
WebSearchtool