Raleigh Civic Data

SkillSearch

Query, search, and download public datasets and civic information for the City of Raleigh. Use for live ArcGIS Hub catalog discovery, ArcGIS FeatureServer and MapServer queries, ImageServer imagery exports, official Raleigh geocoding, GoRaleigh transit feeds, guest-public development records, public RaleighNC.gov content, eSCRIBE public meetings, Raleigh fire reports and inspections, and the Raleigh-Wake ECC active incident feed. Do not use for private data, authenticated operations, payments, submissions, bulk crawling, or non-public portals.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Raleigh Civic Data skill

What this skill tells your AI

The instructions your AI receives, as published by magnus919/agent-skills in raleigh/SKILL.md and read by ahel’s review.

A read-only CLI for the City of Raleigh's public civic data and services. It discovers datasets from the live ArcGIS Hub catalog, queries ArcGIS layers, exports imagery, geocodes and reverse-geocodes addresses, reads GoRaleigh GTFS and GTFS-Realtime feeds, searches the guest-public Permit and Development Portal, lists public RaleighNC.gov content, and extracts public eSCRIBE meetings.

All operations are read-only and use fixed endpoint contracts. HTTPS is required except for explicitly acknowledged RFD report lookups, whose upstream site supports only plain HTTP. No API key, sign-in, payment, or submission flow is implemented.

Quick Start

# List live datasets
scripts/raleigh catalog

# Search the catalog
scripts/raleigh search "food inspection"

# Show a dataset's live metadata
scripts/raleigh info "Raleigh Dog Parks"

# Query records
scripts/raleigh query "Food Inspections" --where "SCORE < 70" --limit 20

# Export to CSV
scripts/raleigh download "Raleigh Dog Parks" -f csv -o dog_parks.csv

Commands

Dataset discovery

CommandPurposeExample
catalogList live Hub datasetsscripts/raleigh catalog --json
searchSearch catalog metadatascripts/raleigh search "building permit" --limit 10
infoShow a dataset by title or IDscripts/raleigh info "Raleigh Dog Parks" --json
queryQuery records with filtersscripts/raleigh query "Food Inspections" --where "SCORE<70" --limit 20
downloadExport to CSV, GeoJSON, or JSONscripts/raleigh download "Parcels" -f geojson -o parcels.geojson
categoriesList categories from the catalogscripts/raleigh categories
catalog-checkValidate cached endpointsscripts/raleigh catalog-check --sample 10

Imagery

CommandPurposeExample
imagery catalogList ImageServer servicesscripts/raleigh imagery catalog --json
imagery infoShow service metadatascripts/raleigh imagery info Orthos2025
imagery exportExport bounded imagescripts/raleigh imagery export Orthos2025 --bbox=-78.7,35.7,-78.6,35.8 --size 400,400 -o ortho.jpg
imagery identifyIdentify pixel value at pointscripts/raleigh imagery identify Orthos2025 --point=-78.65,35.75
imagery statisticsCompute extent statisticsscripts/raleigh imagery statistics Orthos2025 --bbox=-78.7,35.7,-78.6,35.8

imagery catalog lists only publicly readable services. Folders whose listing requires a token (currently Imagery and Utilities) are skipped and reported as restricted rather than failing the command; the daily live canary tracks them the same way.

Geocoding

CommandPurposeExample
geocodeForward geocodescripts/raleigh geocode "222 W Hargett St"
reverse-geocodeReverse geocodescripts/raleigh reverse-geocode --lat 35.78 --lon -78.64
suggestAddress autocompletescripts/raleigh suggest "222 W Har"
geocode-batchBatch geocode CSVscripts/raleigh geocode-batch addresses.csv --address-field address -o out.csv

Batch output preserves every original CSV column and adds input_id, match_address, score, lat, lon, and status. If an input already uses one of those names, the added result column receives a geocode_ prefix.

Transit

CommandPurposeExample
transit routesList routesscripts/raleigh transit routes --json
transit stopsList stopsscripts/raleigh transit stops --near 35.78,-78.64 --limit 10
transit scheduleSchedule for a routescripts/raleigh transit schedule --route 1 --date 20260723
transit arrivalsArrivals for a stopscripts/raleigh transit arrivals --stop S1
transit vehiclesLive vehicle positionsscripts/raleigh transit vehicles --json
transit alertsService alertsscripts/raleigh transit alerts
transit trip-updatesLive trip updatesscripts/raleigh transit trip-updates --json
transit download-gtfsSave static feedscripts/raleigh transit download-gtfs

Development records

CommandPurposeExample
development searchSearch public recordsscripts/raleigh development search permits --query "2024-001"
development search projectSearch public projectsscripts/raleigh development search project --query "downtown"
development permitPermit detailsscripts/raleigh development permit BP-2024-001
development inspectionsInspections for a recordscripts/raleigh development inspections --record BP-2024-001
development code-casesCode casesscripts/raleigh development code-cases --query "nuisance"
development licensesLicensesscripts/raleigh development licenses --query "coffee"

Civic content

CommandPurposeExample
newsRaleighNC.gov newsscripts/raleigh news --limit 10
eventsEventsscripts/raleigh events --from 2026-07-01 --to 2026-07-31
projectsProjectsscripts/raleigh projects --search "park"
placesPlacesscripts/raleigh places --search "library"
servicesServicesscripts/raleigh services --search "trash"
directoryDirectory entriesscripts/raleigh directory --search "parks"
alertsPublic alertsscripts/raleigh alerts
rssRSS feedscripts/raleigh rss --limit 10

Police incidents

CommandPurposeExample
police incidentsQuery NIBRS incidents (June 2014–present)scripts/raleigh police incidents --since 7d --category burglary
police recentQuery CrimeMapper past-90-day feedscripts/raleigh police recent --days 30 --district Downtown
police previous-dayQuery previous-day incidentsscripts/raleigh police previous-day --json
police historyQuery historical incidents (SRS or NIBRS)scripts/raleigh police history --reporting-system srs --since 30d
police statsOfficial published statistics availability and document linksscripts/raleigh police stats --year 2025
police reportsOfficial annual and quarterly report linksscripts/raleigh police reports --year 2025 --quarter 4

Fire incidents

CommandPurposeExample
fire incidentsQuery RFD incidents (full history 2007–present or past month)scripts/raleigh fire incidents --since 30d --group Fire
fire response-timesCompute labeled response durationsscripts/raleigh fire response-times --since 1y --group Fire
fire protectionWake County MAR fire-protection proximity lookupscripts/raleigh fire protection --address "222 W Hargett St"
fire statsOfficial published incident totals and sprinkler-save statisticsscripts/raleigh fire stats --year 2026
fire reportsPublished aggregate-report links or exact incident-report lookupscripts/raleigh fire reports --year 2025 --quarter 1
fire reports --dateExact ArcGIS incident-report summary, with optional guarded RFD fallbackscripts/raleigh fire reports --date 2026-07-24
fire inspectionsBusiness/address inspection lookup through fragile RFD HTMLscripts/raleigh fire inspections --business "Example" --acknowledge-insecure-rfd

Active incidents (RWECC)

CommandPurposeExample
incidents activeCurrently active public incidents from RWECCscripts/raleigh incidents active --agency raleigh-fire
incidents active --jsonJSON output with source metadatascripts/raleigh incidents active --agency raleigh-police --json

Public meetings

CommandPurposeExample
meetings upcomingUpcoming meetingsscripts/raleigh meetings upcoming --json
meetings listFilter by body/yearscripts/raleigh meetings list --body "City Council" --year 2026
meetings searchSearch meetingsscripts/raleigh meetings search "budget"
meetings showMeeting detailsscripts/raleigh meetings show 37126a80-175a-4b38-974d-a7006bc7db85
meetings download-agendaDownload agendascripts/raleigh meetings download-agenda 37126a80-175a-4b38-974d-a7006bc7db85 -o agenda.pdf
meetings download-minutesDownload minutesscripts/raleigh meetings download-minutes 37126a80-175a-4b38-974d-a7006bc7db85 -o minutes.pdf

Output Flags

FlagEffect
--jsonJSON output
--refreshBypass catalog cache
--cache-dir DIRUse a custom cache directory
--timeout SECONDSHTTP timeout (default 30)

References

ReferenceLoad whenFile
API contracts and endpointsBuilding custom queriesreferences/api-reference.md
Imagery and ImageServer detailsWorking with aerial photography or raster servicesreferences/imagery-reference.md
GTFS and GTFS-RealtimeTransit commandsreferences/transit-reference.md
Guest development portalPermit and development recordsreferences/development-reference.md
Civic contentJSON:API and RSSreferences/civic-content-reference.md
Public meetingseSCRIBE extractionreferences/meetings-reference.md
Police incidentsRPD data sources, field schemas, and privacy caveatsreferences/police-reference.md
Fire incidentsRFD data sources, 2026 schema transition, durations, and privacy caveatsreferences/fire-reference.md
Fire reports and inspectionsArcGIS-first contract, RFD forms, insecure transport, and exclusionsreferences/fire-reports-reference.md
Published police and fire statisticsOfficial page contract, report indexes, structured totals, and privacy boundaryreferences/public-safety-statistics-reference.md
Active incidents (RWECC)Undocumented feed contract, schema guard, and disable switchreferences/incidents-reference.md

Pitfalls

  • Live catalog: The catalog is discovered from the Hub at runtime. Cache it with --cache-dir for repeated use.
  • ImageServer: Never append /0 to an ImageServer root. Use the dedicated imagery commands.
  • MapServer tables: Some layers are tabular (type: Table). The CLI automatically omits geometry for non-spatial layers.
  • WHERE clauses: Strings must be single-quoted: NAME='Millbrook-Exchange'.
  • ArcGIS dates: Returned as Unix milliseconds; divide by 1000 for standard timestamps.
  • Guest development portal: Uses an undocumented public application API. The adapter is isolated and may change if the upstream UI changes; set RALEIGH_DISABLE_DEVELOPMENT=1 to disable it independently.
  • Civic relationships: Public content commands accept --relationship FIELD=ID; text, date, and relationship matching is client-side after bounded pagination.
  • eSCRIBE: HTML-based extraction with a weaker compatibility contract than structured APIs.
  • Police incidents: Locations are block-level and may be randomized or redacted. Empty coordinates are suppressed, not presented as points. This data does not include arrests, convictions, or dispositions. The CrimeMapper 90-day feed is not in the curated Hub catalog and is resolved by item ID.
  • Fire incidents: RFD deprecated incident_type/incident_type_description for records after 2026-01-01, replaced by incident_group_name, incident_subgroup_code, and incident_type_name. The fire commands normalize both eras into stable _ keys without fabricating cross-era mappings, and preserve raw fields in JSON. Incident types 300–399 and 661 are excluded by RFD for EMS/privacy. The full-history station field is unpopulated for most records after early 2021; the past-month feed provides station_name.
  • Fire reports and inspections: Report summaries use the structured ArcGIS past-month layer first. RFD fallback, narratives, and inspection searches cross unencrypted HTTP and require --acknowledge-insecure-rfd on every invocation. Date fallback also requires --allow-rfd-fallback and only runs after ArcGIS returns no records. Empty searches, redirects, unexpected markup, and schema drift fail closed. Invoice links are neither followed nor exposed.
  • Published public-safety statistics: police stats/reports and year-based fire stats/reports read the official RaleighNC.gov publication indexes at runtime. Inline values are labeled official_published_statistics; PDF links are returned without extracting their contents. These outputs are not recomputed from incident rows. RFD medical totals remain aggregate-only and must never be joined to or used to infer incident records excluded for privacy.
  • Fire protection: The Wake County MAR Fire Protection table is a non-spatial table keyed by CSAID. Address input is composed through the Raleigh locator and the Wake County MAR Addresses layer; if the address cannot be resolved to a unique CSAID, supply --csaid directly. Distances are source-provided road-network values; the source does not advertise units. This data does not expose hydrant locations, only nearest-hydrant distance. It must not be used for emergency response.
  • Active incidents (RWECC): Uses an undocumented public application endpoint (incidents.rwecc.com/getdata). The adapter is isolated and may break if the upstream contract changes; set RALEIGH_DISABLE_INCIDENTS=1 to disable it independently. This is a filtered active feed, NOT all 911 calls and NOT authoritative emergency status. An empty response does not prove zero incidents. Cache lifetime is 90 seconds.
  • URL allowlist: Only fixed public hosts are dereferenced; arbitrary URLs are rejected.
  • Transit realtime: Requires google.protobuf>=6.31.1,<7. The vendored GTFS-Realtime binding was generated with protoc 31.1 and does not replace the runtime.

Safety Boundaries

  • Read-only operations only. No auth, write, payment, submission, or private-data endpoints.
  • All remote hosts and paths are fixed. The general client remains HTTPS-only; the isolated RFD adapter permits only four documented plain-HTTP read contracts after explicit acknowledgement.
  • Cached data is refreshed with --refresh or when the cache expires.
  • Report stale or unavailable endpoints via catalog-check.

When not to use

  • Do not use this skill for private, authenticated, or non-public city data. It cannot sign in, pay fees, submit forms, or access internal systems.
  • Do not use it for non-Raleigh jurisdictions. The host allowlist is fixed to City of Raleigh and GoRaleigh endpoints.
  • Do not rely on it for write operations, real-time emergency dispatch, or legally authoritative records. Data is read-only and may be cached.
  • Do not use it when the task requires GTFS-Realtime and a compatible protobuf runtime is unavailable. Install protobuf>=6.31.1,<7 first or stick to static GTFS commands.
  • For general web scraping, research outside Raleigh civic data, or interactive browser tasks, use a more appropriate skill instead.

Signals

GitHub stars
78
Forks
8
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
raleigh
Source
github.com/magnus919/agent-skills