Awesome-omni-skill wprdc
Query Pittsburgh's Western PA Regional Data Center (WPRDC) — 363+ datasets covering property assessments, air quality, 311 requests, jail census, overdose data, permits, violations, and more. Run SQL queries against live tables without downloading. Use when user asks about Pittsburgh/Allegheny County public data, property lookups, civic data, or regional statistics.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data-ai/wprdc" ~/.claude/skills/diegosouzapw-awesome-omni-skill-wprdc-169641 && rm -rf "$T"
skills/data-ai/wprdc/SKILL.mdWPRDC - Pittsburgh Regional Data Center
Query 363+ datasets from the Western PA Regional Data Center. Property assessments, air quality, 311 requests, jail census, overdose data, parking, permits, violations — all queryable via SQL without downloading.
Quick Start
# Search for datasets <skill>/wprdc.py search "property sales" <skill>/wprdc.py search "air quality" --org allegheny-county # Get dataset info <skill>/wprdc.py info property-assessments # List resources (tables) in a dataset <skill>/wprdc.py resources property-assessments # See field schema <skill>/wprdc.py fields assessments # SQL query (the killer feature!) <skill>/wprdc.py query 'SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='"'"'PITTSBURGH'"'"' LIMIT 5' # Quick parcel lookup <skill>/wprdc.py parcel 0028F00194000000 # Download a dataset <skill>/wprdc.py download property-assessments --format csv
Commands
search <query>
search <query>Search for datasets by keyword.
Options:
— Filter by organization (e.g.,--org <name>
,allegheny-county
)city-of-pittsburgh
— Filter by topic group (e.g.,--group <name>
,health
)housing-properties
— Max results (default: 10)--limit <n>
— Raw JSON output--json
info <dataset>
info <dataset>Get detailed information about a dataset, including description, resources, and metadata.
resources <dataset>
resources <dataset>List all resources (tables/files) in a dataset with their IDs and queryability status.
fields <resource>
fields <resource>Show the field schema for a resource. Use shortcut names or resource IDs.
query <sql>
query <sql>Execute SQL queries against live data. This is the power feature!
Important: Column names must be double-quoted because PostgreSQL is case-sensitive:
SELECT "PARID", "PROPERTYADDRESS" FROM @assessments WHERE "PROPERTYCITY"='PITTSBURGH' LIMIT 5
Use
@shortcut notation for common tables (see Shortcuts below).
Options:
— Raw JSON output--json
— Format as ASCII table--table
parcel <pin>
parcel <pin>Quick property lookup by parcel ID. Returns address, assessments, building info, and last sale.
<skill>/wprdc.py parcel 0028F00194000000
download <dataset>
download <dataset>Download a resource to a file.
Options:
— Specific resource--resource <id|name>
— Preferred format--format <csv|json|geojson>
— Output filename--output <path>
orgs
orgsList all organizations publishing data.
groups
groupsList all topic groups (categories).
shortcuts
shortcutsShow available query shortcuts.
Query Shortcuts
Use
@shortcut in SQL queries instead of long resource IDs:
| Shortcut | Dataset |
|---|---|
| Property Assessments (584K parcels) |
| Property Sales |
| 311 Service Requests |
| PLI Permits |
| PLI Violations |
| Fatal Accidental Overdoses |
| Jail Daily Census |
| Air Quality |
| Fish Fry Map |
Example:
<skill>/wprdc.py query 'SELECT * FROM @overdoses WHERE "death_year"=2024 LIMIT 10'
Before Querying, Ask Yourself
-
Scope: Is this City of Pittsburgh only, or all of Allegheny County?
- PLI violations, 311, permits → City of Pittsburgh only (90 neighborhoods)
- Property assessments, overdoses, jail → All of Allegheny County (130 municipalities)
-
Freshness: When was this dataset last updated? Run
first.info <dataset> -
Fields: What columns exist? Run
before writing SQL.fields <resource> -
Size: How many records? Start with
, expand once you know it works.LIMIT 10
NEVER Do
-
NEVER use CAST(), ROUND(), AVG(), or other SQL functions — WPRDC blocks them. You'll get "Access denied: Not authorized to call function". Do aggregation client-side.
-
NEVER query without LIMIT on large tables — Assessments has 584K rows. Queries timeout. Always add
.LIMIT -
NEVER assume county-wide coverage for City datasets — PLI violations, 311, permits are City of Pittsburgh only. Aspinwall, Fox Chapel, Mt. Lebanon = separate municipalities, not in the data.
-
NEVER trust "under maintenance" datasets — County plumbing inspections, housing inspections, food facilities are currently broken. Check
first.info -
NEVER forget column quoting — UPPERCASE columns need double quotes (
), lowercase don't ("PARID"
). Wrong quoting = cryptic "column does not exist" errors.case_year -
NEVER use wildcards on unindexed text —
on large tables will timeout. Be specific.LIKE '%something%'
Common Errors
| Error | Cause | Fix |
|---|---|---|
+ "column does not exist" | Unquoted uppercase column | Add quotes: not |
| Used CAST/ROUND/AVG | Remove function, process client-side |
| Timeout / no response | Query too large | Add , narrow clause |
| Empty results | Filter mismatch | Check exact string values with a broad query first |
| "resource not found" | Wrong resource ID | Use to get correct ID |
SQL Tips
-
Quote UPPERCASE column names — PostgreSQL is case-sensitive:
SELECT "PROPERTYADDRESS" FROM @assessments -- ✓ uppercase needs quotes SELECT case_year FROM @overdoses -- ✓ lowercase works without quotes -
GROUP BY works, but not aggregate functions:
SELECT "PROPERTYCITY", COUNT(*) as cnt FROM @assessments GROUP BY "PROPERTYCITY" ORDER BY cnt DESC LIMIT 10 -
Check fields first — Column names vary wildly between datasets
Coverage Map (Critical!)
| Dataset | Coverage | Municipalities |
|---|---|---|
| Property Assessments | All Allegheny County | 130 municipalities |
| Property Sales | All Allegheny County | 130 municipalities |
| Fatal Overdoses | All Allegheny County | By zip code |
| Jail Census | All Allegheny County | County facility |
| 911 Dispatches | Most of county | 111 of 130 municipalities |
| Air Quality | All Allegheny County | Monitor locations |
| PLI Violations | City of Pittsburgh ONLY | 90 neighborhoods |
| PLI Permits | City of Pittsburgh ONLY | 90 neighborhoods |
| 311 Requests | City of Pittsburgh ONLY | 90 neighborhoods |
If someone asks about Fox Chapel, Aspinwall, Mt. Lebanon, etc. → Only county-wide datasets apply. No PLI/311 data for suburbs.
Organizations & Topics
Use
orgs and groups commands to explore. Major publishers:
- allegheny-county (143 datasets) — assessments, health, jail
- city-of-pittsburgh (126 datasets) — 311, permits, violations
Example Queries
# Property lookup by parcel ID <skill>/wprdc.py parcel 0028F00194000000 # Search by address (use SQL) <skill>/wprdc.py query 'SELECT * FROM @assessments WHERE "PROPERTYHOUSENUM"='"'"'251'"'"' AND "PROPERTYADDRESS" LIKE '"'"'%PASADENA%'"'"'' # Overdose trends by year <skill>/wprdc.py query 'SELECT case_year, COUNT(*) as deaths FROM @overdoses GROUP BY case_year ORDER BY case_year' # Filter by neighborhood (City of Pittsburgh only) <skill>/wprdc.py query 'SELECT "VIOLATION", COUNT(*) FROM @violations WHERE "NEIGHBORHOOD"='"'"'Hazelwood'"'"' GROUP BY "VIOLATION" ORDER BY COUNT(*) DESC LIMIT 10' # Cross-tab query <skill>/wprdc.py query 'SELECT combined_od1, race, COUNT(*) FROM @overdoses GROUP BY combined_od1, race ORDER BY COUNT(*) DESC LIMIT 20'
Known Issues (as of Jan 2026)
- 311 Data stopped updating Feb 2025 — new system transition
- County Plumbing Inspections — under maintenance
- County Housing Inspections — under maintenance
- County Food Facilities — under maintenance
Always run
info <dataset> to check last update date before relying on data.