This skill should be used when the user asks to "query WRDS", "access Compustat", "get CRSP data", "pull Form 4 insider data", "query ISS compensation", "download SEC EDGAR filings", "get ExecuComp data", "access Capital IQ", or needs WRDS PostgreSQL query patterns.
View on GitHubFebruary 4, 2026
Select agents to install to:
npx add-skill https://github.com/edwinhu/workflows/blob/main/skills/wrds/SKILL.md -a claude-code --skill wrdsInstallation paths:
.claude/skills/wrds/## Contents - [Query Enforcement](#query-enforcement) - [Quick Reference: Table Names](#quick-reference-table-names) - [Connection](#connection) - [Critical Filters](#critical-filters) - [Parameterized Queries](#parameterized-queries) - [Additional Resources](#additional-resources) # WRDS Data Access WRDS (Wharton Research Data Services) provides academic research data via PostgreSQL at `wrds-pgdata.wharton.upenn.edu:9737`. ## Query Enforcement ### IRON LAW: NO QUERY WITHOUT FILTER VALIDATION FIRST Before executing ANY WRDS query, you MUST: 1. **IDENTIFY** what filters are required for this dataset 2. **VALIDATE** the query includes those filters 3. **VERIFY** parameterized queries (never string formatting) 4. **EXECUTE** the query 5. **INSPECT** a sample of results before claiming success This is not negotiable. Claiming query success without sample inspection is LYING to the user about data quality. ### Rationalization Table - STOP If You Think: | Excuse | Reality | Do Instead | |--------|---------|------------| | "I'll add filters later" | You'll forget and pull bad data | Add filters NOW, before execution | | "User didn't specify filters" | Standard filters are ALWAYS required | Apply Critical Filters section defaults | | "Just a quick test query" | Test queries with bad filters teach bad patterns | Use production filters even for tests | | "I'll let the user filter in pandas" | Pulling millions of unnecessary rows wastes time/memory | Filter at database level FIRST | | "The query worked, so it's correct" | Query success ≠ data quality | INSPECT sample for invalid records | | "I can use f-strings for simple queries" | SQL injection risk + wrong type handling | ALWAYS use parameterized queries | ### Red Flags - STOP Immediately If You Think: - "Let me run this query quickly to see what's there" → NO. Check Critical Filters section first. - "I'll just pull everything and filter later" → NO. Database-level filtering is mandatory. - "The table name is obv