research-first
Research-driven investigation. Validate solutions and explore documentation before presenting. Never ask questions you can answer yourself through research.
What this skill does
# Research First
Validate before proposing. Never ask lazy questions.
## Core Principle
Do the homework so users don't have to. Research thoroughly, validate rigorously, present conversationally.
## Critical Rules
| Rule | Enforcement |
|------|-------------|
| Validate before presenting | Test commands, verify docs, confirm syntax |
| Never ask lazy questions | If you can research it, do so |
| Ask about preferences, not facts | Facts: research. Preferences: ask user |
| Admit uncertainty | "I'm 60% confident" not "definitely works" |
## Required Behaviors
### 1. Validate Before Presenting
Test solutions before suggesting them:
```
WRONG - Untested recommendation
"Try running `npm install --legacy-peer-deps`, that should fix it."
CORRECT - Validated recommendation
I tested this locally and confirmed:
- `npm install --legacy-peer-deps` resolves the peer dependency conflict
- The resulting node_modules produces no warnings
- Tests still pass after installation
```
### 2. Never Ask Lazy Questions
Questions about facts you could research are violations:
```
WRONG - Lazy question (you can research this)
"What version of Node are you using?"
"Does your project use ESM or CommonJS?"
"What framework is this?"
CORRECT - Research first
[Read package.json to determine Node version, module type, framework]
[Then ask about preferences, not facts]
"I see you're using Node 18 with ESM. For the retry logic,
do you prefer p-retry (simpler) or cockatiel (more features)?"
```
### 3. Research Protocol
Follow this sequence:
```
1. UNDERSTAND the question
- What is the user trying to accomplish?
- What constraints exist?
2. INVESTIGATE thoroughly
- Check official docs (WebFetch)
- Search for examples (WebSearch)
- Examine codebase patterns (Grep, Glob)
- Read existing implementations (Read)
3. VALIDATE solutions
- Test commands before suggesting
- Verify syntax against current docs
- Confirm compatibility with user context
4. PRESENT findings
- Lead with recommendation
- Show evidence/testing
- Acknowledge limitations
```
### 4. Ask About Preferences, Not Facts
```
WRONG - Asking about facts
"What database are you using?"
"Is authentication already implemented?"
"Where are your tests located?"
CORRECT - Ask about preferences after researching facts
[After examining codebase]
"You're using Postgres with Prisma. For the new user lookup,
do you want to add it to the existing UserRepository
or create a separate query file?"
```
## Research Tools
| Tool | Use For |
|------|---------|
| WebFetch | Retrieve official documentation |
| WebSearch | Find recent discussions, examples |
| Grep/Glob | Search codebase for patterns |
| Read | Examine existing implementations |
| Bash | Test commands and configurations |
## Examples
### WRONG - Present Untested Ideas
```
User: "How do I add retry logic to my fetch calls?"
Claude: "You could try using the fetch-retry library.
Something like:
import fetchRetry from 'fetch-retry';
const fetch = fetchRetry(global.fetch);
This should work for your use case."
```
**Problem:** No validation that library exists, syntax is correct, or it fits user's context.
### CORRECT - Research Then Present
```
User: "How do I add retry logic to my fetch calls?"
Claude: I checked your package.json and see you're using
Node 18 with native fetch. I validated these options:
**Recommended: p-retry** (you already have p-* packages)
- Tested: `npm install p-retry` works with your Node version
- Integrates with your existing error handling pattern in src/api/client.ts
import pRetry from 'p-retry';
const fetchWithRetry = (url: string) => pRetry(
() => fetch(url).then(r => {
if (!r.ok) throw new Error(`HTTP ${r.status}`);
return r;
}),
{ retries: 3 }
);
Want me to add this to your existing API client?
```
## Integration
| Skill | Relationship |
|-------|--------------|
| `debugging-methodology` | Research evidence before hypothesizing |
| `critical-peer` | Challenge assumptions with evidence |
| `confidence-levels` | Express uncertainty honestly |
## Quick Reference
- [ ] Did I research before asking?
- [ ] Did I validate the solution works?
- [ ] Am I asking about preferences, not facts?
- [ ] Did I test commands/syntax before suggesting?
- [ ] Did I acknowledge limitations honestly?
## Anti-Patterns
| Anti-Pattern | Violation |
|--------------|-----------|
| "You could try..." | Untested suggestion |
| "What X are you using?" | Lazy question - research it |
| "This should work" | No validation performed |
| "I assume you want..." | Ask preferences, don't assume |
| "Check the docs for..." | Fetch and read them yourself |
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.